From d31c8669aaa6f777e4a8041abe5c8b34ec591c86 Mon Sep 17 00:00:00 2001 From: Karen Date: Mon, 15 Jun 2026 23:01:16 +0200 Subject: [PATCH 1/8] feat(kiloclaw): add AgentCard skill + discoverability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ship an AgentCard skill and the tools.md discoverability hint, baked into the KiloClaw image, so a connected user can just say "create a card" and the agent uses the agentcard MCP server correctly — with no manual MCP install. - skills/agentcard/SKILL.md: how to call agentcard via mcporter (introspect with `mcporter list agentcard`/--schema), common tools (create_card needs amount_cents), test-mode note, and a "connect in Settings -> Payments" fallback. Baked in by the existing `COPY skills/ /root/clawd/skills/` and auto-discovered (mirrors the weather skill). - bootstrap.ts: AGENTCARD_SECTION_CONFIG + updateToolsMdSection gated on AGENTCARD_API_KEY, mirroring the Linear pattern — the in-prompt trigger appears in TOOLS.md only once the user has connected. - bootstrap.test.ts: marker-correctness + enable/disable coverage. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../kiloclaw/controller/src/bootstrap.test.ts | 22 +++++++ services/kiloclaw/controller/src/bootstrap.ts | 17 ++++++ services/kiloclaw/skills/agentcard/SKILL.md | 57 +++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 services/kiloclaw/skills/agentcard/SKILL.md diff --git a/services/kiloclaw/controller/src/bootstrap.test.ts b/services/kiloclaw/controller/src/bootstrap.test.ts index d889c5ae7..3ecae7d94 100644 --- a/services/kiloclaw/controller/src/bootstrap.test.ts +++ b/services/kiloclaw/controller/src/bootstrap.test.ts @@ -24,6 +24,7 @@ import { KILO_CLI_SECTION_CONFIG, OP_SECTION_CONFIG, LINEAR_SECTION_CONFIG, + AGENTCARD_SECTION_CONFIG, COMPOSIO_SECTION_CONFIG, KILOCLAW_MITIGATIONS_SECTION_CONFIG, PLUGIN_INSTALL_SECTION_CONFIG, @@ -1670,6 +1671,7 @@ describe('TOOLS.md section configs', () => { KILO_CLI_SECTION_CONFIG, OP_SECTION_CONFIG, LINEAR_SECTION_CONFIG, + AGENTCARD_SECTION_CONFIG, COMPOSIO_SECTION_CONFIG, KILOCLAW_MITIGATIONS_SECTION_CONFIG, PLUGIN_INSTALL_SECTION_CONFIG, @@ -1683,6 +1685,26 @@ describe('TOOLS.md section configs', () => { }); } + // AgentCard discoverability: gated on AGENTCARD_API_KEY, so the section must + // append when a token is present and drop out when it isn't, and it must point + // the agent at the agentcard skill. + it('AgentCard: appends when enabled and removes when disabled', () => { + const enabled = fakeDeps(); + (enabled.deps.readFileSync as ReturnType).mockReturnValue('# TOOLS\n'); + updateToolsMdSection(true, AGENTCARD_SECTION_CONFIG, enabled.deps); + expect(enabled.writeCalls).toHaveLength(1); + expect(enabled.writeCalls[0]!.data).toContain(''); + expect(enabled.writeCalls[0]!.data).toContain('agentcard'); + + const disabled = fakeDeps(); + (disabled.deps.readFileSync as ReturnType).mockReturnValue( + '# TOOLS\n\nold\n\n' + ); + updateToolsMdSection(false, AGENTCARD_SECTION_CONFIG, disabled.deps); + expect(disabled.writeCalls).toHaveLength(1); + expect(disabled.writeCalls[0]!.data).not.toContain(''); + }); + // Smoke test on the KiloClaw-specific sections we just added — pin the // key directives so a drive-by edit that strips the substance (but keeps // the markers) fails loudly. diff --git a/services/kiloclaw/controller/src/bootstrap.ts b/services/kiloclaw/controller/src/bootstrap.ts index 653284aab..8c72bff5f 100644 --- a/services/kiloclaw/controller/src/bootstrap.ts +++ b/services/kiloclaw/controller/src/bootstrap.ts @@ -1168,6 +1168,22 @@ You can interact with the \`Linear\` MCP server using your \`mcporter\` skill. `, }; +export const AGENTCARD_SECTION_CONFIG: ToolsMdSectionConfig = { + name: 'AgentCard', + beginMarker: '', + endMarker: '', + section: ` + +## AgentCard + +AgentCard is connected. Use it to create and manage virtual debit cards — for +example when the user wants to create a card, check a balance, review transactions, +or close a card. +You can interact with the \`agentcard\` MCP server using your \`agentcard\` skill (which +calls it via \`mcporter\`). +`, +}; + export const COMPOSIO_SECTION_CONFIG: ToolsMdSectionConfig = { name: 'Composio', beginMarker: '', @@ -1342,6 +1358,7 @@ export async function bootstrapNonCritical( updateToolsMdSection(googleWorkspaceToolsEnabled, GOG_SECTION_CONFIG, deps); updateToolsMdSection(!!env.OP_SERVICE_ACCOUNT_TOKEN, OP_SECTION_CONFIG, deps); updateToolsMdSection(!!env.LINEAR_API_KEY, LINEAR_SECTION_CONFIG, deps); + updateToolsMdSection(!!env.AGENTCARD_API_KEY, AGENTCARD_SECTION_CONFIG, deps); updateToolsMdSection( !!env.COMPOSIO_USER_API_KEY && !!env.COMPOSIO_ORG, COMPOSIO_SECTION_CONFIG, diff --git a/services/kiloclaw/skills/agentcard/SKILL.md b/services/kiloclaw/skills/agentcard/SKILL.md new file mode 100644 index 000000000..91914c6d8 --- /dev/null +++ b/services/kiloclaw/skills/agentcard/SKILL.md @@ -0,0 +1,57 @@ +--- +name: agentcard +description: Create and manage virtual debit cards with AgentCard. Use when the user wants to create a card, check a card balance, review card transactions, or close a card. +--- + +# AgentCard + +AgentCard issues virtual debit cards. Use this skill whenever the user wants to +create a card, fund a purchase, check a balance, review transactions, or close a +card. + +AgentCard runs as the `agentcard` MCP server, reached through your `mcporter` skill. +Call its tools with: + +```bash +mcporter call agentcard. : +``` + +## First: discover the live tools and their exact arguments + +Tool arguments can change, so introspect rather than guess: + +```bash +mcporter list agentcard # list available tools +mcporter call agentcard. --schema # see one tool's exact parameters +``` + +## Common operations + +- **Create a card** — `create_card` requires `amount_cents` (an integer; e.g. `2000` + for a $20 card): + ```bash + mcporter call agentcard.create_card amount_cents:2000 + ``` +- **List cards** — `mcporter call agentcard.list_cards` +- **Card details** (PAN / expiry / CVC) — `mcporter call agentcard.get_card_details card_id:` +- **Check balance** — `mcporter call agentcard.check_balance card_id:` +- **List transactions** — `mcporter call agentcard.list_transactions card_id:` +- **Close a card** — `mcporter call agentcard.close_card card_id:` + +## Test mode vs production + +New AgentCard accounts start in **TEST mode**: cards are sandbox-funded, incur no +real charges, and won't work at real merchants. After creating a card, check whether +the result says it's a TEST card and, if so, tell the user they're in test mode. + +- Check the current mode: `mcporter call agentcard.get_mode` +- Switch to live cards: `mcporter call agentcard.set_mode mode:prod` — **confirm with + the user first**, since prod cards are charged to their real payment method. + +## If AgentCard isn't connected + +If `mcporter list agentcard` reports the server is unavailable (no `agentcard` +server configured), the user hasn't connected their account yet. Tell them to connect +it in **Settings → Payments → Connect Agentcard** — it's a one-click OAuth step, with +nothing to install. Once connected, the `agentcard` tools become available +automatically. From 9140e46531c8b63dc07c26b5a7e3d901c0e32733 Mon Sep 17 00:00:00 2001 From: Karen Date: Mon, 15 Jun 2026 23:37:22 +0200 Subject: [PATCH 2/8] feat(web,kiloclaw): AgentCard OAuth integration Replace the paste-a-token AgentCard flow with a "Connect AgentCard" OAuth 2.1 (PKCE) integration, and auto-configure the agentcard MCP server for the user's KiloClaw instance. - apps/web integrations/agentcard: connect/callback/disconnect routes, agentcard-service, signed OAuth state (PKCE), and the per-user OAuth connection store (encrypted access/refresh tokens). - Token refresh cron (/api/cron/agentcard-token-refresh, every 10m) that re-pushes the refreshed access token to the instance. - SettingsTab "Agentcard" card + AgentCardConnectPrompt post-connect screen; kiloclaw-router exposes connection status fields. - DB migration 0159 + schema for kiloclaw_agentcard_oauth_connections; AGENTCARD_API_KEY added to the kiloclaw secret catalog. - Controller restore regenerates mcporter config so the agentcard MCP server appears as soon as the token is present. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../components/AgentCardConnectPrompt.tsx | 84 + .../app/(app)/claw/components/SettingsTab.tsx | 254 +- .../claw/components/icons/AgentCardIcon.tsx | 22 +- apps/web/src/app/(app)/claw/layout.tsx | 2 + .../api/cron/agentcard-token-refresh/route.ts | 18 + .../integrations/agentcard/callback/route.ts | 217 + .../integrations/agentcard/connect/route.ts | 110 + .../agentcard/disconnect/route.ts | 124 + apps/web/src/lib/config.server.ts | 7 + .../agentcard/agentcard-service.ts | 210 + .../agentcard/oauth-state.test.ts | 63 + .../lib/integrations/agentcard/oauth-state.ts | 81 + .../kiloclaw/agentcard-oauth-connections.ts | 199 + .../lib/kiloclaw/agentcard-token-refresh.ts | 102 + apps/web/src/lib/kiloclaw/types.ts | 9 + apps/web/src/lib/stytch.ts | 22 + apps/web/src/routers/kiloclaw-router.ts | 141 +- apps/web/vercel.json | 4 + .../src/migrations/0159_curvy_kat_farrell.sql | 22 + .../db/src/migrations/meta/0159_snapshot.json | 29200 ++++++++++++++++ packages/db/src/migrations/meta/_journal.json | 7 + packages/db/src/schema.ts | 62 + .../src/__tests__/catalog.test.ts | 16 +- .../kiloclaw-secret-catalog/src/catalog.ts | 25 +- .../controller/src/routes/config.test.ts | 6 +- .../kiloclaw/controller/src/routes/config.ts | 8 +- 26 files changed, 30883 insertions(+), 132 deletions(-) create mode 100644 apps/web/src/app/(app)/claw/components/AgentCardConnectPrompt.tsx create mode 100644 apps/web/src/app/api/cron/agentcard-token-refresh/route.ts create mode 100644 apps/web/src/app/api/integrations/agentcard/callback/route.ts create mode 100644 apps/web/src/app/api/integrations/agentcard/connect/route.ts create mode 100644 apps/web/src/app/api/integrations/agentcard/disconnect/route.ts create mode 100644 apps/web/src/lib/integrations/agentcard/agentcard-service.ts create mode 100644 apps/web/src/lib/integrations/agentcard/oauth-state.test.ts create mode 100644 apps/web/src/lib/integrations/agentcard/oauth-state.ts create mode 100644 apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts create mode 100644 apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts create mode 100644 packages/db/src/migrations/0159_curvy_kat_farrell.sql create mode 100644 packages/db/src/migrations/meta/0159_snapshot.json diff --git a/apps/web/src/app/(app)/claw/components/AgentCardConnectPrompt.tsx b/apps/web/src/app/(app)/claw/components/AgentCardConnectPrompt.tsx new file mode 100644 index 000000000..55bff8e97 --- /dev/null +++ b/apps/web/src/app/(app)/claw/components/AgentCardConnectPrompt.tsx @@ -0,0 +1,84 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import Link from 'next/link'; +import { Button } from '@/components/ui/button'; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from '@/components/ui/dialog'; +import { useKiloClawStatus } from '@/hooks/useKiloClaw'; +import { AgentCardIcon } from './icons/AgentCardIcon'; + +// One-time, dismissible prompt shown after first sign-in inviting the user to +// connect Agentcard. It is purely opt-in: nothing happens unless the user +// clicks Connect (which kicks off the OAuth flow). Dismissal is remembered in +// localStorage so we never nag a user who has said "Not now". +const DISMISS_KEY = 'kiloclaw:agentcard-connect-prompt:dismissed'; + +export function AgentCardConnectPrompt() { + const { data: status, isLoading } = useKiloClawStatus(); + const [open, setOpen] = useState(false); + + useEffect(() => { + if (isLoading || !status) return; + // Only prompt once the user has a live instance (skips onboarding), and + // never if they're already connected or have dismissed the prompt before. + if (!status.status) return; + if (status.agentcardOAuthConnected) return; + try { + if (localStorage.getItem(DISMISS_KEY)) return; + } catch { + // localStorage unavailable (e.g. privacy mode) — just don't prompt. + return; + } + setOpen(true); + }, [isLoading, status]); + + function dismiss() { + try { + localStorage.setItem(DISMISS_KEY, String(Date.now())); + } catch { + // ignore — worst case the prompt shows again next session. + } + setOpen(false); + } + + // Connect from the dashboard; return the user here afterward. + const connectUrl = '/api/integrations/agentcard/connect?returnTo=%2Fclaw'; + + return ( + (next ? setOpen(true) : dismiss())}> + + +
+ + Connect Agentcard? +
+ + Give your agent the ability to create and spend virtual debit cards, with per-task spend + limits enforced by Agentcard. You authenticate with your own Agentcard account — Kilo + never sees a long-lived key. + +
+
+

+ Warning: this can permit your agent to spend real money. Use caution. +

+
+ + + + +
+
+ ); +} diff --git a/apps/web/src/app/(app)/claw/components/SettingsTab.tsx b/apps/web/src/app/(app)/claw/components/SettingsTab.tsx index 613d4e467..64f0e52cc 100644 --- a/apps/web/src/app/(app)/claw/components/SettingsTab.tsx +++ b/apps/web/src/app/(app)/claw/components/SettingsTab.tsx @@ -18,6 +18,7 @@ import { } from 'lucide-react'; import { useEffect, useMemo, useRef, useState } from 'react'; import { OpenclawImportCard } from './OpenclawImportCard'; +import { AgentCardIcon } from './icons/AgentCardIcon'; import { usePostHog } from 'posthog-js/react'; import Link from 'next/link'; @@ -221,85 +222,165 @@ function OnePasswordSetupGuide() { } // --------------------------------------------------------------------------- -// AgentCard setup guide dialog +// AgentCard (OAuth "Connect" button — replaces the legacy paste-a-token flow) // --------------------------------------------------------------------------- -function AgentCardSetupGuide() { - return ( - - - - - - - AgentCard Setup - - Give your agent the ability to create and spend virtual debit cards. - - -
-
-

- Warning: this can permit your agent to spend real money. Use caution. -

-

- AgentCard is currently in beta. Card issuance may be limited or waitlisted. -

-
- -
-

1. Create an AgentCard account

-

Run these commands:

-
-              npm install -g agent-cards{'\n'}agent-cards signup
-            
-
+// Capabilities the agent gains once connected, mirrored from AgentCard's MCP +// tool set (create_card, list_cards, check_balance, …). +const AGENTCARD_FEATURES: Array<{ included: boolean; label: string }> = [ + { included: true, label: 'Create and manage virtual debit cards for your agent' }, + { included: true, label: 'Check balances and review transactions' }, + { included: true, label: 'Per-task spend limits enforced by Agentcard' }, +]; -
-

2. Add a payment method

-

- Run agent-cards payment-method to link - a card via Stripe. This funds any virtual cards your agent creates. -

-
+/** + * Settings card for connecting AgentCard via OAuth. Connect/disconnect reuse + * the /api/integrations/agentcard/{connect,disconnect} routes; disconnect is a + * native same-origin form POST so the route's Origin check passes and the 303 + * redirect lands back on settings with a success/error param. + * + * This replaces the old "paste your AgentCard API key" flow: the user clicks + * Connect, authenticates with their own AgentCard account (magic-link + + * consent), and Kilo stores a per-user OAuth token — Kilo never sees a + * long-lived API key. + */ +function AgentCardCard({ + connected, + oauthStatus, + accountEmail, + organizationId, +}: { + connected: boolean; + oauthStatus: 'active' | 'action_required' | 'disconnected'; + accountEmail: string | null; + organizationId: string | null; +}) { + const [open, setOpen] = useState(false); + const [confirmDisconnect, setConfirmDisconnect] = useState(false); + const [isDisconnecting, setIsDisconnecting] = useState(false); + const disconnectFormRef = useRef(null); -
-

3. Copy your API key

-

- Open ~/.agent-cards/config.json and - copy the jwt value into the field above. -

-
+ const settingsPath = organizationId + ? `/organizations/${organizationId}/claw/settings` + : '/claw/settings'; + const connectParams = new URLSearchParams({ returnTo: settingsPath }); + if (organizationId) { + connectParams.set('organizationId', organizationId); + } + const connectUrl = `/api/integrations/agentcard/connect?${connectParams.toString()}`; + const disconnectAction = organizationId + ? `/api/integrations/agentcard/disconnect?organizationId=${encodeURIComponent(organizationId)}` + : '/api/integrations/agentcard/disconnect'; -
-

4. Upgrade your instance

-

- This feature requires the most recent version of OpenClaw. After saving your - credentials, use Upgrade (not Redeploy) to install the latest image - and activate AgentCard. Your agent will then have access to tools like{' '} - create_card,{' '} - list_cards, and{' '} - check_balance. -

-
+ const needsReconnect = oauthStatus === 'action_required'; + const isHealthyConnected = connected && !needsReconnect; -

- Learn more at{' '} - + +

+ + + + + + +
+
+

+ Warning: this can permit your agent to spend real money. Use caution. +

+
+ {isHealthyConnected ? ( + <> +

+ {accountEmail ? `Connected as ${accountEmail}` : 'Connected'} · your agent can + create and spend virtual cards. +

+ + + ) : ( + <> + {needsReconnect && ( +

+ Your AgentCard connection needs to be re-authorized. Reconnect to resume + access. +

+ )} +
    + {AGENTCARD_FEATURES.map(feature => ( +
  • + + {feature.label} +
  • + ))} +
+ + + )} +
+
- -
+ + + {/* Native form POST so the disconnect route's same-origin Origin check + passes; the 303 redirect navigates back to settings. */} +
+ + } + isPending={isDisconnecting} + pendingLabel="Disconnecting..." + onConfirm={() => { + const form = disconnectFormRef.current; + if (!form) { + toast.error('Could not disconnect Agentcard. Please try again.'); + return; + } + setIsDisconnecting(true); + form.submit(); + }} + /> + ); } @@ -2604,28 +2685,17 @@ export function SettingsTab({ )} {/* ── Payments ── */} - {toolEntries.some(e => e.id === 'agentcard') && ( -
-

Payments

-
- {toolEntries - .filter(e => e.id === 'agentcard') - .map(entry => ( - } - /> - ))} -
+
+

Payments

+
+
- )} +
{/* ── Password Managers ── */} {toolEntries.some(e => e.id === 'onepassword') && ( diff --git a/apps/web/src/app/(app)/claw/components/icons/AgentCardIcon.tsx b/apps/web/src/app/(app)/claw/components/icons/AgentCardIcon.tsx index 4c85eca02..43cf8d4cb 100644 --- a/apps/web/src/app/(app)/claw/components/icons/AgentCardIcon.tsx +++ b/apps/web/src/app/(app)/claw/components/icons/AgentCardIcon.tsx @@ -1,12 +1,22 @@ +// The real Agentcard brand mark, taken from agentcard.sh +// (public/landing/home/agentcard-logo-new.svg): a filled card with a chip +// grid. The website asset uses a white gradient (for dark backgrounds); here +// we fill with currentColor so the mark inherits the surrounding text color +// and works in both light and dark themes. viewBox preserves the logo's +// natural 39:28 aspect ratio. export function AgentCardIcon({ className }: { className?: string }) { return ( - + ); diff --git a/apps/web/src/app/(app)/claw/layout.tsx b/apps/web/src/app/(app)/claw/layout.tsx index 7df9c888a..db308f276 100644 --- a/apps/web/src/app/(app)/claw/layout.tsx +++ b/apps/web/src/app/(app)/claw/layout.tsx @@ -2,12 +2,14 @@ import { getUserFromAuthOrRedirect } from '@/lib/user/server'; import { PylonWidget } from '@/components/pylon-widget'; import { PylonSupportButton } from '@/components/pylon-support-button'; import { PersonalInstancePresenceMount } from './components/PersonalInstancePresenceMount'; +import { AgentCardConnectPrompt } from './components/AgentCardConnectPrompt'; export default async function ClawLayout({ children }: { children: React.ReactNode }) { await getUserFromAuthOrRedirect(); return ( <> + {children} diff --git a/apps/web/src/app/api/cron/agentcard-token-refresh/route.ts b/apps/web/src/app/api/cron/agentcard-token-refresh/route.ts new file mode 100644 index 000000000..7ce353e98 --- /dev/null +++ b/apps/web/src/app/api/cron/agentcard-token-refresh/route.ts @@ -0,0 +1,18 @@ +import { NextResponse } from 'next/server'; +import { CRON_SECRET } from '@/lib/config.server'; +import { refreshExpiringAgentCardConnections } from '@/lib/kiloclaw/agentcard-token-refresh'; + +// Agentcard access tokens live ~1h. This cron runs every 10 minutes and +// refreshes any connection whose token expires within the next 20 minutes, so +// a fresh token is always pushed to the worker well before the old one dies. +const REFRESH_WINDOW_MS = 20 * 60 * 1000; + +export async function GET(request: Request) { + if (!CRON_SECRET || request.headers.get('authorization') !== `Bearer ${CRON_SECRET}`) { + return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); + } + + const result = await refreshExpiringAgentCardConnections({ withinMs: REFRESH_WINDOW_MS }); + + return NextResponse.json({ ...result, timestamp: new Date().toISOString() }); +} diff --git a/apps/web/src/app/api/integrations/agentcard/callback/route.ts b/apps/web/src/app/api/integrations/agentcard/callback/route.ts new file mode 100644 index 000000000..7600b311e --- /dev/null +++ b/apps/web/src/app/api/integrations/agentcard/callback/route.ts @@ -0,0 +1,217 @@ +import type { NextRequest } from 'next/server'; +import { NextResponse } from 'next/server'; +import { createHash } from 'node:crypto'; +import { captureException, captureMessage } from '@sentry/nextjs'; +import { APP_URL } from '@/lib/constants'; +import { getUserFromAuth } from '@/lib/user/server'; +import { ensureOrganizationAccess } from '@/routers/organizations/utils'; +import { requireKiloClawAccess } from '@/lib/kiloclaw/access-gate'; +import { requireOrganizationKiloClawComputeEntitlement } from '@/lib/organizations/trial-middleware'; +import { getInstanceById, workerInstanceId } from '@/lib/kiloclaw/instance-registry'; +import { exchangeAgentCardCode } from '@/lib/integrations/agentcard/agentcard-service'; +import { + type VerifiedAgentCardOAuthState, + verifyAgentCardOAuthState, +} from '@/lib/integrations/agentcard/oauth-state'; +import { upsertKiloClawAgentCardOAuthConnection } from '@/lib/kiloclaw/agentcard-oauth-connections'; +import { encryptKiloClawSecret } from '@/lib/kiloclaw/encryption'; +import { KiloClawInternalClient } from '@/lib/kiloclaw/kiloclaw-internal-client'; + +// The OpenClaw worker reads this env secret and configures the `agentcard` MCP +// server with `Authorization: Bearer ` (see config-writer.ts). The OAuth +// access token slots into the same place the legacy pasted token used. +const AGENTCARD_SECRET_KEY = 'AGENTCARD_API_KEY'; + +function buildRedirectPath( + state: { owner: VerifiedAgentCardOAuthState['owner']; returnTo?: string } | null | undefined, + preEncodedQueryFragment: string +): string { + if (state?.returnTo) { + const separator = state.returnTo.includes('?') ? '&' : '?'; + return `${state.returnTo}${separator}${preEncodedQueryFragment}`; + } + if (state?.owner?.type === 'org') { + return `/organizations/${state.owner.id}/claw/settings?${preEncodedQueryFragment}`; + } + return `/claw/settings?${preEncodedQueryFragment}`; +} + +function sanitizeOAuthProviderError( + error: string | null, + errorDescription: string | null +): string | null { + const source = errorDescription ?? error; + if (!source) return null; + const normalized = source.trim(); + if (!normalized) return null; + if (!/^[A-Za-z0-9 _.:/-]{1,200}$/.test(normalized)) return 'oauth_error'; + return encodeURIComponent(normalized); +} + +function sanitizeOAuthCode(code: string | null): string | null { + if (!code) return null; + const normalized = code.trim(); + if (!normalized || normalized.length > 2048) return null; + if (!/^[A-Za-z0-9._~+\-/]+$/.test(normalized)) return null; + return normalized; +} + +function oauthSentryContext(searchParams: URLSearchParams) { + const state = searchParams.get('state'); + return { + hasCode: !!searchParams.get('code'), + hasState: !!state, + stateHash: state ? createHash('sha256').update(state).digest('hex').slice(0, 8) : null, + error: searchParams.get('error'), + errorDescription: searchParams.get('error_description'), + }; +} + +/** + * AgentCard OAuth callback. + * + * Verifies the signed state, exchanges the authorization code (+ PKCE verifier) + * for tokens, stores them encrypted, and pushes the access token to the + * OpenClaw worker as the AGENTCARD_API_KEY secret so the `agentcard` MCP server + * is configured for the user's agent. + */ +export async function GET(request: NextRequest) { + try { + const { user, authFailedResponse } = await getUserFromAuth({ adminOnly: false }); + if (authFailedResponse) { + return NextResponse.redirect(new URL('/users/sign_in', APP_URL)); + } + + const searchParams = request.nextUrl.searchParams; + const state = searchParams.get('state'); + const code = searchParams.get('code'); + const error = searchParams.get('error'); + const errorDescription = searchParams.get('error_description'); + + const verifiedState = verifyAgentCardOAuthState(state); + if (!verifiedState) { + captureMessage('AgentCard callback invalid or tampered state', { + level: 'warning', + tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth' }, + extra: oauthSentryContext(searchParams), + }); + return NextResponse.redirect(new URL('/claw/settings?error=invalid_state', APP_URL)); + } + + if (verifiedState.userId !== user.id) { + captureMessage('AgentCard callback user mismatch (possible CSRF)', { + level: 'warning', + tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth' }, + extra: { stateUserId: verifiedState.userId, sessionUserId: user.id }, + }); + return NextResponse.redirect(new URL('/claw/settings?error=unauthorized', APP_URL)); + } + + if (verifiedState.owner.type === 'org') { + await ensureOrganizationAccess({ user }, verifiedState.owner.id); + } else if (verifiedState.owner.id !== user.id) { + return NextResponse.redirect(new URL('/claw/settings?error=unauthorized', APP_URL)); + } + + const oauthErrorCode = sanitizeOAuthProviderError(error, errorDescription); + if (oauthErrorCode) { + captureMessage('AgentCard OAuth error', { + level: 'warning', + tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth' }, + extra: oauthSentryContext(searchParams), + }); + return NextResponse.redirect( + new URL(buildRedirectPath(verifiedState, `error=${oauthErrorCode}`), APP_URL) + ); + } + + const oauthCode = sanitizeOAuthCode(code); + if (!oauthCode) { + return NextResponse.redirect( + new URL(buildRedirectPath(verifiedState, 'error=missing_code'), APP_URL) + ); + } + + const instance = await getInstanceById(verifiedState.instanceId); + if (!instance) { + return NextResponse.redirect( + new URL(buildRedirectPath(verifiedState, 'error=missing_instance'), APP_URL) + ); + } + + const isUserOwnerMatch = + verifiedState.owner.type === 'user' && + instance.userId === user.id && + instance.organizationId === null; + const isOrgOwnerMatch = + verifiedState.owner.type === 'org' && instance.organizationId === verifiedState.owner.id; + if (!isUserOwnerMatch && !isOrgOwnerMatch) { + captureMessage('AgentCard callback owner/instance mismatch', { + level: 'warning', + tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth' }, + extra: { + owner: verifiedState.owner, + instanceId: instance.id, + instanceUserId: instance.userId, + instanceOrgId: instance.organizationId, + userId: user.id, + }, + }); + return NextResponse.redirect(new URL('/claw/settings?error=unauthorized', APP_URL)); + } + + if (verifiedState.owner.type === 'org') { + await requireOrganizationKiloClawComputeEntitlement(verifiedState.owner.id); + } else { + await requireKiloClawAccess(user.id); + } + + const tokens = await exchangeAgentCardCode({ + code: oauthCode, + codeVerifier: verifiedState.codeVerifier, + clientId: verifiedState.clientId, + }); + + await upsertKiloClawAgentCardOAuthConnection({ + instanceId: verifiedState.instanceId, + oauthClientId: verifiedState.clientId, + tokens, + }); + + // Push the freshly-minted access token to the worker. config-writer turns + // AGENTCARD_API_KEY into the `agentcard` MCP server's Bearer header. + // Best-effort: the OAuth grant is already persisted above, so a transient + // secret-push failure (e.g. worker unavailable) must not discard the + // connection — the token-refresh job / next checkin re-pushes it. + try { + const kiloclawClient = new KiloClawInternalClient(); + await kiloclawClient.patchSecrets( + user.id, + { secrets: { [AGENTCARD_SECRET_KEY]: encryptKiloClawSecret(tokens.accessToken) } }, + workerInstanceId(instance) + ); + } catch (pushError) { + console.error('AgentCard secret push failed (connection kept):', pushError); + captureException(pushError, { + tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth_push' }, + extra: oauthSentryContext(searchParams), + }); + } + + const successPath = buildRedirectPath(verifiedState, 'success=agentcard_connected'); + return NextResponse.redirect(new URL(successPath, APP_URL)); + } catch (error) { + console.error('Error handling AgentCard OAuth callback:', error); + const state = request.nextUrl.searchParams.get('state'); + captureException(error, { + tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth' }, + extra: oauthSentryContext(request.nextUrl.searchParams), + }); + return NextResponse.redirect( + new URL( + buildRedirectPath(verifyAgentCardOAuthState(state), 'error=connection_failed'), + APP_URL + ) + ); + } +} diff --git a/apps/web/src/app/api/integrations/agentcard/connect/route.ts b/apps/web/src/app/api/integrations/agentcard/connect/route.ts new file mode 100644 index 000000000..b88b58ff4 --- /dev/null +++ b/apps/web/src/app/api/integrations/agentcard/connect/route.ts @@ -0,0 +1,110 @@ +import type { NextRequest } from 'next/server'; +import { NextResponse } from 'next/server'; +import { z } from 'zod'; +import { captureException, captureMessage } from '@sentry/nextjs'; +import { getUserFromAuth } from '@/lib/user/server'; +import { APP_URL } from '@/lib/constants'; +import { ensureOrganizationAccess } from '@/routers/organizations/utils'; +import { requireKiloClawAccess } from '@/lib/kiloclaw/access-gate'; +import { requireOrganizationKiloClawComputeEntitlement } from '@/lib/organizations/trial-middleware'; +import { getActiveInstance, getActiveOrgInstance } from '@/lib/kiloclaw/instance-registry'; +import { + buildAgentCardOAuthUrl, + deriveCodeChallenge, + generateCodeVerifier, + getOrRegisterClientId, +} from '@/lib/integrations/agentcard/agentcard-service'; +import { + createAgentCardOAuthState, + isSafeAgentCardOAuthReturnTo, +} from '@/lib/integrations/agentcard/oauth-state'; +import type { Owner } from '@/lib/integrations/core/types'; + +const OrganizationIdSchema = z.string().uuid(); + +function buildConnectErrorPath(organizationId: string | undefined, errorCode: string): string { + if (organizationId) { + return `/organizations/${organizationId}/claw/settings?error=${encodeURIComponent(errorCode)}`; + } + return `/claw/settings?error=${encodeURIComponent(errorCode)}`; +} + +/** + * AgentCard OAuth Connect. + * + * Initiates the AgentCard authorization-code + PKCE flow. The PKCE verifier and + * target instance are carried in a signed state bound to the initiating user. + */ +export async function GET(request: NextRequest) { + let organizationId: string | undefined; + + try { + const { user, authFailedResponse } = await getUserFromAuth({ adminOnly: false }); + if (authFailedResponse) { + return NextResponse.redirect(new URL('/users/sign_in', APP_URL)); + } + + const organizationIdParam = request.nextUrl.searchParams.get('organizationId'); + if (organizationIdParam) { + const parsedOrgId = OrganizationIdSchema.safeParse(organizationIdParam); + if (!parsedOrgId.success) { + return NextResponse.redirect(new URL('/claw/settings?error=invalid_organization', APP_URL)); + } + organizationId = parsedOrgId.data; + await ensureOrganizationAccess({ user }, organizationId); + await requireOrganizationKiloClawComputeEntitlement(organizationId); + } else { + await requireKiloClawAccess(user.id); + } + + const owner: Owner = organizationId + ? { type: 'org', id: organizationId } + : { type: 'user', id: user.id }; + + const instance = organizationId + ? await getActiveOrgInstance(user.id, organizationId) + : await getActiveInstance(user.id); + + if (!instance) { + captureMessage('AgentCard connect missing active KiloClaw instance', { + level: 'warning', + tags: { endpoint: 'agentcard/connect', source: 'agentcard_oauth' }, + extra: { userId: user.id, organizationId }, + }); + return NextResponse.redirect( + new URL(buildConnectErrorPath(organizationId, 'missing_instance'), APP_URL) + ); + } + + const returnToParam = request.nextUrl.searchParams.get('returnTo'); + const returnTo = + returnToParam && isSafeAgentCardOAuthReturnTo(returnToParam) ? returnToParam : undefined; + + const codeVerifier = generateCodeVerifier(); + const codeChallenge = deriveCodeChallenge(codeVerifier); + const clientId = await getOrRegisterClientId(); + + const state = createAgentCardOAuthState( + { + owner, + instanceId: instance.id, + clientId, + codeVerifier, + ...(returnTo ? { returnTo } : {}), + }, + user.id + ); + + const oauthUrl = buildAgentCardOAuthUrl({ state, codeChallenge, clientId }); + return NextResponse.redirect(oauthUrl); + } catch (error) { + console.error('Error initiating AgentCard OAuth flow:', error); + captureException(error, { + tags: { endpoint: 'agentcard/connect', source: 'agentcard_oauth' }, + extra: { organizationId }, + }); + return NextResponse.redirect( + new URL(buildConnectErrorPath(organizationId, 'oauth_init_failed'), APP_URL) + ); + } +} diff --git a/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts b/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts new file mode 100644 index 000000000..4fbe19639 --- /dev/null +++ b/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts @@ -0,0 +1,124 @@ +import type { NextRequest } from 'next/server'; +import { NextResponse } from 'next/server'; +import { z } from 'zod'; +import { captureException, captureMessage } from '@sentry/nextjs'; +import { APP_URL } from '@/lib/constants'; +import { getUserFromAuth } from '@/lib/user/server'; +import { ensureOrganizationAccess } from '@/routers/organizations/utils'; +import { + getActiveInstance, + getActiveOrgInstance, + workerInstanceId, +} from '@/lib/kiloclaw/instance-registry'; +import { + clearKiloClawAgentCardOAuthConnection, + decryptRefreshToken, + getKiloClawAgentCardOAuthConnection, +} from '@/lib/kiloclaw/agentcard-oauth-connections'; +import { revokeAgentCardToken } from '@/lib/integrations/agentcard/agentcard-service'; +import { KiloClawInternalClient } from '@/lib/kiloclaw/kiloclaw-internal-client'; + +const AGENTCARD_SECRET_KEY = 'AGENTCARD_API_KEY'; +const OrganizationIdSchema = z.string().uuid(); + +function buildDisconnectPath(organizationId: string | undefined, queryParam: string): string { + if (organizationId) { + return `/organizations/${organizationId}/claw/settings?${queryParam}`; + } + return `/claw/settings?${queryParam}`; +} + +function isSameOriginMutation(request: NextRequest): boolean { + const origin = request.headers.get('origin'); + if (!origin) return false; + try { + return new URL(origin).origin === new URL(APP_URL).origin; + } catch { + return false; + } +} + +export async function POST(request: NextRequest) { + let organizationId: string | undefined; + + try { + if (!isSameOriginMutation(request)) { + return NextResponse.redirect(new URL('/claw/settings?error=invalid_origin', APP_URL), 303); + } + + const { user, authFailedResponse } = await getUserFromAuth({ adminOnly: false }); + if (authFailedResponse) { + return NextResponse.redirect(new URL('/users/sign_in', APP_URL), 303); + } + + const organizationIdParam = request.nextUrl.searchParams.get('organizationId'); + if (organizationIdParam) { + const parsedOrgId = OrganizationIdSchema.safeParse(organizationIdParam); + if (!parsedOrgId.success) { + return NextResponse.redirect( + new URL('/claw/settings?error=invalid_organization', APP_URL), + 303 + ); + } + organizationId = parsedOrgId.data; + await ensureOrganizationAccess({ user }, organizationId); + } + + const instance = organizationId + ? await getActiveOrgInstance(user.id, organizationId) + : await getActiveInstance(user.id); + + if (!instance) { + captureMessage('AgentCard disconnect missing active KiloClaw instance', { + level: 'warning', + tags: { endpoint: 'agentcard/disconnect', source: 'agentcard_oauth' }, + extra: { userId: user.id, organizationId }, + }); + return NextResponse.redirect( + new URL(buildDisconnectPath(organizationId, 'error=missing_instance'), APP_URL), + 303 + ); + } + + const existing = await getKiloClawAgentCardOAuthConnection(instance.id); + + // Clear the stored connection first so disconnect fails closed. + await clearKiloClawAgentCardOAuthConnection(instance.id); + + // Remove the worker secret so the `agentcard` MCP server is dropped from + // the gateway config on next sync. + const kiloclawClient = new KiloClawInternalClient(); + await kiloclawClient.patchSecrets( + user.id, + { secrets: { [AGENTCARD_SECRET_KEY]: null } }, + workerInstanceId(instance) + ); + + // Best-effort revocation of the OAuth grant at AgentCard. + if (existing) { + const refreshToken = decryptRefreshToken(existing); + if (refreshToken) { + await revokeAgentCardToken(refreshToken); + } + } + + return NextResponse.redirect( + new URL(buildDisconnectPath(organizationId, 'success=agentcard_disconnected'), APP_URL), + 303 + ); + } catch (error) { + console.error('Error disconnecting AgentCard OAuth:', error); + captureException(error, { + tags: { endpoint: 'agentcard/disconnect', source: 'agentcard_oauth' }, + extra: { organizationId }, + }); + return NextResponse.redirect( + new URL(buildDisconnectPath(organizationId, 'error=disconnect_failed'), APP_URL), + 303 + ); + } +} + +export async function GET() { + return NextResponse.redirect(new URL('/claw/settings?error=method_not_allowed', APP_URL)); +} diff --git a/apps/web/src/lib/config.server.ts b/apps/web/src/lib/config.server.ts index e5d7de30e..456b1b5c6 100644 --- a/apps/web/src/lib/config.server.ts +++ b/apps/web/src/lib/config.server.ts @@ -21,6 +21,13 @@ export const GOOGLE_WORKSPACE_OAUTH_REDIRECT_URI = getEnvVariable( export const GOOGLE_WORKSPACE_REFRESH_TOKEN_ENCRYPTION_KEY = getEnvVariable( 'GOOGLE_WORKSPACE_REFRESH_TOKEN_ENCRYPTION_KEY' ); +// AgentCard OAuth (mcp.agentcard.sh is a full OAuth 2.1 authorization server). +// Base URL is overridable for sandbox/local AgentCard; client_id is optional — +// when unset the integration dynamically registers a client on first use. +export const AGENTCARD_MCP_BASE_URL = + getEnvVariable('AGENTCARD_MCP_BASE_URL') || 'https://mcp.agentcard.sh'; +export const AGENTCARD_OAUTH_CLIENT_ID = getEnvVariable('AGENTCARD_OAUTH_CLIENT_ID'); + export const GITHUB_CLIENT_ID = getEnvVariable('GITHUB_CLIENT_ID'); export const GITHUB_CLIENT_SECRET = getEnvVariable('GITHUB_CLIENT_SECRET'); export const USER_GITHUB_APP_TOKEN_ACTIVE_KEY_ID = getEnvVariable( diff --git a/apps/web/src/lib/integrations/agentcard/agentcard-service.ts b/apps/web/src/lib/integrations/agentcard/agentcard-service.ts new file mode 100644 index 000000000..dc9970829 --- /dev/null +++ b/apps/web/src/lib/integrations/agentcard/agentcard-service.ts @@ -0,0 +1,210 @@ +import 'server-only'; + +import crypto from 'node:crypto'; +import { APP_URL } from '@/lib/constants'; +import { AGENTCARD_MCP_BASE_URL, AGENTCARD_OAUTH_CLIENT_ID } from '@/lib/config.server'; + +/** + * AgentCard OAuth 2.1 client. + * + * AgentCard's MCP host (mcp.agentcard.sh) is a full OAuth 2.1 authorization + * server: discovery at /.well-known/oauth-authorization-server, /authorize, + * /token, /register (dynamic client registration), /revoke, PKCE (S256), and a + * magic-link + consent flow. This module implements the third-party side of + * the authorization-code + PKCE flow so Kilo can show a "Connect AgentCard" + * button instead of asking users to paste a token. + * + * The client is a *public* client (token_endpoint_auth_method = "none"); there + * is no client secret — security comes from PKCE + the registered redirect URI. + */ + +export const AGENTCARD_OAUTH_GRANT_TYPES = ['authorization_code', 'refresh_token'] as const; + +/** The redirect URI Kilo registers and AgentCard redirects back to. */ +export function agentCardRedirectUri(): string { + return `${APP_URL}/api/integrations/agentcard/callback`; +} + +function authorizeEndpoint(): string { + return `${AGENTCARD_MCP_BASE_URL}/authorize`; +} + +function tokenEndpoint(): string { + return `${AGENTCARD_MCP_BASE_URL}/token`; +} + +function registrationEndpoint(): string { + return `${AGENTCARD_MCP_BASE_URL}/register`; +} + +function revocationEndpoint(): string { + return `${AGENTCARD_MCP_BASE_URL}/revoke`; +} + +// --------------------------------------------------------------------------- +// PKCE +// --------------------------------------------------------------------------- + +/** Generate a high-entropy PKCE code verifier (RFC 7636: 43–128 chars). */ +export function generateCodeVerifier(): string { + return crypto.randomBytes(32).toString('base64url'); +} + +/** Derive the S256 code challenge for a verifier. */ +export function deriveCodeChallenge(codeVerifier: string): string { + return crypto.createHash('sha256').update(codeVerifier).digest('base64url'); +} + +// --------------------------------------------------------------------------- +// Dynamic client registration +// --------------------------------------------------------------------------- + +// Cache the registered client_id for the lifetime of the process so we don't +// register a new client on every connect. A pre-configured +// AGENTCARD_OAUTH_CLIENT_ID always wins. +let cachedClientId: string | null = AGENTCARD_OAUTH_CLIENT_ID || null; + +type RegisterClientResponse = { + client_id: string; +}; + +/** + * Returns the OAuth client_id to use. Uses AGENTCARD_OAUTH_CLIENT_ID when set, + * otherwise dynamically registers a public client with AgentCard (once per + * process) for Kilo's callback redirect URI. + */ +export async function getOrRegisterClientId(): Promise { + if (cachedClientId) return cachedClientId; + + const res = await fetch(registrationEndpoint(), { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + client_name: 'Kilo', + redirect_uris: [agentCardRedirectUri()], + grant_types: [...AGENTCARD_OAUTH_GRANT_TYPES], + response_types: ['code'], + token_endpoint_auth_method: 'none', + }), + }); + + if (!res.ok) { + throw new Error( + `AgentCard dynamic client registration failed (${res.status}): ${await res.text()}` + ); + } + + const data = (await res.json()) as RegisterClientResponse; + if (!data.client_id) { + throw new Error('AgentCard registration response missing client_id'); + } + + cachedClientId = data.client_id; + return cachedClientId; +} + +// --------------------------------------------------------------------------- +// Authorization + token exchange +// --------------------------------------------------------------------------- + +export function buildAgentCardOAuthUrl(args: { + state: string; + codeChallenge: string; + clientId: string; +}): string { + const url = new URL(authorizeEndpoint()); + url.searchParams.set('response_type', 'code'); + url.searchParams.set('client_id', args.clientId); + url.searchParams.set('redirect_uri', agentCardRedirectUri()); + url.searchParams.set('code_challenge', args.codeChallenge); + url.searchParams.set('code_challenge_method', 'S256'); + url.searchParams.set('state', args.state); + return url.toString(); +} + +export type AgentCardTokenSet = { + accessToken: string; + refreshToken: string | null; + /** Absolute expiry as an ISO string, derived from expires_in. */ + expiresAt: string | null; + scopes: string[]; +}; + +type RawTokenResponse = { + access_token?: string; + refresh_token?: string; + expires_in?: number; + scope?: string; + token_type?: string; +}; + +function parseTokenResponse(raw: RawTokenResponse): AgentCardTokenSet { + if (!raw.access_token) { + throw new Error('AgentCard token response missing access_token'); + } + const expiresAt = + typeof raw.expires_in === 'number' + ? new Date(Date.now() + raw.expires_in * 1000).toISOString() + : null; + const scopes = raw.scope ? [...new Set(raw.scope.split(/\s+/).filter(Boolean))].sort() : []; + return { + accessToken: raw.access_token, + refreshToken: raw.refresh_token ?? null, + expiresAt, + scopes, + }; +} + +async function postToken(body: URLSearchParams): Promise { + const res = await fetch(tokenEndpoint(), { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: body.toString(), + }); + if (!res.ok) { + throw new Error(`AgentCard token request failed (${res.status}): ${await res.text()}`); + } + return parseTokenResponse((await res.json()) as RawTokenResponse); +} + +/** Exchange an authorization code (+ PKCE verifier) for a token set. */ +export function exchangeAgentCardCode(args: { + code: string; + codeVerifier: string; + clientId: string; +}): Promise { + const body = new URLSearchParams({ + grant_type: 'authorization_code', + code: args.code, + redirect_uri: agentCardRedirectUri(), + client_id: args.clientId, + code_verifier: args.codeVerifier, + }); + return postToken(body); +} + +/** Exchange a refresh token for a fresh access token. */ +export function refreshAgentCardToken(args: { + refreshToken: string; + clientId: string; +}): Promise { + const body = new URLSearchParams({ + grant_type: 'refresh_token', + refresh_token: args.refreshToken, + client_id: args.clientId, + }); + return postToken(body); +} + +/** Best-effort token revocation (RFC 7009). Never throws. */ +export async function revokeAgentCardToken(token: string): Promise { + try { + await fetch(revocationEndpoint(), { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: new URLSearchParams({ token }).toString(), + }); + } catch { + // Revocation is best-effort; local disconnect succeeds regardless. + } +} diff --git a/apps/web/src/lib/integrations/agentcard/oauth-state.test.ts b/apps/web/src/lib/integrations/agentcard/oauth-state.test.ts new file mode 100644 index 000000000..bbe6de215 --- /dev/null +++ b/apps/web/src/lib/integrations/agentcard/oauth-state.test.ts @@ -0,0 +1,63 @@ +import { createAgentCardOAuthState, verifyAgentCardOAuthState } from './oauth-state'; + +const CODE_VERIFIER = 'a'.repeat(64); + +describe('agentcard oauth state', () => { + test('round-trips payload and user binding', () => { + const state = createAgentCardOAuthState( + { + owner: { type: 'org', id: '4f17f611-3021-495d-98fd-6eb53de9adf5' }, + instanceId: 'bcab9f2b-968f-43f4-8254-668212e04031', + clientId: '62e42803-614d-40ea-a60c-e59db970380a', + codeVerifier: CODE_VERIFIER, + returnTo: '/claw/settings', + }, + 'user_123' + ); + + expect(verifyAgentCardOAuthState(state)).toEqual({ + owner: { type: 'org', id: '4f17f611-3021-495d-98fd-6eb53de9adf5' }, + instanceId: 'bcab9f2b-968f-43f4-8254-668212e04031', + clientId: '62e42803-614d-40ea-a60c-e59db970380a', + codeVerifier: CODE_VERIFIER, + returnTo: '/claw/settings', + userId: 'user_123', + }); + }); + + test('rejects tampered state', () => { + const state = createAgentCardOAuthState( + { + owner: { type: 'user', id: 'user_abc' }, + instanceId: 'bcab9f2b-968f-43f4-8254-668212e04031', + clientId: 'client_1', + codeVerifier: CODE_VERIFIER, + }, + 'user_abc' + ); + + const tampered = `${state.slice(0, -1)}x`; + expect(verifyAgentCardOAuthState(tampered)).toBeNull(); + }); + + test('rejects non-agentcard signed state payload', () => { + expect(verifyAgentCardOAuthState('eyJvd25lciI6InVzZXJfMSJ9.signature')).toBeNull(); + }); + + test('rejects an unsafe returnTo (open redirect)', () => { + // Build a payload with a protocol-relative returnTo and confirm the schema + // refinement rejects it on verify. + const state = createAgentCardOAuthState( + { + owner: { type: 'user', id: 'user_abc' }, + instanceId: 'bcab9f2b-968f-43f4-8254-668212e04031', + clientId: 'client_1', + codeVerifier: CODE_VERIFIER, + // create-time does not validate returnTo; verify-time zod refinement must reject it + returnTo: '//evil.example.com', + }, + 'user_abc' + ); + expect(verifyAgentCardOAuthState(state)).toBeNull(); + }); +}); diff --git a/apps/web/src/lib/integrations/agentcard/oauth-state.ts b/apps/web/src/lib/integrations/agentcard/oauth-state.ts new file mode 100644 index 000000000..fa5f034aa --- /dev/null +++ b/apps/web/src/lib/integrations/agentcard/oauth-state.ts @@ -0,0 +1,81 @@ +import 'server-only'; + +import { z } from 'zod'; +import { createOAuthState, verifyOAuthState } from '@/lib/integrations/oauth-state'; +import { validateReturnPath } from '@/lib/integrations/validate-return-path'; + +/** + * Signed OAuth state for the AgentCard connect flow. + * + * Mirrors the Google integration: the structured payload (owner, instanceId, + * PKCE verifier, optional returnTo) is base64url-encoded and carried as the + * `owner` string of the shared HMAC-signed state (see `oauth-state.ts`). The + * HMAC binds the flow to the initiating user and enforces a TTL, defending + * against CSRF / authorization-code injection. + * + * The PKCE `codeVerifier` is stored inside the signed (tamper-evident) state + * rather than a cookie so the callback can complete the exchange statelessly. + */ + +const AGENTCARD_OAUTH_STATE_PREFIX = 'agentcard:'; + +const AgentCardOAuthStatePayloadSchema = z.object({ + owner: z.discriminatedUnion('type', [ + z.object({ type: z.literal('user'), id: z.string().min(1) }), + z.object({ type: z.literal('org'), id: z.string().uuid() }), + ]), + instanceId: z.string().uuid(), + // OAuth client_id used for the authorize request; must match the token + // exchange. Carried here (not secret) so the callback is stateless. + clientId: z.string().min(1), + codeVerifier: z.string().min(43).max(128), + returnTo: z + .string() + .refine(value => validateReturnPath(value) !== null, 'returnTo failed safety validation') + .optional(), +}); + +export type AgentCardOAuthStatePayload = z.infer; + +export type VerifiedAgentCardOAuthState = AgentCardOAuthStatePayload & { + userId: string; +}; + +export function isSafeAgentCardOAuthReturnTo(value: string): boolean { + return validateReturnPath(value) !== null; +} + +export function createAgentCardOAuthState( + payload: AgentCardOAuthStatePayload, + userId: string +): string { + const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64url'); + return createOAuthState(`${AGENTCARD_OAUTH_STATE_PREFIX}${encodedPayload}`, userId); +} + +export function verifyAgentCardOAuthState( + state: string | null +): VerifiedAgentCardOAuthState | null { + const verified = verifyOAuthState(state); + if (!verified) return null; + + if (!verified.owner.startsWith(AGENTCARD_OAUTH_STATE_PREFIX)) { + return null; + } + + const encodedPayload = verified.owner.slice(AGENTCARD_OAUTH_STATE_PREFIX.length); + if (!encodedPayload) return null; + + try { + const decodedJson = Buffer.from(encodedPayload, 'base64url').toString('utf8'); + const parsed = AgentCardOAuthStatePayloadSchema.safeParse(JSON.parse(decodedJson)); + if (!parsed.success) return null; + + return { + ...parsed.data, + userId: verified.userId, + }; + } catch { + return null; + } +} diff --git a/apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts b/apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts new file mode 100644 index 000000000..d87b10c74 --- /dev/null +++ b/apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts @@ -0,0 +1,199 @@ +import 'server-only'; + +import { and, eq } from 'drizzle-orm'; +import { db } from '@/lib/drizzle'; +import { BYOK_ENCRYPTION_KEY } from '@/lib/config.server'; +import { encryptWithSymmetricKey, decryptWithSymmetricKey } from '@/lib/encryption'; +import { + kiloclaw_agentcard_oauth_connections, + type KiloClawAgentCardOAuthConnection, + type KiloClawAgentCardOAuthStatus, +} from '@kilocode/db/schema'; +import { + refreshAgentCardToken, + type AgentCardTokenSet, +} from '@/lib/integrations/agentcard/agentcard-service'; + +// Refresh the access token when it expires within this window so the worker is +// never handed a token that's about to die. +const REFRESH_BUFFER_MS = 5 * 60 * 1000; + +function encryptToken(value: string): string { + if (!BYOK_ENCRYPTION_KEY) { + throw new Error('BYOK_ENCRYPTION_KEY is not configured'); + } + return encryptWithSymmetricKey(value, BYOK_ENCRYPTION_KEY); +} + +function decryptToken(value: string): string { + if (!BYOK_ENCRYPTION_KEY) { + throw new Error('BYOK_ENCRYPTION_KEY is not configured'); + } + return decryptWithSymmetricKey(value, BYOK_ENCRYPTION_KEY); +} + +type UpsertInput = { + instanceId: string; + oauthClientId: string; + tokens: AgentCardTokenSet; + accountEmail?: string | null; +}; + +export async function upsertKiloClawAgentCardOAuthConnection( + input: UpsertInput +): Promise { + const now = new Date().toISOString(); + const accessTokenEncrypted = encryptToken(input.tokens.accessToken); + const refreshTokenEncrypted = input.tokens.refreshToken + ? encryptToken(input.tokens.refreshToken) + : null; + const status: KiloClawAgentCardOAuthStatus = 'active'; + + await db + .insert(kiloclaw_agentcard_oauth_connections) + .values({ + instance_id: input.instanceId, + provider: 'agentcard', + account_email: input.accountEmail ?? null, + oauth_client_id: input.oauthClientId, + access_token_encrypted: accessTokenEncrypted, + refresh_token_encrypted: refreshTokenEncrypted, + token_expires_at: input.tokens.expiresAt, + scopes: input.tokens.scopes, + status, + last_error: null, + last_error_at: null, + connected_at: now, + created_at: now, + updated_at: now, + }) + .onConflictDoUpdate({ + target: kiloclaw_agentcard_oauth_connections.instance_id, + set: { + account_email: input.accountEmail ?? null, + oauth_client_id: input.oauthClientId, + access_token_encrypted: accessTokenEncrypted, + // Keep the existing refresh token if the refresh response omitted one. + ...(refreshTokenEncrypted ? { refresh_token_encrypted: refreshTokenEncrypted } : {}), + token_expires_at: input.tokens.expiresAt, + scopes: input.tokens.scopes, + status, + last_error: null, + last_error_at: null, + connected_at: now, + updated_at: now, + }, + }); + + const row = await getKiloClawAgentCardOAuthConnection(input.instanceId); + if (!row) { + throw new Error('AgentCard OAuth connection row missing after upsert'); + } + return row; +} + +export async function getKiloClawAgentCardOAuthConnection( + instanceId: string +): Promise { + const [row] = await db + .select() + .from(kiloclaw_agentcard_oauth_connections) + .where( + and( + eq(kiloclaw_agentcard_oauth_connections.instance_id, instanceId), + eq(kiloclaw_agentcard_oauth_connections.provider, 'agentcard') + ) + ) + .limit(1); + + return row ?? null; +} + +export async function clearKiloClawAgentCardOAuthConnection(instanceId: string): Promise { + await db + .delete(kiloclaw_agentcard_oauth_connections) + .where( + and( + eq(kiloclaw_agentcard_oauth_connections.instance_id, instanceId), + eq(kiloclaw_agentcard_oauth_connections.provider, 'agentcard') + ) + ); +} + +export async function setKiloClawAgentCardOAuthConnectionError( + instanceId: string, + message: string +): Promise { + const now = new Date().toISOString(); + await db + .update(kiloclaw_agentcard_oauth_connections) + .set({ + status: 'action_required', + last_error: message, + last_error_at: now, + updated_at: now, + }) + .where( + and( + eq(kiloclaw_agentcard_oauth_connections.instance_id, instanceId), + eq(kiloclaw_agentcard_oauth_connections.provider, 'agentcard') + ) + ); +} + +/** Decrypt the stored refresh token, if any. */ +export function decryptRefreshToken(connection: KiloClawAgentCardOAuthConnection): string | null { + return connection.refresh_token_encrypted + ? decryptToken(connection.refresh_token_encrypted) + : null; +} + +/** + * Returns a valid (non-expired) access token for the connection's instance, + * refreshing via AgentCard if it's within the refresh buffer of expiry. On + * refresh failure the connection is marked `action_required` and the error is + * rethrown so callers can surface a reconnect prompt. + * + * AgentCard access tokens are short-lived (~1h); the OpenClaw gateway hits the + * MCP server directly with a static Bearer header, so the web app must keep a + * fresh token in the worker secret. Call this before pushing to the worker. + */ +export async function getValidAgentCardAccessToken( + connection: KiloClawAgentCardOAuthConnection +): Promise { + const expiresAt = connection.token_expires_at + ? new Date(connection.token_expires_at).getTime() + : null; + const needsRefresh = expiresAt !== null && expiresAt - Date.now() <= REFRESH_BUFFER_MS; + + if (!needsRefresh) { + return decryptToken(connection.access_token_encrypted); + } + + const refreshToken = decryptRefreshToken(connection); + if (!refreshToken) { + // No refresh token — return the (possibly stale) access token; the worker + // call will fail and the user can reconnect. + return decryptToken(connection.access_token_encrypted); + } + + try { + const tokens = await refreshAgentCardToken({ + refreshToken, + clientId: connection.oauth_client_id, + }); + const updated = await upsertKiloClawAgentCardOAuthConnection({ + instanceId: connection.instance_id, + oauthClientId: connection.oauth_client_id, + tokens, + accountEmail: connection.account_email, + }); + return decryptToken(updated.access_token_encrypted); + } catch (error) { + await setKiloClawAgentCardOAuthConnectionError( + connection.instance_id, + error instanceof Error ? error.message : 'AgentCard token refresh failed' + ); + throw error; + } +} diff --git a/apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts b/apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts new file mode 100644 index 000000000..cd48542bb --- /dev/null +++ b/apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts @@ -0,0 +1,102 @@ +import 'server-only'; + +import { and, eq, lte } from 'drizzle-orm'; +import { db } from '@/lib/drizzle'; +import { kiloclaw_agentcard_oauth_connections } from '@kilocode/db/schema'; +import { getInstanceById, workerInstanceId } from '@/lib/kiloclaw/instance-registry'; +import { refreshAgentCardToken } from '@/lib/integrations/agentcard/agentcard-service'; +import { + decryptRefreshToken, + setKiloClawAgentCardOAuthConnectionError, + upsertKiloClawAgentCardOAuthConnection, +} from '@/lib/kiloclaw/agentcard-oauth-connections'; +import { encryptKiloClawSecret } from '@/lib/kiloclaw/encryption'; +import { KiloClawInternalClient } from '@/lib/kiloclaw/kiloclaw-internal-client'; + +// The OpenClaw worker reads this env secret to configure the `agentcard` MCP +// server's Bearer header (see services/kiloclaw/controller/src/config-writer.ts). +const AGENTCARD_SECRET_KEY = 'AGENTCARD_API_KEY'; + +export type AgentCardRefreshSweepResult = { + scanned: number; + refreshed: number; + failed: number; + skipped: number; +}; + +/** + * Refresh Agentcard OAuth access tokens that are close to expiry and re-push + * the new token to each connection's worker so the agent's `agentcard` MCP + * server keeps a valid Bearer. + * + * Agentcard access tokens live ~1h; this is meant to run on a cron a few times + * an hour with a window comfortably larger than the cron interval so a token + * is always refreshed before it expires. Per-connection failures are isolated + * (the connection is marked `action_required`) so one bad refresh can't abort + * the sweep. + */ +export async function refreshExpiringAgentCardConnections(opts: { + withinMs: number; +}): Promise { + const cutoffIso = new Date(Date.now() + opts.withinMs).toISOString(); + + // Only active connections with a known expiry inside the window. Rows with a + // null token_expires_at are excluded by the SQL comparison (expected: every + // token Agentcard issues carries expires_in). + const rows = await db + .select() + .from(kiloclaw_agentcard_oauth_connections) + .where( + and( + eq(kiloclaw_agentcard_oauth_connections.status, 'active'), + lte(kiloclaw_agentcard_oauth_connections.token_expires_at, cutoffIso) + ) + ); + + let refreshed = 0; + let failed = 0; + let skipped = 0; + const client = new KiloClawInternalClient(); + + for (const conn of rows) { + const refreshToken = decryptRefreshToken(conn); + if (!refreshToken) { + // No refresh token — can't renew unattended; leave for the user to reconnect. + skipped++; + continue; + } + + const instance = await getInstanceById(conn.instance_id); + if (!instance) { + skipped++; + continue; + } + + try { + const tokens = await refreshAgentCardToken({ + refreshToken, + clientId: conn.oauth_client_id, + }); + await upsertKiloClawAgentCardOAuthConnection({ + instanceId: conn.instance_id, + oauthClientId: conn.oauth_client_id, + tokens, + accountEmail: conn.account_email, + }); + await client.patchSecrets( + instance.userId, + { secrets: { [AGENTCARD_SECRET_KEY]: encryptKiloClawSecret(tokens.accessToken) } }, + workerInstanceId(instance) + ); + refreshed++; + } catch (error) { + await setKiloClawAgentCardOAuthConnectionError( + conn.instance_id, + error instanceof Error ? error.message : 'Agentcard token refresh failed' + ); + failed++; + } + } + + return { scanned: rows.length, refreshed, failed, skipped }; +} diff --git a/apps/web/src/lib/kiloclaw/types.ts b/apps/web/src/lib/kiloclaw/types.ts index f933f1e92..7fc37fba7 100644 --- a/apps/web/src/lib/kiloclaw/types.ts +++ b/apps/web/src/lib/kiloclaw/types.ts @@ -931,6 +931,15 @@ export type KiloClawDashboardStatus = PlatformStatusResponse & { * cancelled" comes through email/push, not the live status field. */ scheduledAction: KiloClawScheduledActionStatusBlock | null; + /** + * AgentCard OAuth connection state, sourced from Kilo's own DB (the + * kiloclaw_agentcard_oauth_connections table) rather than the worker. + * Optional so existing PlatformStatusResponse mocks need no changes; + * undefined is treated as "not connected". + */ + agentcardOAuthConnected?: boolean; + agentcardOAuthStatus?: 'active' | 'action_required' | 'disconnected'; + agentcardOAuthAccountEmail?: string | null; }; export type KiloClawScheduledActionStatusBlock = { diff --git a/apps/web/src/lib/stytch.ts b/apps/web/src/lib/stytch.ts index 5aabb1fa1..8e9e68ac4 100644 --- a/apps/web/src/lib/stytch.ts +++ b/apps/web/src/lib/stytch.ts @@ -12,11 +12,20 @@ import { domainIsRestrictedFromStytchFreeCredits } from './domainIsRestrictedFro import { grantCreditForCategory } from './promotionalCredits'; import PostHogClient from '@/lib/posthog'; import { reportEvents } from '@/lib/ai-gateway/abuse-service'; +import { allow_fake_login } from '@/lib/constants'; const NEXT_PUBLIC_STYTCH_PROJECT_ENV = getEnvVariable('NEXT_PUBLIC_STYTCH_PROJECT_ENV'); const STYTCH_PROJECT_ID = getEnvVariable('STYTCH_PROJECT_ID'); const STYTCH_PROJECT_SECRET = getEnvVariable('STYTCH_PROJECT_SECRET'); +// Local-dev only: when fake-login is enabled and no real Stytch project is +// configured (the placeholder `test-fake-…` creds, or empty), the client-side +// telemetry/fingerprint round-trip in can never complete, so +// `/account-verification` hangs forever on "Creating Your Account". Detect that +// case so getStytchStatus can auto-pass validation. Gated on allow_fake_login, +// which is false in production and on Vercel, so this never affects real envs. +const STYTCH_NOT_CONFIGURED = !STYTCH_PROJECT_ID || STYTCH_PROJECT_ID.includes('fake'); + const client = new Client({ project_id: STYTCH_PROJECT_ID, secret: STYTCH_PROJECT_SECRET, @@ -29,6 +38,19 @@ export const getStytchStatus = async ( headers: Headers ): Promise => { if (user.has_validation_stytch !== null) return user.has_validation_stytch; + + // Local-dev bypass: no real Stytch project, so auto-approve validation and + // persist it (mirrors the success path in saveFingerprints) instead of + // looping on the "Creating Your Account" spinner. See STYTCH_NOT_CONFIGURED. + if (allow_fake_login && STYTCH_NOT_CONFIGURED) { + if (process.env.NODE_ENV !== 'test') + console.log( + `SECURITY: Stytch not configured + fake-login enabled — auto-passing validation for ${user.google_user_email} (local dev only)` + ); + await updateStytchValidation(user, { ...user, has_validation_stytch: true }); + return true; + } + if (!telemetryId) return null; const fingerprintData = await client.fraud.fingerprint diff --git a/apps/web/src/routers/kiloclaw-router.ts b/apps/web/src/routers/kiloclaw-router.ts index eefec03c3..b85cc3449 100644 --- a/apps/web/src/routers/kiloclaw-router.ts +++ b/apps/web/src/routers/kiloclaw-router.ts @@ -60,7 +60,15 @@ import { organizations, } from '@kilocode/db/schema'; import { and, asc, eq, ne, desc, isNull, inArray, sql, like, or } from 'drizzle-orm'; -import { ImpactReferralProduct, ImpactReferralRewardKind } from '@kilocode/db/schema-types'; +import { + ImpactReferralProduct, + ImpactReferralRewardKind, + KiloClawPlan, + KiloClawProvider, + KiloClawSubscriptionStatus, + KiloClawSubscriptionChangeAction, + KiloClawSubscriptionChangeActorType, +} from '@kilocode/db/schema-types'; import { alias } from 'drizzle-orm/pg-core'; import { deleteWorkerTrigger } from '@/lib/webhook-agent/webhook-agent-client'; import { sentryLogger } from '@/lib/utils.server'; @@ -79,6 +87,7 @@ import { workerInstanceId, type ActiveKiloClawInstance, } from '@/lib/kiloclaw/instance-registry'; +import { getKiloClawAgentCardOAuthConnection } from '@/lib/kiloclaw/agentcard-oauth-connections'; import { encryptProvisionSecretsForWorker } from '@/lib/kiloclaw/provision-secrets'; import { handleProvisionError } from '@/lib/kiloclaw/provision-error-handler'; import { @@ -92,7 +101,8 @@ import { mapStripeInvoiceToBillingHistoryEntry, } from '@/lib/subscriptions/subscription-center'; import { client as stripe } from '@/lib/stripe-client'; -import { APP_URL } from '@/lib/constants'; +import { APP_URL, allow_fake_login } from '@/lib/constants'; +import { randomUUID } from 'node:crypto'; import { getAffiliateAttribution } from '@/lib/affiliate-attribution'; import { buildAffiliateEventDedupeKey, @@ -1079,6 +1089,20 @@ function isFakeSeedInstance(instance: ActiveKiloClawInstance): boolean { return instance.sandboxId.startsWith('ki_fake_'); } +/** Maps a stored AgentCard OAuth connection (or none) to dashboard status fields. */ +function agentCardStatusFields( + connection: Awaited> +): Pick< + KiloClawDashboardStatus, + 'agentcardOAuthConnected' | 'agentcardOAuthStatus' | 'agentcardOAuthAccountEmail' +> { + return { + agentcardOAuthConnected: connection?.status === 'active', + agentcardOAuthStatus: connection?.status ?? 'disconnected', + agentcardOAuthAccountEmail: connection?.account_email ?? null, + }; +} + function createFakeSeedInstanceStatus( instance: ActiveKiloClawInstance, workerUrl: string @@ -1112,12 +1136,115 @@ function sanitizeKiloCodeConfigResponse( }; } +// Local-dev provision mock. When fake-login is enabled and no KiloClaw worker +// URL is configured, there is no backend to provision a real agent instance, so +// `provisionInstance` would throw at `new KiloClawInternalClient()`. Instead, +// create a DB-only "fake seed" instance (sandbox_id `ki_fake_…`, provider +// docker-local) — the exact shape `dev/seed/kiloclaw/fake-instance.ts` produces +// and that `getStatus` renders via `createFakeSeedInstanceStatus`. This lets the +// onboarding flow complete locally. Gated on `allow_fake_login`, which is false +// in production and on Vercel, so it can never run outside local dev. +// Opt in with `KILOCLAW_DEV_MOCK=1` in `.env.local` (or simply leave +// `KILOCLAW_API_URL` unset). Note: `apps/web/.env.development.local` sets +// `KILOCLAW_API_URL=http://localhost:8795`, which outranks `.env.local`, so an +// explicit flag is the reliable switch when the worker isn't actually running. +const KILOCLAW_DEV_MOCK = + allow_fake_login && (process.env.KILOCLAW_DEV_MOCK === '1' || !KILOCLAW_API_URL); + +async function provisionFakeLocalInstanceForDev( + user: Parameters[0], + params: { instanceId: string | null; bootstrapSubscription: boolean }, + executor: typeof db | DrizzleTransaction +): Promise<{ sandboxId: string; instanceId: string }> { + // Re-provision / updateConfig path: the instance row already exists, so just + // echo back its ids. No worker means there's nothing live to reconfigure. + if (params.instanceId) { + const [existing] = await executor + .select({ id: kiloclaw_instances.id, sandbox_id: kiloclaw_instances.sandbox_id }) + .from(kiloclaw_instances) + .where(eq(kiloclaw_instances.id, params.instanceId)) + .limit(1); + if (existing) { + return { sandboxId: existing.sandbox_id, instanceId: existing.id }; + } + } + + const nowIso = new Date().toISOString(); + const instanceId = randomUUID(); + const sandboxId = `ki_fake_${instanceId.replaceAll('-', '')}`; + + const [instance] = await executor + .insert(kiloclaw_instances) + .values({ + id: instanceId, + user_id: user.id, + sandbox_id: sandboxId, + provider: KiloClawProvider.DockerLocal, + organization_id: null, + name: 'Local KiloClaw (dev)', + inbound_email_enabled: true, + inactive_trial_stopped_at: null, + created_at: nowIso, + destroyed_at: null, + tracked_image_tag: 'fake-local-instance', + }) + .returning(); + + // Mirror the worker's trial-bootstrap so billing/status reads resolve. + if (params.bootstrapSubscription) { + const trialEndsIso = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(); + const [subscription] = await executor + .insert(kiloclaw_subscriptions) + .values({ + user_id: user.id, + instance_id: instance.id, + kiloclaw_price_version: CURRENT_KILOCLAW_PRICE_VERSION, + payment_source: null, + plan: KiloClawPlan.Trial, + status: KiloClawSubscriptionStatus.Trialing, + cancel_at_period_end: false, + pending_conversion: false, + trial_started_at: nowIso, + trial_ends_at: trialEndsIso, + current_period_start: null, + current_period_end: null, + credit_renewal_at: null, + commit_ends_at: null, + }) + .returning(); + + await insertKiloClawSubscriptionChangeLog(executor, { + subscriptionId: subscription.id, + actor: { + actorType: KiloClawSubscriptionChangeActorType.System, + actorId: 'dev-mock:kiloclaw/provision', + }, + action: KiloClawSubscriptionChangeAction.Created, + reason: 'dev_mock:fake_instance', + before: null, + after: subscription, + }); + } + + console.log( + `KILOCLAW DEV MOCK: provisioned fake local instance ${instanceId} (sandbox ${sandboxId}) for ${user.google_user_email} — DB-only, no worker/container exists` + ); + return { sandboxId, instanceId }; +} + async function provisionInstance( user: Parameters[0], input: z.infer, params: { instanceId: string | null; bootstrapSubscription: boolean }, executor: typeof db | DrizzleTransaction = db ) { + // No KiloClaw worker in local dev — fabricate a DB-only instance instead of + // throwing at `new KiloClawInternalClient()`. Must run before secret + // encryption below, since the worker encryption key is also unset locally. + if (KILOCLAW_DEV_MOCK) { + return await provisionFakeLocalInstanceForDev(user, params, executor); + } + const encryptedSecrets = encryptProvisionSecretsForWorker(input.secrets); const expiresInSeconds = TOKEN_EXPIRY.thirtyDays; @@ -2966,8 +3093,15 @@ export const kiloclawRouter = createTRPCRouter({ return createNoInstanceStatus(ctx.user.id, legacyWorkerUrl); } + // AgentCard connection status is sourced from Kilo's own DB, so it applies + // to every instance — including local fake-seed instances, which return + // early below and would otherwise never reflect a connection. + const agentcardFields = agentCardStatusFields( + await getKiloClawAgentCardOAuthConnection(instance.id) + ); + if (isFakeSeedInstance(instance)) { - return createFakeSeedInstanceStatus(instance, legacyWorkerUrl); + return { ...createFakeSeedInstanceStatus(instance, legacyWorkerUrl), ...agentcardFields }; } const client = new KiloClawInternalClient(); @@ -2995,6 +3129,7 @@ export const kiloclawRouter = createTRPCRouter({ inboundEmailAddress, inboundEmailEnabled: instance.inboundEmailEnabled, scheduledAction, + ...agentcardFields, } satisfies KiloClawDashboardStatus; }), diff --git a/apps/web/vercel.json b/apps/web/vercel.json index 60776c203..5fcca4cfb 100644 --- a/apps/web/vercel.json +++ b/apps/web/vercel.json @@ -20,6 +20,10 @@ "path": "/api/cron/cleanup-api-request-log", "schedule": "*/5 * * * *" }, + { + "path": "/api/cron/agentcard-token-refresh", + "schedule": "*/10 * * * *" + }, { "path": "/api/cron/kilo-pass-yearly-monthly-base", "schedule": "0 * * * *" diff --git a/packages/db/src/migrations/0159_curvy_kat_farrell.sql b/packages/db/src/migrations/0159_curvy_kat_farrell.sql new file mode 100644 index 000000000..3af889959 --- /dev/null +++ b/packages/db/src/migrations/0159_curvy_kat_farrell.sql @@ -0,0 +1,22 @@ +CREATE TABLE "kiloclaw_agentcard_oauth_connections" ( + "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, + "instance_id" uuid NOT NULL, + "provider" text DEFAULT 'agentcard' NOT NULL, + "account_email" text, + "oauth_client_id" text NOT NULL, + "access_token_encrypted" text NOT NULL, + "refresh_token_encrypted" text, + "token_expires_at" timestamp with time zone, + "scopes" text[] DEFAULT '{}'::text[] NOT NULL, + "status" text DEFAULT 'active' NOT NULL, + "last_error" text, + "last_error_at" timestamp with time zone, + "connected_at" timestamp with time zone DEFAULT now() NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "kiloclaw_agentcard_oauth_connections_status_check" CHECK ("kiloclaw_agentcard_oauth_connections"."status" IN ('active', 'action_required', 'disconnected')) +); +--> statement-breakpoint +ALTER TABLE "kiloclaw_agentcard_oauth_connections" ADD CONSTRAINT "kiloclaw_agentcard_oauth_connections_instance_id_kiloclaw_instances_id_fk" FOREIGN KEY ("instance_id") REFERENCES "public"."kiloclaw_instances"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint +CREATE UNIQUE INDEX "UQ_kiloclaw_agentcard_oauth_connections_instance" ON "kiloclaw_agentcard_oauth_connections" USING btree ("instance_id");--> statement-breakpoint +CREATE INDEX "IDX_kiloclaw_agentcard_oauth_connections_status" ON "kiloclaw_agentcard_oauth_connections" USING btree ("status"); \ No newline at end of file diff --git a/packages/db/src/migrations/meta/0159_snapshot.json b/packages/db/src/migrations/meta/0159_snapshot.json new file mode 100644 index 000000000..8cecea502 --- /dev/null +++ b/packages/db/src/migrations/meta/0159_snapshot.json @@ -0,0 +1,29200 @@ +{ + "id": "7bb0c23c-6f78-4188-97d3-5f364ebd0da1", + "prevId": "e1783b2f-cc3c-464e-bb15-c328decaa79e", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.agent_configs": { + "name": "agent_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "agent_type": { + "name": "agent_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "config": { + "name": "config", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "runtime_state": { + "name": "runtime_state", + "type": "jsonb", + "primaryKey": false, + "notNull": false, + "default": "'{}'::jsonb" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_agent_configs_org_id": { + "name": "IDX_agent_configs_org_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_agent_configs_owned_by_user_id": { + "name": "IDX_agent_configs_owned_by_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_agent_configs_agent_type": { + "name": "IDX_agent_configs_agent_type", + "columns": [ + { + "expression": "agent_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_agent_configs_platform": { + "name": "IDX_agent_configs_platform", + "columns": [ + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_configs_owned_by_organization_id_organizations_id_fk": { + "name": "agent_configs_owned_by_organization_id_organizations_id_fk", + "tableFrom": "agent_configs", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "agent_configs_owned_by_user_id_kilocode_users_id_fk": { + "name": "agent_configs_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "agent_configs", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_agent_configs_org_agent_platform": { + "name": "UQ_agent_configs_org_agent_platform", + "nullsNotDistinct": false, + "columns": [ + "owned_by_organization_id", + "agent_type", + "platform" + ] + }, + "UQ_agent_configs_user_agent_platform": { + "name": "UQ_agent_configs_user_agent_platform", + "nullsNotDistinct": false, + "columns": [ + "owned_by_user_id", + "agent_type", + "platform" + ] + } + }, + "policies": {}, + "checkConstraints": { + "agent_configs_owner_check": { + "name": "agent_configs_owner_check", + "value": "(\n (\"agent_configs\".\"owned_by_user_id\" IS NOT NULL AND \"agent_configs\".\"owned_by_organization_id\" IS NULL) OR\n (\"agent_configs\".\"owned_by_user_id\" IS NULL AND \"agent_configs\".\"owned_by_organization_id\" IS NOT NULL)\n )" + }, + "agent_configs_agent_type_check": { + "name": "agent_configs_agent_type_check", + "value": "\"agent_configs\".\"agent_type\" IN ('code_review', 'auto_triage', 'auto_fix', 'security_scan')" + } + }, + "isRLSEnabled": false + }, + "public.agent_environment_profile_agents": { + "name": "agent_environment_profile_agents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "profile_id": { + "name": "profile_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "config": { + "name": "config", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_agent_env_profile_agents_profile_id": { + "name": "IDX_agent_env_profile_agents_profile_id", + "columns": [ + { + "expression": "profile_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_environment_profile_agents_profile_id_agent_environment_profiles_id_fk": { + "name": "agent_environment_profile_agents_profile_id_agent_environment_profiles_id_fk", + "tableFrom": "agent_environment_profile_agents", + "tableTo": "agent_environment_profiles", + "columnsFrom": [ + "profile_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_agent_env_profile_agents_profile_slug": { + "name": "UQ_agent_env_profile_agents_profile_slug", + "nullsNotDistinct": false, + "columns": [ + "profile_id", + "slug" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.agent_environment_profile_commands": { + "name": "agent_environment_profile_commands", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "profile_id": { + "name": "profile_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "sequence": { + "name": "sequence", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "command": { + "name": "command", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_agent_env_profile_commands_profile_id": { + "name": "IDX_agent_env_profile_commands_profile_id", + "columns": [ + { + "expression": "profile_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_environment_profile_commands_profile_id_agent_environment_profiles_id_fk": { + "name": "agent_environment_profile_commands_profile_id_agent_environment_profiles_id_fk", + "tableFrom": "agent_environment_profile_commands", + "tableTo": "agent_environment_profiles", + "columnsFrom": [ + "profile_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_agent_env_profile_commands_profile_sequence": { + "name": "UQ_agent_env_profile_commands_profile_sequence", + "nullsNotDistinct": false, + "columns": [ + "profile_id", + "sequence" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.agent_environment_profile_kilo_commands": { + "name": "agent_environment_profile_kilo_commands", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "profile_id": { + "name": "profile_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "template": { + "name": "template", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "agent": { + "name": "agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "subtask": { + "name": "subtask", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "sort_order": { + "name": "sort_order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_agent_env_profile_kilo_cmds_profile_id": { + "name": "IDX_agent_env_profile_kilo_cmds_profile_id", + "columns": [ + { + "expression": "profile_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_environment_profile_kilo_commands_profile_id_agent_environment_profiles_id_fk": { + "name": "agent_environment_profile_kilo_commands_profile_id_agent_environment_profiles_id_fk", + "tableFrom": "agent_environment_profile_kilo_commands", + "tableTo": "agent_environment_profiles", + "columnsFrom": [ + "profile_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_agent_env_profile_kilo_cmds_profile_name": { + "name": "UQ_agent_env_profile_kilo_cmds_profile_name", + "nullsNotDistinct": false, + "columns": [ + "profile_id", + "name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.agent_environment_profile_mcp_servers": { + "name": "agent_environment_profile_mcp_servers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "profile_id": { + "name": "profile_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "timeout": { + "name": "timeout", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "config": { + "name": "config", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_agent_env_profile_mcp_servers_profile_id": { + "name": "IDX_agent_env_profile_mcp_servers_profile_id", + "columns": [ + { + "expression": "profile_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_environment_profile_mcp_servers_profile_id_agent_environment_profiles_id_fk": { + "name": "agent_environment_profile_mcp_servers_profile_id_agent_environment_profiles_id_fk", + "tableFrom": "agent_environment_profile_mcp_servers", + "tableTo": "agent_environment_profiles", + "columnsFrom": [ + "profile_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_agent_env_profile_mcp_servers_profile_name": { + "name": "UQ_agent_env_profile_mcp_servers_profile_name", + "nullsNotDistinct": false, + "columns": [ + "profile_id", + "name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.agent_environment_profile_repo_bindings": { + "name": "agent_environment_profile_repo_bindings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'github'" + }, + "profile_id": { + "name": "profile_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_agent_env_profile_repo_bindings_user": { + "name": "UQ_agent_env_profile_repo_bindings_user", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"agent_environment_profile_repo_bindings\".\"owned_by_user_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_agent_env_profile_repo_bindings_org": { + "name": "UQ_agent_env_profile_repo_bindings_org", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"agent_environment_profile_repo_bindings\".\"owned_by_organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_environment_profile_repo_bindings_profile_id_agent_environment_profiles_id_fk": { + "name": "agent_environment_profile_repo_bindings_profile_id_agent_environment_profiles_id_fk", + "tableFrom": "agent_environment_profile_repo_bindings", + "tableTo": "agent_environment_profiles", + "columnsFrom": [ + "profile_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "agent_environment_profile_repo_bindings_owned_by_organization_id_organizations_id_fk": { + "name": "agent_environment_profile_repo_bindings_owned_by_organization_id_organizations_id_fk", + "tableFrom": "agent_environment_profile_repo_bindings", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "agent_environment_profile_repo_bindings_owned_by_user_id_kilocode_users_id_fk": { + "name": "agent_environment_profile_repo_bindings_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "agent_environment_profile_repo_bindings", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "agent_env_profile_repo_bindings_owner_check": { + "name": "agent_env_profile_repo_bindings_owner_check", + "value": "(\n (\"agent_environment_profile_repo_bindings\".\"owned_by_user_id\" IS NOT NULL AND \"agent_environment_profile_repo_bindings\".\"owned_by_organization_id\" IS NULL) OR\n (\"agent_environment_profile_repo_bindings\".\"owned_by_user_id\" IS NULL AND \"agent_environment_profile_repo_bindings\".\"owned_by_organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.agent_environment_profile_skills": { + "name": "agent_environment_profile_skills", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "profile_id": { + "name": "profile_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "source_type": { + "name": "source_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_url": { + "name": "source_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "raw_markdown": { + "name": "raw_markdown", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "files": { + "name": "files", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_agent_env_profile_skills_profile_id": { + "name": "IDX_agent_env_profile_skills_profile_id", + "columns": [ + { + "expression": "profile_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_environment_profile_skills_profile_id_agent_environment_profiles_id_fk": { + "name": "agent_environment_profile_skills_profile_id_agent_environment_profiles_id_fk", + "tableFrom": "agent_environment_profile_skills", + "tableTo": "agent_environment_profiles", + "columnsFrom": [ + "profile_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_agent_env_profile_skills_profile_name": { + "name": "UQ_agent_env_profile_skills_profile_name", + "nullsNotDistinct": false, + "columns": [ + "profile_id", + "name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.agent_environment_profile_vars": { + "name": "agent_environment_profile_vars", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "profile_id": { + "name": "profile_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_secret": { + "name": "is_secret", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_agent_env_profile_vars_profile_id": { + "name": "IDX_agent_env_profile_vars_profile_id", + "columns": [ + { + "expression": "profile_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_environment_profile_vars_profile_id_agent_environment_profiles_id_fk": { + "name": "agent_environment_profile_vars_profile_id_agent_environment_profiles_id_fk", + "tableFrom": "agent_environment_profile_vars", + "tableTo": "agent_environment_profiles", + "columnsFrom": [ + "profile_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_agent_env_profile_vars_profile_key": { + "name": "UQ_agent_env_profile_vars_profile_key", + "nullsNotDistinct": false, + "columns": [ + "profile_id", + "key" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.agent_environment_profiles": { + "name": "agent_environment_profiles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_user_id": { + "name": "created_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_default": { + "name": "is_default", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_agent_env_profiles_org_name": { + "name": "UQ_agent_env_profiles_org_name", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"agent_environment_profiles\".\"owned_by_organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_agent_env_profiles_user_name": { + "name": "UQ_agent_env_profiles_user_name", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"agent_environment_profiles\".\"owned_by_user_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_agent_env_profiles_org_default": { + "name": "UQ_agent_env_profiles_org_default", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"agent_environment_profiles\".\"is_default\" = true AND \"agent_environment_profiles\".\"owned_by_organization_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_agent_env_profiles_user_default": { + "name": "UQ_agent_env_profiles_user_default", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"agent_environment_profiles\".\"is_default\" = true AND \"agent_environment_profiles\".\"owned_by_user_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_agent_env_profiles_org_id": { + "name": "IDX_agent_env_profiles_org_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_agent_env_profiles_user_id": { + "name": "IDX_agent_env_profiles_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_agent_env_profiles_created_by_user_id": { + "name": "IDX_agent_env_profiles_created_by_user_id", + "columns": [ + { + "expression": "created_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "agent_environment_profiles_owned_by_organization_id_organizations_id_fk": { + "name": "agent_environment_profiles_owned_by_organization_id_organizations_id_fk", + "tableFrom": "agent_environment_profiles", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "agent_environment_profiles_owned_by_user_id_kilocode_users_id_fk": { + "name": "agent_environment_profiles_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "agent_environment_profiles", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "agent_env_profiles_owner_check": { + "name": "agent_env_profiles_owner_check", + "value": "(\n (\"agent_environment_profiles\".\"owned_by_user_id\" IS NOT NULL AND \"agent_environment_profiles\".\"owned_by_organization_id\" IS NULL) OR\n (\"agent_environment_profiles\".\"owned_by_user_id\" IS NULL AND \"agent_environment_profiles\".\"owned_by_organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.api_kind": { + "name": "api_kind", + "schema": "", + "columns": { + "api_kind_id": { + "name": "api_kind_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "api_kind": { + "name": "api_kind", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_api_kind": { + "name": "UQ_api_kind", + "columns": [ + { + "expression": "api_kind", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.api_request_log": { + "name": "api_request_log", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "bigserial", + "primaryKey": true, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status_code": { + "name": "status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "request": { + "name": "request", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "response": { + "name": "response", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error": { + "name": "error", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_api_request_log_created_at": { + "name": "idx_api_request_log_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.app_builder_feedback": { + "name": "app_builder_feedback", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "preview_status": { + "name": "preview_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_streaming": { + "name": "is_streaming", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "message_count": { + "name": "message_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "feedback_text": { + "name": "feedback_text", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "recent_messages": { + "name": "recent_messages", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_app_builder_feedback_created_at": { + "name": "IDX_app_builder_feedback_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_app_builder_feedback_kilo_user_id": { + "name": "IDX_app_builder_feedback_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_app_builder_feedback_project_id": { + "name": "IDX_app_builder_feedback_project_id", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "app_builder_feedback_kilo_user_id_kilocode_users_id_fk": { + "name": "app_builder_feedback_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "app_builder_feedback", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "app_builder_feedback_project_id_app_builder_projects_id_fk": { + "name": "app_builder_feedback_project_id_app_builder_projects_id_fk", + "tableFrom": "app_builder_feedback", + "tableTo": "app_builder_projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.app_builder_project_sessions": { + "name": "app_builder_project_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "project_id": { + "name": "project_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "reason": { + "name": "reason", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "worker_version": { + "name": "worker_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'v2'" + } + }, + "indexes": { + "IDX_app_builder_project_sessions_project_id": { + "name": "IDX_app_builder_project_sessions_project_id", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "app_builder_project_sessions_project_id_app_builder_projects_id_fk": { + "name": "app_builder_project_sessions_project_id_app_builder_projects_id_fk", + "tableFrom": "app_builder_project_sessions", + "tableTo": "app_builder_projects", + "columnsFrom": [ + "project_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_app_builder_project_sessions_cloud_agent_session_id": { + "name": "UQ_app_builder_project_sessions_cloud_agent_session_id", + "nullsNotDistinct": false, + "columns": [ + "cloud_agent_session_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.app_builder_projects": { + "name": "app_builder_projects", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_by_user_id": { + "name": "created_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "model_id": { + "name": "model_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "template": { + "name": "template", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deployment_id": { + "name": "deployment_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "last_message_at": { + "name": "last_message_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "git_repo_full_name": { + "name": "git_repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "git_platform_integration_id": { + "name": "git_platform_integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "migrated_at": { + "name": "migrated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_app_builder_projects_created_by_user_id": { + "name": "IDX_app_builder_projects_created_by_user_id", + "columns": [ + { + "expression": "created_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_app_builder_projects_owned_by_user_id": { + "name": "IDX_app_builder_projects_owned_by_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_app_builder_projects_owned_by_organization_id": { + "name": "IDX_app_builder_projects_owned_by_organization_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_app_builder_projects_created_at": { + "name": "IDX_app_builder_projects_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_app_builder_projects_last_message_at": { + "name": "IDX_app_builder_projects_last_message_at", + "columns": [ + { + "expression": "last_message_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_app_builder_projects_git_repo_integration": { + "name": "IDX_app_builder_projects_git_repo_integration", + "columns": [ + { + "expression": "git_repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "git_platform_integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"app_builder_projects\".\"git_repo_full_name\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "app_builder_projects_owned_by_user_id_kilocode_users_id_fk": { + "name": "app_builder_projects_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "app_builder_projects", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "app_builder_projects_owned_by_organization_id_organizations_id_fk": { + "name": "app_builder_projects_owned_by_organization_id_organizations_id_fk", + "tableFrom": "app_builder_projects", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "app_builder_projects_deployment_id_deployments_id_fk": { + "name": "app_builder_projects_deployment_id_deployments_id_fk", + "tableFrom": "app_builder_projects", + "tableTo": "deployments", + "columnsFrom": [ + "deployment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "app_builder_projects_git_platform_integration_id_platform_integrations_id_fk": { + "name": "app_builder_projects_git_platform_integration_id_platform_integrations_id_fk", + "tableFrom": "app_builder_projects", + "tableTo": "platform_integrations", + "columnsFrom": [ + "git_platform_integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "app_builder_projects_owner_check": { + "name": "app_builder_projects_owner_check", + "value": "(\n (\"app_builder_projects\".\"owned_by_user_id\" IS NOT NULL AND \"app_builder_projects\".\"owned_by_organization_id\" IS NULL) OR\n (\"app_builder_projects\".\"owned_by_user_id\" IS NULL AND \"app_builder_projects\".\"owned_by_organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.app_min_versions": { + "name": "app_min_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "ios_min_version": { + "name": "ios_min_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1.0.0'" + }, + "android_min_version": { + "name": "android_min_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1.0.0'" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.app_reported_messages": { + "name": "app_reported_messages", + "schema": "", + "columns": { + "report_id": { + "name": "report_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "report_type": { + "name": "report_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "signature": { + "name": "signature", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "cli_session_id": { + "name": "cli_session_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "mode": { + "name": "mode", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "app_reported_messages_cli_session_id_cli_sessions_session_id_fk": { + "name": "app_reported_messages_cli_session_id_cli_sessions_session_id_fk", + "tableFrom": "app_reported_messages", + "tableTo": "cli_sessions", + "columnsFrom": [ + "cli_session_id" + ], + "columnsTo": [ + "session_id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.auto_fix_tickets": { + "name": "auto_fix_tickets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform_integration_id": { + "name": "platform_integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "triage_ticket_id": { + "name": "triage_ticket_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'github'" + }, + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_number": { + "name": "issue_number", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "issue_url": { + "name": "issue_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_title": { + "name": "issue_title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_body": { + "name": "issue_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "issue_author": { + "name": "issue_author", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_labels": { + "name": "issue_labels", + "type": "text[]", + "primaryKey": false, + "notNull": false, + "default": "'{}'" + }, + "trigger_source": { + "name": "trigger_source", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'label'" + }, + "review_comment_id": { + "name": "review_comment_id", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "review_comment_body": { + "name": "review_comment_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "line_number": { + "name": "line_number", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "diff_hunk": { + "name": "diff_hunk", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pr_head_ref": { + "name": "pr_head_ref", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "classification": { + "name": "classification", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "confidence": { + "name": "confidence", + "type": "numeric(3, 2)", + "primaryKey": false, + "notNull": false + }, + "intent_summary": { + "name": "intent_summary", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "related_files": { + "name": "related_files", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cli_session_id": { + "name": "cli_session_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "pr_number": { + "name": "pr_number", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "pr_url": { + "name": "pr_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pr_branch": { + "name": "pr_branch", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_auto_fix_tickets_repo_issue": { + "name": "UQ_auto_fix_tickets_repo_issue", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "issue_number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"auto_fix_tickets\".\"trigger_source\" = 'label'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_auto_fix_tickets_repo_review_comment": { + "name": "UQ_auto_fix_tickets_repo_review_comment", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "review_comment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"auto_fix_tickets\".\"review_comment_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_fix_tickets_owned_by_org": { + "name": "IDX_auto_fix_tickets_owned_by_org", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_fix_tickets_owned_by_user": { + "name": "IDX_auto_fix_tickets_owned_by_user", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_fix_tickets_status": { + "name": "IDX_auto_fix_tickets_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_fix_tickets_created_at": { + "name": "IDX_auto_fix_tickets_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_fix_tickets_triage_ticket_id": { + "name": "IDX_auto_fix_tickets_triage_ticket_id", + "columns": [ + { + "expression": "triage_ticket_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_fix_tickets_session_id": { + "name": "IDX_auto_fix_tickets_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "auto_fix_tickets_owned_by_organization_id_organizations_id_fk": { + "name": "auto_fix_tickets_owned_by_organization_id_organizations_id_fk", + "tableFrom": "auto_fix_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "auto_fix_tickets_owned_by_user_id_kilocode_users_id_fk": { + "name": "auto_fix_tickets_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "auto_fix_tickets", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "auto_fix_tickets_platform_integration_id_platform_integrations_id_fk": { + "name": "auto_fix_tickets_platform_integration_id_platform_integrations_id_fk", + "tableFrom": "auto_fix_tickets", + "tableTo": "platform_integrations", + "columnsFrom": [ + "platform_integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "auto_fix_tickets_triage_ticket_id_auto_triage_tickets_id_fk": { + "name": "auto_fix_tickets_triage_ticket_id_auto_triage_tickets_id_fk", + "tableFrom": "auto_fix_tickets", + "tableTo": "auto_triage_tickets", + "columnsFrom": [ + "triage_ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "auto_fix_tickets_cli_session_id_cli_sessions_session_id_fk": { + "name": "auto_fix_tickets_cli_session_id_cli_sessions_session_id_fk", + "tableFrom": "auto_fix_tickets", + "tableTo": "cli_sessions", + "columnsFrom": [ + "cli_session_id" + ], + "columnsTo": [ + "session_id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "auto_fix_tickets_owner_check": { + "name": "auto_fix_tickets_owner_check", + "value": "(\n (\"auto_fix_tickets\".\"owned_by_user_id\" IS NOT NULL AND \"auto_fix_tickets\".\"owned_by_organization_id\" IS NULL) OR\n (\"auto_fix_tickets\".\"owned_by_user_id\" IS NULL AND \"auto_fix_tickets\".\"owned_by_organization_id\" IS NOT NULL)\n )" + }, + "auto_fix_tickets_status_check": { + "name": "auto_fix_tickets_status_check", + "value": "\"auto_fix_tickets\".\"status\" IN ('pending', 'running', 'completed', 'failed', 'cancelled')" + }, + "auto_fix_tickets_classification_check": { + "name": "auto_fix_tickets_classification_check", + "value": "\"auto_fix_tickets\".\"classification\" IN ('bug', 'feature', 'question', 'unclear')" + }, + "auto_fix_tickets_confidence_check": { + "name": "auto_fix_tickets_confidence_check", + "value": "\"auto_fix_tickets\".\"confidence\" >= 0 AND \"auto_fix_tickets\".\"confidence\" <= 1" + }, + "auto_fix_tickets_trigger_source_check": { + "name": "auto_fix_tickets_trigger_source_check", + "value": "\"auto_fix_tickets\".\"trigger_source\" IN ('label', 'review_comment')" + } + }, + "isRLSEnabled": false + }, + "public.auto_model": { + "name": "auto_model", + "schema": "", + "columns": { + "auto_model_id": { + "name": "auto_model_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "auto_model": { + "name": "auto_model", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_auto_model": { + "name": "UQ_auto_model", + "columns": [ + { + "expression": "auto_model", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.auto_top_up_configs": { + "name": "auto_top_up_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_by_user_id": { + "name": "created_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_payment_method_id": { + "name": "stripe_payment_method_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "amount_cents": { + "name": "amount_cents", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 5000 + }, + "last_auto_top_up_at": { + "name": "last_auto_top_up_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "attempt_started_at": { + "name": "attempt_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "disabled_reason": { + "name": "disabled_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_auto_top_up_configs_owned_by_user_id": { + "name": "UQ_auto_top_up_configs_owned_by_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"auto_top_up_configs\".\"owned_by_user_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_auto_top_up_configs_owned_by_organization_id": { + "name": "UQ_auto_top_up_configs_owned_by_organization_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"auto_top_up_configs\".\"owned_by_organization_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "auto_top_up_configs_owned_by_user_id_kilocode_users_id_fk": { + "name": "auto_top_up_configs_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "auto_top_up_configs", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "auto_top_up_configs_owned_by_organization_id_organizations_id_fk": { + "name": "auto_top_up_configs_owned_by_organization_id_organizations_id_fk", + "tableFrom": "auto_top_up_configs", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "auto_top_up_configs_exactly_one_owner": { + "name": "auto_top_up_configs_exactly_one_owner", + "value": "(\"auto_top_up_configs\".\"owned_by_user_id\" IS NOT NULL AND \"auto_top_up_configs\".\"owned_by_organization_id\" IS NULL) OR (\"auto_top_up_configs\".\"owned_by_user_id\" IS NULL AND \"auto_top_up_configs\".\"owned_by_organization_id\" IS NOT NULL)" + } + }, + "isRLSEnabled": false + }, + "public.auto_triage_tickets": { + "name": "auto_triage_tickets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform_integration_id": { + "name": "platform_integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'github'" + }, + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_number": { + "name": "issue_number", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "issue_url": { + "name": "issue_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_title": { + "name": "issue_title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_body": { + "name": "issue_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "issue_author": { + "name": "issue_author", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_type": { + "name": "issue_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "issue_labels": { + "name": "issue_labels", + "type": "text[]", + "primaryKey": false, + "notNull": false, + "default": "'{}'" + }, + "classification": { + "name": "classification", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "confidence": { + "name": "confidence", + "type": "numeric(3, 2)", + "primaryKey": false, + "notNull": false + }, + "intent_summary": { + "name": "intent_summary", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "related_files": { + "name": "related_files", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "is_duplicate": { + "name": "is_duplicate", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "duplicate_of_ticket_id": { + "name": "duplicate_of_ticket_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "similarity_score": { + "name": "similarity_score", + "type": "numeric(3, 2)", + "primaryKey": false, + "notNull": false + }, + "qdrant_point_id": { + "name": "qdrant_point_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "should_auto_fix": { + "name": "should_auto_fix", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "action_taken": { + "name": "action_taken", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action_metadata": { + "name": "action_metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_auto_triage_tickets_repo_issue": { + "name": "UQ_auto_triage_tickets_repo_issue", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "issue_number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_triage_tickets_owned_by_org": { + "name": "IDX_auto_triage_tickets_owned_by_org", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_triage_tickets_owned_by_user": { + "name": "IDX_auto_triage_tickets_owned_by_user", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_triage_tickets_status": { + "name": "IDX_auto_triage_tickets_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_triage_tickets_created_at": { + "name": "IDX_auto_triage_tickets_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_triage_tickets_qdrant_point_id": { + "name": "IDX_auto_triage_tickets_qdrant_point_id", + "columns": [ + { + "expression": "qdrant_point_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_triage_tickets_owner_status_created": { + "name": "IDX_auto_triage_tickets_owner_status_created", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_triage_tickets_user_status_created": { + "name": "IDX_auto_triage_tickets_user_status_created", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_auto_triage_tickets_repo_classification": { + "name": "IDX_auto_triage_tickets_repo_classification", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "classification", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "auto_triage_tickets_owned_by_organization_id_organizations_id_fk": { + "name": "auto_triage_tickets_owned_by_organization_id_organizations_id_fk", + "tableFrom": "auto_triage_tickets", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "auto_triage_tickets_owned_by_user_id_kilocode_users_id_fk": { + "name": "auto_triage_tickets_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "auto_triage_tickets", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "auto_triage_tickets_platform_integration_id_platform_integrations_id_fk": { + "name": "auto_triage_tickets_platform_integration_id_platform_integrations_id_fk", + "tableFrom": "auto_triage_tickets", + "tableTo": "platform_integrations", + "columnsFrom": [ + "platform_integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "auto_triage_tickets_duplicate_of_ticket_id_auto_triage_tickets_id_fk": { + "name": "auto_triage_tickets_duplicate_of_ticket_id_auto_triage_tickets_id_fk", + "tableFrom": "auto_triage_tickets", + "tableTo": "auto_triage_tickets", + "columnsFrom": [ + "duplicate_of_ticket_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "auto_triage_tickets_owner_check": { + "name": "auto_triage_tickets_owner_check", + "value": "(\n (\"auto_triage_tickets\".\"owned_by_user_id\" IS NOT NULL AND \"auto_triage_tickets\".\"owned_by_organization_id\" IS NULL) OR\n (\"auto_triage_tickets\".\"owned_by_user_id\" IS NULL AND \"auto_triage_tickets\".\"owned_by_organization_id\" IS NOT NULL)\n )" + }, + "auto_triage_tickets_issue_type_check": { + "name": "auto_triage_tickets_issue_type_check", + "value": "\"auto_triage_tickets\".\"issue_type\" IN ('issue', 'pull_request')" + }, + "auto_triage_tickets_classification_check": { + "name": "auto_triage_tickets_classification_check", + "value": "\"auto_triage_tickets\".\"classification\" IN ('bug', 'feature', 'question', 'duplicate', 'unclear')" + }, + "auto_triage_tickets_confidence_check": { + "name": "auto_triage_tickets_confidence_check", + "value": "\"auto_triage_tickets\".\"confidence\" >= 0 AND \"auto_triage_tickets\".\"confidence\" <= 1" + }, + "auto_triage_tickets_similarity_score_check": { + "name": "auto_triage_tickets_similarity_score_check", + "value": "\"auto_triage_tickets\".\"similarity_score\" >= 0 AND \"auto_triage_tickets\".\"similarity_score\" <= 1" + }, + "auto_triage_tickets_status_check": { + "name": "auto_triage_tickets_status_check", + "value": "\"auto_triage_tickets\".\"status\" IN ('pending', 'analyzing', 'actioned', 'failed', 'skipped')" + }, + "auto_triage_tickets_action_taken_check": { + "name": "auto_triage_tickets_action_taken_check", + "value": "\"auto_triage_tickets\".\"action_taken\" IN ('pr_created', 'comment_posted', 'closed_duplicate', 'needs_clarification')" + } + }, + "isRLSEnabled": false + }, + "public.bot_request_cloud_agent_sessions": { + "name": "bot_request_cloud_agent_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "bot_request_id": { + "name": "bot_request_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "spawn_group_id": { + "name": "spawn_group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_session_id": { + "name": "kilo_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "execution_id": { + "name": "execution_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'running'" + }, + "mode": { + "name": "mode", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "gitlab_project": { + "name": "gitlab_project", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "callback_step": { + "name": "callback_step", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "final_message": { + "name": "final_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "final_message_fetched_at": { + "name": "final_message_fetched_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "final_message_error": { + "name": "final_message_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "terminal_at": { + "name": "terminal_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "continuation_started_at": { + "name": "continuation_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_bot_request_cas_cloud_agent_session_id": { + "name": "UQ_bot_request_cas_cloud_agent_session_id", + "columns": [ + { + "expression": "cloud_agent_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_bot_request_cas_bot_request_id": { + "name": "IDX_bot_request_cas_bot_request_id", + "columns": [ + { + "expression": "bot_request_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_bot_request_cas_bot_request_id_spawn_group_id": { + "name": "IDX_bot_request_cas_bot_request_id_spawn_group_id", + "columns": [ + { + "expression": "bot_request_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "spawn_group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_bot_request_cas_bot_request_id_spawn_group_id_status": { + "name": "IDX_bot_request_cas_bot_request_id_spawn_group_id_status", + "columns": [ + { + "expression": "bot_request_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "spawn_group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "bot_request_cloud_agent_sessions_bot_request_id_bot_requests_id_fk": { + "name": "bot_request_cloud_agent_sessions_bot_request_id_bot_requests_id_fk", + "tableFrom": "bot_request_cloud_agent_sessions", + "tableTo": "bot_requests", + "columnsFrom": [ + "bot_request_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.bot_requests": { + "name": "bot_requests", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "platform_integration_id": { + "name": "platform_integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform_thread_id": { + "name": "platform_thread_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform_message_id": { + "name": "platform_message_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "user_message": { + "name": "user_message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "model_used": { + "name": "model_used", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "steps": { + "name": "steps", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "response_time_ms": { + "name": "response_time_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_bot_requests_created_at": { + "name": "IDX_bot_requests_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_bot_requests_created_by": { + "name": "IDX_bot_requests_created_by", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_bot_requests_organization_id": { + "name": "IDX_bot_requests_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_bot_requests_platform_integration_id": { + "name": "IDX_bot_requests_platform_integration_id", + "columns": [ + { + "expression": "platform_integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_bot_requests_status": { + "name": "IDX_bot_requests_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "bot_requests_created_by_kilocode_users_id_fk": { + "name": "bot_requests_created_by_kilocode_users_id_fk", + "tableFrom": "bot_requests", + "tableTo": "kilocode_users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "bot_requests_organization_id_organizations_id_fk": { + "name": "bot_requests_organization_id_organizations_id_fk", + "tableFrom": "bot_requests", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "bot_requests_platform_integration_id_platform_integrations_id_fk": { + "name": "bot_requests_platform_integration_id_platform_integrations_id_fk", + "tableFrom": "bot_requests", + "tableTo": "platform_integrations", + "columnsFrom": [ + "platform_integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.byok_api_keys": { + "name": "byok_api_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "provider_id": { + "name": "provider_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "encrypted_api_key": { + "name": "encrypted_api_key", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "management_source": { + "name": "management_source", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'user'" + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "IDX_byok_api_keys_organization_id": { + "name": "IDX_byok_api_keys_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_byok_api_keys_kilo_user_id": { + "name": "IDX_byok_api_keys_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_byok_api_keys_provider_id": { + "name": "IDX_byok_api_keys_provider_id", + "columns": [ + { + "expression": "provider_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "byok_api_keys_organization_id_organizations_id_fk": { + "name": "byok_api_keys_organization_id_organizations_id_fk", + "tableFrom": "byok_api_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "byok_api_keys_kilo_user_id_kilocode_users_id_fk": { + "name": "byok_api_keys_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "byok_api_keys", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_byok_api_keys_org_provider": { + "name": "UQ_byok_api_keys_org_provider", + "nullsNotDistinct": false, + "columns": [ + "organization_id", + "provider_id" + ] + }, + "UQ_byok_api_keys_user_provider": { + "name": "UQ_byok_api_keys_user_provider", + "nullsNotDistinct": false, + "columns": [ + "kilo_user_id", + "provider_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "byok_api_keys_management_source_check": { + "name": "byok_api_keys_management_source_check", + "value": "\"byok_api_keys\".\"management_source\" IN ('user', 'coding_plan')" + }, + "byok_api_keys_owner_check": { + "name": "byok_api_keys_owner_check", + "value": "(\n (\"byok_api_keys\".\"kilo_user_id\" IS NOT NULL AND \"byok_api_keys\".\"organization_id\" IS NULL) OR\n (\"byok_api_keys\".\"kilo_user_id\" IS NULL AND \"byok_api_keys\".\"organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.cli_sessions": { + "name": "cli_sessions", + "schema": "", + "columns": { + "session_id": { + "name": "session_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_on_platform": { + "name": "created_on_platform", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'unknown'" + }, + "api_conversation_history_blob_url": { + "name": "api_conversation_history_blob_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "task_metadata_blob_url": { + "name": "task_metadata_blob_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "ui_messages_blob_url": { + "name": "ui_messages_blob_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "git_state_blob_url": { + "name": "git_state_blob_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "git_url": { + "name": "git_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "forked_from": { + "name": "forked_from", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "parent_session_id": { + "name": "parent_session_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "last_mode": { + "name": "last_mode", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "last_model": { + "name": "last_model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_cli_sessions_kilo_user_id": { + "name": "IDX_cli_sessions_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cli_sessions_created_at": { + "name": "IDX_cli_sessions_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cli_sessions_updated_at": { + "name": "IDX_cli_sessions_updated_at", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cli_sessions_organization_id": { + "name": "IDX_cli_sessions_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cli_sessions_user_updated": { + "name": "IDX_cli_sessions_user_updated", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cli_sessions_kilo_user_id_kilocode_users_id_fk": { + "name": "cli_sessions_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "cli_sessions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "restrict", + "onUpdate": "no action" + }, + "cli_sessions_forked_from_cli_sessions_session_id_fk": { + "name": "cli_sessions_forked_from_cli_sessions_session_id_fk", + "tableFrom": "cli_sessions", + "tableTo": "cli_sessions", + "columnsFrom": [ + "forked_from" + ], + "columnsTo": [ + "session_id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "cli_sessions_parent_session_id_cli_sessions_session_id_fk": { + "name": "cli_sessions_parent_session_id_cli_sessions_session_id_fk", + "tableFrom": "cli_sessions", + "tableTo": "cli_sessions", + "columnsFrom": [ + "parent_session_id" + ], + "columnsTo": [ + "session_id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "cli_sessions_organization_id_organizations_id_fk": { + "name": "cli_sessions_organization_id_organizations_id_fk", + "tableFrom": "cli_sessions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cli_sessions_cloud_agent_session_id_unique": { + "name": "cli_sessions_cloud_agent_session_id_unique", + "nullsNotDistinct": false, + "columns": [ + "cloud_agent_session_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cli_sessions_v2": { + "name": "cli_sessions_v2", + "schema": "", + "columns": { + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "public_id": { + "name": "public_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "parent_session_id": { + "name": "parent_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_on_platform": { + "name": "created_on_platform", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'unknown'" + }, + "git_url": { + "name": "git_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "git_branch": { + "name": "git_branch", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status_updated_at": { + "name": "status_updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_cli_sessions_v2_parent_session_id_kilo_user_id": { + "name": "IDX_cli_sessions_v2_parent_session_id_kilo_user_id", + "columns": [ + { + "expression": "parent_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_cli_sessions_v2_public_id": { + "name": "UQ_cli_sessions_v2_public_id", + "columns": [ + { + "expression": "public_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"cli_sessions_v2\".\"public_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_cli_sessions_v2_cloud_agent_session_id": { + "name": "UQ_cli_sessions_v2_cloud_agent_session_id", + "columns": [ + { + "expression": "cloud_agent_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"cli_sessions_v2\".\"cloud_agent_session_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cli_sessions_v2_organization_id": { + "name": "IDX_cli_sessions_v2_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cli_sessions_v2_kilo_user_id": { + "name": "IDX_cli_sessions_v2_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cli_sessions_v2_created_at": { + "name": "IDX_cli_sessions_v2_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cli_sessions_v2_user_updated": { + "name": "IDX_cli_sessions_v2_user_updated", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cli_sessions_v2_git_url_branch_idx": { + "name": "cli_sessions_v2_git_url_branch_idx", + "columns": [ + { + "expression": "git_url", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "git_branch", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cli_sessions_v2_kilo_user_id_kilocode_users_id_fk": { + "name": "cli_sessions_v2_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "cli_sessions_v2", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "restrict", + "onUpdate": "no action" + }, + "cli_sessions_v2_organization_id_organizations_id_fk": { + "name": "cli_sessions_v2_organization_id_organizations_id_fk", + "tableFrom": "cli_sessions_v2", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "cli_sessions_v2_parent_session_id_kilo_user_id_fk": { + "name": "cli_sessions_v2_parent_session_id_kilo_user_id_fk", + "tableFrom": "cli_sessions_v2", + "tableTo": "cli_sessions_v2", + "columnsFrom": [ + "parent_session_id", + "kilo_user_id" + ], + "columnsTo": [ + "session_id", + "kilo_user_id" + ], + "onDelete": "restrict", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "cli_sessions_v2_session_id_kilo_user_id_pk": { + "name": "cli_sessions_v2_session_id_kilo_user_id_pk", + "columns": [ + "session_id", + "kilo_user_id" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cloud_agent_code_review_attempts": { + "name": "cloud_agent_code_review_attempts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "code_review_id": { + "name": "code_review_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "attempt_number": { + "name": "attempt_number", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "retry_of_attempt_id": { + "name": "retry_of_attempt_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "retry_reason": { + "name": "retry_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cli_session_id": { + "name": "cli_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "execution_id": { + "name": "execution_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "terminal_reason": { + "name": "terminal_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_cloud_agent_code_review_attempts_review_attempt_number": { + "name": "UQ_cloud_agent_code_review_attempts_review_attempt_number", + "columns": [ + { + "expression": "code_review_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "attempt_number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_review_attempts_code_review_id": { + "name": "idx_cloud_agent_code_review_attempts_code_review_id", + "columns": [ + { + "expression": "code_review_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_review_attempts_session_id": { + "name": "idx_cloud_agent_code_review_attempts_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_review_attempts_cli_session_id": { + "name": "idx_cloud_agent_code_review_attempts_cli_session_id", + "columns": [ + { + "expression": "cli_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_review_attempts_status": { + "name": "idx_cloud_agent_code_review_attempts_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_review_attempts_retry_reason": { + "name": "idx_cloud_agent_code_review_attempts_retry_reason", + "columns": [ + { + "expression": "retry_reason", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cloud_agent_code_review_attempts_code_review_id_cloud_agent_code_reviews_id_fk": { + "name": "cloud_agent_code_review_attempts_code_review_id_cloud_agent_code_reviews_id_fk", + "tableFrom": "cloud_agent_code_review_attempts", + "tableTo": "cloud_agent_code_reviews", + "columnsFrom": [ + "code_review_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cloud_agent_code_review_attempts_retry_of_attempt_id_cloud_agent_code_review_attempts_id_fk": { + "name": "cloud_agent_code_review_attempts_retry_of_attempt_id_cloud_agent_code_review_attempts_id_fk", + "tableFrom": "cloud_agent_code_review_attempts", + "tableTo": "cloud_agent_code_review_attempts", + "columnsFrom": [ + "retry_of_attempt_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "cloud_agent_code_review_attempts_attempt_number_check": { + "name": "cloud_agent_code_review_attempts_attempt_number_check", + "value": "\"cloud_agent_code_review_attempts\".\"attempt_number\" >= 1" + } + }, + "isRLSEnabled": false + }, + "public.cloud_agent_code_reviews": { + "name": "cloud_agent_code_reviews", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform_integration_id": { + "name": "platform_integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "pr_number": { + "name": "pr_number", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "pr_url": { + "name": "pr_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "pr_title": { + "name": "pr_title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "pr_author": { + "name": "pr_author", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "pr_author_github_id": { + "name": "pr_author_github_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "base_ref": { + "name": "base_ref", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "head_ref": { + "name": "head_ref", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "head_sha": { + "name": "head_sha", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'github'" + }, + "platform_project_id": { + "name": "platform_project_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cli_session_id": { + "name": "cli_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "dispatch_reservation_id": { + "name": "dispatch_reservation_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "terminal_reason": { + "name": "terminal_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "agent_version": { + "name": "agent_version", + "type": "text", + "primaryKey": false, + "notNull": false, + "default": "'v1'" + }, + "check_run_id": { + "name": "check_run_id", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "repository_review_instructions_used": { + "name": "repository_review_instructions_used", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "repository_review_instructions_ref": { + "name": "repository_review_instructions_ref", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "repository_review_instructions_truncated": { + "name": "repository_review_instructions_truncated", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "total_tokens_in": { + "name": "total_tokens_in", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_tokens_out": { + "name": "total_tokens_out", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_cost_musd": { + "name": "total_cost_musd", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_cloud_agent_code_reviews_repo_pr_sha": { + "name": "UQ_cloud_agent_code_reviews_repo_pr_sha", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "pr_number", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "head_sha", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_owned_by_org_id": { + "name": "idx_cloud_agent_code_reviews_owned_by_org_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_owned_by_user_id": { + "name": "idx_cloud_agent_code_reviews_owned_by_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_session_id": { + "name": "idx_cloud_agent_code_reviews_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_cli_session_id": { + "name": "idx_cloud_agent_code_reviews_cli_session_id", + "columns": [ + { + "expression": "cli_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_status": { + "name": "idx_cloud_agent_code_reviews_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_repo": { + "name": "idx_cloud_agent_code_reviews_repo", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_pr_number": { + "name": "idx_cloud_agent_code_reviews_pr_number", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "pr_number", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_created_at": { + "name": "idx_cloud_agent_code_reviews_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_cloud_agent_code_reviews_pr_author_github_id": { + "name": "idx_cloud_agent_code_reviews_pr_author_github_id", + "columns": [ + { + "expression": "pr_author_github_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cloud_agent_code_reviews_owned_by_organization_id_organizations_id_fk": { + "name": "cloud_agent_code_reviews_owned_by_organization_id_organizations_id_fk", + "tableFrom": "cloud_agent_code_reviews", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cloud_agent_code_reviews_owned_by_user_id_kilocode_users_id_fk": { + "name": "cloud_agent_code_reviews_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "cloud_agent_code_reviews", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cloud_agent_code_reviews_platform_integration_id_platform_integrations_id_fk": { + "name": "cloud_agent_code_reviews_platform_integration_id_platform_integrations_id_fk", + "tableFrom": "cloud_agent_code_reviews", + "tableTo": "platform_integrations", + "columnsFrom": [ + "platform_integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "cloud_agent_code_reviews_owner_check": { + "name": "cloud_agent_code_reviews_owner_check", + "value": "(\n (\"cloud_agent_code_reviews\".\"owned_by_user_id\" IS NOT NULL AND \"cloud_agent_code_reviews\".\"owned_by_organization_id\" IS NULL) OR\n (\"cloud_agent_code_reviews\".\"owned_by_user_id\" IS NULL AND \"cloud_agent_code_reviews\".\"owned_by_organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.cloud_agent_feedback": { + "name": "cloud_agent_feedback", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "repository": { + "name": "repository", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_streaming": { + "name": "is_streaming", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "message_count": { + "name": "message_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "feedback_text": { + "name": "feedback_text", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "recent_messages": { + "name": "recent_messages", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_cloud_agent_feedback_created_at": { + "name": "IDX_cloud_agent_feedback_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_feedback_kilo_user_id": { + "name": "IDX_cloud_agent_feedback_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_feedback_cloud_agent_session_id": { + "name": "IDX_cloud_agent_feedback_cloud_agent_session_id", + "columns": [ + { + "expression": "cloud_agent_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cloud_agent_feedback_kilo_user_id_kilocode_users_id_fk": { + "name": "cloud_agent_feedback_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "cloud_agent_feedback", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "cloud_agent_feedback_organization_id_organizations_id_fk": { + "name": "cloud_agent_feedback_organization_id_organizations_id_fk", + "tableFrom": "cloud_agent_feedback", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cloud_agent_session_runs": { + "name": "cloud_agent_session_runs", + "schema": "", + "columns": { + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message_id": { + "name": "message_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "wrapper_run_id": { + "name": "wrapper_run_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "queued_at": { + "name": "queued_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "dispatch_accepted_at": { + "name": "dispatch_accepted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "agent_activity_observed_at": { + "name": "agent_activity_observed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "terminal_at": { + "name": "terminal_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "failure_stage": { + "name": "failure_stage", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "failure_code": { + "name": "failure_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message_redacted": { + "name": "error_message_redacted", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_expires_at": { + "name": "error_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "IDX_cloud_agent_session_runs_wrapper_run_id": { + "name": "IDX_cloud_agent_session_runs_wrapper_run_id", + "columns": [ + { + "expression": "wrapper_run_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"cloud_agent_session_runs\".\"wrapper_run_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_session_runs_session_queued": { + "name": "IDX_cloud_agent_session_runs_session_queued", + "columns": [ + { + "expression": "cloud_agent_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "queued_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_session_runs_queued_at": { + "name": "IDX_cloud_agent_session_runs_queued_at", + "columns": [ + { + "expression": "queued_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_session_runs_terminal_at": { + "name": "IDX_cloud_agent_session_runs_terminal_at", + "columns": [ + { + "expression": "terminal_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_session_runs_status_terminal": { + "name": "IDX_cloud_agent_session_runs_status_terminal", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "terminal_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_session_runs_failure_terminal": { + "name": "IDX_cloud_agent_session_runs_failure_terminal", + "columns": [ + { + "expression": "failure_stage", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "failure_code", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "terminal_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_session_runs_error_expires_at": { + "name": "IDX_cloud_agent_session_runs_error_expires_at", + "columns": [ + { + "expression": "error_expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"cloud_agent_session_runs\".\"error_expires_at\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cloud_agent_session_runs_cloud_agent_session_id_cloud_agent_sessions_cloud_agent_session_id_fk": { + "name": "cloud_agent_session_runs_cloud_agent_session_id_cloud_agent_sessions_cloud_agent_session_id_fk", + "tableFrom": "cloud_agent_session_runs", + "tableTo": "cloud_agent_sessions", + "columnsFrom": [ + "cloud_agent_session_id" + ], + "columnsTo": [ + "cloud_agent_session_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "cloud_agent_session_runs_cloud_agent_session_id_message_id_pk": { + "name": "cloud_agent_session_runs_cloud_agent_session_id_message_id_pk", + "columns": [ + "cloud_agent_session_id", + "message_id" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "cloud_agent_session_runs_status_check": { + "name": "cloud_agent_session_runs_status_check", + "value": "\"cloud_agent_session_runs\".\"status\" IN ('queued', 'accepted', 'completed', 'failed', 'interrupted')" + }, + "cloud_agent_session_runs_failure_classification_check": { + "name": "cloud_agent_session_runs_failure_classification_check", + "value": "(\"cloud_agent_session_runs\".\"failure_stage\" IS NULL AND \"cloud_agent_session_runs\".\"failure_code\" IS NULL) OR\n (\"cloud_agent_session_runs\".\"failure_stage\" = 'pre_dispatch' AND \"cloud_agent_session_runs\".\"failure_code\" IN ('sandbox_connect_failed', 'workspace_setup_failed', 'kilo_server_failed', 'wrapper_start_failed', 'invalid_delivery_request', 'session_metadata_missing', 'model_missing', 'delivery_failure_unknown')) OR\n (\"cloud_agent_session_runs\".\"failure_stage\" = 'post_dispatch_no_activity' AND \"cloud_agent_session_runs\".\"failure_code\" IN ('wrapper_disconnected', 'wrapper_no_output', 'wrapper_ping_timeout', 'wrapper_error_before_activity', 'missing_assistant_reply')) OR\n (\"cloud_agent_session_runs\".\"failure_stage\" = 'agent_activity' AND \"cloud_agent_session_runs\".\"failure_code\" IN ('assistant_error', 'wrapper_error_after_activity')) OR\n (\"cloud_agent_session_runs\".\"failure_stage\" = 'interruption' AND \"cloud_agent_session_runs\".\"failure_code\" IN ('user_interrupt', 'container_shutdown', 'system_interrupt')) OR\n (\"cloud_agent_session_runs\".\"failure_stage\" = 'unknown' AND \"cloud_agent_session_runs\".\"failure_code\" = 'unclassified')" + }, + "cloud_agent_session_runs_error_message_bounded_check": { + "name": "cloud_agent_session_runs_error_message_bounded_check", + "value": "\"cloud_agent_session_runs\".\"error_message_redacted\" IS NULL OR char_length(\"cloud_agent_session_runs\".\"error_message_redacted\") <= 4096" + }, + "cloud_agent_session_runs_error_expiry_check": { + "name": "cloud_agent_session_runs_error_expiry_check", + "value": "(\"cloud_agent_session_runs\".\"error_message_redacted\" IS NULL AND \"cloud_agent_session_runs\".\"error_expires_at\" IS NULL) OR\n (\"cloud_agent_session_runs\".\"error_message_redacted\" IS NOT NULL AND \"cloud_agent_session_runs\".\"error_expires_at\" IS NOT NULL)" + } + }, + "isRLSEnabled": false + }, + "public.cloud_agent_sessions": { + "name": "cloud_agent_sessions", + "schema": "", + "columns": { + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "kilo_session_id": { + "name": "kilo_session_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "initial_message_id": { + "name": "initial_message_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "sandbox_id": { + "name": "sandbox_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "failure_at": { + "name": "failure_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "failure_stage": { + "name": "failure_stage", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "failure_code": { + "name": "failure_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message_redacted": { + "name": "error_message_redacted", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_expires_at": { + "name": "error_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "UQ_cloud_agent_sessions_kilo_session_id": { + "name": "UQ_cloud_agent_sessions_kilo_session_id", + "columns": [ + { + "expression": "kilo_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_cloud_agent_sessions_initial_message_id": { + "name": "UQ_cloud_agent_sessions_initial_message_id", + "columns": [ + { + "expression": "initial_message_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_sessions_sandbox_id": { + "name": "IDX_cloud_agent_sessions_sandbox_id", + "columns": [ + { + "expression": "sandbox_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"cloud_agent_sessions\".\"sandbox_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_sessions_created_at": { + "name": "IDX_cloud_agent_sessions_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_sessions_failure_created": { + "name": "IDX_cloud_agent_sessions_failure_created", + "columns": [ + { + "expression": "failure_stage", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "failure_code", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_sessions_failure_at": { + "name": "IDX_cloud_agent_sessions_failure_at", + "columns": [ + { + "expression": "failure_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"cloud_agent_sessions\".\"failure_at\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_sessions_failure_classification_at": { + "name": "IDX_cloud_agent_sessions_failure_classification_at", + "columns": [ + { + "expression": "failure_stage", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "failure_code", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "failure_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"cloud_agent_sessions\".\"failure_at\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_sessions_error_expires_at": { + "name": "IDX_cloud_agent_sessions_error_expires_at", + "columns": [ + { + "expression": "error_expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"cloud_agent_sessions\".\"error_expires_at\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "cloud_agent_sessions_failure_classification_check": { + "name": "cloud_agent_sessions_failure_classification_check", + "value": "(\"cloud_agent_sessions\".\"failure_at\" IS NULL AND \"cloud_agent_sessions\".\"failure_stage\" IS NULL AND \"cloud_agent_sessions\".\"failure_code\" IS NULL) OR\n (\"cloud_agent_sessions\".\"failure_at\" IS NOT NULL AND \"cloud_agent_sessions\".\"failure_stage\" = 'sandbox_identity' AND \"cloud_agent_sessions\".\"failure_code\" = 'sandbox_id_derivation_failed') OR\n (\"cloud_agent_sessions\".\"failure_at\" IS NOT NULL AND \"cloud_agent_sessions\".\"failure_stage\" = 'registration' AND \"cloud_agent_sessions\".\"failure_code\" = 'do_registration_rejected') OR\n (\"cloud_agent_sessions\".\"failure_at\" IS NOT NULL AND \"cloud_agent_sessions\".\"failure_stage\" = 'initial_admission' AND \"cloud_agent_sessions\".\"failure_code\" IN ('initial_admission_rejected', 'initial_queue_full', 'invalid_initial_intent')) OR\n (\"cloud_agent_sessions\".\"failure_at\" IS NOT NULL AND \"cloud_agent_sessions\".\"failure_stage\" = 'transport' AND \"cloud_agent_sessions\".\"failure_code\" = 'do_rpc_outcome_unknown')" + }, + "cloud_agent_sessions_error_message_bounded_check": { + "name": "cloud_agent_sessions_error_message_bounded_check", + "value": "\"cloud_agent_sessions\".\"error_message_redacted\" IS NULL OR char_length(\"cloud_agent_sessions\".\"error_message_redacted\") <= 4096" + }, + "cloud_agent_sessions_error_expiry_check": { + "name": "cloud_agent_sessions_error_expiry_check", + "value": "(\"cloud_agent_sessions\".\"error_message_redacted\" IS NULL AND \"cloud_agent_sessions\".\"error_expires_at\" IS NULL) OR\n (\"cloud_agent_sessions\".\"error_message_redacted\" IS NOT NULL AND \"cloud_agent_sessions\".\"error_expires_at\" IS NOT NULL)" + } + }, + "isRLSEnabled": false + }, + "public.cloud_agent_webhook_triggers": { + "name": "cloud_agent_webhook_triggers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "trigger_id": { + "name": "trigger_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_type": { + "name": "target_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'cloud_agent'" + }, + "kiloclaw_instance_id": { + "name": "kiloclaw_instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "activation_mode": { + "name": "activation_mode", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'webhook'" + }, + "cron_expression": { + "name": "cron_expression", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cron_timezone": { + "name": "cron_timezone", + "type": "text", + "primaryKey": false, + "notNull": false, + "default": "'UTC'" + }, + "github_repo": { + "name": "github_repo", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "profile_id": { + "name": "profile_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_cloud_agent_webhook_triggers_user_trigger": { + "name": "UQ_cloud_agent_webhook_triggers_user_trigger", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "trigger_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"cloud_agent_webhook_triggers\".\"user_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_cloud_agent_webhook_triggers_org_trigger": { + "name": "UQ_cloud_agent_webhook_triggers_org_trigger", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "trigger_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"cloud_agent_webhook_triggers\".\"organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_webhook_triggers_user": { + "name": "IDX_cloud_agent_webhook_triggers_user", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_webhook_triggers_org": { + "name": "IDX_cloud_agent_webhook_triggers_org", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_webhook_triggers_active": { + "name": "IDX_cloud_agent_webhook_triggers_active", + "columns": [ + { + "expression": "is_active", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_cloud_agent_webhook_triggers_profile": { + "name": "IDX_cloud_agent_webhook_triggers_profile", + "columns": [ + { + "expression": "profile_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cloud_agent_webhook_triggers_user_id_kilocode_users_id_fk": { + "name": "cloud_agent_webhook_triggers_user_id_kilocode_users_id_fk", + "tableFrom": "cloud_agent_webhook_triggers", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cloud_agent_webhook_triggers_organization_id_organizations_id_fk": { + "name": "cloud_agent_webhook_triggers_organization_id_organizations_id_fk", + "tableFrom": "cloud_agent_webhook_triggers", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cloud_agent_webhook_triggers_kiloclaw_instance_id_kiloclaw_instances_id_fk": { + "name": "cloud_agent_webhook_triggers_kiloclaw_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "cloud_agent_webhook_triggers", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "kiloclaw_instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "cloud_agent_webhook_triggers_profile_id_agent_environment_profiles_id_fk": { + "name": "cloud_agent_webhook_triggers_profile_id_agent_environment_profiles_id_fk", + "tableFrom": "cloud_agent_webhook_triggers", + "tableTo": "agent_environment_profiles", + "columnsFrom": [ + "profile_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "restrict", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "CHK_cloud_agent_webhook_triggers_owner": { + "name": "CHK_cloud_agent_webhook_triggers_owner", + "value": "(\n (\"cloud_agent_webhook_triggers\".\"user_id\" IS NOT NULL AND \"cloud_agent_webhook_triggers\".\"organization_id\" IS NULL) OR\n (\"cloud_agent_webhook_triggers\".\"user_id\" IS NULL AND \"cloud_agent_webhook_triggers\".\"organization_id\" IS NOT NULL)\n )" + }, + "CHK_cloud_agent_webhook_triggers_cloud_agent_fields": { + "name": "CHK_cloud_agent_webhook_triggers_cloud_agent_fields", + "value": "(\n \"cloud_agent_webhook_triggers\".\"target_type\" != 'cloud_agent' OR\n (\"cloud_agent_webhook_triggers\".\"github_repo\" IS NOT NULL AND \"cloud_agent_webhook_triggers\".\"profile_id\" IS NOT NULL)\n )" + }, + "CHK_cloud_agent_webhook_triggers_kiloclaw_fields": { + "name": "CHK_cloud_agent_webhook_triggers_kiloclaw_fields", + "value": "(\n \"cloud_agent_webhook_triggers\".\"target_type\" != 'kiloclaw_chat' OR\n \"cloud_agent_webhook_triggers\".\"kiloclaw_instance_id\" IS NOT NULL\n )" + }, + "CHK_cloud_agent_webhook_triggers_scheduled_fields": { + "name": "CHK_cloud_agent_webhook_triggers_scheduled_fields", + "value": "(\n \"cloud_agent_webhook_triggers\".\"activation_mode\" != 'scheduled' OR\n \"cloud_agent_webhook_triggers\".\"cron_expression\" IS NOT NULL\n )" + } + }, + "isRLSEnabled": false + }, + "public.code_indexing_manifest": { + "name": "code_indexing_manifest", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "git_branch": { + "name": "git_branch", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_hash": { + "name": "file_hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "chunk_count": { + "name": "chunk_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "total_lines": { + "name": "total_lines", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_ai_lines": { + "name": "total_ai_lines", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_code_indexing_manifest_organization_id": { + "name": "IDX_code_indexing_manifest_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_code_indexing_manifest_kilo_user_id": { + "name": "IDX_code_indexing_manifest_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_code_indexing_manifest_project_id": { + "name": "IDX_code_indexing_manifest_project_id", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_code_indexing_manifest_git_branch": { + "name": "IDX_code_indexing_manifest_git_branch", + "columns": [ + { + "expression": "git_branch", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_code_indexing_manifest_created_at": { + "name": "IDX_code_indexing_manifest_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "code_indexing_manifest_kilo_user_id_kilocode_users_id_fk": { + "name": "code_indexing_manifest_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "code_indexing_manifest", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_code_indexing_manifest_org_user_project_hash_branch": { + "name": "UQ_code_indexing_manifest_org_user_project_hash_branch", + "nullsNotDistinct": true, + "columns": [ + "organization_id", + "kilo_user_id", + "project_id", + "file_path", + "git_branch" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.code_indexing_search": { + "name": "code_indexing_search", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "query": { + "name": "query", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_code_indexing_search_organization_id": { + "name": "IDX_code_indexing_search_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_code_indexing_search_kilo_user_id": { + "name": "IDX_code_indexing_search_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_code_indexing_search_project_id": { + "name": "IDX_code_indexing_search_project_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_code_indexing_search_created_at": { + "name": "IDX_code_indexing_search_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "code_indexing_search_kilo_user_id_kilocode_users_id_fk": { + "name": "code_indexing_search_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "code_indexing_search", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.coding_plan_availability_intents": { + "name": "coding_plan_availability_intents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "plan_id": { + "name": "plan_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_coding_plan_availability_intents_user_plan": { + "name": "UQ_coding_plan_availability_intents_user_plan", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "plan_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_coding_plan_availability_intents_plan": { + "name": "IDX_coding_plan_availability_intents_plan", + "columns": [ + { + "expression": "plan_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "coding_plan_availability_intents_user_id_kilocode_users_id_fk": { + "name": "coding_plan_availability_intents_user_id_kilocode_users_id_fk", + "tableFrom": "coding_plan_availability_intents", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.coding_plan_key_inventory": { + "name": "coding_plan_key_inventory", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "plan_id": { + "name": "plan_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_id": { + "name": "provider_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "upstream_plan_id": { + "name": "upstream_plan_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "encrypted_api_key": { + "name": "encrypted_api_key", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "credential_fingerprint": { + "name": "credential_fingerprint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'available'" + }, + "assigned_to_user_id": { + "name": "assigned_to_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "assigned_at": { + "name": "assigned_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revocation_requested_at": { + "name": "revocation_requested_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revocation_attempt_count": { + "name": "revocation_attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "last_revocation_error": { + "name": "last_revocation_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_coding_plan_key_inv_fingerprint": { + "name": "UQ_coding_plan_key_inv_fingerprint", + "columns": [ + { + "expression": "credential_fingerprint", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_coding_plan_key_inv_plan_status": { + "name": "IDX_coding_plan_key_inv_plan_status", + "columns": [ + { + "expression": "plan_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_coding_plan_key_inv_available": { + "name": "IDX_coding_plan_key_inv_available", + "columns": [ + { + "expression": "plan_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"coding_plan_key_inventory\".\"status\" = 'available'", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "coding_plan_key_inventory_assigned_to_user_id_kilocode_users_id_fk": { + "name": "coding_plan_key_inventory_assigned_to_user_id_kilocode_users_id_fk", + "tableFrom": "coding_plan_key_inventory", + "tableTo": "kilocode_users", + "columnsFrom": [ + "assigned_to_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "coding_plan_key_inventory_status_check": { + "name": "coding_plan_key_inventory_status_check", + "value": "\"coding_plan_key_inventory\".\"status\" IN ('available', 'assigned', 'revocation_pending', 'revoked', 'revocation_failed')" + } + }, + "isRLSEnabled": false + }, + "public.coding_plan_subscriptions": { + "name": "coding_plan_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "plan_id": { + "name": "plan_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_id": { + "name": "provider_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "key_inventory_id": { + "name": "key_inventory_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "installed_byok_key_id": { + "name": "installed_byok_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "cost_microdollars": { + "name": "cost_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "billing_period_days": { + "name": "billing_period_days", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "credit_renewal_at": { + "name": "credit_renewal_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "past_due_started_at": { + "name": "past_due_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "payment_grace_expires_at": { + "name": "payment_grace_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "auto_top_up_attempted_for_due": { + "name": "auto_top_up_attempted_for_due", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "cancellation_reason": { + "name": "cancellation_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_coding_plan_sub_live_user_plan": { + "name": "UQ_coding_plan_sub_live_user_plan", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "plan_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"coding_plan_subscriptions\".\"status\" IN ('active', 'past_due')", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_coding_plan_sub_status": { + "name": "IDX_coding_plan_sub_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_coding_plan_sub_renewal": { + "name": "IDX_coding_plan_sub_renewal", + "columns": [ + { + "expression": "credit_renewal_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_coding_plan_sub_inventory": { + "name": "IDX_coding_plan_sub_inventory", + "columns": [ + { + "expression": "key_inventory_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "coding_plan_subscriptions_user_id_kilocode_users_id_fk": { + "name": "coding_plan_subscriptions_user_id_kilocode_users_id_fk", + "tableFrom": "coding_plan_subscriptions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "coding_plan_subscriptions_key_inventory_id_coding_plan_key_inventory_id_fk": { + "name": "coding_plan_subscriptions_key_inventory_id_coding_plan_key_inventory_id_fk", + "tableFrom": "coding_plan_subscriptions", + "tableTo": "coding_plan_key_inventory", + "columnsFrom": [ + "key_inventory_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "coding_plan_subscriptions_installed_byok_key_id_byok_api_keys_id_fk": { + "name": "coding_plan_subscriptions_installed_byok_key_id_byok_api_keys_id_fk", + "tableFrom": "coding_plan_subscriptions", + "tableTo": "byok_api_keys", + "columnsFrom": [ + "installed_byok_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "coding_plan_subscriptions_status_check": { + "name": "coding_plan_subscriptions_status_check", + "value": "\"coding_plan_subscriptions\".\"status\" IN ('active', 'past_due', 'canceled')" + }, + "coding_plan_subscriptions_live_access_check": { + "name": "coding_plan_subscriptions_live_access_check", + "value": "\"coding_plan_subscriptions\".\"status\" = 'canceled' OR \"coding_plan_subscriptions\".\"key_inventory_id\" IS NOT NULL" + } + }, + "isRLSEnabled": false + }, + "public.coding_plan_terms": { + "name": "coding_plan_terms", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subscription_id": { + "name": "subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "plan_id": { + "name": "plan_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "idempotency_key": { + "name": "idempotency_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "period_start": { + "name": "period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "period_end": { + "name": "period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "cost_microdollars": { + "name": "cost_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "credit_transaction_id": { + "name": "credit_transaction_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_coding_plan_terms_request": { + "name": "UQ_coding_plan_terms_request", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "plan_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "idempotency_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_coding_plan_terms_subscription": { + "name": "IDX_coding_plan_terms_subscription", + "columns": [ + { + "expression": "subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "coding_plan_terms_subscription_id_coding_plan_subscriptions_id_fk": { + "name": "coding_plan_terms_subscription_id_coding_plan_subscriptions_id_fk", + "tableFrom": "coding_plan_terms", + "tableTo": "coding_plan_subscriptions", + "columnsFrom": [ + "subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "coding_plan_terms_user_id_kilocode_users_id_fk": { + "name": "coding_plan_terms_user_id_kilocode_users_id_fk", + "tableFrom": "coding_plan_terms", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "coding_plan_terms_credit_transaction_id_credit_transactions_id_fk": { + "name": "coding_plan_terms_credit_transaction_id_credit_transactions_id_fk", + "tableFrom": "coding_plan_terms", + "tableTo": "credit_transactions", + "columnsFrom": [ + "credit_transaction_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "coding_plan_terms_kind_check": { + "name": "coding_plan_terms_kind_check", + "value": "\"coding_plan_terms\".\"kind\" IN ('activation', 'extension', 'renewal')" + } + }, + "isRLSEnabled": false + }, + "public.contributor_champion_contributors": { + "name": "contributor_champion_contributors", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "github_login": { + "name": "github_login", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_profile_url": { + "name": "github_profile_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_user_id": { + "name": "github_user_id", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "first_contribution_at": { + "name": "first_contribution_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_contribution_at": { + "name": "last_contribution_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "all_time_contributions": { + "name": "all_time_contributions", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "manual_email": { + "name": "manual_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_contributor_champion_contributors_last_contribution_at": { + "name": "IDX_contributor_champion_contributors_last_contribution_at", + "columns": [ + { + "expression": "last_contribution_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_contributor_champion_contributors_manual_email": { + "name": "IDX_contributor_champion_contributors_manual_email", + "columns": [ + { + "expression": "manual_email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_contributor_champion_contributors_github_login": { + "name": "UQ_contributor_champion_contributors_github_login", + "nullsNotDistinct": false, + "columns": [ + "github_login" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.contributor_champion_events": { + "name": "contributor_champion_events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "contributor_id": { + "name": "contributor_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_pr_number": { + "name": "github_pr_number", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "github_pr_url": { + "name": "github_pr_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_pr_title": { + "name": "github_pr_title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_author_login": { + "name": "github_author_login", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_author_email": { + "name": "github_author_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "merged_at": { + "name": "merged_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_contributor_champion_events_contributor_id": { + "name": "IDX_contributor_champion_events_contributor_id", + "columns": [ + { + "expression": "contributor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_contributor_champion_events_merged_at": { + "name": "IDX_contributor_champion_events_merged_at", + "columns": [ + { + "expression": "merged_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_contributor_champion_events_author_email": { + "name": "IDX_contributor_champion_events_author_email", + "columns": [ + { + "expression": "github_author_email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contributor_champion_events_contributor_id_contributor_champion_contributors_id_fk": { + "name": "contributor_champion_events_contributor_id_contributor_champion_contributors_id_fk", + "tableFrom": "contributor_champion_events", + "tableTo": "contributor_champion_contributors", + "columnsFrom": [ + "contributor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_contributor_champion_events_repo_pr": { + "name": "UQ_contributor_champion_events_repo_pr", + "nullsNotDistinct": false, + "columns": [ + "repo_full_name", + "github_pr_number" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.contributor_champion_memberships": { + "name": "contributor_champion_memberships", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "contributor_id": { + "name": "contributor_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "selected_tier": { + "name": "selected_tier", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "enrolled_tier": { + "name": "enrolled_tier", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "enrolled_at": { + "name": "enrolled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "credit_amount_microdollars": { + "name": "credit_amount_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "credits_last_granted_at": { + "name": "credits_last_granted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "linked_kilo_user_id": { + "name": "linked_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_contributor_champion_memberships_credits_due": { + "name": "IDX_contributor_champion_memberships_credits_due", + "columns": [ + { + "expression": "credits_last_granted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"contributor_champion_memberships\".\"enrolled_tier\" IS NOT NULL AND \"contributor_champion_memberships\".\"credit_amount_microdollars\" > 0", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_contributor_champion_memberships_linked_kilo_user_id": { + "name": "IDX_contributor_champion_memberships_linked_kilo_user_id", + "columns": [ + { + "expression": "linked_kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contributor_champion_memberships_contributor_id_contributor_champion_contributors_id_fk": { + "name": "contributor_champion_memberships_contributor_id_contributor_champion_contributors_id_fk", + "tableFrom": "contributor_champion_memberships", + "tableTo": "contributor_champion_contributors", + "columnsFrom": [ + "contributor_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "contributor_champion_memberships_linked_kilo_user_id_kilocode_users_id_fk": { + "name": "contributor_champion_memberships_linked_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "contributor_champion_memberships", + "tableTo": "kilocode_users", + "columnsFrom": [ + "linked_kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_contributor_champion_memberships_contributor_id": { + "name": "UQ_contributor_champion_memberships_contributor_id", + "nullsNotDistinct": false, + "columns": [ + "contributor_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "contributor_champion_memberships_selected_tier_check": { + "name": "contributor_champion_memberships_selected_tier_check", + "value": "\"contributor_champion_memberships\".\"selected_tier\" IS NULL OR \"contributor_champion_memberships\".\"selected_tier\" IN ('contributor', 'ambassador', 'champion')" + }, + "contributor_champion_memberships_enrolled_tier_check": { + "name": "contributor_champion_memberships_enrolled_tier_check", + "value": "\"contributor_champion_memberships\".\"enrolled_tier\" IS NULL OR \"contributor_champion_memberships\".\"enrolled_tier\" IN ('contributor', 'ambassador', 'champion')" + } + }, + "isRLSEnabled": false + }, + "public.contributor_champion_sync_state": { + "name": "contributor_champion_sync_state", + "schema": "", + "columns": { + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "last_merged_at": { + "name": "last_merged_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_synced_at": { + "name": "last_synced_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.credit_campaigns": { + "name": "credit_campaigns", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "credit_category": { + "name": "credit_category", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "amount_microdollars": { + "name": "amount_microdollars", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "credit_expiry_hours": { + "name": "credit_expiry_hours", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "campaign_ends_at": { + "name": "campaign_ends_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "total_redemptions_allowed": { + "name": "total_redemptions_allowed", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_by_kilo_user_id": { + "name": "created_by_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_credit_campaigns_slug": { + "name": "UQ_credit_campaigns_slug", + "columns": [ + { + "expression": "slug", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_credit_campaigns_credit_category": { + "name": "UQ_credit_campaigns_credit_category", + "columns": [ + { + "expression": "credit_category", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "credit_campaigns_slug_format_check": { + "name": "credit_campaigns_slug_format_check", + "value": "\"credit_campaigns\".\"slug\" ~ '^[a-z0-9-]{5,40}$'" + }, + "credit_campaigns_amount_positive_check": { + "name": "credit_campaigns_amount_positive_check", + "value": "\"credit_campaigns\".\"amount_microdollars\" > 0" + }, + "credit_campaigns_credit_expiry_hours_positive_check": { + "name": "credit_campaigns_credit_expiry_hours_positive_check", + "value": "\"credit_campaigns\".\"credit_expiry_hours\" IS NULL OR \"credit_campaigns\".\"credit_expiry_hours\" > 0" + }, + "credit_campaigns_total_redemptions_allowed_positive_check": { + "name": "credit_campaigns_total_redemptions_allowed_positive_check", + "value": "\"credit_campaigns\".\"total_redemptions_allowed\" > 0" + } + }, + "isRLSEnabled": false + }, + "public.credit_transactions": { + "name": "credit_transactions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "amount_microdollars": { + "name": "amount_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "expiration_baseline_microdollars_used": { + "name": "expiration_baseline_microdollars_used", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "original_baseline_microdollars_used": { + "name": "original_baseline_microdollars_used", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "is_free": { + "name": "is_free", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "original_transaction_id": { + "name": "original_transaction_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "stripe_payment_id": { + "name": "stripe_payment_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "coinbase_credit_block_id": { + "name": "coinbase_credit_block_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "credit_category": { + "name": "credit_category", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expiry_date": { + "name": "expiry_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "check_category_uniqueness": { + "name": "check_category_uniqueness", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "IDX_credit_transactions_created_at": { + "name": "IDX_credit_transactions_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_credit_transactions_is_free": { + "name": "IDX_credit_transactions_is_free", + "columns": [ + { + "expression": "is_free", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_credit_transactions_kilo_user_id": { + "name": "IDX_credit_transactions_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_credit_transactions_credit_category": { + "name": "IDX_credit_transactions_credit_category", + "columns": [ + { + "expression": "credit_category", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_credit_transactions_stripe_payment_id": { + "name": "IDX_credit_transactions_stripe_payment_id", + "columns": [ + { + "expression": "stripe_payment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_credit_transactions_original_transaction_id": { + "name": "IDX_credit_transactions_original_transaction_id", + "columns": [ + { + "expression": "original_transaction_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_credit_transactions_coinbase_credit_block_id": { + "name": "IDX_credit_transactions_coinbase_credit_block_id", + "columns": [ + { + "expression": "coinbase_credit_block_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_credit_transactions_organization_id": { + "name": "IDX_credit_transactions_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_credit_transactions_unique_category": { + "name": "IDX_credit_transactions_unique_category", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "credit_category", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"credit_transactions\".\"check_category_uniqueness\" = TRUE", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.custom_llm2": { + "name": "custom_llm2", + "schema": "", + "columns": { + "public_id": { + "name": "public_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "definition": { + "name": "definition", + "type": "jsonb", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.deleted_user_email_tombstones": { + "name": "deleted_user_email_tombstones", + "schema": "", + "columns": { + "normalized_email_hash": { + "name": "normalized_email_hash", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.deployment_builds": { + "name": "deployment_builds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "deployment_id": { + "name": "deployment_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_deployment_builds_deployment_id": { + "name": "idx_deployment_builds_deployment_id", + "columns": [ + { + "expression": "deployment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_deployment_builds_status": { + "name": "idx_deployment_builds_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "deployment_builds_deployment_id_deployments_id_fk": { + "name": "deployment_builds_deployment_id_deployments_id_fk", + "tableFrom": "deployment_builds", + "tableTo": "deployments", + "columnsFrom": [ + "deployment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.deployment_env_vars": { + "name": "deployment_env_vars", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "deployment_id": { + "name": "deployment_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_secret": { + "name": "is_secret", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_deployment_env_vars_deployment_id": { + "name": "idx_deployment_env_vars_deployment_id", + "columns": [ + { + "expression": "deployment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "deployment_env_vars_deployment_id_deployments_id_fk": { + "name": "deployment_env_vars_deployment_id_deployments_id_fk", + "tableFrom": "deployment_env_vars", + "tableTo": "deployments", + "columnsFrom": [ + "deployment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_deployment_env_vars_deployment_key": { + "name": "UQ_deployment_env_vars_deployment_key", + "nullsNotDistinct": false, + "columns": [ + "deployment_id", + "key" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.deployment_events": { + "name": "deployment_events", + "schema": "", + "columns": { + "build_id": { + "name": "build_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "event_id": { + "name": "event_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "event_type": { + "name": "event_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'log'" + }, + "timestamp": { + "name": "timestamp", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "jsonb", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "idx_deployment_events_build_id": { + "name": "idx_deployment_events_build_id", + "columns": [ + { + "expression": "build_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_deployment_events_timestamp": { + "name": "idx_deployment_events_timestamp", + "columns": [ + { + "expression": "timestamp", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_deployment_events_type": { + "name": "idx_deployment_events_type", + "columns": [ + { + "expression": "event_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "deployment_events_build_id_deployment_builds_id_fk": { + "name": "deployment_events_build_id_deployment_builds_id_fk", + "tableFrom": "deployment_events", + "tableTo": "deployment_builds", + "columnsFrom": [ + "build_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "deployment_events_build_id_event_id_pk": { + "name": "deployment_events_build_id_event_id_pk", + "columns": [ + "build_id", + "event_id" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.deployment_threat_detections": { + "name": "deployment_threat_detections", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "deployment_id": { + "name": "deployment_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "build_id": { + "name": "build_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "threat_type": { + "name": "threat_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_deployment_threat_detections_deployment_id": { + "name": "idx_deployment_threat_detections_deployment_id", + "columns": [ + { + "expression": "deployment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_deployment_threat_detections_created_at": { + "name": "idx_deployment_threat_detections_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "deployment_threat_detections_deployment_id_deployments_id_fk": { + "name": "deployment_threat_detections_deployment_id_deployments_id_fk", + "tableFrom": "deployment_threat_detections", + "tableTo": "deployments", + "columnsFrom": [ + "deployment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "deployment_threat_detections_build_id_deployment_builds_id_fk": { + "name": "deployment_threat_detections_build_id_deployment_builds_id_fk", + "tableFrom": "deployment_threat_detections", + "tableTo": "deployment_builds", + "columnsFrom": [ + "build_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.deployments": { + "name": "deployments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "created_by_user_id": { + "name": "created_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "deployment_slug": { + "name": "deployment_slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "internal_worker_name": { + "name": "internal_worker_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "repository_source": { + "name": "repository_source", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "branch": { + "name": "branch", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "deployment_url": { + "name": "deployment_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform_integration_id": { + "name": "platform_integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "source_type": { + "name": "source_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'github'" + }, + "git_auth_token": { + "name": "git_auth_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "last_deployed_at": { + "name": "last_deployed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_build_id": { + "name": "last_build_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "threat_status": { + "name": "threat_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_from": { + "name": "created_from", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_deployments_owned_by_user_id": { + "name": "idx_deployments_owned_by_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_deployments_owned_by_organization_id": { + "name": "idx_deployments_owned_by_organization_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_deployments_platform_integration_id": { + "name": "idx_deployments_platform_integration_id", + "columns": [ + { + "expression": "platform_integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_deployments_repository_source_branch": { + "name": "idx_deployments_repository_source_branch", + "columns": [ + { + "expression": "repository_source", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "branch", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_deployments_threat_status_pending": { + "name": "idx_deployments_threat_status_pending", + "columns": [ + { + "expression": "threat_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"deployments\".\"threat_status\" = 'pending_scan'", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "deployments_owned_by_user_id_kilocode_users_id_fk": { + "name": "deployments_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "deployments", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "deployments_owned_by_organization_id_organizations_id_fk": { + "name": "deployments_owned_by_organization_id_organizations_id_fk", + "tableFrom": "deployments", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_deployments_deployment_slug": { + "name": "UQ_deployments_deployment_slug", + "nullsNotDistinct": false, + "columns": [ + "deployment_slug" + ] + } + }, + "policies": {}, + "checkConstraints": { + "deployments_owner_check": { + "name": "deployments_owner_check", + "value": "(\n (\"deployments\".\"owned_by_user_id\" IS NOT NULL AND \"deployments\".\"owned_by_organization_id\" IS NULL) OR\n (\"deployments\".\"owned_by_user_id\" IS NULL AND \"deployments\".\"owned_by_organization_id\" IS NOT NULL)\n )" + }, + "deployments_source_type_check": { + "name": "deployments_source_type_check", + "value": "\"deployments\".\"source_type\" IN ('github', 'git', 'app-builder')" + } + }, + "isRLSEnabled": false + }, + "public.device_auth_requests": { + "name": "device_auth_requests", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "approved_at": { + "name": "approved_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "ip_address": { + "name": "ip_address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_device_auth_requests_code": { + "name": "UQ_device_auth_requests_code", + "columns": [ + { + "expression": "code", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_device_auth_requests_status": { + "name": "IDX_device_auth_requests_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_device_auth_requests_expires_at": { + "name": "IDX_device_auth_requests_expires_at", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_device_auth_requests_kilo_user_id": { + "name": "IDX_device_auth_requests_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "device_auth_requests_kilo_user_id_kilocode_users_id_fk": { + "name": "device_auth_requests_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "device_auth_requests", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.discord_gateway_listener": { + "name": "discord_gateway_listener", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "default": 1 + }, + "listener_id": { + "name": "listener_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.editor_name": { + "name": "editor_name", + "schema": "", + "columns": { + "editor_name_id": { + "name": "editor_name_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "editor_name": { + "name": "editor_name", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_editor_name": { + "name": "UQ_editor_name", + "columns": [ + { + "expression": "editor_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.enrichment_data": { + "name": "enrichment_data", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_enrichment_data": { + "name": "github_enrichment_data", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "linkedin_enrichment_data": { + "name": "linkedin_enrichment_data", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "clay_enrichment_data": { + "name": "clay_enrichment_data", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_enrichment_data_user_id": { + "name": "IDX_enrichment_data_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "enrichment_data_user_id_kilocode_users_id_fk": { + "name": "enrichment_data_user_id_kilocode_users_id_fk", + "tableFrom": "enrichment_data", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_enrichment_data_user_id": { + "name": "UQ_enrichment_data_user_id", + "nullsNotDistinct": false, + "columns": [ + "user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.exa_monthly_usage": { + "name": "exa_monthly_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "month": { + "name": "month", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "total_cost_microdollars": { + "name": "total_cost_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "total_charged_microdollars": { + "name": "total_charged_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "request_count": { + "name": "request_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "free_allowance_microdollars": { + "name": "free_allowance_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": 10000000 + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_exa_monthly_usage_personal": { + "name": "idx_exa_monthly_usage_personal", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "month", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"exa_monthly_usage\".\"organization_id\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_exa_monthly_usage_org": { + "name": "idx_exa_monthly_usage_org", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "month", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"exa_monthly_usage\".\"organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.exa_usage_log": { + "name": "exa_usage_log", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": false, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "cost_microdollars": { + "name": "cost_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "charged_to_balance": { + "name": "charged_to_balance", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "feature_id": { + "name": "feature_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_exa_usage_log_user_created": { + "name": "idx_exa_usage_log_user_created", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "exa_usage_log_id_created_at_pk": { + "name": "exa_usage_log_id_created_at_pk", + "columns": [ + "id", + "created_at" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.feature": { + "name": "feature", + "schema": "", + "columns": { + "feature_id": { + "name": "feature_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "feature": { + "name": "feature", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_feature": { + "name": "UQ_feature", + "columns": [ + { + "expression": "feature", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.finish_reason": { + "name": "finish_reason", + "schema": "", + "columns": { + "finish_reason_id": { + "name": "finish_reason_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "finish_reason": { + "name": "finish_reason", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_finish_reason": { + "name": "UQ_finish_reason", + "columns": [ + { + "expression": "finish_reason", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.free_model_usage": { + "name": "free_model_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "ip_address": { + "name": "ip_address", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_free_model_usage_ip_created_at": { + "name": "idx_free_model_usage_ip_created_at", + "columns": [ + { + "expression": "ip_address", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_free_model_usage_created_at": { + "name": "idx_free_model_usage_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.github_branch_pull_requests": { + "name": "github_branch_pull_requests", + "schema": "", + "columns": { + "git_url": { + "name": "git_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "git_branch": { + "name": "git_branch", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pr_url": { + "name": "pr_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pr_number": { + "name": "pr_number", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "pr_state": { + "name": "pr_state", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pr_title": { + "name": "pr_title", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pr_head_sha": { + "name": "pr_head_sha", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "pr_review_decision": { + "name": "pr_review_decision", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "review_decision_pending": { + "name": "review_decision_pending", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "review_decision_fetching_at": { + "name": "review_decision_fetching_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "pr_last_synced_at": { + "name": "pr_last_synced_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_github_branch_prs_org": { + "name": "UQ_github_branch_prs_org", + "columns": [ + { + "expression": "git_url", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "git_branch", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"github_branch_pull_requests\".\"owned_by_organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_github_branch_prs_user": { + "name": "UQ_github_branch_prs_user", + "columns": [ + { + "expression": "git_url", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "git_branch", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"github_branch_pull_requests\".\"owned_by_user_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "github_branch_pull_requests_owned_by_organization_id_organizations_id_fk": { + "name": "github_branch_pull_requests_owned_by_organization_id_organizations_id_fk", + "tableFrom": "github_branch_pull_requests", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "github_branch_pull_requests_owned_by_user_id_kilocode_users_id_fk": { + "name": "github_branch_pull_requests_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "github_branch_pull_requests", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "github_branch_pull_requests_owner_check": { + "name": "github_branch_pull_requests_owner_check", + "value": "(\n (\"github_branch_pull_requests\".\"owned_by_organization_id\" IS NOT NULL AND \"github_branch_pull_requests\".\"owned_by_user_id\" IS NULL) OR\n (\"github_branch_pull_requests\".\"owned_by_organization_id\" IS NULL AND \"github_branch_pull_requests\".\"owned_by_user_id\" IS NOT NULL)\n )" + }, + "github_branch_pull_requests_review_decision_check": { + "name": "github_branch_pull_requests_review_decision_check", + "value": "\"github_branch_pull_requests\".\"pr_review_decision\" IS NULL OR \"github_branch_pull_requests\".\"pr_review_decision\" IN ('approved', 'changes_requested', 'review_required')" + } + }, + "isRLSEnabled": false + }, + "public.http_ip": { + "name": "http_ip", + "schema": "", + "columns": { + "http_ip_id": { + "name": "http_ip_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "http_ip": { + "name": "http_ip", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_http_ip": { + "name": "UQ_http_ip", + "columns": [ + { + "expression": "http_ip", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.http_user_agent": { + "name": "http_user_agent", + "schema": "", + "columns": { + "http_user_agent_id": { + "name": "http_user_agent_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "http_user_agent": { + "name": "http_user_agent", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_http_user_agent": { + "name": "UQ_http_user_agent", + "columns": [ + { + "expression": "http_user_agent", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.impact_advocate_participants": { + "name": "impact_advocate_participants", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "program_key": { + "name": "program_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw'" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "advocate_id": { + "name": "advocate_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "advocate_account_id": { + "name": "advocate_account_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "opaque_referral_identifier": { + "name": "opaque_referral_identifier", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "contact_email": { + "name": "contact_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "locale": { + "name": "locale", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "country_code": { + "name": "country_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "registration_state": { + "name": "registration_state", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "registered_at": { + "name": "registered_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_registration_attempt_at": { + "name": "last_registration_attempt_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_error_code": { + "name": "last_error_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "last_error_message": { + "name": "last_error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_impact_advocate_participants_program_referral_identifier": { + "name": "UQ_impact_advocate_participants_program_referral_identifier", + "columns": [ + { + "expression": "program_key", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "opaque_referral_identifier", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"impact_advocate_participants\".\"opaque_referral_identifier\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_advocate_participants_registration_state": { + "name": "IDX_impact_advocate_participants_registration_state", + "columns": [ + { + "expression": "registration_state", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_advocate_participants_user_id_kilocode_users_id_fk": { + "name": "impact_advocate_participants_user_id_kilocode_users_id_fk", + "tableFrom": "impact_advocate_participants", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_advocate_participants_program_user": { + "name": "UQ_impact_advocate_participants_program_user", + "nullsNotDistinct": false, + "columns": [ + "program_key", + "user_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_advocate_participants_program_key_check": { + "name": "impact_advocate_participants_program_key_check", + "value": "\"impact_advocate_participants\".\"program_key\" IN ('kiloclaw', 'kilo_pass')" + }, + "impact_advocate_participants_registration_state_check": { + "name": "impact_advocate_participants_registration_state_check", + "value": "\"impact_advocate_participants\".\"registration_state\" IN ('pending', 'retrying', 'registered', 'failed')" + } + }, + "isRLSEnabled": false + }, + "public.impact_advocate_registration_attempts": { + "name": "impact_advocate_registration_attempts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "program_key": { + "name": "program_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw'" + }, + "participant_id": { + "name": "participant_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "opaque_cookie_value": { + "name": "opaque_cookie_value", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cookie_value_length": { + "name": "cookie_value_length", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "delivery_state": { + "name": "delivery_state", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'queued'" + }, + "request_payload": { + "name": "request_payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "response_payload": { + "name": "response_payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "next_retry_at": { + "name": "next_retry_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "claimed_at": { + "name": "claimed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_advocate_registration_attempts_participant_id": { + "name": "IDX_impact_advocate_registration_attempts_participant_id", + "columns": [ + { + "expression": "participant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_advocate_registration_attempts_delivery_state": { + "name": "IDX_impact_advocate_registration_attempts_delivery_state", + "columns": [ + { + "expression": "delivery_state", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_advocate_registration_attempts_participant_id_impact_advocate_participants_id_fk": { + "name": "impact_advocate_registration_attempts_participant_id_impact_advocate_participants_id_fk", + "tableFrom": "impact_advocate_registration_attempts", + "tableTo": "impact_advocate_participants", + "columnsFrom": [ + "participant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_advocate_registration_attempts_dedupe_key": { + "name": "UQ_impact_advocate_registration_attempts_dedupe_key", + "nullsNotDistinct": false, + "columns": [ + "dedupe_key" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_advocate_registration_attempts_program_key_check": { + "name": "impact_advocate_registration_attempts_program_key_check", + "value": "\"impact_advocate_registration_attempts\".\"program_key\" IN ('kiloclaw', 'kilo_pass')" + }, + "impact_advocate_registration_attempts_delivery_state_check": { + "name": "impact_advocate_registration_attempts_delivery_state_check", + "value": "\"impact_advocate_registration_attempts\".\"delivery_state\" IN ('queued', 'sending', 'succeeded', 'failed')" + }, + "impact_advocate_registration_attempts_cookie_value_length_non_negative_check": { + "name": "impact_advocate_registration_attempts_cookie_value_length_non_negative_check", + "value": "\"impact_advocate_registration_attempts\".\"cookie_value_length\" >= 0" + }, + "impact_advocate_registration_attempts_attempt_count_non_negative_check": { + "name": "impact_advocate_registration_attempts_attempt_count_non_negative_check", + "value": "\"impact_advocate_registration_attempts\".\"attempt_count\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.impact_advocate_reward_redemptions": { + "name": "impact_advocate_reward_redemptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "reward_id": { + "name": "reward_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "beneficiary_user_id": { + "name": "beneficiary_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "state": { + "name": "state", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'queued'" + }, + "impact_reward_id": { + "name": "impact_reward_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "request_payload": { + "name": "request_payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "lookup_response_payload": { + "name": "lookup_response_payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "redeem_response_payload": { + "name": "redeem_response_payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "next_retry_at": { + "name": "next_retry_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "redeemed_at": { + "name": "redeemed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_advocate_reward_redemptions_beneficiary_user_id": { + "name": "IDX_impact_advocate_reward_redemptions_beneficiary_user_id", + "columns": [ + { + "expression": "beneficiary_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_advocate_reward_redemptions_state": { + "name": "IDX_impact_advocate_reward_redemptions_state", + "columns": [ + { + "expression": "state", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_advocate_reward_redemptions_reward_id_impact_referral_rewards_id_fk": { + "name": "impact_advocate_reward_redemptions_reward_id_impact_referral_rewards_id_fk", + "tableFrom": "impact_advocate_reward_redemptions", + "tableTo": "impact_referral_rewards", + "columnsFrom": [ + "reward_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "impact_advocate_reward_redemptions_beneficiary_user_id_kilocode_users_id_fk": { + "name": "impact_advocate_reward_redemptions_beneficiary_user_id_kilocode_users_id_fk", + "tableFrom": "impact_advocate_reward_redemptions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "beneficiary_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_advocate_reward_redemptions_reward_id": { + "name": "UQ_impact_advocate_reward_redemptions_reward_id", + "nullsNotDistinct": false, + "columns": [ + "reward_id" + ] + }, + "UQ_impact_advocate_reward_redemptions_dedupe_key": { + "name": "UQ_impact_advocate_reward_redemptions_dedupe_key", + "nullsNotDistinct": false, + "columns": [ + "dedupe_key" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_advocate_reward_redemptions_state_check": { + "name": "impact_advocate_reward_redemptions_state_check", + "value": "\"impact_advocate_reward_redemptions\".\"state\" IN ('queued', 'retrying', 'redeemed', 'failed')" + }, + "impact_advocate_reward_redemptions_attempt_count_non_negative_check": { + "name": "impact_advocate_reward_redemptions_attempt_count_non_negative_check", + "value": "\"impact_advocate_reward_redemptions\".\"attempt_count\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.impact_attribution_touches": { + "name": "impact_attribution_touches", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "product": { + "name": "product", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw'" + }, + "program_key": { + "name": "program_key", + "type": "text", + "primaryKey": false, + "notNull": false, + "default": "'kiloclaw'" + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "anonymous_id": { + "name": "anonymous_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "touch_type": { + "name": "touch_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "opaque_tracking_value": { + "name": "opaque_tracking_value", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "tracking_value_length": { + "name": "tracking_value_length", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "is_tracking_value_accepted": { + "name": "is_tracking_value_accepted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "rs_code": { + "name": "rs_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "rs_share_medium": { + "name": "rs_share_medium", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "rs_engagement_medium": { + "name": "rs_engagement_medium", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "im_ref": { + "name": "im_ref", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "landing_path": { + "name": "landing_path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "utm_source": { + "name": "utm_source", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "utm_medium": { + "name": "utm_medium", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "utm_campaign": { + "name": "utm_campaign", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "utm_term": { + "name": "utm_term", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "utm_content": { + "name": "utm_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "touched_at": { + "name": "touched_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "sale_attributed_at": { + "name": "sale_attributed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_attribution_touches_product_user_id": { + "name": "IDX_impact_attribution_touches_product_user_id", + "columns": [ + { + "expression": "product", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_attribution_touches_user_id": { + "name": "IDX_impact_attribution_touches_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_attribution_touches_anonymous_id": { + "name": "IDX_impact_attribution_touches_anonymous_id", + "columns": [ + { + "expression": "anonymous_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_attribution_touches_expires_at": { + "name": "IDX_impact_attribution_touches_expires_at", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_attribution_touches_sale_attributed_at": { + "name": "IDX_impact_attribution_touches_sale_attributed_at", + "columns": [ + { + "expression": "sale_attributed_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_attribution_touches_user_id_kilocode_users_id_fk": { + "name": "impact_attribution_touches_user_id_kilocode_users_id_fk", + "tableFrom": "impact_attribution_touches", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_attribution_touches_dedupe_key": { + "name": "UQ_impact_attribution_touches_dedupe_key", + "nullsNotDistinct": false, + "columns": [ + "dedupe_key" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_attribution_touches_product_check": { + "name": "impact_attribution_touches_product_check", + "value": "\"impact_attribution_touches\".\"product\" IN ('kiloclaw', 'kilo_pass')" + }, + "impact_attribution_touches_program_key_check": { + "name": "impact_attribution_touches_program_key_check", + "value": "\"impact_attribution_touches\".\"program_key\" IN ('kiloclaw', 'kilo_pass')" + }, + "impact_attribution_touches_touch_type_check": { + "name": "impact_attribution_touches_touch_type_check", + "value": "\"impact_attribution_touches\".\"touch_type\" IN ('affiliate', 'referral')" + }, + "impact_attribution_touches_provider_check": { + "name": "impact_attribution_touches_provider_check", + "value": "\"impact_attribution_touches\".\"provider\" IN ('impact_performance', 'impact_advocate')" + }, + "impact_attribution_touches_tracking_value_length_non_negative_check": { + "name": "impact_attribution_touches_tracking_value_length_non_negative_check", + "value": "\"impact_attribution_touches\".\"tracking_value_length\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.impact_conversion_reports": { + "name": "impact_conversion_reports", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "conversion_id": { + "name": "conversion_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "action_tracker_id": { + "name": "action_tracker_id", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "order_id": { + "name": "order_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "state": { + "name": "state", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'queued'" + }, + "request_payload": { + "name": "request_payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "response_payload": { + "name": "response_payload", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "next_retry_at": { + "name": "next_retry_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "delivered_at": { + "name": "delivered_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_conversion_reports_conversion_id": { + "name": "IDX_impact_conversion_reports_conversion_id", + "columns": [ + { + "expression": "conversion_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_conversion_reports_state": { + "name": "IDX_impact_conversion_reports_state", + "columns": [ + { + "expression": "state", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_conversion_reports_conversion_id_impact_referral_conversions_id_fk": { + "name": "impact_conversion_reports_conversion_id_impact_referral_conversions_id_fk", + "tableFrom": "impact_conversion_reports", + "tableTo": "impact_referral_conversions", + "columnsFrom": [ + "conversion_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_conversion_reports_dedupe_key": { + "name": "UQ_impact_conversion_reports_dedupe_key", + "nullsNotDistinct": false, + "columns": [ + "dedupe_key" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_conversion_reports_state_check": { + "name": "impact_conversion_reports_state_check", + "value": "\"impact_conversion_reports\".\"state\" IN ('queued', 'retrying', 'delivered', 'failed')" + }, + "impact_conversion_reports_attempt_count_non_negative_check": { + "name": "impact_conversion_reports_attempt_count_non_negative_check", + "value": "\"impact_conversion_reports\".\"attempt_count\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.impact_referral_conversions": { + "name": "impact_referral_conversions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "product": { + "name": "product", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw'" + }, + "referee_user_id": { + "name": "referee_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "referrer_user_id": { + "name": "referrer_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "source_touch_id": { + "name": "source_touch_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "winning_touch_type": { + "name": "winning_touch_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payment_provider": { + "name": "payment_provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'credits'" + }, + "source_payment_id": { + "name": "source_payment_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "qualified": { + "name": "qualified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "disqualification_reason": { + "name": "disqualification_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "converted_at": { + "name": "converted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_referral_conversions_referee_user_id": { + "name": "IDX_impact_referral_conversions_referee_user_id", + "columns": [ + { + "expression": "referee_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_referral_conversions_referrer_user_id": { + "name": "IDX_impact_referral_conversions_referrer_user_id", + "columns": [ + { + "expression": "referrer_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_referral_conversions_referee_user_id_kilocode_users_id_fk": { + "name": "impact_referral_conversions_referee_user_id_kilocode_users_id_fk", + "tableFrom": "impact_referral_conversions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "referee_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "impact_referral_conversions_referrer_user_id_kilocode_users_id_fk": { + "name": "impact_referral_conversions_referrer_user_id_kilocode_users_id_fk", + "tableFrom": "impact_referral_conversions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "referrer_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "impact_referral_conversions_source_touch_id_impact_attribution_touches_id_fk": { + "name": "impact_referral_conversions_source_touch_id_impact_attribution_touches_id_fk", + "tableFrom": "impact_referral_conversions", + "tableTo": "impact_attribution_touches", + "columnsFrom": [ + "source_touch_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_referral_conversions_product_payment_source": { + "name": "UQ_impact_referral_conversions_product_payment_source", + "nullsNotDistinct": false, + "columns": [ + "product", + "payment_provider", + "source_payment_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_referral_conversions_product_check": { + "name": "impact_referral_conversions_product_check", + "value": "\"impact_referral_conversions\".\"product\" IN ('kiloclaw', 'kilo_pass')" + }, + "impact_referral_conversions_winning_touch_type_check": { + "name": "impact_referral_conversions_winning_touch_type_check", + "value": "\"impact_referral_conversions\".\"winning_touch_type\" IN ('referral', 'affiliate', 'none')" + }, + "impact_referral_conversions_payment_provider_check": { + "name": "impact_referral_conversions_payment_provider_check", + "value": "\"impact_referral_conversions\".\"payment_provider\" IN ('stripe', 'credits', 'app_store', 'google_play')" + } + }, + "isRLSEnabled": false + }, + "public.impact_referral_reward_applications": { + "name": "impact_referral_reward_applications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "product": { + "name": "product", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw'" + }, + "reward_id": { + "name": "reward_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "beneficiary_user_id": { + "name": "beneficiary_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subscription_id": { + "name": "subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "previous_renewal_boundary": { + "name": "previous_renewal_boundary", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "new_renewal_boundary": { + "name": "new_renewal_boundary", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "local_operation_id": { + "name": "local_operation_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_operation_id": { + "name": "stripe_operation_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_idempotency_key": { + "name": "stripe_idempotency_key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "applied_at": { + "name": "applied_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_referral_reward_applications_reward_id": { + "name": "IDX_impact_referral_reward_applications_reward_id", + "columns": [ + { + "expression": "reward_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_referral_reward_applications_beneficiary_user_id": { + "name": "IDX_impact_referral_reward_applications_beneficiary_user_id", + "columns": [ + { + "expression": "beneficiary_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_referral_reward_applications_reward_id_impact_referral_rewards_id_fk": { + "name": "impact_referral_reward_applications_reward_id_impact_referral_rewards_id_fk", + "tableFrom": "impact_referral_reward_applications", + "tableTo": "impact_referral_rewards", + "columnsFrom": [ + "reward_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "impact_referral_reward_applications_beneficiary_user_id_kilocode_users_id_fk": { + "name": "impact_referral_reward_applications_beneficiary_user_id_kilocode_users_id_fk", + "tableFrom": "impact_referral_reward_applications", + "tableTo": "kilocode_users", + "columnsFrom": [ + "beneficiary_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "impact_referral_reward_applications_product_check": { + "name": "impact_referral_reward_applications_product_check", + "value": "\"impact_referral_reward_applications\".\"product\" IN ('kiloclaw', 'kilo_pass')" + } + }, + "isRLSEnabled": false + }, + "public.impact_referral_reward_decisions": { + "name": "impact_referral_reward_decisions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "product": { + "name": "product", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw'" + }, + "conversion_id": { + "name": "conversion_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "beneficiary_user_id": { + "name": "beneficiary_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "beneficiary_role": { + "name": "beneficiary_role", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "outcome": { + "name": "outcome", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "reason": { + "name": "reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "reward_kind": { + "name": "reward_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw_free_month'" + }, + "months_granted": { + "name": "months_granted", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "reward_percent": { + "name": "reward_percent", + "type": "numeric(6, 4)", + "primaryKey": false, + "notNull": false + }, + "source_tier": { + "name": "source_tier", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "reward_amount_usd": { + "name": "reward_amount_usd", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_referral_reward_decisions_beneficiary_user_id": { + "name": "IDX_impact_referral_reward_decisions_beneficiary_user_id", + "columns": [ + { + "expression": "beneficiary_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_referral_reward_decisions_conversion_id_impact_referral_conversions_id_fk": { + "name": "impact_referral_reward_decisions_conversion_id_impact_referral_conversions_id_fk", + "tableFrom": "impact_referral_reward_decisions", + "tableTo": "impact_referral_conversions", + "columnsFrom": [ + "conversion_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "impact_referral_reward_decisions_beneficiary_user_id_kilocode_users_id_fk": { + "name": "impact_referral_reward_decisions_beneficiary_user_id_kilocode_users_id_fk", + "tableFrom": "impact_referral_reward_decisions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "beneficiary_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_referral_reward_decisions_conversion_role": { + "name": "UQ_impact_referral_reward_decisions_conversion_role", + "nullsNotDistinct": false, + "columns": [ + "conversion_id", + "beneficiary_role" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_referral_reward_decisions_product_check": { + "name": "impact_referral_reward_decisions_product_check", + "value": "\"impact_referral_reward_decisions\".\"product\" IN ('kiloclaw', 'kilo_pass')" + }, + "impact_referral_reward_decisions_beneficiary_role_check": { + "name": "impact_referral_reward_decisions_beneficiary_role_check", + "value": "\"impact_referral_reward_decisions\".\"beneficiary_role\" IN ('referrer', 'referee')" + }, + "impact_referral_reward_decisions_outcome_check": { + "name": "impact_referral_reward_decisions_outcome_check", + "value": "\"impact_referral_reward_decisions\".\"outcome\" IN ('granted', 'cap_limited', 'disqualified')" + }, + "impact_referral_reward_decisions_reward_kind_check": { + "name": "impact_referral_reward_decisions_reward_kind_check", + "value": "\"impact_referral_reward_decisions\".\"reward_kind\" IN ('kiloclaw_free_month', 'kilo_pass_bonus')" + }, + "impact_referral_reward_decisions_months_granted_non_negative_check": { + "name": "impact_referral_reward_decisions_months_granted_non_negative_check", + "value": "\"impact_referral_reward_decisions\".\"months_granted\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.impact_referral_rewards": { + "name": "impact_referral_rewards", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "product": { + "name": "product", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw'" + }, + "conversion_id": { + "name": "conversion_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "decision_id": { + "name": "decision_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "beneficiary_user_id": { + "name": "beneficiary_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "beneficiary_role": { + "name": "beneficiary_role", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "reward_kind": { + "name": "reward_kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw_free_month'" + }, + "months_granted": { + "name": "months_granted", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "reward_percent": { + "name": "reward_percent", + "type": "numeric(6, 4)", + "primaryKey": false, + "notNull": false + }, + "source_tier": { + "name": "source_tier", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "reward_amount_usd": { + "name": "reward_amount_usd", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "applies_to_subscription_id": { + "name": "applies_to_subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "applies_to_kilo_pass_subscription_id": { + "name": "applies_to_kilo_pass_subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "consumed_kilo_pass_issuance_id": { + "name": "consumed_kilo_pass_issuance_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "consumed_kilo_pass_issuance_item_id": { + "name": "consumed_kilo_pass_issuance_item_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "earned_at": { + "name": "earned_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "applied_at": { + "name": "applied_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "reversed_at": { + "name": "reversed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "review_reason": { + "name": "review_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_referral_rewards_beneficiary_user_id": { + "name": "IDX_impact_referral_rewards_beneficiary_user_id", + "columns": [ + { + "expression": "beneficiary_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_referral_rewards_status": { + "name": "IDX_impact_referral_rewards_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_referral_rewards_conversion_id_impact_referral_conversions_id_fk": { + "name": "impact_referral_rewards_conversion_id_impact_referral_conversions_id_fk", + "tableFrom": "impact_referral_rewards", + "tableTo": "impact_referral_conversions", + "columnsFrom": [ + "conversion_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "impact_referral_rewards_decision_id_impact_referral_reward_decisions_id_fk": { + "name": "impact_referral_rewards_decision_id_impact_referral_reward_decisions_id_fk", + "tableFrom": "impact_referral_rewards", + "tableTo": "impact_referral_reward_decisions", + "columnsFrom": [ + "decision_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "impact_referral_rewards_beneficiary_user_id_kilocode_users_id_fk": { + "name": "impact_referral_rewards_beneficiary_user_id_kilocode_users_id_fk", + "tableFrom": "impact_referral_rewards", + "tableTo": "kilocode_users", + "columnsFrom": [ + "beneficiary_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "FK_impact_referral_rewards_kilo_pass_subscription": { + "name": "FK_impact_referral_rewards_kilo_pass_subscription", + "tableFrom": "impact_referral_rewards", + "tableTo": "kilo_pass_subscriptions", + "columnsFrom": [ + "applies_to_kilo_pass_subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "FK_impact_referral_rewards_kilo_pass_issuance": { + "name": "FK_impact_referral_rewards_kilo_pass_issuance", + "tableFrom": "impact_referral_rewards", + "tableTo": "kilo_pass_issuances", + "columnsFrom": [ + "consumed_kilo_pass_issuance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "FK_impact_referral_rewards_kilo_pass_issuance_item": { + "name": "FK_impact_referral_rewards_kilo_pass_issuance_item", + "tableFrom": "impact_referral_rewards", + "tableTo": "kilo_pass_issuance_items", + "columnsFrom": [ + "consumed_kilo_pass_issuance_item_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_referral_rewards_conversion_role": { + "name": "UQ_impact_referral_rewards_conversion_role", + "nullsNotDistinct": false, + "columns": [ + "conversion_id", + "beneficiary_role" + ] + }, + "UQ_impact_referral_rewards_decision_id": { + "name": "UQ_impact_referral_rewards_decision_id", + "nullsNotDistinct": false, + "columns": [ + "decision_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_referral_rewards_product_check": { + "name": "impact_referral_rewards_product_check", + "value": "\"impact_referral_rewards\".\"product\" IN ('kiloclaw', 'kilo_pass')" + }, + "impact_referral_rewards_beneficiary_role_check": { + "name": "impact_referral_rewards_beneficiary_role_check", + "value": "\"impact_referral_rewards\".\"beneficiary_role\" IN ('referrer', 'referee')" + }, + "impact_referral_rewards_reward_kind_check": { + "name": "impact_referral_rewards_reward_kind_check", + "value": "\"impact_referral_rewards\".\"reward_kind\" IN ('kiloclaw_free_month', 'kilo_pass_bonus')" + }, + "impact_referral_rewards_status_check": { + "name": "impact_referral_rewards_status_check", + "value": "\"impact_referral_rewards\".\"status\" IN ('pending', 'earned', 'applied', 'reversed', 'expired', 'canceled', 'review_required')" + }, + "impact_referral_rewards_months_granted_non_negative_check": { + "name": "impact_referral_rewards_months_granted_non_negative_check", + "value": "\"impact_referral_rewards\".\"months_granted\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.impact_referrals": { + "name": "impact_referrals", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "product": { + "name": "product", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kiloclaw'" + }, + "referee_user_id": { + "name": "referee_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "referrer_user_id": { + "name": "referrer_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "source_touch_id": { + "name": "source_touch_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "impact_referral_id": { + "name": "impact_referral_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_impact_referrals_referrer_user_id": { + "name": "IDX_impact_referrals_referrer_user_id", + "columns": [ + { + "expression": "referrer_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_impact_referrals_source_touch_id": { + "name": "IDX_impact_referrals_source_touch_id", + "columns": [ + { + "expression": "source_touch_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "impact_referrals_referee_user_id_kilocode_users_id_fk": { + "name": "impact_referrals_referee_user_id_kilocode_users_id_fk", + "tableFrom": "impact_referrals", + "tableTo": "kilocode_users", + "columnsFrom": [ + "referee_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "impact_referrals_referrer_user_id_kilocode_users_id_fk": { + "name": "impact_referrals_referrer_user_id_kilocode_users_id_fk", + "tableFrom": "impact_referrals", + "tableTo": "kilocode_users", + "columnsFrom": [ + "referrer_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "impact_referrals_source_touch_id_impact_attribution_touches_id_fk": { + "name": "impact_referrals_source_touch_id_impact_attribution_touches_id_fk", + "tableFrom": "impact_referrals", + "tableTo": "impact_attribution_touches", + "columnsFrom": [ + "source_touch_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_impact_referrals_product_referee_user_id": { + "name": "UQ_impact_referrals_product_referee_user_id", + "nullsNotDistinct": false, + "columns": [ + "product", + "referee_user_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "impact_referrals_product_check": { + "name": "impact_referrals_product_check", + "value": "\"impact_referrals\".\"product\" IN ('kiloclaw', 'kilo_pass')" + } + }, + "isRLSEnabled": false + }, + "public.ja4_digest": { + "name": "ja4_digest", + "schema": "", + "columns": { + "ja4_digest_id": { + "name": "ja4_digest_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "ja4_digest": { + "name": "ja4_digest", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_ja4_digest": { + "name": "UQ_ja4_digest", + "columns": [ + { + "expression": "ja4_digest", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kilo_pass_audit_log": { + "name": "kilo_pass_audit_log", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "kilo_pass_subscription_id": { + "name": "kilo_pass_subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "result": { + "name": "result", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "idempotency_key": { + "name": "idempotency_key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_event_id": { + "name": "stripe_event_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_invoice_id": { + "name": "stripe_invoice_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_subscription_id": { + "name": "stripe_subscription_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "related_credit_transaction_id": { + "name": "related_credit_transaction_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "related_monthly_issuance_id": { + "name": "related_monthly_issuance_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "payload_json": { + "name": "payload_json", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + } + }, + "indexes": { + "IDX_kilo_pass_audit_log_created_at": { + "name": "IDX_kilo_pass_audit_log_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_kilo_user_id": { + "name": "IDX_kilo_pass_audit_log_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_kilo_pass_subscription_id": { + "name": "IDX_kilo_pass_audit_log_kilo_pass_subscription_id", + "columns": [ + { + "expression": "kilo_pass_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_action": { + "name": "IDX_kilo_pass_audit_log_action", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_result": { + "name": "IDX_kilo_pass_audit_log_result", + "columns": [ + { + "expression": "result", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_idempotency_key": { + "name": "IDX_kilo_pass_audit_log_idempotency_key", + "columns": [ + { + "expression": "idempotency_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_stripe_event_id": { + "name": "IDX_kilo_pass_audit_log_stripe_event_id", + "columns": [ + { + "expression": "stripe_event_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_stripe_invoice_id": { + "name": "IDX_kilo_pass_audit_log_stripe_invoice_id", + "columns": [ + { + "expression": "stripe_invoice_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_stripe_subscription_id": { + "name": "IDX_kilo_pass_audit_log_stripe_subscription_id", + "columns": [ + { + "expression": "stripe_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_related_credit_transaction_id": { + "name": "IDX_kilo_pass_audit_log_related_credit_transaction_id", + "columns": [ + { + "expression": "related_credit_transaction_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_audit_log_related_monthly_issuance_id": { + "name": "IDX_kilo_pass_audit_log_related_monthly_issuance_id", + "columns": [ + { + "expression": "related_monthly_issuance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kilo_pass_audit_log_kilo_user_id_kilocode_users_id_fk": { + "name": "kilo_pass_audit_log_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "kilo_pass_audit_log", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "kilo_pass_audit_log_kilo_pass_subscription_id_kilo_pass_subscriptions_id_fk": { + "name": "kilo_pass_audit_log_kilo_pass_subscription_id_kilo_pass_subscriptions_id_fk", + "tableFrom": "kilo_pass_audit_log", + "tableTo": "kilo_pass_subscriptions", + "columnsFrom": [ + "kilo_pass_subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "kilo_pass_audit_log_related_credit_transaction_id_credit_transactions_id_fk": { + "name": "kilo_pass_audit_log_related_credit_transaction_id_credit_transactions_id_fk", + "tableFrom": "kilo_pass_audit_log", + "tableTo": "credit_transactions", + "columnsFrom": [ + "related_credit_transaction_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "kilo_pass_audit_log_related_monthly_issuance_id_kilo_pass_issuances_id_fk": { + "name": "kilo_pass_audit_log_related_monthly_issuance_id_kilo_pass_issuances_id_fk", + "tableFrom": "kilo_pass_audit_log", + "tableTo": "kilo_pass_issuances", + "columnsFrom": [ + "related_monthly_issuance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kilo_pass_audit_log_action_check": { + "name": "kilo_pass_audit_log_action_check", + "value": "\"kilo_pass_audit_log\".\"action\" IN ('stripe_webhook_received', 'kilo_pass_invoice_paid_handled', 'store_purchase_completed', 'store_notification_received', 'store_subscription_renewed', 'store_subscription_canceled', 'store_subscription_expired', 'store_subscription_refunded', 'base_credits_issued', 'bonus_credits_issued', 'bonus_credits_skipped_idempotent', 'first_month_50pct_promo_issued', 'yearly_monthly_base_cron_started', 'yearly_monthly_base_cron_completed', 'issue_yearly_remaining_credits', 'duplicate_card_subscription_canceled', 'yearly_monthly_bonus_cron_started', 'yearly_monthly_bonus_cron_completed')" + }, + "kilo_pass_audit_log_result_check": { + "name": "kilo_pass_audit_log_result_check", + "value": "\"kilo_pass_audit_log\".\"result\" IN ('success', 'skipped_idempotent', 'failed')" + } + }, + "isRLSEnabled": false + }, + "public.kilo_pass_issuance_items": { + "name": "kilo_pass_issuance_items", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_pass_issuance_id": { + "name": "kilo_pass_issuance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "credit_transaction_id": { + "name": "credit_transaction_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "amount_usd": { + "name": "amount_usd", + "type": "numeric(12, 2)", + "primaryKey": false, + "notNull": true + }, + "bonus_percent_applied": { + "name": "bonus_percent_applied", + "type": "numeric(6, 4)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_kilo_pass_issuance_items_issuance_id": { + "name": "IDX_kilo_pass_issuance_items_issuance_id", + "columns": [ + { + "expression": "kilo_pass_issuance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_issuance_items_credit_transaction_id": { + "name": "IDX_kilo_pass_issuance_items_credit_transaction_id", + "columns": [ + { + "expression": "credit_transaction_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kilo_pass_issuance_items_kilo_pass_issuance_id_kilo_pass_issuances_id_fk": { + "name": "kilo_pass_issuance_items_kilo_pass_issuance_id_kilo_pass_issuances_id_fk", + "tableFrom": "kilo_pass_issuance_items", + "tableTo": "kilo_pass_issuances", + "columnsFrom": [ + "kilo_pass_issuance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "kilo_pass_issuance_items_credit_transaction_id_credit_transactions_id_fk": { + "name": "kilo_pass_issuance_items_credit_transaction_id_credit_transactions_id_fk", + "tableFrom": "kilo_pass_issuance_items", + "tableTo": "credit_transactions", + "columnsFrom": [ + "credit_transaction_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "restrict", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "kilo_pass_issuance_items_credit_transaction_id_unique": { + "name": "kilo_pass_issuance_items_credit_transaction_id_unique", + "nullsNotDistinct": false, + "columns": [ + "credit_transaction_id" + ] + }, + "UQ_kilo_pass_issuance_items_issuance_kind": { + "name": "UQ_kilo_pass_issuance_items_issuance_kind", + "nullsNotDistinct": false, + "columns": [ + "kilo_pass_issuance_id", + "kind" + ] + } + }, + "policies": {}, + "checkConstraints": { + "kilo_pass_issuance_items_bonus_percent_applied_range_check": { + "name": "kilo_pass_issuance_items_bonus_percent_applied_range_check", + "value": "\"kilo_pass_issuance_items\".\"bonus_percent_applied\" IS NULL OR (\"kilo_pass_issuance_items\".\"bonus_percent_applied\" >= 0 AND \"kilo_pass_issuance_items\".\"bonus_percent_applied\" <= 1)" + }, + "kilo_pass_issuance_items_amount_usd_non_negative_check": { + "name": "kilo_pass_issuance_items_amount_usd_non_negative_check", + "value": "\"kilo_pass_issuance_items\".\"amount_usd\" >= 0" + }, + "kilo_pass_issuance_items_kind_check": { + "name": "kilo_pass_issuance_items_kind_check", + "value": "\"kilo_pass_issuance_items\".\"kind\" IN ('base', 'bonus', 'promo_first_month_50pct', 'referral_bonus')" + } + }, + "isRLSEnabled": false + }, + "public.kilo_pass_issuances": { + "name": "kilo_pass_issuances", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_pass_subscription_id": { + "name": "kilo_pass_subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "issue_month": { + "name": "issue_month", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_invoice_id": { + "name": "stripe_invoice_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "initial_welcome_promo_eligibility_reason": { + "name": "initial_welcome_promo_eligibility_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_kilo_pass_issuances_stripe_invoice_id": { + "name": "UQ_kilo_pass_issuances_stripe_invoice_id", + "columns": [ + { + "expression": "stripe_invoice_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kilo_pass_issuances\".\"stripe_invoice_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_issuances_subscription_id": { + "name": "IDX_kilo_pass_issuances_subscription_id", + "columns": [ + { + "expression": "kilo_pass_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_issuances_issue_month": { + "name": "IDX_kilo_pass_issuances_issue_month", + "columns": [ + { + "expression": "issue_month", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kilo_pass_issuances_kilo_pass_subscription_id_kilo_pass_subscriptions_id_fk": { + "name": "kilo_pass_issuances_kilo_pass_subscription_id_kilo_pass_subscriptions_id_fk", + "tableFrom": "kilo_pass_issuances", + "tableTo": "kilo_pass_subscriptions", + "columnsFrom": [ + "kilo_pass_subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_kilo_pass_issuances_subscription_issue_month": { + "name": "UQ_kilo_pass_issuances_subscription_issue_month", + "nullsNotDistinct": false, + "columns": [ + "kilo_pass_subscription_id", + "issue_month" + ] + } + }, + "policies": {}, + "checkConstraints": { + "kilo_pass_issuances_issue_month_day_one_check": { + "name": "kilo_pass_issuances_issue_month_day_one_check", + "value": "EXTRACT(DAY FROM \"kilo_pass_issuances\".\"issue_month\") = 1" + }, + "kilo_pass_issuances_source_check": { + "name": "kilo_pass_issuances_source_check", + "value": "\"kilo_pass_issuances\".\"source\" IN ('stripe_invoice', 'app_store_transaction', 'google_play_transaction', 'cron')" + }, + "kilo_pass_issuances_initial_welcome_promo_reason_check": { + "name": "kilo_pass_issuances_initial_welcome_promo_reason_check", + "value": "\"kilo_pass_issuances\".\"initial_welcome_promo_eligibility_reason\" IN ('first_payment_fingerprint_claim', 'fingerprint_previously_claimed', 'missing_fingerprint', 'no_supported_fingerprint', 'no_positive_settlement', 'settlement_unresolved')" + } + }, + "isRLSEnabled": false + }, + "public.kilo_pass_pause_events": { + "name": "kilo_pass_pause_events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_pass_subscription_id": { + "name": "kilo_pass_subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "paused_at": { + "name": "paused_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "resumes_at": { + "name": "resumes_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "resumed_at": { + "name": "resumed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_kilo_pass_pause_events_subscription_id": { + "name": "IDX_kilo_pass_pause_events_subscription_id", + "columns": [ + { + "expression": "kilo_pass_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kilo_pass_pause_events_one_open_per_sub": { + "name": "UQ_kilo_pass_pause_events_one_open_per_sub", + "columns": [ + { + "expression": "kilo_pass_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kilo_pass_pause_events\".\"resumed_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kilo_pass_pause_events_kilo_pass_subscription_id_kilo_pass_subscriptions_id_fk": { + "name": "kilo_pass_pause_events_kilo_pass_subscription_id_kilo_pass_subscriptions_id_fk", + "tableFrom": "kilo_pass_pause_events", + "tableTo": "kilo_pass_subscriptions", + "columnsFrom": [ + "kilo_pass_subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kilo_pass_pause_events_resumed_at_after_paused_at_check": { + "name": "kilo_pass_pause_events_resumed_at_after_paused_at_check", + "value": "\"kilo_pass_pause_events\".\"resumed_at\" IS NULL OR \"kilo_pass_pause_events\".\"resumed_at\" >= \"kilo_pass_pause_events\".\"paused_at\"" + } + }, + "isRLSEnabled": false + }, + "public.kilo_pass_scheduled_changes": { + "name": "kilo_pass_scheduled_changes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_subscription_id": { + "name": "stripe_subscription_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "from_tier": { + "name": "from_tier", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "from_cadence": { + "name": "from_cadence", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "to_tier": { + "name": "to_tier", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "to_cadence": { + "name": "to_cadence", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_schedule_id": { + "name": "stripe_schedule_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "effective_at": { + "name": "effective_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_kilo_pass_scheduled_changes_kilo_user_id": { + "name": "IDX_kilo_pass_scheduled_changes_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_scheduled_changes_status": { + "name": "IDX_kilo_pass_scheduled_changes_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_scheduled_changes_stripe_subscription_id": { + "name": "IDX_kilo_pass_scheduled_changes_stripe_subscription_id", + "columns": [ + { + "expression": "stripe_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kilo_pass_scheduled_changes_active_stripe_subscription_id": { + "name": "UQ_kilo_pass_scheduled_changes_active_stripe_subscription_id", + "columns": [ + { + "expression": "stripe_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kilo_pass_scheduled_changes\".\"deleted_at\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_scheduled_changes_effective_at": { + "name": "IDX_kilo_pass_scheduled_changes_effective_at", + "columns": [ + { + "expression": "effective_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_scheduled_changes_deleted_at": { + "name": "IDX_kilo_pass_scheduled_changes_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kilo_pass_scheduled_changes_kilo_user_id_kilocode_users_id_fk": { + "name": "kilo_pass_scheduled_changes_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "kilo_pass_scheduled_changes", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "kilo_pass_scheduled_changes_stripe_subscription_id_kilo_pass_subscriptions_stripe_subscription_id_fk": { + "name": "kilo_pass_scheduled_changes_stripe_subscription_id_kilo_pass_subscriptions_stripe_subscription_id_fk", + "tableFrom": "kilo_pass_scheduled_changes", + "tableTo": "kilo_pass_subscriptions", + "columnsFrom": [ + "stripe_subscription_id" + ], + "columnsTo": [ + "stripe_subscription_id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kilo_pass_scheduled_changes_from_tier_check": { + "name": "kilo_pass_scheduled_changes_from_tier_check", + "value": "\"kilo_pass_scheduled_changes\".\"from_tier\" IN ('tier_19', 'tier_49', 'tier_199')" + }, + "kilo_pass_scheduled_changes_from_cadence_check": { + "name": "kilo_pass_scheduled_changes_from_cadence_check", + "value": "\"kilo_pass_scheduled_changes\".\"from_cadence\" IN ('monthly', 'yearly')" + }, + "kilo_pass_scheduled_changes_to_tier_check": { + "name": "kilo_pass_scheduled_changes_to_tier_check", + "value": "\"kilo_pass_scheduled_changes\".\"to_tier\" IN ('tier_19', 'tier_49', 'tier_199')" + }, + "kilo_pass_scheduled_changes_to_cadence_check": { + "name": "kilo_pass_scheduled_changes_to_cadence_check", + "value": "\"kilo_pass_scheduled_changes\".\"to_cadence\" IN ('monthly', 'yearly')" + }, + "kilo_pass_scheduled_changes_status_check": { + "name": "kilo_pass_scheduled_changes_status_check", + "value": "\"kilo_pass_scheduled_changes\".\"status\" IN ('not_started', 'active', 'completed', 'released', 'canceled')" + } + }, + "isRLSEnabled": false + }, + "public.kilo_pass_store_events": { + "name": "kilo_pass_store_events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "payment_provider": { + "name": "payment_provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_id": { + "name": "event_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_subscription_id": { + "name": "provider_subscription_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "provider_transaction_id": { + "name": "provider_transaction_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "app_account_token": { + "name": "app_account_token", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "environment": { + "name": "environment", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payload_json": { + "name": "payload_json", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "processing_started_at": { + "name": "processing_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "processed_at": { + "name": "processed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_kilo_pass_store_events_provider_event": { + "name": "UQ_kilo_pass_store_events_provider_event", + "columns": [ + { + "expression": "payment_provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "event_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_store_events_provider_subscription": { + "name": "IDX_kilo_pass_store_events_provider_subscription", + "columns": [ + { + "expression": "payment_provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "provider_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_store_events_app_account_token": { + "name": "IDX_kilo_pass_store_events_app_account_token", + "columns": [ + { + "expression": "app_account_token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kilo_pass_store_events_payment_provider_check": { + "name": "kilo_pass_store_events_payment_provider_check", + "value": "\"kilo_pass_store_events\".\"payment_provider\" IN ('stripe', 'app_store', 'google_play')" + } + }, + "isRLSEnabled": false + }, + "public.kilo_pass_store_purchases": { + "name": "kilo_pass_store_purchases", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_pass_subscription_id": { + "name": "kilo_pass_subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payment_provider": { + "name": "payment_provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "product_id": { + "name": "product_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_subscription_id": { + "name": "provider_subscription_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_transaction_id": { + "name": "provider_transaction_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_original_transaction_id": { + "name": "provider_original_transaction_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "app_account_token": { + "name": "app_account_token", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "purchase_token": { + "name": "purchase_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "environment": { + "name": "environment", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "purchased_at": { + "name": "purchased_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "raw_payload_json": { + "name": "raw_payload_json", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_kilo_pass_store_purchases_provider_transaction": { + "name": "UQ_kilo_pass_store_purchases_provider_transaction", + "columns": [ + { + "expression": "payment_provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "provider_transaction_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_store_purchases_subscription_id": { + "name": "IDX_kilo_pass_store_purchases_subscription_id", + "columns": [ + { + "expression": "kilo_pass_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_store_purchases_user_id": { + "name": "IDX_kilo_pass_store_purchases_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_store_purchases_app_account_token": { + "name": "IDX_kilo_pass_store_purchases_app_account_token", + "columns": [ + { + "expression": "app_account_token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_store_purchases_latest_subscription_purchase": { + "name": "IDX_kilo_pass_store_purchases_latest_subscription_purchase", + "columns": [ + { + "expression": "payment_provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "provider_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "purchased_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kilo_pass_store_purchases_kilo_pass_subscription_id_kilo_pass_subscriptions_id_fk": { + "name": "kilo_pass_store_purchases_kilo_pass_subscription_id_kilo_pass_subscriptions_id_fk", + "tableFrom": "kilo_pass_store_purchases", + "tableTo": "kilo_pass_subscriptions", + "columnsFrom": [ + "kilo_pass_subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "kilo_pass_store_purchases_kilo_user_id_kilocode_users_id_fk": { + "name": "kilo_pass_store_purchases_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "kilo_pass_store_purchases", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "FK_kilo_pass_store_purchases_subscription_owner_provider": { + "name": "FK_kilo_pass_store_purchases_subscription_owner_provider", + "tableFrom": "kilo_pass_store_purchases", + "tableTo": "kilo_pass_subscriptions", + "columnsFrom": [ + "kilo_pass_subscription_id", + "kilo_user_id", + "payment_provider", + "provider_subscription_id" + ], + "columnsTo": [ + "id", + "kilo_user_id", + "payment_provider", + "provider_subscription_id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kilo_pass_store_purchases_store_provider_check": { + "name": "kilo_pass_store_purchases_store_provider_check", + "value": "\"kilo_pass_store_purchases\".\"payment_provider\" IN ('app_store', 'google_play')" + }, + "kilo_pass_store_purchases_payment_provider_check": { + "name": "kilo_pass_store_purchases_payment_provider_check", + "value": "\"kilo_pass_store_purchases\".\"payment_provider\" IN ('stripe', 'app_store', 'google_play')" + } + }, + "isRLSEnabled": false + }, + "public.kilo_pass_subscriptions": { + "name": "kilo_pass_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payment_provider": { + "name": "payment_provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'stripe'" + }, + "provider_subscription_id": { + "name": "provider_subscription_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_subscription_id": { + "name": "stripe_subscription_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "tier": { + "name": "tier", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "cadence": { + "name": "cadence", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_streak_months": { + "name": "current_streak_months", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "next_yearly_issue_at": { + "name": "next_yearly_issue_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_kilo_pass_subscriptions_kilo_user_id": { + "name": "IDX_kilo_pass_subscriptions_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_subscriptions_payment_provider": { + "name": "IDX_kilo_pass_subscriptions_payment_provider", + "columns": [ + { + "expression": "payment_provider", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_subscriptions_status": { + "name": "IDX_kilo_pass_subscriptions_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilo_pass_subscriptions_cadence": { + "name": "IDX_kilo_pass_subscriptions_cadence", + "columns": [ + { + "expression": "cadence", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kilo_pass_subscriptions_provider_subscription": { + "name": "UQ_kilo_pass_subscriptions_provider_subscription", + "columns": [ + { + "expression": "payment_provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "provider_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kilo_pass_subscriptions\".\"provider_subscription_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kilo_pass_subscriptions_store_purchase_reference": { + "name": "UQ_kilo_pass_subscriptions_store_purchase_reference", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "payment_provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "provider_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kilo_pass_subscriptions_kilo_user_id_kilocode_users_id_fk": { + "name": "kilo_pass_subscriptions_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "kilo_pass_subscriptions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "kilo_pass_subscriptions_stripe_subscription_id_unique": { + "name": "kilo_pass_subscriptions_stripe_subscription_id_unique", + "nullsNotDistinct": false, + "columns": [ + "stripe_subscription_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "kilo_pass_subscriptions_current_streak_months_non_negative_check": { + "name": "kilo_pass_subscriptions_current_streak_months_non_negative_check", + "value": "\"kilo_pass_subscriptions\".\"current_streak_months\" >= 0" + }, + "kilo_pass_subscriptions_provider_ids_check": { + "name": "kilo_pass_subscriptions_provider_ids_check", + "value": "(\n \"kilo_pass_subscriptions\".\"payment_provider\" = 'stripe'\n AND \"kilo_pass_subscriptions\".\"provider_subscription_id\" IS NOT NULL\n AND \"kilo_pass_subscriptions\".\"stripe_subscription_id\" IS NOT NULL\n AND \"kilo_pass_subscriptions\".\"provider_subscription_id\" = \"kilo_pass_subscriptions\".\"stripe_subscription_id\"\n ) OR (\n \"kilo_pass_subscriptions\".\"payment_provider\" IN ('app_store', 'google_play')\n AND \"kilo_pass_subscriptions\".\"provider_subscription_id\" IS NOT NULL\n AND \"kilo_pass_subscriptions\".\"stripe_subscription_id\" IS NULL\n )" + }, + "kilo_pass_subscriptions_payment_provider_check": { + "name": "kilo_pass_subscriptions_payment_provider_check", + "value": "\"kilo_pass_subscriptions\".\"payment_provider\" IN ('stripe', 'app_store', 'google_play')" + }, + "kilo_pass_subscriptions_tier_check": { + "name": "kilo_pass_subscriptions_tier_check", + "value": "\"kilo_pass_subscriptions\".\"tier\" IN ('tier_19', 'tier_49', 'tier_199')" + }, + "kilo_pass_subscriptions_cadence_check": { + "name": "kilo_pass_subscriptions_cadence_check", + "value": "\"kilo_pass_subscriptions\".\"cadence\" IN ('monthly', 'yearly')" + } + }, + "isRLSEnabled": false + }, + "public.kilo_pass_welcome_promo_payment_fingerprint_claims": { + "name": "kilo_pass_welcome_promo_payment_fingerprint_claims", + "schema": "", + "columns": { + "stripe_payment_method_type": { + "name": "stripe_payment_method_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_fingerprint": { + "name": "stripe_fingerprint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_stripe_invoice_id": { + "name": "source_stripe_invoice_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "claimed_at": { + "name": "claimed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "kilo_pass_welcome_promo_payment_fingerprint_claims_stripe_payment_method_type_stripe_fingerprint_pk": { + "name": "kilo_pass_welcome_promo_payment_fingerprint_claims_stripe_payment_method_type_stripe_fingerprint_pk", + "columns": [ + "stripe_payment_method_type", + "stripe_fingerprint" + ] + } + }, + "uniqueConstraints": { + "UQ_kilo_pass_welcome_promo_payment_fingerprint_claims_source_invoice_id": { + "name": "UQ_kilo_pass_welcome_promo_payment_fingerprint_claims_source_invoice_id", + "nullsNotDistinct": false, + "columns": [ + "source_stripe_invoice_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "kilo_pass_welcome_promo_payment_fingerprint_claims_type_check": { + "name": "kilo_pass_welcome_promo_payment_fingerprint_claims_type_check", + "value": "\"kilo_pass_welcome_promo_payment_fingerprint_claims\".\"stripe_payment_method_type\" IN ('card', 'sepa_debit', 'us_bank_account', 'bacs_debit', 'au_becs_debit')" + } + }, + "isRLSEnabled": false + }, + "public.kiloclaw_access_codes": { + "name": "kiloclaw_access_codes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'active'" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "redeemed_at": { + "name": "redeemed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_kiloclaw_access_codes_code": { + "name": "UQ_kiloclaw_access_codes_code", + "columns": [ + { + "expression": "code", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_access_codes_user_status": { + "name": "IDX_kiloclaw_access_codes_user_status", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kiloclaw_access_codes_one_active_per_user": { + "name": "UQ_kiloclaw_access_codes_one_active_per_user", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "status = 'active'", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_access_codes_kilo_user_id_kilocode_users_id_fk": { + "name": "kiloclaw_access_codes_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "kiloclaw_access_codes", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_admin_audit_logs": { + "name": "kiloclaw_admin_audit_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "actor_id": { + "name": "actor_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_email": { + "name": "actor_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_name": { + "name": "actor_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_user_id": { + "name": "target_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_kiloclaw_admin_audit_logs_target_user_id": { + "name": "IDX_kiloclaw_admin_audit_logs_target_user_id", + "columns": [ + { + "expression": "target_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_admin_audit_logs_action": { + "name": "IDX_kiloclaw_admin_audit_logs_action", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_admin_audit_logs_created_at": { + "name": "IDX_kiloclaw_admin_audit_logs_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_agentcard_oauth_connections": { + "name": "kiloclaw_agentcard_oauth_connections", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'agentcard'" + }, + "account_email": { + "name": "account_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "oauth_client_id": { + "name": "oauth_client_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token_encrypted": { + "name": "access_token_encrypted", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token_encrypted": { + "name": "refresh_token_encrypted", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "token_expires_at": { + "name": "token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "scopes": { + "name": "scopes", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'active'" + }, + "last_error": { + "name": "last_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "last_error_at": { + "name": "last_error_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "connected_at": { + "name": "connected_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_kiloclaw_agentcard_oauth_connections_instance": { + "name": "UQ_kiloclaw_agentcard_oauth_connections_instance", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_agentcard_oauth_connections_status": { + "name": "IDX_kiloclaw_agentcard_oauth_connections_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_agentcard_oauth_connections_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_agentcard_oauth_connections_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_agentcard_oauth_connections", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kiloclaw_agentcard_oauth_connections_status_check": { + "name": "kiloclaw_agentcard_oauth_connections_status_check", + "value": "\"kiloclaw_agentcard_oauth_connections\".\"status\" IN ('active', 'action_required', 'disconnected')" + } + }, + "isRLSEnabled": false + }, + "public.kiloclaw_cli_runs": { + "name": "kiloclaw_cli_runs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "initiated_by_admin_id": { + "name": "initiated_by_admin_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "prompt": { + "name": "prompt", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'running'" + }, + "exit_code": { + "name": "exit_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "output": { + "name": "output", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "IDX_kiloclaw_cli_runs_user_id": { + "name": "IDX_kiloclaw_cli_runs_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_cli_runs_started_at": { + "name": "IDX_kiloclaw_cli_runs_started_at", + "columns": [ + { + "expression": "started_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_cli_runs_instance_id": { + "name": "IDX_kiloclaw_cli_runs_instance_id", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_cli_runs_user_id_kilocode_users_id_fk": { + "name": "kiloclaw_cli_runs_user_id_kilocode_users_id_fk", + "tableFrom": "kiloclaw_cli_runs", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "kiloclaw_cli_runs_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_cli_runs_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_cli_runs", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "kiloclaw_cli_runs_initiated_by_admin_id_kilocode_users_id_fk": { + "name": "kiloclaw_cli_runs_initiated_by_admin_id_kilocode_users_id_fk", + "tableFrom": "kiloclaw_cli_runs", + "tableTo": "kilocode_users", + "columnsFrom": [ + "initiated_by_admin_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_earlybird_purchases": { + "name": "kiloclaw_earlybird_purchases", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_charge_id": { + "name": "stripe_charge_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "manual_payment_id": { + "name": "manual_payment_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "amount_cents": { + "name": "amount_cents", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "kiloclaw_earlybird_purchases_user_id_kilocode_users_id_fk": { + "name": "kiloclaw_earlybird_purchases_user_id_kilocode_users_id_fk", + "tableFrom": "kiloclaw_earlybird_purchases", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "kiloclaw_earlybird_purchases_user_id_unique": { + "name": "kiloclaw_earlybird_purchases_user_id_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id" + ] + }, + "kiloclaw_earlybird_purchases_stripe_charge_id_unique": { + "name": "kiloclaw_earlybird_purchases_stripe_charge_id_unique", + "nullsNotDistinct": false, + "columns": [ + "stripe_charge_id" + ] + }, + "kiloclaw_earlybird_purchases_manual_payment_id_unique": { + "name": "kiloclaw_earlybird_purchases_manual_payment_id_unique", + "nullsNotDistinct": false, + "columns": [ + "manual_payment_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_email_log": { + "name": "kiloclaw_email_log", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "email_type": { + "name": "email_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "period_start": { + "name": "period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "'epoch'" + }, + "sent_at": { + "name": "sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_kiloclaw_email_log_user_type_global": { + "name": "UQ_kiloclaw_email_log_user_type_global", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "email_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kiloclaw_email_log\".\"instance_id\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kiloclaw_email_log_user_instance_type_period": { + "name": "UQ_kiloclaw_email_log_user_instance_type_period", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "email_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "period_start", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kiloclaw_email_log\".\"instance_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_email_log_type_sent_instance": { + "name": "IDX_kiloclaw_email_log_type_sent_instance", + "columns": [ + { + "expression": "email_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "sent_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_email_log\".\"instance_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_email_log_user_id_kilocode_users_id_fk": { + "name": "kiloclaw_email_log_user_id_kilocode_users_id_fk", + "tableFrom": "kiloclaw_email_log", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "kiloclaw_email_log_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_email_log_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_email_log", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_google_oauth_connections": { + "name": "kiloclaw_google_oauth_connections", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'google'" + }, + "account_email": { + "name": "account_email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "account_subject": { + "name": "account_subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_client_id": { + "name": "oauth_client_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_client_secret_encrypted": { + "name": "oauth_client_secret_encrypted", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "credential_profile": { + "name": "credential_profile", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'kilo_owned'" + }, + "refresh_token_encrypted": { + "name": "refresh_token_encrypted", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "scopes": { + "name": "scopes", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "grants_by_source": { + "name": "grants_by_source", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "capabilities": { + "name": "capabilities", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'active'" + }, + "last_error": { + "name": "last_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "last_error_at": { + "name": "last_error_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "connected_at": { + "name": "connected_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_kiloclaw_google_oauth_connections_instance": { + "name": "UQ_kiloclaw_google_oauth_connections_instance", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_google_oauth_connections_status": { + "name": "IDX_kiloclaw_google_oauth_connections_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_google_oauth_connections_provider": { + "name": "IDX_kiloclaw_google_oauth_connections_provider", + "columns": [ + { + "expression": "provider", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_google_oauth_connections_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_google_oauth_connections_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_google_oauth_connections", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kiloclaw_google_oauth_connections_status_check": { + "name": "kiloclaw_google_oauth_connections_status_check", + "value": "\"kiloclaw_google_oauth_connections\".\"status\" IN ('active', 'action_required', 'disconnected')" + }, + "kiloclaw_google_oauth_connections_credential_profile_check": { + "name": "kiloclaw_google_oauth_connections_credential_profile_check", + "value": "\"kiloclaw_google_oauth_connections\".\"credential_profile\" IN ('legacy', 'kilo_owned')" + } + }, + "isRLSEnabled": false + }, + "public.kiloclaw_image_catalog": { + "name": "kiloclaw_image_catalog", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "openclaw_version": { + "name": "openclaw_version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "variant": { + "name": "variant", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'default'" + }, + "image_tag": { + "name": "image_tag", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "image_digest": { + "name": "image_digest", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'available'" + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "updated_by": { + "name": "updated_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "published_at": { + "name": "published_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "synced_at": { + "name": "synced_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "rollout_percent": { + "name": "rollout_percent", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "is_latest": { + "name": "is_latest", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "IDX_kiloclaw_image_catalog_status": { + "name": "IDX_kiloclaw_image_catalog_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_image_catalog_variant": { + "name": "IDX_kiloclaw_image_catalog_variant", + "columns": [ + { + "expression": "variant", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kiloclaw_image_catalog_one_latest_per_variant": { + "name": "UQ_kiloclaw_image_catalog_one_latest_per_variant", + "columns": [ + { + "expression": "variant", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kiloclaw_image_catalog\".\"is_latest\" = true", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kiloclaw_image_catalog_one_candidate_per_variant": { + "name": "UQ_kiloclaw_image_catalog_one_candidate_per_variant", + "columns": [ + { + "expression": "variant", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kiloclaw_image_catalog\".\"is_latest\" = false AND \"kiloclaw_image_catalog\".\"rollout_percent\" > 0 AND \"kiloclaw_image_catalog\".\"status\" = 'available'", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "kiloclaw_image_catalog_image_tag_unique": { + "name": "kiloclaw_image_catalog_image_tag_unique", + "nullsNotDistinct": false, + "columns": [ + "image_tag" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_inbound_email_aliases": { + "name": "kiloclaw_inbound_email_aliases", + "schema": "", + "columns": { + "alias": { + "name": "alias", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "retired_at": { + "name": "retired_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "IDX_kiloclaw_inbound_email_aliases_instance_id": { + "name": "IDX_kiloclaw_inbound_email_aliases_instance_id", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kiloclaw_inbound_email_aliases_active_instance": { + "name": "UQ_kiloclaw_inbound_email_aliases_active_instance", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kiloclaw_inbound_email_aliases\".\"retired_at\" is null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_inbound_email_aliases_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_inbound_email_aliases_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_inbound_email_aliases", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_inbound_email_reserved_aliases": { + "name": "kiloclaw_inbound_email_reserved_aliases", + "schema": "", + "columns": { + "alias": { + "name": "alias", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_instances": { + "name": "kiloclaw_instances", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "sandbox_id": { + "name": "sandbox_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'fly'" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "inbound_email_enabled": { + "name": "inbound_email_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "inactive_trial_stopped_at": { + "name": "inactive_trial_stopped_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "destroyed_at": { + "name": "destroyed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "tracked_image_tag": { + "name": "tracked_image_tag", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "instance_type": { + "name": "instance_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admin_size_override": { + "name": "admin_size_override", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "UQ_kiloclaw_instances_active": { + "name": "UQ_kiloclaw_instances_active", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "sandbox_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kiloclaw_instances\".\"destroyed_at\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_instances_active_personal_by_user": { + "name": "IDX_kiloclaw_instances_active_personal_by_user", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_instances\".\"organization_id\" IS NULL AND \"kiloclaw_instances\".\"destroyed_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_instances_active_org_by_user_org": { + "name": "IDX_kiloclaw_instances_active_org_by_user_org", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_instances\".\"organization_id\" IS NOT NULL AND \"kiloclaw_instances\".\"destroyed_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_instances_active_org_by_org_created": { + "name": "IDX_kiloclaw_instances_active_org_by_org_created", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_instances\".\"organization_id\" IS NOT NULL AND \"kiloclaw_instances\".\"destroyed_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_instances_user_id_created_at": { + "name": "IDX_kiloclaw_instances_user_id_created_at", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_instances_tracked_image_tag": { + "name": "IDX_kiloclaw_instances_tracked_image_tag", + "columns": [ + { + "expression": "tracked_image_tag", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_instances\".\"destroyed_at\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_instances_instance_type": { + "name": "IDX_kiloclaw_instances_instance_type", + "columns": [ + { + "expression": "instance_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_instances\".\"destroyed_at\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_instances_admin_size_override": { + "name": "IDX_kiloclaw_instances_admin_size_override", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_instances\".\"admin_size_override\" IS NOT NULL AND \"kiloclaw_instances\".\"destroyed_at\" IS NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_instances_user_id_kilocode_users_id_fk": { + "name": "kiloclaw_instances_user_id_kilocode_users_id_fk", + "tableFrom": "kiloclaw_instances", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "kiloclaw_instances_organization_id_organizations_id_fk": { + "name": "kiloclaw_instances_organization_id_organizations_id_fk", + "tableFrom": "kiloclaw_instances", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "CHK_kiloclaw_instances_instance_type": { + "name": "CHK_kiloclaw_instances_instance_type", + "value": "\"kiloclaw_instances\".\"instance_type\" IS NULL OR \"kiloclaw_instances\".\"instance_type\" IN ('perf-1-3', 'perf-4-8', 'perf-4-16', 'shared-2-3', 'shared-2-4', 'custom')" + } + }, + "isRLSEnabled": false + }, + "public.kiloclaw_morning_briefing_configs": { + "name": "kiloclaw_morning_briefing_configs", + "schema": "", + "columns": { + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": true, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "cron": { + "name": "cron", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'0 7 * * *'" + }, + "timezone": { + "name": "timezone", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'UTC'" + }, + "interest_topics": { + "name": "interest_topics", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_kiloclaw_morning_briefing_configs_enabled": { + "name": "IDX_kiloclaw_morning_briefing_configs_enabled", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_morning_briefing_configs\".\"enabled\" = true", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_morning_briefing_configs_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_morning_briefing_configs_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_morning_briefing_configs", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_scheduled_action_notifications": { + "name": "kiloclaw_scheduled_action_notifications", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "channel": { + "name": "channel", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'notice'" + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "claimed_at": { + "name": "claimed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "sent_at": { + "name": "sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "UQ_kiloclaw_scheduled_action_notifications_target_kind_channel": { + "name": "UQ_kiloclaw_scheduled_action_notifications_target_kind_channel", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "kind", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "channel", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_scheduled_action_notifications_pending": { + "name": "IDX_kiloclaw_scheduled_action_notifications_pending", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_scheduled_action_notifications\".\"status\" = 'pending'", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_scheduled_action_notifications_target_id_kiloclaw_scheduled_action_targets_id_fk": { + "name": "kiloclaw_scheduled_action_notifications_target_id_kiloclaw_scheduled_action_targets_id_fk", + "tableFrom": "kiloclaw_scheduled_action_notifications", + "tableTo": "kiloclaw_scheduled_action_targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_scheduled_action_stages": { + "name": "kiloclaw_scheduled_action_stages", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "scheduled_action_id": { + "name": "scheduled_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "stage_index": { + "name": "stage_index", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "scheduled_at": { + "name": "scheduled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "notice_sent_at": { + "name": "notice_sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "applied_count": { + "name": "applied_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "skipped_count": { + "name": "skipped_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "failed_count": { + "name": "failed_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": { + "UQ_kiloclaw_scheduled_action_stages_parent_index": { + "name": "UQ_kiloclaw_scheduled_action_stages_parent_index", + "columns": [ + { + "expression": "scheduled_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "stage_index", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_scheduled_action_stages_notice_due": { + "name": "IDX_kiloclaw_scheduled_action_stages_notice_due", + "columns": [ + { + "expression": "scheduled_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_scheduled_action_stages\".\"notice_sent_at\" IS NULL AND \"kiloclaw_scheduled_action_stages\".\"status\" = 'pending'", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_scheduled_action_stages_scheduled_action_id_kiloclaw_scheduled_actions_id_fk": { + "name": "kiloclaw_scheduled_action_stages_scheduled_action_id_kiloclaw_scheduled_actions_id_fk", + "tableFrom": "kiloclaw_scheduled_action_stages", + "tableTo": "kiloclaw_scheduled_actions", + "columnsFrom": [ + "scheduled_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_scheduled_action_targets": { + "name": "kiloclaw_scheduled_action_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "scheduled_action_id": { + "name": "scheduled_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "stage_id": { + "name": "stage_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "source_image_tag": { + "name": "source_image_tag", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_image_tag": { + "name": "target_image_tag", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "applied_at": { + "name": "applied_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "skip_reason": { + "name": "skip_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "UQ_kiloclaw_scheduled_action_targets_parent_instance": { + "name": "UQ_kiloclaw_scheduled_action_targets_parent_instance", + "columns": [ + { + "expression": "scheduled_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_scheduled_action_targets_stage": { + "name": "IDX_kiloclaw_scheduled_action_targets_stage", + "columns": [ + { + "expression": "stage_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_scheduled_action_targets_pending_by_instance": { + "name": "IDX_kiloclaw_scheduled_action_targets_pending_by_instance", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_scheduled_action_targets\".\"status\" = 'pending'", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_scheduled_action_targets_scheduled_action_id_kiloclaw_scheduled_actions_id_fk": { + "name": "kiloclaw_scheduled_action_targets_scheduled_action_id_kiloclaw_scheduled_actions_id_fk", + "tableFrom": "kiloclaw_scheduled_action_targets", + "tableTo": "kiloclaw_scheduled_actions", + "columnsFrom": [ + "scheduled_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "kiloclaw_scheduled_action_targets_stage_id_kiloclaw_scheduled_action_stages_id_fk": { + "name": "kiloclaw_scheduled_action_targets_stage_id_kiloclaw_scheduled_action_stages_id_fk", + "tableFrom": "kiloclaw_scheduled_action_targets", + "tableTo": "kiloclaw_scheduled_action_stages", + "columnsFrom": [ + "stage_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "kiloclaw_scheduled_action_targets_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_scheduled_action_targets_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_scheduled_action_targets", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "kiloclaw_scheduled_action_targets_user_id_kilocode_users_id_fk": { + "name": "kiloclaw_scheduled_action_targets_user_id_kilocode_users_id_fk", + "tableFrom": "kiloclaw_scheduled_action_targets", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_scheduled_actions": { + "name": "kiloclaw_scheduled_actions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "action_type": { + "name": "action_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_image_tag": { + "name": "target_image_tag", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "override_pins": { + "name": "override_pins", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "notice_lead_hours": { + "name": "notice_lead_hours", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 24 + }, + "notice_subject": { + "name": "notice_subject", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "notice_body": { + "name": "notice_body", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "reason": { + "name": "reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'scheduled'" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "cancelled_at": { + "name": "cancelled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "total_count": { + "name": "total_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "applied_count": { + "name": "applied_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "skipped_count": { + "name": "skipped_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "failed_count": { + "name": "failed_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": { + "IDX_kiloclaw_scheduled_actions_status": { + "name": "IDX_kiloclaw_scheduled_actions_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_scheduled_actions_action_type": { + "name": "IDX_kiloclaw_scheduled_actions_action_type", + "columns": [ + { + "expression": "action_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_scheduled_actions_created_by": { + "name": "IDX_kiloclaw_scheduled_actions_created_by", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_scheduled_actions_target_image_tag_kiloclaw_image_catalog_image_tag_fk": { + "name": "kiloclaw_scheduled_actions_target_image_tag_kiloclaw_image_catalog_image_tag_fk", + "tableFrom": "kiloclaw_scheduled_actions", + "tableTo": "kiloclaw_image_catalog", + "columnsFrom": [ + "target_image_tag" + ], + "columnsTo": [ + "image_tag" + ], + "onDelete": "restrict", + "onUpdate": "no action" + }, + "kiloclaw_scheduled_actions_created_by_kilocode_users_id_fk": { + "name": "kiloclaw_scheduled_actions_created_by_kilocode_users_id_fk", + "tableFrom": "kiloclaw_scheduled_actions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kiloclaw_subscription_change_log": { + "name": "kiloclaw_subscription_change_log", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subscription_id": { + "name": "subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "actor_type": { + "name": "actor_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "actor_id": { + "name": "actor_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "reason": { + "name": "reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "before_state": { + "name": "before_state", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "after_state": { + "name": "after_state", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "IDX_kiloclaw_subscription_change_log_subscription_created_at": { + "name": "IDX_kiloclaw_subscription_change_log_subscription_created_at", + "columns": [ + { + "expression": "subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_subscription_change_log_created_at": { + "name": "IDX_kiloclaw_subscription_change_log_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_subscription_change_log_subscription_id_kiloclaw_subscriptions_id_fk": { + "name": "kiloclaw_subscription_change_log_subscription_id_kiloclaw_subscriptions_id_fk", + "tableFrom": "kiloclaw_subscription_change_log", + "tableTo": "kiloclaw_subscriptions", + "columnsFrom": [ + "subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kiloclaw_subscription_change_log_actor_type_check": { + "name": "kiloclaw_subscription_change_log_actor_type_check", + "value": "\"kiloclaw_subscription_change_log\".\"actor_type\" IN ('user', 'system')" + }, + "kiloclaw_subscription_change_log_action_check": { + "name": "kiloclaw_subscription_change_log_action_check", + "value": "\"kiloclaw_subscription_change_log\".\"action\" IN ('created', 'status_changed', 'plan_switched', 'period_advanced', 'canceled', 'reactivated', 'suspended', 'destruction_scheduled', 'reassigned', 'backfilled', 'payment_source_changed', 'schedule_changed', 'admin_override')" + } + }, + "isRLSEnabled": false + }, + "public.kiloclaw_subscriptions": { + "name": "kiloclaw_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_subscription_id": { + "name": "stripe_subscription_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_schedule_id": { + "name": "stripe_schedule_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "transferred_to_subscription_id": { + "name": "transferred_to_subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "access_origin": { + "name": "access_origin", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "payment_source": { + "name": "payment_source", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "kiloclaw_price_version": { + "name": "kiloclaw_price_version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "scheduled_plan": { + "name": "scheduled_plan", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "scheduled_by": { + "name": "scheduled_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "pending_conversion": { + "name": "pending_conversion", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "trial_started_at": { + "name": "trial_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_ends_at": { + "name": "trial_ends_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "credit_renewal_at": { + "name": "credit_renewal_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "commit_ends_at": { + "name": "commit_ends_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "past_due_since": { + "name": "past_due_since", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "suspended_at": { + "name": "suspended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "destruction_deadline": { + "name": "destruction_deadline", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "auto_resume_requested_at": { + "name": "auto_resume_requested_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "auto_resume_retry_after": { + "name": "auto_resume_retry_after", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "auto_resume_attempt_count": { + "name": "auto_resume_attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "auto_top_up_triggered_for_period": { + "name": "auto_top_up_triggered_for_period", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_kiloclaw_subscriptions_status": { + "name": "IDX_kiloclaw_subscriptions_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_subscriptions_user_id": { + "name": "IDX_kiloclaw_subscriptions_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_subscriptions_user_status": { + "name": "IDX_kiloclaw_subscriptions_user_status", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_subscriptions_price_version": { + "name": "IDX_kiloclaw_subscriptions_price_version", + "columns": [ + { + "expression": "kiloclaw_price_version", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_subscriptions_transferred_to": { + "name": "IDX_kiloclaw_subscriptions_transferred_to", + "columns": [ + { + "expression": "transferred_to_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_subscriptions_stripe_schedule_id": { + "name": "IDX_kiloclaw_subscriptions_stripe_schedule_id", + "columns": [ + { + "expression": "stripe_schedule_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_subscriptions_auto_resume_retry_after": { + "name": "IDX_kiloclaw_subscriptions_auto_resume_retry_after", + "columns": [ + { + "expression": "auto_resume_retry_after", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kiloclaw_subscriptions_instance": { + "name": "UQ_kiloclaw_subscriptions_instance", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kiloclaw_subscriptions\".\"instance_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kiloclaw_subscriptions_transferred_to": { + "name": "UQ_kiloclaw_subscriptions_transferred_to", + "columns": [ + { + "expression": "transferred_to_subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kiloclaw_subscriptions\".\"transferred_to_subscription_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_subscriptions_earlybird_origin": { + "name": "IDX_kiloclaw_subscriptions_earlybird_origin", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "access_origin", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_subscriptions\".\"access_origin\" = 'earlybird'", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_subscriptions_user_id_kilocode_users_id_fk": { + "name": "kiloclaw_subscriptions_user_id_kilocode_users_id_fk", + "tableFrom": "kiloclaw_subscriptions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "kiloclaw_subscriptions_transferred_to_subscription_id_kiloclaw_subscriptions_id_fk": { + "name": "kiloclaw_subscriptions_transferred_to_subscription_id_kiloclaw_subscriptions_id_fk", + "tableFrom": "kiloclaw_subscriptions", + "tableTo": "kiloclaw_subscriptions", + "columnsFrom": [ + "transferred_to_subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "kiloclaw_subscriptions_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_subscriptions_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_subscriptions", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "kiloclaw_subscriptions_stripe_subscription_id_unique": { + "name": "kiloclaw_subscriptions_stripe_subscription_id_unique", + "nullsNotDistinct": false, + "columns": [ + "stripe_subscription_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "kiloclaw_subscriptions_price_version_check": { + "name": "kiloclaw_subscriptions_price_version_check", + "value": "\"kiloclaw_subscriptions\".\"kiloclaw_price_version\" IN ('2026-03-19', '2026-05-10')" + }, + "kiloclaw_subscriptions_plan_check": { + "name": "kiloclaw_subscriptions_plan_check", + "value": "\"kiloclaw_subscriptions\".\"plan\" IN ('trial', 'commit', 'standard')" + }, + "kiloclaw_subscriptions_scheduled_plan_check": { + "name": "kiloclaw_subscriptions_scheduled_plan_check", + "value": "\"kiloclaw_subscriptions\".\"scheduled_plan\" IN ('commit', 'standard')" + }, + "kiloclaw_subscriptions_scheduled_by_check": { + "name": "kiloclaw_subscriptions_scheduled_by_check", + "value": "\"kiloclaw_subscriptions\".\"scheduled_by\" IN ('auto', 'user')" + }, + "kiloclaw_subscriptions_status_check": { + "name": "kiloclaw_subscriptions_status_check", + "value": "\"kiloclaw_subscriptions\".\"status\" IN ('trialing', 'active', 'past_due', 'canceled', 'unpaid')" + }, + "kiloclaw_subscriptions_access_origin_check": { + "name": "kiloclaw_subscriptions_access_origin_check", + "value": "\"kiloclaw_subscriptions\".\"access_origin\" IN ('earlybird')" + }, + "kiloclaw_subscriptions_payment_source_check": { + "name": "kiloclaw_subscriptions_payment_source_check", + "value": "\"kiloclaw_subscriptions\".\"payment_source\" IN ('stripe', 'credits')" + } + }, + "isRLSEnabled": false + }, + "public.kiloclaw_terminal_renewal_failures": { + "name": "kiloclaw_terminal_renewal_failures", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subscription_id": { + "name": "subscription_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "renewal_boundary": { + "name": "renewal_boundary", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'unresolved'" + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "first_failure_at": { + "name": "first_failure_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_failure_at": { + "name": "last_failure_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_failure_code": { + "name": "last_failure_code", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "last_failure_message": { + "name": "last_failure_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "resolution_actor_type": { + "name": "resolution_actor_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "resolution_actor_id": { + "name": "resolution_actor_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "resolution_at": { + "name": "resolution_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "resolution_reason": { + "name": "resolution_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_kiloclaw_terminal_renewal_failures_subscription_boundary": { + "name": "UQ_kiloclaw_terminal_renewal_failures_subscription_boundary", + "columns": [ + { + "expression": "subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "renewal_boundary", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_terminal_renewal_failures_unresolved": { + "name": "IDX_kiloclaw_terminal_renewal_failures_unresolved", + "columns": [ + { + "expression": "subscription_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "renewal_boundary", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"kiloclaw_terminal_renewal_failures\".\"status\" = 'unresolved'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kiloclaw_terminal_renewal_failures_status_last_failure_at": { + "name": "IDX_kiloclaw_terminal_renewal_failures_status_last_failure_at", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "last_failure_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "kiloclaw_terminal_renewal_failures_subscription_id_kiloclaw_subscriptions_id_fk": { + "name": "kiloclaw_terminal_renewal_failures_subscription_id_kiloclaw_subscriptions_id_fk", + "tableFrom": "kiloclaw_terminal_renewal_failures", + "tableTo": "kiloclaw_subscriptions", + "columnsFrom": [ + "subscription_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "kiloclaw_terminal_renewal_failures_status_check": { + "name": "kiloclaw_terminal_renewal_failures_status_check", + "value": "\"kiloclaw_terminal_renewal_failures\".\"status\" IN ('unresolved', 'resolved', 'waived', 'superseded')" + }, + "kiloclaw_terminal_renewal_failures_last_failure_code_check": { + "name": "kiloclaw_terminal_renewal_failures_last_failure_code_check", + "value": "\"kiloclaw_terminal_renewal_failures\".\"last_failure_code\" IN ('credit_balance_read_failed', 'renewal_transaction_failed', 'auto_top_up_marker_write_failed', 'worker_timeout', 'poison_payload', 'queue_delivery_exhausted')" + }, + "kiloclaw_terminal_renewal_failures_resolution_actor_type_check": { + "name": "kiloclaw_terminal_renewal_failures_resolution_actor_type_check", + "value": "\"kiloclaw_terminal_renewal_failures\".\"resolution_actor_type\" IN ('operator', 'system')" + } + }, + "isRLSEnabled": false + }, + "public.kiloclaw_version_pins": { + "name": "kiloclaw_version_pins", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "image_tag": { + "name": "image_tag", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "pinned_by": { + "name": "pinned_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "reason": { + "name": "reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "kiloclaw_version_pins_instance_id_kiloclaw_instances_id_fk": { + "name": "kiloclaw_version_pins_instance_id_kiloclaw_instances_id_fk", + "tableFrom": "kiloclaw_version_pins", + "tableTo": "kiloclaw_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "kiloclaw_version_pins_image_tag_kiloclaw_image_catalog_image_tag_fk": { + "name": "kiloclaw_version_pins_image_tag_kiloclaw_image_catalog_image_tag_fk", + "tableFrom": "kiloclaw_version_pins", + "tableTo": "kiloclaw_image_catalog", + "columnsFrom": [ + "image_tag" + ], + "columnsTo": [ + "image_tag" + ], + "onDelete": "restrict", + "onUpdate": "no action" + }, + "kiloclaw_version_pins_pinned_by_kilocode_users_id_fk": { + "name": "kiloclaw_version_pins_pinned_by_kilocode_users_id_fk", + "tableFrom": "kiloclaw_version_pins", + "tableTo": "kilocode_users", + "columnsFrom": [ + "pinned_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "kiloclaw_version_pins_instance_id_unique": { + "name": "kiloclaw_version_pins_instance_id_unique", + "nullsNotDistinct": false, + "columns": [ + "instance_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.kilocode_users": { + "name": "kilocode_users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "google_user_email": { + "name": "google_user_email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "google_user_name": { + "name": "google_user_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "google_user_image_url": { + "name": "google_user_image_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "hosted_domain": { + "name": "hosted_domain", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "microdollars_used": { + "name": "microdollars_used", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "kilo_pass_threshold": { + "name": "kilo_pass_threshold", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "app_store_account_token": { + "name": "app_store_account_token", + "type": "uuid", + "primaryKey": false, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "is_admin": { + "name": "is_admin", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "total_microdollars_acquired": { + "name": "total_microdollars_acquired", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "next_credit_expiration_at": { + "name": "next_credit_expiration_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "has_validation_stytch": { + "name": "has_validation_stytch", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "has_validation_novel_card_with_hold": { + "name": "has_validation_novel_card_with_hold", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "blocked_reason": { + "name": "blocked_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "blocked_at": { + "name": "blocked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "blocked_by_kilo_user_id": { + "name": "blocked_by_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_token_pepper": { + "name": "api_token_pepper", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "web_session_pepper": { + "name": "web_session_pepper", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auto_top_up_enabled": { + "name": "auto_top_up_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_bot": { + "name": "is_bot", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "kiloclaw_early_access": { + "name": "kiloclaw_early_access", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "default_model": { + "name": "default_model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cohorts": { + "name": "cohorts", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "completed_welcome_form": { + "name": "completed_welcome_form", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "linkedin_url": { + "name": "linkedin_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "github_url": { + "name": "github_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "discord_server_membership_verified_at": { + "name": "discord_server_membership_verified_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "openrouter_upstream_safety_identifier": { + "name": "openrouter_upstream_safety_identifier", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "vercel_downstream_safety_identifier": { + "name": "vercel_downstream_safety_identifier", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "customer_source": { + "name": "customer_source", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "signup_ip": { + "name": "signup_ip", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "account_deletion_requested_at": { + "name": "account_deletion_requested_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "normalized_email": { + "name": "normalized_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "email_domain": { + "name": "email_domain", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "IDX_kilocode_users_signup_ip_created_at": { + "name": "IDX_kilocode_users_signup_ip_created_at", + "columns": [ + { + "expression": "signup_ip", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilocode_users_blocked_at": { + "name": "IDX_kilocode_users_blocked_at", + "columns": [ + { + "expression": "blocked_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilocode_users_blocked_by_kilo_user_id": { + "name": "IDX_kilocode_users_blocked_by_kilo_user_id", + "columns": [ + { + "expression": "blocked_by_kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kilocode_users_openrouter_upstream_safety_identifier": { + "name": "UQ_kilocode_users_openrouter_upstream_safety_identifier", + "columns": [ + { + "expression": "openrouter_upstream_safety_identifier", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kilocode_users\".\"openrouter_upstream_safety_identifier\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_kilocode_users_vercel_downstream_safety_identifier": { + "name": "UQ_kilocode_users_vercel_downstream_safety_identifier", + "columns": [ + { + "expression": "vercel_downstream_safety_identifier", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"kilocode_users\".\"vercel_downstream_safety_identifier\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilocode_users_normalized_email": { + "name": "IDX_kilocode_users_normalized_email", + "columns": [ + { + "expression": "normalized_email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_kilocode_users_email_domain": { + "name": "IDX_kilocode_users_email_domain", + "columns": [ + { + "expression": "email_domain", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "kilocode_users_app_store_account_token_unique": { + "name": "kilocode_users_app_store_account_token_unique", + "nullsNotDistinct": false, + "columns": [ + "app_store_account_token" + ] + }, + "UQ_b1afacbcf43f2c7c4cb9f7e7faa": { + "name": "UQ_b1afacbcf43f2c7c4cb9f7e7faa", + "nullsNotDistinct": false, + "columns": [ + "google_user_email" + ] + } + }, + "policies": {}, + "checkConstraints": { + "blocked_reason_not_empty": { + "name": "blocked_reason_not_empty", + "value": "length(blocked_reason) > 0" + } + }, + "isRLSEnabled": false + }, + "public.magic_link_tokens": { + "name": "magic_link_tokens", + "schema": "", + "columns": { + "token_hash": { + "name": "token_hash", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "consumed_at": { + "name": "consumed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_magic_link_tokens_email": { + "name": "idx_magic_link_tokens_email", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_magic_link_tokens_expires_at": { + "name": "idx_magic_link_tokens_expires_at", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "check_expires_at_future": { + "name": "check_expires_at_future", + "value": "\"magic_link_tokens\".\"expires_at\" > \"magic_link_tokens\".\"created_at\"" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_assignments": { + "name": "mcp_gateway_assignments", + "schema": "", + "columns": { + "assignment_id": { + "name": "assignment_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "assigned_by_kilo_user_id": { + "name": "assigned_by_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "single_user_slot": { + "name": "single_user_slot", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_assignments_active": { + "name": "UQ_mcp_gateway_assignments_active", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"mcp_gateway_assignments\".\"revoked_at\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_mcp_gateway_assignments_single_user_slot": { + "name": "UQ_mcp_gateway_assignments_single_user_slot", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "single_user_slot", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"mcp_gateway_assignments\".\"revoked_at\" is null and \"mcp_gateway_assignments\".\"single_user_slot\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_assignments_config": { + "name": "IDX_mcp_gateway_assignments_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_assignments_user": { + "name": "IDX_mcp_gateway_assignments_user", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_assignments_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_assignments_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_assignments", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_assignments_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_assignments_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_assignments", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_assignments_assigned_by_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_assignments_assigned_by_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_assignments", + "tableTo": "kilocode_users", + "columnsFrom": [ + "assigned_by_kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.mcp_gateway_audit_events": { + "name": "mcp_gateway_audit_events", + "schema": "", + "columns": { + "audit_event_id": { + "name": "audit_event_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "actor_kilo_user_id": { + "name": "actor_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owner_scope": { + "name": "owner_scope", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "connect_resource_id": { + "name": "connect_resource_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "event_type": { + "name": "event_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "outcome": { + "name": "outcome", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "correlation_metadata": { + "name": "correlation_metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_mcp_gateway_audit_events_config": { + "name": "IDX_mcp_gateway_audit_events_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_audit_events_owner": { + "name": "IDX_mcp_gateway_audit_events_owner", + "columns": [ + { + "expression": "owner_scope", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "owner_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_audit_events_created_at": { + "name": "IDX_mcp_gateway_audit_events_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_audit_events_actor_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_audit_events_actor_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_audit_events", + "tableTo": "kilocode_users", + "columnsFrom": [ + "actor_kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "mcp_gateway_audit_events_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_audit_events_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_audit_events", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "mcp_gateway_audit_events_connect_resource_id_mcp_gateway_connect_resources_connect_resource_id_fk": { + "name": "mcp_gateway_audit_events_connect_resource_id_mcp_gateway_connect_resources_connect_resource_id_fk", + "tableFrom": "mcp_gateway_audit_events", + "tableTo": "mcp_gateway_connect_resources", + "columnsFrom": [ + "connect_resource_id" + ], + "columnsTo": [ + "connect_resource_id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "mcp_gateway_audit_events_instance_id_mcp_gateway_connection_instances_instance_id_fk": { + "name": "mcp_gateway_audit_events_instance_id_mcp_gateway_connection_instances_instance_id_fk", + "tableFrom": "mcp_gateway_audit_events", + "tableTo": "mcp_gateway_connection_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "instance_id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_audit_events_owner_scope": { + "name": "mcp_gateway_audit_events_owner_scope", + "value": "\"mcp_gateway_audit_events\".\"owner_scope\" IN ('personal', 'organization')" + }, + "mcp_gateway_audit_events_outcome": { + "name": "mcp_gateway_audit_events_outcome", + "value": "\"mcp_gateway_audit_events\".\"outcome\" IN ('success', 'failure', 'blocked')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_authorization_codes": { + "name": "mcp_gateway_authorization_codes", + "schema": "", + "columns": { + "authorization_code_id": { + "name": "authorization_code_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "code_hash": { + "name": "code_hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "authorization_request_id": { + "name": "authorization_request_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "oauth_client_id": { + "name": "oauth_client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_scope": { + "name": "owner_scope", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "route_key": { + "name": "route_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "canonical_resource_url": { + "name": "canonical_resource_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "redirect_uri": { + "name": "redirect_uri", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "granted_scopes": { + "name": "granted_scopes", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "code_challenge": { + "name": "code_challenge", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "code_challenge_method": { + "name": "code_challenge_method", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'S256'" + }, + "execution_context": { + "name": "execution_context", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "consumed_at": { + "name": "consumed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_authorization_codes_code_hash": { + "name": "UQ_mcp_gateway_authorization_codes_code_hash", + "columns": [ + { + "expression": "code_hash", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_authorization_codes_expires_at": { + "name": "IDX_mcp_gateway_authorization_codes_expires_at", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_authorization_codes_client": { + "name": "IDX_mcp_gateway_authorization_codes_client", + "columns": [ + { + "expression": "oauth_client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_authorization_codes_authorization_request_id_mcp_gateway_authorization_requests_authorization_request_id_fk": { + "name": "mcp_gateway_authorization_codes_authorization_request_id_mcp_gateway_authorization_requests_authorization_request_id_fk", + "tableFrom": "mcp_gateway_authorization_codes", + "tableTo": "mcp_gateway_authorization_requests", + "columnsFrom": [ + "authorization_request_id" + ], + "columnsTo": [ + "authorization_request_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_authorization_codes_oauth_client_id_mcp_gateway_oauth_clients_oauth_client_id_fk": { + "name": "mcp_gateway_authorization_codes_oauth_client_id_mcp_gateway_oauth_clients_oauth_client_id_fk", + "tableFrom": "mcp_gateway_authorization_codes", + "tableTo": "mcp_gateway_oauth_clients", + "columnsFrom": [ + "oauth_client_id" + ], + "columnsTo": [ + "oauth_client_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_authorization_codes_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_authorization_codes_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_authorization_codes", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_authorization_codes_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_authorization_codes_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_authorization_codes", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_authorization_codes_instance_id_mcp_gateway_connection_instances_instance_id_fk": { + "name": "mcp_gateway_authorization_codes_instance_id_mcp_gateway_connection_instances_instance_id_fk", + "tableFrom": "mcp_gateway_authorization_codes", + "tableTo": "mcp_gateway_connection_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "instance_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_authorization_codes_owner_scope": { + "name": "mcp_gateway_authorization_codes_owner_scope", + "value": "\"mcp_gateway_authorization_codes\".\"owner_scope\" IN ('personal', 'organization')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_authorization_requests": { + "name": "mcp_gateway_authorization_requests", + "schema": "", + "columns": { + "authorization_request_id": { + "name": "authorization_request_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "request_state_hash": { + "name": "request_state_hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_client_id": { + "name": "oauth_client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_scope": { + "name": "owner_scope", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "route_key": { + "name": "route_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "canonical_resource_url": { + "name": "canonical_resource_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "redirect_uri": { + "name": "redirect_uri", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "requested_scopes": { + "name": "requested_scopes", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "granted_scopes": { + "name": "granted_scopes", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "oauth_state": { + "name": "oauth_state", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "code_challenge": { + "name": "code_challenge", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "code_challenge_method": { + "name": "code_challenge_method", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'S256'" + }, + "execution_context": { + "name": "execution_context", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "request_status": { + "name": "request_status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "consumed_at": { + "name": "consumed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_authorization_requests_state_hash": { + "name": "UQ_mcp_gateway_authorization_requests_state_hash", + "columns": [ + { + "expression": "request_state_hash", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_authorization_requests_config": { + "name": "IDX_mcp_gateway_authorization_requests_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_authorization_requests_user": { + "name": "IDX_mcp_gateway_authorization_requests_user", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_authorization_requests_expires_at": { + "name": "IDX_mcp_gateway_authorization_requests_expires_at", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_authorization_requests_oauth_client_id_mcp_gateway_oauth_clients_oauth_client_id_fk": { + "name": "mcp_gateway_authorization_requests_oauth_client_id_mcp_gateway_oauth_clients_oauth_client_id_fk", + "tableFrom": "mcp_gateway_authorization_requests", + "tableTo": "mcp_gateway_oauth_clients", + "columnsFrom": [ + "oauth_client_id" + ], + "columnsTo": [ + "oauth_client_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_authorization_requests_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_authorization_requests_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_authorization_requests", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_authorization_requests_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_authorization_requests_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_authorization_requests", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_authorization_requests_instance_id_mcp_gateway_connection_instances_instance_id_fk": { + "name": "mcp_gateway_authorization_requests_instance_id_mcp_gateway_connection_instances_instance_id_fk", + "tableFrom": "mcp_gateway_authorization_requests", + "tableTo": "mcp_gateway_connection_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "instance_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_authorization_requests_owner_scope": { + "name": "mcp_gateway_authorization_requests_owner_scope", + "value": "\"mcp_gateway_authorization_requests\".\"owner_scope\" IN ('personal', 'organization')" + }, + "mcp_gateway_authorization_requests_status": { + "name": "mcp_gateway_authorization_requests_status", + "value": "\"mcp_gateway_authorization_requests\".\"request_status\" IN ('pending', 'completed', 'error')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_config_secrets": { + "name": "mcp_gateway_config_secrets", + "schema": "", + "columns": { + "config_secret_id": { + "name": "config_secret_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "secret_kind": { + "name": "secret_kind", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "encrypted_secret": { + "name": "encrypted_secret", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "secret_version": { + "name": "secret_version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_config_secrets_active_kind": { + "name": "UQ_mcp_gateway_config_secrets_active_kind", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "secret_kind", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"mcp_gateway_config_secrets\".\"revoked_at\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_config_secrets_config": { + "name": "IDX_mcp_gateway_config_secrets_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_config_secrets_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_config_secrets_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_config_secrets", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_config_secrets_version_positive": { + "name": "mcp_gateway_config_secrets_version_positive", + "value": "\"mcp_gateway_config_secrets\".\"secret_version\" > 0" + }, + "mcp_gateway_config_secrets_kind": { + "name": "mcp_gateway_config_secrets_kind", + "value": "\"mcp_gateway_config_secrets\".\"secret_kind\" IN ('static_provider_credentials', 'dynamic_registration', 'static_headers')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_configs": { + "name": "mcp_gateway_configs", + "schema": "", + "columns": { + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owner_scope": { + "name": "owner_scope", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "remote_url": { + "name": "remote_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auth_mode": { + "name": "auth_mode", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "sharing_mode": { + "name": "sharing_mode", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "path_passthrough": { + "name": "path_passthrough", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "config_version": { + "name": "config_version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "discovered_provider_metadata": { + "name": "discovered_provider_metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "registry_metadata": { + "name": "registry_metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "auxiliary_headers": { + "name": "auxiliary_headers", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "created_by_kilo_user_id": { + "name": "created_by_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_mcp_gateway_configs_owner": { + "name": "IDX_mcp_gateway_configs_owner", + "columns": [ + { + "expression": "owner_scope", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "owner_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_configs_enabled": { + "name": "IDX_mcp_gateway_configs_enabled", + "columns": [ + { + "expression": "enabled", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_configs_remote_url": { + "name": "IDX_mcp_gateway_configs_remote_url", + "columns": [ + { + "expression": "remote_url", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_configs_created_by_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_configs_created_by_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_configs", + "tableTo": "kilocode_users", + "columnsFrom": [ + "created_by_kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_configs_name_not_empty": { + "name": "mcp_gateway_configs_name_not_empty", + "value": "length(trim(\"mcp_gateway_configs\".\"name\")) > 0" + }, + "mcp_gateway_configs_config_version_positive": { + "name": "mcp_gateway_configs_config_version_positive", + "value": "\"mcp_gateway_configs\".\"config_version\" > 0" + }, + "mcp_gateway_configs_personal_single_user": { + "name": "mcp_gateway_configs_personal_single_user", + "value": "\"mcp_gateway_configs\".\"owner_scope\" <> 'personal' OR \"mcp_gateway_configs\".\"sharing_mode\" = 'single_user'" + }, + "mcp_gateway_configs_owner_scope": { + "name": "mcp_gateway_configs_owner_scope", + "value": "\"mcp_gateway_configs\".\"owner_scope\" IN ('personal', 'organization')" + }, + "mcp_gateway_configs_auth_mode": { + "name": "mcp_gateway_configs_auth_mode", + "value": "\"mcp_gateway_configs\".\"auth_mode\" IN ('none', 'static_headers', 'oauth_dynamic', 'oauth_static')" + }, + "mcp_gateway_configs_sharing_mode": { + "name": "mcp_gateway_configs_sharing_mode", + "value": "\"mcp_gateway_configs\".\"sharing_mode\" IN ('single_user', 'multi_user')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_connect_resources": { + "name": "mcp_gateway_connect_resources", + "schema": "", + "columns": { + "connect_resource_id": { + "name": "connect_resource_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "owner_scope": { + "name": "owner_scope", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "route_key": { + "name": "route_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "canonical_url": { + "name": "canonical_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "route_status": { + "name": "route_status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'active'" + }, + "route_version": { + "name": "route_version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "rotated_at": { + "name": "rotated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_connect_resources_route_key": { + "name": "UQ_mcp_gateway_connect_resources_route_key", + "columns": [ + { + "expression": "route_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_mcp_gateway_connect_resources_active_config": { + "name": "UQ_mcp_gateway_connect_resources_active_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"mcp_gateway_connect_resources\".\"route_status\" = 'active'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_connect_resources_config": { + "name": "IDX_mcp_gateway_connect_resources_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_connect_resources_canonical_url": { + "name": "IDX_mcp_gateway_connect_resources_canonical_url", + "columns": [ + { + "expression": "canonical_url", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_connect_resources_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_connect_resources_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_connect_resources", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_connect_resources_route_key_format": { + "name": "mcp_gateway_connect_resources_route_key_format", + "value": "\"mcp_gateway_connect_resources\".\"route_key\" ~ '^[A-Za-z0-9_-]{32,}$'" + }, + "mcp_gateway_connect_resources_route_version_positive": { + "name": "mcp_gateway_connect_resources_route_version_positive", + "value": "\"mcp_gateway_connect_resources\".\"route_version\" > 0" + }, + "mcp_gateway_connect_resources_owner_scope": { + "name": "mcp_gateway_connect_resources_owner_scope", + "value": "\"mcp_gateway_connect_resources\".\"owner_scope\" IN ('personal', 'organization')" + }, + "mcp_gateway_connect_resources_route_status": { + "name": "mcp_gateway_connect_resources_route_status", + "value": "\"mcp_gateway_connect_resources\".\"route_status\" IN ('active', 'rotated', 'revoked')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_connection_instances": { + "name": "mcp_gateway_connection_instances", + "schema": "", + "columns": { + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "owner_scope": { + "name": "owner_scope", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "instance_status": { + "name": "instance_status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'active'" + }, + "instance_version": { + "name": "instance_version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "removed_at": { + "name": "removed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_connection_instances_non_terminal": { + "name": "UQ_mcp_gateway_connection_instances_non_terminal", + "columns": [ + { + "expression": "owner_scope", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "owner_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"mcp_gateway_connection_instances\".\"instance_status\" IN ('active', 'needs_reauth')", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_connection_instances_config": { + "name": "IDX_mcp_gateway_connection_instances_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_connection_instances_user": { + "name": "IDX_mcp_gateway_connection_instances_user", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_connection_instances_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_connection_instances_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_connection_instances", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_connection_instances_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_connection_instances_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_connection_instances", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_connection_instances_version_positive": { + "name": "mcp_gateway_connection_instances_version_positive", + "value": "\"mcp_gateway_connection_instances\".\"instance_version\" > 0" + }, + "mcp_gateway_connection_instances_owner_scope": { + "name": "mcp_gateway_connection_instances_owner_scope", + "value": "\"mcp_gateway_connection_instances\".\"owner_scope\" IN ('personal', 'organization')" + }, + "mcp_gateway_connection_instances_status": { + "name": "mcp_gateway_connection_instances_status", + "value": "\"mcp_gateway_connection_instances\".\"instance_status\" IN ('active', 'needs_reauth', 'revoked', 'removed')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_oauth_clients": { + "name": "mcp_gateway_oauth_clients", + "schema": "", + "columns": { + "oauth_client_id": { + "name": "oauth_client_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "client_id": { + "name": "client_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "client_name": { + "name": "client_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "registration_token_hash": { + "name": "registration_token_hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "client_secret_hash": { + "name": "client_secret_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "token_endpoint_auth_method": { + "name": "token_endpoint_auth_method", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "redirect_uris": { + "name": "redirect_uris", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "grant_types": { + "name": "grant_types", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "response_types": { + "name": "response_types", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "declared_scopes": { + "name": "declared_scopes", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "registration_access_token_expires_at": { + "name": "registration_access_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_oauth_clients_client_id": { + "name": "UQ_mcp_gateway_oauth_clients_client_id", + "columns": [ + { + "expression": "client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_mcp_gateway_oauth_clients_registration_token_hash": { + "name": "UQ_mcp_gateway_oauth_clients_registration_token_hash", + "columns": [ + { + "expression": "registration_token_hash", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_oauth_clients_deleted_at": { + "name": "IDX_mcp_gateway_oauth_clients_deleted_at", + "columns": [ + { + "expression": "deleted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_oauth_clients_client_id_format": { + "name": "mcp_gateway_oauth_clients_client_id_format", + "value": "\"mcp_gateway_oauth_clients\".\"client_id\" ~ '^[A-Za-z0-9._-]+:[A-Za-z0-9._-]+$'" + }, + "mcp_gateway_oauth_clients_auth_method": { + "name": "mcp_gateway_oauth_clients_auth_method", + "value": "\"mcp_gateway_oauth_clients\".\"token_endpoint_auth_method\" IN ('none', 'client_secret_post', 'client_secret_basic')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_pending_provider_authorizations": { + "name": "mcp_gateway_pending_provider_authorizations", + "schema": "", + "columns": { + "pending_provider_authorization_id": { + "name": "pending_provider_authorization_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "state_hash": { + "name": "state_hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "authorization_request_id": { + "name": "authorization_request_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "owner_scope": { + "name": "owner_scope", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "route_key": { + "name": "route_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "canonical_resource_url": { + "name": "canonical_resource_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "remote_url": { + "name": "remote_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auth_mode": { + "name": "auth_mode", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_authorization_endpoint": { + "name": "provider_authorization_endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_token_endpoint": { + "name": "provider_token_endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "encrypted_state": { + "name": "encrypted_state", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "execution_context": { + "name": "execution_context", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "config_version": { + "name": "config_version", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "pending_status": { + "name": "pending_status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "consumed_at": { + "name": "consumed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_pending_provider_authorizations_state_hash": { + "name": "UQ_mcp_gateway_pending_provider_authorizations_state_hash", + "columns": [ + { + "expression": "state_hash", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_pending_provider_authorizations_config": { + "name": "IDX_mcp_gateway_pending_provider_authorizations_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_pending_provider_authorizations_expires_at": { + "name": "IDX_mcp_gateway_pending_provider_authorizations_expires_at", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_pending_provider_authorizations_authorization_request_id_mcp_gateway_authorization_requests_authorization_request_id_fk": { + "name": "mcp_gateway_pending_provider_authorizations_authorization_request_id_mcp_gateway_authorization_requests_authorization_request_id_fk", + "tableFrom": "mcp_gateway_pending_provider_authorizations", + "tableTo": "mcp_gateway_authorization_requests", + "columnsFrom": [ + "authorization_request_id" + ], + "columnsTo": [ + "authorization_request_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_pending_provider_authorizations_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_pending_provider_authorizations_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_pending_provider_authorizations", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_pending_provider_authorizations_instance_id_mcp_gateway_connection_instances_instance_id_fk": { + "name": "mcp_gateway_pending_provider_authorizations_instance_id_mcp_gateway_connection_instances_instance_id_fk", + "tableFrom": "mcp_gateway_pending_provider_authorizations", + "tableTo": "mcp_gateway_connection_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "instance_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_pending_provider_authorizations_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_pending_provider_authorizations_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_pending_provider_authorizations", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_pending_provider_authorizations_config_version_positive": { + "name": "mcp_gateway_pending_provider_authorizations_config_version_positive", + "value": "\"mcp_gateway_pending_provider_authorizations\".\"config_version\" > 0" + }, + "mcp_gateway_pending_provider_authorizations_owner_scope": { + "name": "mcp_gateway_pending_provider_authorizations_owner_scope", + "value": "\"mcp_gateway_pending_provider_authorizations\".\"owner_scope\" IN ('personal', 'organization')" + }, + "mcp_gateway_pending_provider_authorizations_auth_mode": { + "name": "mcp_gateway_pending_provider_authorizations_auth_mode", + "value": "\"mcp_gateway_pending_provider_authorizations\".\"auth_mode\" IN ('none', 'static_headers', 'oauth_dynamic', 'oauth_static')" + }, + "mcp_gateway_pending_provider_authorizations_status": { + "name": "mcp_gateway_pending_provider_authorizations_status", + "value": "\"mcp_gateway_pending_provider_authorizations\".\"pending_status\" IN ('pending', 'completed', 'error')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_provider_grants": { + "name": "mcp_gateway_provider_grants", + "schema": "", + "columns": { + "provider_grant_id": { + "name": "provider_grant_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "encrypted_grant": { + "name": "encrypted_grant", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_subject": { + "name": "provider_subject", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "grant_scope": { + "name": "grant_scope", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "grant_status": { + "name": "grant_status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'active'" + }, + "grant_version": { + "name": "grant_version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_provider_grants_active_instance": { + "name": "UQ_mcp_gateway_provider_grants_active_instance", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"mcp_gateway_provider_grants\".\"grant_status\" = 'active'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_provider_grants_instance": { + "name": "IDX_mcp_gateway_provider_grants_instance", + "columns": [ + { + "expression": "instance_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_provider_grants_instance_id_mcp_gateway_connection_instances_instance_id_fk": { + "name": "mcp_gateway_provider_grants_instance_id_mcp_gateway_connection_instances_instance_id_fk", + "tableFrom": "mcp_gateway_provider_grants", + "tableTo": "mcp_gateway_connection_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "instance_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_provider_grants_version_positive": { + "name": "mcp_gateway_provider_grants_version_positive", + "value": "\"mcp_gateway_provider_grants\".\"grant_version\" > 0" + }, + "mcp_gateway_provider_grants_status": { + "name": "mcp_gateway_provider_grants_status", + "value": "\"mcp_gateway_provider_grants\".\"grant_status\" IN ('active', 'revoked')" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_rate_limit_windows": { + "name": "mcp_gateway_rate_limit_windows", + "schema": "", + "columns": { + "rate_limit_window_id": { + "name": "rate_limit_window_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "ip_hash": { + "name": "ip_hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "window_started_at": { + "name": "window_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_rate_limit_windows_ip_window": { + "name": "UQ_mcp_gateway_rate_limit_windows_ip_window", + "columns": [ + { + "expression": "ip_hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "window_started_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_rate_limit_windows_window": { + "name": "IDX_mcp_gateway_rate_limit_windows_window", + "columns": [ + { + "expression": "window_started_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_rate_limit_windows_attempt_count_non_negative": { + "name": "mcp_gateway_rate_limit_windows_attempt_count_non_negative", + "value": "\"mcp_gateway_rate_limit_windows\".\"attempt_count\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.mcp_gateway_refresh_tokens": { + "name": "mcp_gateway_refresh_tokens", + "schema": "", + "columns": { + "refresh_token_id": { + "name": "refresh_token_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "token_hash": { + "name": "token_hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "rotated_from_refresh_token_id": { + "name": "rotated_from_refresh_token_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "oauth_client_id": { + "name": "oauth_client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_scope": { + "name": "owner_scope", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "config_id": { + "name": "config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "route_key": { + "name": "route_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "canonical_resource_url": { + "name": "canonical_resource_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "granted_scopes": { + "name": "granted_scopes", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "execution_context": { + "name": "execution_context", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "instance_id": { + "name": "instance_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "consumed_at": { + "name": "consumed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_mcp_gateway_refresh_tokens_token_hash": { + "name": "UQ_mcp_gateway_refresh_tokens_token_hash", + "columns": [ + { + "expression": "token_hash", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_refresh_tokens_user": { + "name": "IDX_mcp_gateway_refresh_tokens_user", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_refresh_tokens_config": { + "name": "IDX_mcp_gateway_refresh_tokens_config", + "columns": [ + { + "expression": "config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_mcp_gateway_refresh_tokens_consumed_at": { + "name": "IDX_mcp_gateway_refresh_tokens_consumed_at", + "columns": [ + { + "expression": "consumed_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "mcp_gateway_refresh_tokens_oauth_client_id_mcp_gateway_oauth_clients_oauth_client_id_fk": { + "name": "mcp_gateway_refresh_tokens_oauth_client_id_mcp_gateway_oauth_clients_oauth_client_id_fk", + "tableFrom": "mcp_gateway_refresh_tokens", + "tableTo": "mcp_gateway_oauth_clients", + "columnsFrom": [ + "oauth_client_id" + ], + "columnsTo": [ + "oauth_client_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_refresh_tokens_config_id_mcp_gateway_configs_config_id_fk": { + "name": "mcp_gateway_refresh_tokens_config_id_mcp_gateway_configs_config_id_fk", + "tableFrom": "mcp_gateway_refresh_tokens", + "tableTo": "mcp_gateway_configs", + "columnsFrom": [ + "config_id" + ], + "columnsTo": [ + "config_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_refresh_tokens_kilo_user_id_kilocode_users_id_fk": { + "name": "mcp_gateway_refresh_tokens_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "mcp_gateway_refresh_tokens", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "mcp_gateway_refresh_tokens_instance_id_mcp_gateway_connection_instances_instance_id_fk": { + "name": "mcp_gateway_refresh_tokens_instance_id_mcp_gateway_connection_instances_instance_id_fk", + "tableFrom": "mcp_gateway_refresh_tokens", + "tableTo": "mcp_gateway_connection_instances", + "columnsFrom": [ + "instance_id" + ], + "columnsTo": [ + "instance_id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "mcp_gateway_refresh_tokens_owner_scope": { + "name": "mcp_gateway_refresh_tokens_owner_scope", + "value": "\"mcp_gateway_refresh_tokens\".\"owner_scope\" IN ('personal', 'organization')" + } + }, + "isRLSEnabled": false + }, + "public.microdollar_usage": { + "name": "microdollar_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "cost": { + "name": "cost", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "input_tokens": { + "name": "input_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "output_tokens": { + "name": "output_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "cache_write_tokens": { + "name": "cache_write_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "cache_hit_tokens": { + "name": "cache_hit_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "requested_model": { + "name": "requested_model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cache_discount": { + "name": "cache_discount", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "has_error": { + "name": "has_error", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "abuse_classification": { + "name": "abuse_classification", + "type": "smallint", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "inference_provider": { + "name": "inference_provider", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_created_at": { + "name": "idx_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_abuse_classification": { + "name": "idx_abuse_classification", + "columns": [ + { + "expression": "abuse_classification", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_kilo_user_id_created_at2": { + "name": "idx_kilo_user_id_created_at2", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_microdollar_usage_organization_id": { + "name": "idx_microdollar_usage_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"microdollar_usage\".\"organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.microdollar_usage_daily": { + "name": "microdollar_usage_daily", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "usage_date": { + "name": "usage_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "total_cost_microdollars": { + "name": "total_cost_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_microdollar_usage_daily_personal": { + "name": "idx_microdollar_usage_daily_personal", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "usage_date", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"microdollar_usage_daily\".\"organization_id\" is null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_microdollar_usage_daily_org": { + "name": "idx_microdollar_usage_daily_org", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "usage_date", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"microdollar_usage_daily\".\"organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.microdollar_usage_metadata": { + "name": "microdollar_usage_metadata", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "message_id": { + "name": "message_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "http_user_agent_id": { + "name": "http_user_agent_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "http_ip_id": { + "name": "http_ip_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vercel_ip_city_id": { + "name": "vercel_ip_city_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vercel_ip_country_id": { + "name": "vercel_ip_country_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "vercel_ip_latitude": { + "name": "vercel_ip_latitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "vercel_ip_longitude": { + "name": "vercel_ip_longitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "ja4_digest_id": { + "name": "ja4_digest_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "user_prompt_prefix": { + "name": "user_prompt_prefix", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "system_prompt_prefix_id": { + "name": "system_prompt_prefix_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "system_prompt_length": { + "name": "system_prompt_length", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "max_tokens": { + "name": "max_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "has_middle_out_transform": { + "name": "has_middle_out_transform", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "status_code": { + "name": "status_code", + "type": "smallint", + "primaryKey": false, + "notNull": false + }, + "upstream_id": { + "name": "upstream_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "finish_reason_id": { + "name": "finish_reason_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "latency": { + "name": "latency", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "moderation_latency": { + "name": "moderation_latency", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "generation_time": { + "name": "generation_time", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "is_byok": { + "name": "is_byok", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "is_user_byok": { + "name": "is_user_byok", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "streamed": { + "name": "streamed", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "cancelled": { + "name": "cancelled", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "editor_name_id": { + "name": "editor_name_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "api_kind_id": { + "name": "api_kind_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "has_tools": { + "name": "has_tools", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "machine_id": { + "name": "machine_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "feature_id": { + "name": "feature_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "mode_id": { + "name": "mode_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "auto_model_id": { + "name": "auto_model_id", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "market_cost": { + "name": "market_cost", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "is_free": { + "name": "is_free", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "abuse_delay": { + "name": "abuse_delay", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "abuse_downgraded_from": { + "name": "abuse_downgraded_from", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_microdollar_usage_metadata_created_at": { + "name": "idx_microdollar_usage_metadata_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_microdollar_usage_metadata_session_id": { + "name": "idx_microdollar_usage_metadata_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"microdollar_usage_metadata\".\"session_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "microdollar_usage_metadata_http_user_agent_id_http_user_agent_http_user_agent_id_fk": { + "name": "microdollar_usage_metadata_http_user_agent_id_http_user_agent_http_user_agent_id_fk", + "tableFrom": "microdollar_usage_metadata", + "tableTo": "http_user_agent", + "columnsFrom": [ + "http_user_agent_id" + ], + "columnsTo": [ + "http_user_agent_id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "microdollar_usage_metadata_http_ip_id_http_ip_http_ip_id_fk": { + "name": "microdollar_usage_metadata_http_ip_id_http_ip_http_ip_id_fk", + "tableFrom": "microdollar_usage_metadata", + "tableTo": "http_ip", + "columnsFrom": [ + "http_ip_id" + ], + "columnsTo": [ + "http_ip_id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "microdollar_usage_metadata_vercel_ip_city_id_vercel_ip_city_vercel_ip_city_id_fk": { + "name": "microdollar_usage_metadata_vercel_ip_city_id_vercel_ip_city_vercel_ip_city_id_fk", + "tableFrom": "microdollar_usage_metadata", + "tableTo": "vercel_ip_city", + "columnsFrom": [ + "vercel_ip_city_id" + ], + "columnsTo": [ + "vercel_ip_city_id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "microdollar_usage_metadata_vercel_ip_country_id_vercel_ip_country_vercel_ip_country_id_fk": { + "name": "microdollar_usage_metadata_vercel_ip_country_id_vercel_ip_country_vercel_ip_country_id_fk", + "tableFrom": "microdollar_usage_metadata", + "tableTo": "vercel_ip_country", + "columnsFrom": [ + "vercel_ip_country_id" + ], + "columnsTo": [ + "vercel_ip_country_id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "microdollar_usage_metadata_ja4_digest_id_ja4_digest_ja4_digest_id_fk": { + "name": "microdollar_usage_metadata_ja4_digest_id_ja4_digest_ja4_digest_id_fk", + "tableFrom": "microdollar_usage_metadata", + "tableTo": "ja4_digest", + "columnsFrom": [ + "ja4_digest_id" + ], + "columnsTo": [ + "ja4_digest_id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "microdollar_usage_metadata_system_prompt_prefix_id_system_prompt_prefix_system_prompt_prefix_id_fk": { + "name": "microdollar_usage_metadata_system_prompt_prefix_id_system_prompt_prefix_system_prompt_prefix_id_fk", + "tableFrom": "microdollar_usage_metadata", + "tableTo": "system_prompt_prefix", + "columnsFrom": [ + "system_prompt_prefix_id" + ], + "columnsTo": [ + "system_prompt_prefix_id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.mode": { + "name": "mode", + "schema": "", + "columns": { + "mode_id": { + "name": "mode_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "mode": { + "name": "mode", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_mode": { + "name": "UQ_mode", + "columns": [ + { + "expression": "mode", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.model_stats": { + "name": "model_stats", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "is_featured": { + "name": "is_featured", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_stealth": { + "name": "is_stealth", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_recommended": { + "name": "is_recommended", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "openrouter_id": { + "name": "openrouter_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "aa_slug": { + "name": "aa_slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "model_creator": { + "name": "model_creator", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "creator_slug": { + "name": "creator_slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "release_date": { + "name": "release_date", + "type": "date", + "primaryKey": false, + "notNull": false + }, + "price_input": { + "name": "price_input", + "type": "numeric(10, 6)", + "primaryKey": false, + "notNull": false + }, + "price_output": { + "name": "price_output", + "type": "numeric(10, 6)", + "primaryKey": false, + "notNull": false + }, + "coding_index": { + "name": "coding_index", + "type": "numeric(5, 2)", + "primaryKey": false, + "notNull": false + }, + "speed_tokens_per_sec": { + "name": "speed_tokens_per_sec", + "type": "numeric(8, 2)", + "primaryKey": false, + "notNull": false + }, + "context_length": { + "name": "context_length", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "max_output_tokens": { + "name": "max_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "input_modalities": { + "name": "input_modalities", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "openrouter_data": { + "name": "openrouter_data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "benchmarks": { + "name": "benchmarks", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "chart_data": { + "name": "chart_data", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_model_stats_openrouter_id": { + "name": "IDX_model_stats_openrouter_id", + "columns": [ + { + "expression": "openrouter_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_stats_slug": { + "name": "IDX_model_stats_slug", + "columns": [ + { + "expression": "slug", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_stats_is_active": { + "name": "IDX_model_stats_is_active", + "columns": [ + { + "expression": "is_active", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_stats_creator_slug": { + "name": "IDX_model_stats_creator_slug", + "columns": [ + { + "expression": "creator_slug", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_stats_price_input": { + "name": "IDX_model_stats_price_input", + "columns": [ + { + "expression": "price_input", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_stats_coding_index": { + "name": "IDX_model_stats_coding_index", + "columns": [ + { + "expression": "coding_index", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_stats_context_length": { + "name": "IDX_model_stats_context_length", + "columns": [ + { + "expression": "context_length", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "model_stats_openrouter_id_unique": { + "name": "model_stats_openrouter_id_unique", + "nullsNotDistinct": false, + "columns": [ + "openrouter_id" + ] + }, + "model_stats_slug_unique": { + "name": "model_stats_slug_unique", + "nullsNotDistinct": false, + "columns": [ + "slug" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.model_eval_ingestions": { + "name": "model_eval_ingestions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "bench_eval_name": { + "name": "bench_eval_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "bench_eval_url": { + "name": "bench_eval_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "model_stats_id": { + "name": "model_stats_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "variant": { + "name": "variant", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "task_source": { + "name": "task_source", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "n_total_trials": { + "name": "n_total_trials", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "n_attempts": { + "name": "n_attempts", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_score": { + "name": "total_score", + "type": "numeric(14, 6)", + "primaryKey": false, + "notNull": true + }, + "overall_score": { + "name": "overall_score", + "type": "numeric(12, 8)", + "primaryKey": false, + "notNull": true + }, + "n_errored": { + "name": "n_errored", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "avg_cost_microdollars": { + "name": "avg_cost_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "total_cost_microdollars": { + "name": "total_cost_microdollars", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "avg_input_tokens": { + "name": "avg_input_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_input_tokens": { + "name": "total_input_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "avg_output_tokens": { + "name": "avg_output_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_output_tokens": { + "name": "total_output_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "avg_cache_read_tokens": { + "name": "avg_cache_read_tokens", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "total_cache_read_tokens": { + "name": "total_cache_read_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "avg_execution_ms": { + "name": "avg_execution_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "promoted_at": { + "name": "promoted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "promoted_by_email": { + "name": "promoted_by_email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "promotion_note": { + "name": "promotion_note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_model_eval_ingestions_lookup": { + "name": "IDX_model_eval_ingestions_lookup", + "columns": [ + { + "expression": "provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "model", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "variant", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "task_source", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "promoted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_eval_ingestions_model_stats": { + "name": "IDX_model_eval_ingestions_model_stats", + "columns": [ + { + "expression": "model_stats_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_eval_ingestions_promoted_by_email_lower": { + "name": "IDX_model_eval_ingestions_promoted_by_email_lower", + "columns": [ + { + "expression": "LOWER(\"promoted_by_email\")", + "asc": true, + "isExpression": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "model_eval_ingestions_model_stats_id_model_stats_id_fk": { + "name": "model_eval_ingestions_model_stats_id_model_stats_id_fk", + "tableFrom": "model_eval_ingestions", + "tableTo": "model_stats", + "columnsFrom": [ + "model_stats_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "model_eval_ingestions_bench_eval_name_unique": { + "name": "model_eval_ingestions_bench_eval_name_unique", + "nullsNotDistinct": false, + "columns": [ + "bench_eval_name" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.model_experiment": { + "name": "model_experiment", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "public_model_id": { + "name": "public_model_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'draft'" + }, + "is_archived": { + "name": "is_archived", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_by_user_id": { + "name": "created_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "UQ_model_experiment_public_model_id_routing": { + "name": "UQ_model_experiment_public_model_id_routing", + "columns": [ + { + "expression": "public_model_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"model_experiment\".\"status\" IN ('active', 'paused')", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_experiment_status": { + "name": "IDX_model_experiment_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "model_experiment_created_by_user_id_kilocode_users_id_fk": { + "name": "model_experiment_created_by_user_id_kilocode_users_id_fk", + "tableFrom": "model_experiment", + "tableTo": "kilocode_users", + "columnsFrom": [ + "created_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "model_experiment_status_valid": { + "name": "model_experiment_status_valid", + "value": "\"model_experiment\".\"status\" IN ('draft', 'active', 'paused', 'completed')" + }, + "model_experiment_active_not_archived": { + "name": "model_experiment_active_not_archived", + "value": "\"model_experiment\".\"status\" <> 'active' OR \"model_experiment\".\"is_archived\" = false" + } + }, + "isRLSEnabled": false + }, + "public.model_experiment_request": { + "name": "model_experiment_request", + "schema": "", + "columns": { + "usage_id": { + "name": "usage_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "variant_version_id": { + "name": "variant_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "allocation_subject": { + "name": "allocation_subject", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "client_request_id": { + "name": "client_request_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "request_kind": { + "name": "request_kind", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "request_body_sha256": { + "name": "request_body_sha256", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "was_truncated": { + "name": "was_truncated", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_model_experiment_request_variant_version_created_at": { + "name": "IDX_model_experiment_request_variant_version_created_at", + "columns": [ + { + "expression": "variant_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_model_experiment_request_client_request_id": { + "name": "IDX_model_experiment_request_client_request_id", + "columns": [ + { + "expression": "client_request_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"model_experiment_request\".\"client_request_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "model_experiment_request_usage_id_microdollar_usage_id_fk": { + "name": "model_experiment_request_usage_id_microdollar_usage_id_fk", + "tableFrom": "model_experiment_request", + "tableTo": "microdollar_usage", + "columnsFrom": [ + "usage_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "model_experiment_request_variant_version_id_model_experiment_variant_version_id_fk": { + "name": "model_experiment_request_variant_version_id_model_experiment_variant_version_id_fk", + "tableFrom": "model_experiment_request", + "tableTo": "model_experiment_variant_version", + "columnsFrom": [ + "variant_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "model_experiment_request_usage_id_created_at_pk": { + "name": "model_experiment_request_usage_id_created_at_pk", + "columns": [ + "usage_id", + "created_at" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "model_experiment_request_allocation_subject_valid": { + "name": "model_experiment_request_allocation_subject_valid", + "value": "\"model_experiment_request\".\"allocation_subject\" IN ('user', 'machine', 'ip')" + }, + "model_experiment_request_request_kind_valid": { + "name": "model_experiment_request_request_kind_valid", + "value": "\"model_experiment_request\".\"request_kind\" IN ('chat_completions', 'messages', 'responses')" + }, + "model_experiment_request_request_body_sha256_format": { + "name": "model_experiment_request_request_body_sha256_format", + "value": "\"model_experiment_request\".\"request_body_sha256\" ~ '^[0-9a-f]{64}$' OR \"model_experiment_request\".\"request_body_sha256\" IN ('__failed__', '__deleted__')" + } + }, + "isRLSEnabled": false + }, + "public.model_experiment_variant": { + "name": "model_experiment_variant", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "experiment_id": { + "name": "experiment_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "label": { + "name": "label", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_model_experiment_variant_experiment_id": { + "name": "IDX_model_experiment_variant_experiment_id", + "columns": [ + { + "expression": "experiment_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "model_experiment_variant_experiment_id_model_experiment_id_fk": { + "name": "model_experiment_variant_experiment_id_model_experiment_id_fk", + "tableFrom": "model_experiment_variant", + "tableTo": "model_experiment", + "columnsFrom": [ + "experiment_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_model_experiment_variant_experiment_label": { + "name": "UQ_model_experiment_variant_experiment_label", + "nullsNotDistinct": false, + "columns": [ + "experiment_id", + "label" + ] + } + }, + "policies": {}, + "checkConstraints": { + "model_experiment_variant_weight_positive": { + "name": "model_experiment_variant_weight_positive", + "value": "\"model_experiment_variant\".\"weight\" > 0" + } + }, + "isRLSEnabled": false + }, + "public.model_experiment_variant_version": { + "name": "model_experiment_variant_version", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "variant_id": { + "name": "variant_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "upstream": { + "name": "upstream", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "encrypted_api_key": { + "name": "encrypted_api_key", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "effective_at": { + "name": "effective_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_model_experiment_variant_version_variant_effective": { + "name": "IDX_model_experiment_variant_version_variant_effective", + "columns": [ + { + "expression": "variant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "effective_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "model_experiment_variant_version_variant_id_model_experiment_variant_id_fk": { + "name": "model_experiment_variant_version_variant_id_model_experiment_variant_id_fk", + "tableFrom": "model_experiment_variant_version", + "tableTo": "model_experiment_variant", + "columnsFrom": [ + "variant_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "model_experiment_variant_version_created_by_kilocode_users_id_fk": { + "name": "model_experiment_variant_version_created_by_kilocode_users_id_fk", + "tableFrom": "model_experiment_variant_version", + "tableTo": "kilocode_users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.models_by_provider": { + "name": "models_by_provider", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "openrouter": { + "name": "openrouter", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "vercel": { + "name": "vercel", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organization_audit_logs": { + "name": "organization_audit_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "actor_id": { + "name": "actor_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_email": { + "name": "actor_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_name": { + "name": "actor_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_organization_audit_logs_organization_id": { + "name": "IDX_organization_audit_logs_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_audit_logs_action": { + "name": "IDX_organization_audit_logs_action", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_audit_logs_actor_id": { + "name": "IDX_organization_audit_logs_actor_id", + "columns": [ + { + "expression": "actor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_audit_logs_created_at": { + "name": "IDX_organization_audit_logs_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organization_invitations": { + "name": "organization_invitations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "accepted_at": { + "name": "accepted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_organization_invitations_token": { + "name": "UQ_organization_invitations_token", + "columns": [ + { + "expression": "token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_invitations_org_id": { + "name": "IDX_organization_invitations_org_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_invitations_email": { + "name": "IDX_organization_invitations_email", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_invitations_expires_at": { + "name": "IDX_organization_invitations_expires_at", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organization_membership_removals": { + "name": "organization_membership_removals", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "removed_at": { + "name": "removed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "removed_by": { + "name": "removed_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "previous_role": { + "name": "previous_role", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "IDX_org_membership_removals_org_id": { + "name": "IDX_org_membership_removals_org_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_org_membership_removals_user_id": { + "name": "IDX_org_membership_removals_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_org_membership_removals_org_user": { + "name": "UQ_org_membership_removals_org_user", + "nullsNotDistinct": false, + "columns": [ + "organization_id", + "kilo_user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organization_memberships": { + "name": "organization_memberships", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "joined_at": { + "name": "joined_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "invited_by": { + "name": "invited_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_organization_memberships_org_id": { + "name": "IDX_organization_memberships_org_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_memberships_user_id": { + "name": "IDX_organization_memberships_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_organization_memberships_org_user": { + "name": "UQ_organization_memberships_org_user", + "nullsNotDistinct": false, + "columns": [ + "organization_id", + "kilo_user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organization_seats_purchases": { + "name": "organization_seats_purchases", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subscription_stripe_id": { + "name": "subscription_stripe_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "seat_count": { + "name": "seat_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "amount_usd": { + "name": "amount_usd", + "type": "numeric", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "subscription_status": { + "name": "subscription_status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'active'" + }, + "idempotency_key": { + "name": "idempotency_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "starts_at": { + "name": "starts_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "billing_cycle": { + "name": "billing_cycle", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'monthly'" + } + }, + "indexes": { + "IDX_organization_seats_org_id": { + "name": "IDX_organization_seats_org_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_seats_expires_at": { + "name": "IDX_organization_seats_expires_at", + "columns": [ + { + "expression": "expires_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_seats_created_at": { + "name": "IDX_organization_seats_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_seats_updated_at": { + "name": "IDX_organization_seats_updated_at", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_seats_starts_at": { + "name": "IDX_organization_seats_starts_at", + "columns": [ + { + "expression": "starts_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_organization_seats_idempotency_key": { + "name": "UQ_organization_seats_idempotency_key", + "nullsNotDistinct": false, + "columns": [ + "idempotency_key" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organization_user_limits": { + "name": "organization_user_limits", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "limit_type": { + "name": "limit_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "microdollar_limit": { + "name": "microdollar_limit", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_organization_user_limits_org_id": { + "name": "IDX_organization_user_limits_org_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_user_limits_user_id": { + "name": "IDX_organization_user_limits_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_organization_user_limits_org_user": { + "name": "UQ_organization_user_limits_org_user", + "nullsNotDistinct": false, + "columns": [ + "organization_id", + "kilo_user_id", + "limit_type" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organization_user_usage": { + "name": "organization_user_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "usage_date": { + "name": "usage_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "limit_type": { + "name": "limit_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "microdollar_usage": { + "name": "microdollar_usage", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_organization_user_daily_usage_org_id": { + "name": "IDX_organization_user_daily_usage_org_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_organization_user_daily_usage_user_id": { + "name": "IDX_organization_user_daily_usage_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_organization_user_daily_usage_org_user_date": { + "name": "UQ_organization_user_daily_usage_org_user_date", + "nullsNotDistinct": false, + "columns": [ + "organization_id", + "kilo_user_id", + "limit_type", + "usage_date" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organizations": { + "name": "organizations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "microdollars_used": { + "name": "microdollars_used", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "microdollars_balance": { + "name": "microdollars_balance", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "total_microdollars_acquired": { + "name": "total_microdollars_acquired", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "default": "'0'" + }, + "next_credit_expiration_at": { + "name": "next_credit_expiration_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auto_top_up_enabled": { + "name": "auto_top_up_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "settings": { + "name": "settings", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "seat_count": { + "name": "seat_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "require_seats": { + "name": "require_seats", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_by_kilo_user_id": { + "name": "created_by_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "sso_domain": { + "name": "sso_domain", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'teams'" + }, + "free_trial_end_at": { + "name": "free_trial_end_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "company_domain": { + "name": "company_domain", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "IDX_organizations_sso_domain": { + "name": "IDX_organizations_sso_domain", + "columns": [ + { + "expression": "sso_domain", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "organizations_name_not_empty_check": { + "name": "organizations_name_not_empty_check", + "value": "length(trim(\"organizations\".\"name\")) > 0" + } + }, + "isRLSEnabled": false + }, + "public.organization_modes": { + "name": "organization_modes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "config": { + "name": "config", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + } + }, + "indexes": { + "IDX_organization_modes_organization_id": { + "name": "IDX_organization_modes_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_organization_modes_org_id_slug": { + "name": "UQ_organization_modes_org_id_slug", + "nullsNotDistinct": false, + "columns": [ + "organization_id", + "slug" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.payment_methods": { + "name": "payment_methods", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "stripe_fingerprint": { + "name": "stripe_fingerprint", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_id": { + "name": "stripe_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "last4": { + "name": "last4", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "brand": { + "name": "brand", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_line1": { + "name": "address_line1", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_line2": { + "name": "address_line2", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_city": { + "name": "address_city", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_state": { + "name": "address_state", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_zip": { + "name": "address_zip", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_country": { + "name": "address_country", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "three_d_secure_supported": { + "name": "three_d_secure_supported", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "funding": { + "name": "funding", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "regulated_status": { + "name": "regulated_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "address_line1_check_status": { + "name": "address_line1_check_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "postal_code_check_status": { + "name": "postal_code_check_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_forwarded_for": { + "name": "http_x_forwarded_for", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_city": { + "name": "http_x_vercel_ip_city", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_country": { + "name": "http_x_vercel_ip_country", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_latitude": { + "name": "http_x_vercel_ip_latitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_longitude": { + "name": "http_x_vercel_ip_longitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ja4_digest": { + "name": "http_x_vercel_ja4_digest", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "eligible_for_free_credits": { + "name": "eligible_for_free_credits", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "stripe_data": { + "name": "stripe_data", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "IDX_d7d7fb15569674aaadcfbc0428": { + "name": "IDX_d7d7fb15569674aaadcfbc0428", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_e1feb919d0ab8a36381d5d5138": { + "name": "IDX_e1feb919d0ab8a36381d5d5138", + "columns": [ + { + "expression": "stripe_fingerprint", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_payment_methods_organization_id": { + "name": "IDX_payment_methods_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_29df1b0403df5792c96bbbfdbe6": { + "name": "UQ_29df1b0403df5792c96bbbfdbe6", + "nullsNotDistinct": false, + "columns": [ + "user_id", + "stripe_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.pending_impact_sale_reversals": { + "name": "pending_impact_sale_reversals", + "schema": "", + "columns": { + "stripe_charge_id": { + "name": "stripe_charge_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "dispute_id": { + "name": "dispute_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "amount": { + "name": "amount", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_date": { + "name": "event_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "last_attempt_at": { + "name": "last_attempt_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "pending_impact_sale_reversals_attempt_count_non_negative_check": { + "name": "pending_impact_sale_reversals_attempt_count_non_negative_check", + "value": "\"pending_impact_sale_reversals\".\"attempt_count\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.platform_integrations": { + "name": "platform_integrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_user_id": { + "name": "created_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "integration_type": { + "name": "integration_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform_installation_id": { + "name": "platform_installation_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform_account_id": { + "name": "platform_account_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform_account_login": { + "name": "platform_account_login", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "permissions": { + "name": "permissions", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "scopes": { + "name": "scopes", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "repository_access": { + "name": "repository_access", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "repositories": { + "name": "repositories", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "repositories_synced_at": { + "name": "repositories_synced_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "auth_invalid_at": { + "name": "auth_invalid_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "auth_invalid_reason": { + "name": "auth_invalid_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "kilo_requester_user_id": { + "name": "kilo_requester_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform_requester_account_id": { + "name": "platform_requester_account_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "integration_status": { + "name": "integration_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "suspended_at": { + "name": "suspended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "suspended_by": { + "name": "suspended_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "github_app_type": { + "name": "github_app_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "default": "'standard'" + }, + "installed_at": { + "name": "installed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_platform_integrations_owned_by_org_platform_inst": { + "name": "UQ_platform_integrations_owned_by_org_platform_inst", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform_installation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"platform_integrations\".\"owned_by_organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_platform_integrations_owned_by_user_platform_inst": { + "name": "UQ_platform_integrations_owned_by_user_platform_inst", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform_installation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"platform_integrations\".\"owned_by_user_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_platform_integrations_slack_platform_inst": { + "name": "UQ_platform_integrations_slack_platform_inst", + "columns": [ + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform_installation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"platform_integrations\".\"platform\" = 'slack' AND \"platform_integrations\".\"platform_installation_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_platform_integrations_linear_platform_inst": { + "name": "UQ_platform_integrations_linear_platform_inst", + "columns": [ + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform_installation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"platform_integrations\".\"platform\" = 'linear' AND \"platform_integrations\".\"platform_installation_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_owned_by_org_id": { + "name": "IDX_platform_integrations_owned_by_org_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_owned_by_user_id": { + "name": "IDX_platform_integrations_owned_by_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_platform_inst_id": { + "name": "IDX_platform_integrations_platform_inst_id", + "columns": [ + { + "expression": "platform_installation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_platform": { + "name": "IDX_platform_integrations_platform", + "columns": [ + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_owned_by_org_platform": { + "name": "IDX_platform_integrations_owned_by_org_platform", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_owned_by_user_platform": { + "name": "IDX_platform_integrations_owned_by_user_platform", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_integration_status": { + "name": "IDX_platform_integrations_integration_status", + "columns": [ + { + "expression": "integration_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_kilo_requester": { + "name": "IDX_platform_integrations_kilo_requester", + "columns": [ + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "kilo_requester_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "integration_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_platform_integrations_platform_requester": { + "name": "IDX_platform_integrations_platform_requester", + "columns": [ + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "platform_requester_account_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "integration_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "platform_integrations_owned_by_organization_id_organizations_id_fk": { + "name": "platform_integrations_owned_by_organization_id_organizations_id_fk", + "tableFrom": "platform_integrations", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "platform_integrations_owned_by_user_id_kilocode_users_id_fk": { + "name": "platform_integrations_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "platform_integrations", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "platform_integrations_owner_check": { + "name": "platform_integrations_owner_check", + "value": "(\n (\"platform_integrations\".\"owned_by_user_id\" IS NOT NULL AND \"platform_integrations\".\"owned_by_organization_id\" IS NULL) OR\n (\"platform_integrations\".\"owned_by_user_id\" IS NULL AND \"platform_integrations\".\"owned_by_organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.referral_code_usages": { + "name": "referral_code_usages", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "referring_kilo_user_id": { + "name": "referring_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "redeeming_kilo_user_id": { + "name": "redeeming_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "amount_usd": { + "name": "amount_usd", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "paid_at": { + "name": "paid_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_referral_code_usages_redeeming_kilo_user_id": { + "name": "IDX_referral_code_usages_redeeming_kilo_user_id", + "columns": [ + { + "expression": "redeeming_kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_referral_code_usages_redeeming_user_id_code": { + "name": "UQ_referral_code_usages_redeeming_user_id_code", + "nullsNotDistinct": false, + "columns": [ + "redeeming_kilo_user_id", + "referring_kilo_user_id" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.referral_codes": { + "name": "referral_codes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "code": { + "name": "code", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "max_redemptions": { + "name": "max_redemptions", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 10 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_referral_codes_kilo_user_id": { + "name": "UQ_referral_codes_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_referral_codes_code": { + "name": "IDX_referral_codes_code", + "columns": [ + { + "expression": "code", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.security_advisor_check_catalog": { + "name": "security_advisor_check_catalog", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "check_id": { + "name": "check_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity": { + "name": "severity", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "explanation": { + "name": "explanation", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "risk": { + "name": "risk", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "security_advisor_check_catalog_check_id_unique": { + "name": "security_advisor_check_catalog_check_id_unique", + "nullsNotDistinct": false, + "columns": [ + "check_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "security_advisor_check_catalog_severity_check": { + "name": "security_advisor_check_catalog_severity_check", + "value": "\"security_advisor_check_catalog\".\"severity\" in ('critical', 'warn', 'info')" + } + }, + "isRLSEnabled": false + }, + "public.security_advisor_content": { + "name": "security_advisor_content", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "security_advisor_content_key_unique": { + "name": "security_advisor_content_key_unique", + "nullsNotDistinct": false, + "columns": [ + "key" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.security_advisor_kiloclaw_coverage": { + "name": "security_advisor_kiloclaw_coverage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "area": { + "name": "area", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "summary": { + "name": "summary", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "detail": { + "name": "detail", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "match_check_ids": { + "name": "match_check_ids", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "security_advisor_kiloclaw_coverage_area_unique": { + "name": "security_advisor_kiloclaw_coverage_area_unique", + "nullsNotDistinct": false, + "columns": [ + "area" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.security_advisor_scans": { + "name": "security_advisor_scans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "source_platform": { + "name": "source_platform", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_method": { + "name": "source_method", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "plugin_version": { + "name": "plugin_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "openclaw_version": { + "name": "openclaw_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "public_ip": { + "name": "public_ip", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "findings_critical": { + "name": "findings_critical", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "findings_warn": { + "name": "findings_warn", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "findings_info": { + "name": "findings_info", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_security_advisor_scans_user_created_at": { + "name": "idx_security_advisor_scans_user_created_at", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_advisor_scans_created_at": { + "name": "idx_security_advisor_scans_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_advisor_scans_platform": { + "name": "idx_security_advisor_scans_platform", + "columns": [ + { + "expression": "source_platform", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.security_agent_commands": { + "name": "security_agent_commands", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "command_type": { + "name": "command_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "origin": { + "name": "origin", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "finding_id": { + "name": "finding_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'accepted'" + }, + "result_code": { + "name": "result_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "last_error_redacted": { + "name": "last_error_redacted", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "accepted_at": { + "name": "accepted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_security_agent_commands_org_created": { + "name": "idx_security_agent_commands_org_created", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_agent_commands_user_created": { + "name": "idx_security_agent_commands_user_created", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_agent_commands_status_updated": { + "name": "idx_security_agent_commands_status_updated", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_agent_commands_finding_created": { + "name": "idx_security_agent_commands_finding_created", + "columns": [ + { + "expression": "finding_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": false, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "security_agent_commands_owned_by_organization_id_organizations_id_fk": { + "name": "security_agent_commands_owned_by_organization_id_organizations_id_fk", + "tableFrom": "security_agent_commands", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_agent_commands_owned_by_user_id_kilocode_users_id_fk": { + "name": "security_agent_commands_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "security_agent_commands", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_agent_commands_finding_id_security_findings_id_fk": { + "name": "security_agent_commands_finding_id_security_findings_id_fk", + "tableFrom": "security_agent_commands", + "tableTo": "security_findings", + "columnsFrom": [ + "finding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "security_agent_commands_owner_check": { + "name": "security_agent_commands_owner_check", + "value": "(\n (\"security_agent_commands\".\"owned_by_user_id\" IS NOT NULL AND \"security_agent_commands\".\"owned_by_organization_id\" IS NULL) OR\n (\"security_agent_commands\".\"owned_by_user_id\" IS NULL AND \"security_agent_commands\".\"owned_by_organization_id\" IS NOT NULL)\n )" + }, + "security_agent_commands_type_check": { + "name": "security_agent_commands_type_check", + "value": "\"security_agent_commands\".\"command_type\" IN ('sync', 'dismiss_finding', 'start_analysis')" + }, + "security_agent_commands_origin_check": { + "name": "security_agent_commands_origin_check", + "value": "\"security_agent_commands\".\"origin\" IN ('manual', 'dashboard_refresh', 'enable_initial_sync')" + }, + "security_agent_commands_status_check": { + "name": "security_agent_commands_status_check", + "value": "\"security_agent_commands\".\"status\" IN ('accepted', 'running', 'succeeded', 'failed', 'no_op')" + } + }, + "isRLSEnabled": false + }, + "public.security_agent_repository_sync_state": { + "name": "security_agent_repository_sync_state", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "last_attempted_at": { + "name": "last_attempted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_succeeded_at": { + "name": "last_succeeded_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_failure_code": { + "name": "last_failure_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_security_agent_repository_sync_state_org_repo": { + "name": "UQ_security_agent_repository_sync_state_org_repo", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"security_agent_repository_sync_state\".\"owned_by_organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_security_agent_repository_sync_state_user_repo": { + "name": "UQ_security_agent_repository_sync_state_user_repo", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"security_agent_repository_sync_state\".\"owned_by_user_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "security_agent_repository_sync_state_owned_by_organization_id_organizations_id_fk": { + "name": "security_agent_repository_sync_state_owned_by_organization_id_organizations_id_fk", + "tableFrom": "security_agent_repository_sync_state", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_agent_repository_sync_state_owned_by_user_id_kilocode_users_id_fk": { + "name": "security_agent_repository_sync_state_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "security_agent_repository_sync_state", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "security_agent_repository_sync_state_owner_check": { + "name": "security_agent_repository_sync_state_owner_check", + "value": "(\n (\"security_agent_repository_sync_state\".\"owned_by_user_id\" IS NOT NULL AND \"security_agent_repository_sync_state\".\"owned_by_organization_id\" IS NULL) OR\n (\"security_agent_repository_sync_state\".\"owned_by_user_id\" IS NULL AND \"security_agent_repository_sync_state\".\"owned_by_organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.security_analysis_owner_state": { + "name": "security_analysis_owner_state", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auto_analysis_enabled_at": { + "name": "auto_analysis_enabled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "blocked_until": { + "name": "blocked_until", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "block_reason": { + "name": "block_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "consecutive_actor_resolution_failures": { + "name": "consecutive_actor_resolution_failures", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "last_actor_resolution_failure_at": { + "name": "last_actor_resolution_failure_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_security_analysis_owner_state_org_owner": { + "name": "UQ_security_analysis_owner_state_org_owner", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"security_analysis_owner_state\".\"owned_by_organization_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_security_analysis_owner_state_user_owner": { + "name": "UQ_security_analysis_owner_state_user_owner", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"security_analysis_owner_state\".\"owned_by_user_id\" is not null", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "security_analysis_owner_state_owned_by_organization_id_organizations_id_fk": { + "name": "security_analysis_owner_state_owned_by_organization_id_organizations_id_fk", + "tableFrom": "security_analysis_owner_state", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_analysis_owner_state_owned_by_user_id_kilocode_users_id_fk": { + "name": "security_analysis_owner_state_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "security_analysis_owner_state", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "security_analysis_owner_state_owner_check": { + "name": "security_analysis_owner_state_owner_check", + "value": "(\n (\"security_analysis_owner_state\".\"owned_by_user_id\" IS NOT NULL AND \"security_analysis_owner_state\".\"owned_by_organization_id\" IS NULL) OR\n (\"security_analysis_owner_state\".\"owned_by_user_id\" IS NULL AND \"security_analysis_owner_state\".\"owned_by_organization_id\" IS NOT NULL)\n )" + }, + "security_analysis_owner_state_block_reason_check": { + "name": "security_analysis_owner_state_block_reason_check", + "value": "\"security_analysis_owner_state\".\"block_reason\" IS NULL OR \"security_analysis_owner_state\".\"block_reason\" IN ('INSUFFICIENT_CREDITS', 'ACTOR_RESOLUTION_FAILED', 'OPERATOR_PAUSE')" + } + }, + "isRLSEnabled": false + }, + "public.security_analysis_queue": { + "name": "security_analysis_queue", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "finding_id": { + "name": "finding_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "queue_status": { + "name": "queue_status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity_rank": { + "name": "severity_rank", + "type": "smallint", + "primaryKey": false, + "notNull": true + }, + "queued_at": { + "name": "queued_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "claimed_at": { + "name": "claimed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "claimed_by_job_id": { + "name": "claimed_by_job_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "claim_token": { + "name": "claim_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "reopen_requeue_count": { + "name": "reopen_requeue_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "next_retry_at": { + "name": "next_retry_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "failure_code": { + "name": "failure_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "last_error_redacted": { + "name": "last_error_redacted", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_security_analysis_queue_finding_id": { + "name": "UQ_security_analysis_queue_finding_id", + "columns": [ + { + "expression": "finding_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_analysis_queue_claim_path_org": { + "name": "idx_security_analysis_queue_claim_path_org", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "coalesce(\"next_retry_at\", '-infinity'::timestamptz)", + "asc": true, + "isExpression": true, + "nulls": "last" + }, + { + "expression": "severity_rank", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "queued_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_analysis_queue\".\"queue_status\" = 'queued'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_analysis_queue_claim_path_user": { + "name": "idx_security_analysis_queue_claim_path_user", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "coalesce(\"next_retry_at\", '-infinity'::timestamptz)", + "asc": true, + "isExpression": true, + "nulls": "last" + }, + { + "expression": "severity_rank", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "queued_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_analysis_queue\".\"queue_status\" = 'queued'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_analysis_queue_in_flight_org": { + "name": "idx_security_analysis_queue_in_flight_org", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "queue_status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "claimed_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_analysis_queue\".\"queue_status\" IN ('pending', 'running')", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_analysis_queue_in_flight_user": { + "name": "idx_security_analysis_queue_in_flight_user", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "queue_status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "claimed_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_analysis_queue\".\"queue_status\" IN ('pending', 'running')", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_analysis_queue_lag_dashboards": { + "name": "idx_security_analysis_queue_lag_dashboards", + "columns": [ + { + "expression": "queued_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_analysis_queue\".\"queue_status\" = 'queued'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_analysis_queue_pending_reconciliation": { + "name": "idx_security_analysis_queue_pending_reconciliation", + "columns": [ + { + "expression": "claimed_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_analysis_queue\".\"queue_status\" = 'pending'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_analysis_queue_running_reconciliation": { + "name": "idx_security_analysis_queue_running_reconciliation", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_analysis_queue\".\"queue_status\" = 'running'", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_analysis_queue_failure_trend": { + "name": "idx_security_analysis_queue_failure_trend", + "columns": [ + { + "expression": "failure_code", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_analysis_queue\".\"failure_code\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "security_analysis_queue_finding_id_security_findings_id_fk": { + "name": "security_analysis_queue_finding_id_security_findings_id_fk", + "tableFrom": "security_analysis_queue", + "tableTo": "security_findings", + "columnsFrom": [ + "finding_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_analysis_queue_owned_by_organization_id_organizations_id_fk": { + "name": "security_analysis_queue_owned_by_organization_id_organizations_id_fk", + "tableFrom": "security_analysis_queue", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_analysis_queue_owned_by_user_id_kilocode_users_id_fk": { + "name": "security_analysis_queue_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "security_analysis_queue", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "security_analysis_queue_owner_check": { + "name": "security_analysis_queue_owner_check", + "value": "(\n (\"security_analysis_queue\".\"owned_by_user_id\" IS NOT NULL AND \"security_analysis_queue\".\"owned_by_organization_id\" IS NULL) OR\n (\"security_analysis_queue\".\"owned_by_user_id\" IS NULL AND \"security_analysis_queue\".\"owned_by_organization_id\" IS NOT NULL)\n )" + }, + "security_analysis_queue_status_check": { + "name": "security_analysis_queue_status_check", + "value": "\"security_analysis_queue\".\"queue_status\" IN ('queued', 'pending', 'running', 'failed', 'completed')" + }, + "security_analysis_queue_claim_token_required_check": { + "name": "security_analysis_queue_claim_token_required_check", + "value": "\"security_analysis_queue\".\"queue_status\" NOT IN ('pending', 'running') OR \"security_analysis_queue\".\"claim_token\" IS NOT NULL" + }, + "security_analysis_queue_attempt_count_non_negative_check": { + "name": "security_analysis_queue_attempt_count_non_negative_check", + "value": "\"security_analysis_queue\".\"attempt_count\" >= 0" + }, + "security_analysis_queue_reopen_requeue_count_non_negative_check": { + "name": "security_analysis_queue_reopen_requeue_count_non_negative_check", + "value": "\"security_analysis_queue\".\"reopen_requeue_count\" >= 0" + }, + "security_analysis_queue_severity_rank_check": { + "name": "security_analysis_queue_severity_rank_check", + "value": "\"security_analysis_queue\".\"severity_rank\" IN (0, 1, 2, 3)" + }, + "security_analysis_queue_failure_code_check": { + "name": "security_analysis_queue_failure_code_check", + "value": "\"security_analysis_queue\".\"failure_code\" IS NULL OR \"security_analysis_queue\".\"failure_code\" IN (\n 'NETWORK_TIMEOUT',\n 'UPSTREAM_5XX',\n 'TEMP_TOKEN_FAILURE',\n 'START_CALL_AMBIGUOUS',\n 'REQUEUE_TEMPORARY_PRECONDITION',\n 'ACTOR_RESOLUTION_FAILED',\n 'GITHUB_TOKEN_UNAVAILABLE',\n 'INVALID_CONFIG',\n 'MISSING_OWNERSHIP',\n 'PERMISSION_DENIED_PERMANENT',\n 'UNSUPPORTED_SEVERITY',\n 'INSUFFICIENT_CREDITS',\n 'STATE_GUARD_REJECTED',\n 'SKIPPED_ALREADY_IN_PROGRESS',\n 'SKIPPED_NO_LONGER_ELIGIBLE',\n 'REOPEN_LOOP_GUARD',\n 'RUN_LOST'\n )" + } + }, + "isRLSEnabled": false + }, + "public.security_audit_log": { + "name": "security_audit_log", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_id": { + "name": "actor_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_email": { + "name": "actor_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_name": { + "name": "actor_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "resource_type": { + "name": "resource_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "resource_id": { + "name": "resource_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "before_state": { + "name": "before_state", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "after_state": { + "name": "after_state", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_security_audit_log_org_created": { + "name": "IDX_security_audit_log_org_created", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_security_audit_log_user_created": { + "name": "IDX_security_audit_log_user_created", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_security_audit_log_resource": { + "name": "IDX_security_audit_log_resource", + "columns": [ + { + "expression": "resource_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "resource_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_security_audit_log_actor": { + "name": "IDX_security_audit_log_actor", + "columns": [ + { + "expression": "actor_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_security_audit_log_action": { + "name": "IDX_security_audit_log_action", + "columns": [ + { + "expression": "action", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "security_audit_log_owned_by_organization_id_organizations_id_fk": { + "name": "security_audit_log_owned_by_organization_id_organizations_id_fk", + "tableFrom": "security_audit_log", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_audit_log_owned_by_user_id_kilocode_users_id_fk": { + "name": "security_audit_log_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "security_audit_log", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "security_audit_log_owner_check": { + "name": "security_audit_log_owner_check", + "value": "(\"security_audit_log\".\"owned_by_user_id\" IS NOT NULL AND \"security_audit_log\".\"owned_by_organization_id\" IS NULL) OR (\"security_audit_log\".\"owned_by_user_id\" IS NULL AND \"security_audit_log\".\"owned_by_organization_id\" IS NOT NULL)" + }, + "security_audit_log_action_check": { + "name": "security_audit_log_action_check", + "value": "\"security_audit_log\".\"action\" IN ('security.finding.created', 'security.finding.status_change', 'security.finding.dismissed', 'security.finding.auto_dismissed', 'security.finding.analysis_started', 'security.finding.analysis_completed', 'security.finding.deleted', 'security.config.enabled', 'security.config.disabled', 'security.config.updated', 'security.sync.triggered', 'security.sync.completed', 'security.audit_log.exported')" + } + }, + "isRLSEnabled": false + }, + "public.security_findings": { + "name": "security_findings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform_integration_id": { + "name": "platform_integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "repo_full_name": { + "name": "repo_full_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "source_id": { + "name": "source_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity": { + "name": "severity", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "ghsa_id": { + "name": "ghsa_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cve_id": { + "name": "cve_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "package_name": { + "name": "package_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "package_ecosystem": { + "name": "package_ecosystem", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "vulnerable_version_range": { + "name": "vulnerable_version_range", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "patched_version": { + "name": "patched_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "manifest_path": { + "name": "manifest_path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'open'" + }, + "ignored_reason": { + "name": "ignored_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "ignored_by": { + "name": "ignored_by", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "fixed_at": { + "name": "fixed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "sla_due_at": { + "name": "sla_due_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "dependabot_html_url": { + "name": "dependabot_html_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cwe_ids": { + "name": "cwe_ids", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "cvss_score": { + "name": "cvss_score", + "type": "numeric(3, 1)", + "primaryKey": false, + "notNull": false + }, + "dependency_scope": { + "name": "dependency_scope", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cli_session_id": { + "name": "cli_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "analysis_status": { + "name": "analysis_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "analysis_started_at": { + "name": "analysis_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "analysis_completed_at": { + "name": "analysis_completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "analysis_error": { + "name": "analysis_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "analysis": { + "name": "analysis", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "raw_data": { + "name": "raw_data", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "first_detected_at": { + "name": "first_detected_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "last_synced_at": { + "name": "last_synced_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_security_findings_org_id": { + "name": "idx_security_findings_org_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_user_id": { + "name": "idx_security_findings_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_repo": { + "name": "idx_security_findings_repo", + "columns": [ + { + "expression": "repo_full_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_severity": { + "name": "idx_security_findings_severity", + "columns": [ + { + "expression": "severity", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_status": { + "name": "idx_security_findings_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_package": { + "name": "idx_security_findings_package", + "columns": [ + { + "expression": "package_name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_sla_due_at": { + "name": "idx_security_findings_sla_due_at", + "columns": [ + { + "expression": "sla_due_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_session_id": { + "name": "idx_security_findings_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_cli_session_id": { + "name": "idx_security_findings_cli_session_id", + "columns": [ + { + "expression": "cli_session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_analysis_status": { + "name": "idx_security_findings_analysis_status", + "columns": [ + { + "expression": "analysis_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_org_analysis_in_flight": { + "name": "idx_security_findings_org_analysis_in_flight", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "analysis_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_findings\".\"analysis_status\" IN ('pending', 'running')", + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_security_findings_user_analysis_in_flight": { + "name": "idx_security_findings_user_analysis_in_flight", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "analysis_status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "where": "\"security_findings\".\"analysis_status\" IN ('pending', 'running')", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "security_findings_owned_by_organization_id_organizations_id_fk": { + "name": "security_findings_owned_by_organization_id_organizations_id_fk", + "tableFrom": "security_findings", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_findings_owned_by_user_id_kilocode_users_id_fk": { + "name": "security_findings_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "security_findings", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "security_findings_platform_integration_id_platform_integrations_id_fk": { + "name": "security_findings_platform_integration_id_platform_integrations_id_fk", + "tableFrom": "security_findings", + "tableTo": "platform_integrations", + "columnsFrom": [ + "platform_integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "uq_security_findings_source": { + "name": "uq_security_findings_source", + "nullsNotDistinct": false, + "columns": [ + "repo_full_name", + "source", + "source_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "security_findings_owner_check": { + "name": "security_findings_owner_check", + "value": "(\n (\"security_findings\".\"owned_by_user_id\" IS NOT NULL AND \"security_findings\".\"owned_by_organization_id\" IS NULL) OR\n (\"security_findings\".\"owned_by_user_id\" IS NULL AND \"security_findings\".\"owned_by_organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.shared_cli_sessions": { + "name": "shared_cli_sessions", + "schema": "", + "columns": { + "share_id": { + "name": "share_id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "session_id": { + "name": "session_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "shared_state": { + "name": "shared_state", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'public'" + }, + "api_conversation_history_blob_url": { + "name": "api_conversation_history_blob_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "task_metadata_blob_url": { + "name": "task_metadata_blob_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "ui_messages_blob_url": { + "name": "ui_messages_blob_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "git_state_blob_url": { + "name": "git_state_blob_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_shared_cli_sessions_session_id": { + "name": "IDX_shared_cli_sessions_session_id", + "columns": [ + { + "expression": "session_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_shared_cli_sessions_created_at": { + "name": "IDX_shared_cli_sessions_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "shared_cli_sessions_session_id_cli_sessions_session_id_fk": { + "name": "shared_cli_sessions_session_id_cli_sessions_session_id_fk", + "tableFrom": "shared_cli_sessions", + "tableTo": "cli_sessions", + "columnsFrom": [ + "session_id" + ], + "columnsTo": [ + "session_id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "shared_cli_sessions_kilo_user_id_kilocode_users_id_fk": { + "name": "shared_cli_sessions_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "shared_cli_sessions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "restrict", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "shared_cli_sessions_shared_state_check": { + "name": "shared_cli_sessions_shared_state_check", + "value": "\"shared_cli_sessions\".\"shared_state\" IN ('public', 'organization')" + } + }, + "isRLSEnabled": false + }, + "public.slack_bot_requests": { + "name": "slack_bot_requests", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform_integration_id": { + "name": "platform_integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "slack_team_id": { + "name": "slack_team_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_team_name": { + "name": "slack_team_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "slack_channel_id": { + "name": "slack_channel_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_user_id": { + "name": "slack_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_thread_ts": { + "name": "slack_thread_ts", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "event_type": { + "name": "event_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "user_message": { + "name": "user_message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "user_message_truncated": { + "name": "user_message_truncated", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "response_time_ms": { + "name": "response_time_ms", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "model_used": { + "name": "model_used", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "tool_calls_made": { + "name": "tool_calls_made", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "cloud_agent_session_id": { + "name": "cloud_agent_session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "idx_slack_bot_requests_created_at": { + "name": "idx_slack_bot_requests_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_slack_bot_requests_slack_team_id": { + "name": "idx_slack_bot_requests_slack_team_id", + "columns": [ + { + "expression": "slack_team_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_slack_bot_requests_owned_by_org_id": { + "name": "idx_slack_bot_requests_owned_by_org_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_slack_bot_requests_owned_by_user_id": { + "name": "idx_slack_bot_requests_owned_by_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_slack_bot_requests_status": { + "name": "idx_slack_bot_requests_status", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_slack_bot_requests_event_type": { + "name": "idx_slack_bot_requests_event_type", + "columns": [ + { + "expression": "event_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_slack_bot_requests_team_created": { + "name": "idx_slack_bot_requests_team_created", + "columns": [ + { + "expression": "slack_team_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_bot_requests_owned_by_organization_id_organizations_id_fk": { + "name": "slack_bot_requests_owned_by_organization_id_organizations_id_fk", + "tableFrom": "slack_bot_requests", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "slack_bot_requests_owned_by_user_id_kilocode_users_id_fk": { + "name": "slack_bot_requests_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "slack_bot_requests", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "slack_bot_requests_platform_integration_id_platform_integrations_id_fk": { + "name": "slack_bot_requests_platform_integration_id_platform_integrations_id_fk", + "tableFrom": "slack_bot_requests", + "tableTo": "platform_integrations", + "columnsFrom": [ + "platform_integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "slack_bot_requests_owner_check": { + "name": "slack_bot_requests_owner_check", + "value": "(\n (\"slack_bot_requests\".\"owned_by_user_id\" IS NOT NULL AND \"slack_bot_requests\".\"owned_by_organization_id\" IS NULL) OR\n (\"slack_bot_requests\".\"owned_by_user_id\" IS NULL AND \"slack_bot_requests\".\"owned_by_organization_id\" IS NOT NULL) OR\n (\"slack_bot_requests\".\"owned_by_user_id\" IS NULL AND \"slack_bot_requests\".\"owned_by_organization_id\" IS NULL)\n )" + } + }, + "isRLSEnabled": false + }, + "public.source_embeddings": { + "name": "source_embeddings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "embedding": { + "name": "embedding", + "type": "vector(1536)", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_hash": { + "name": "file_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "start_line": { + "name": "start_line", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "end_line": { + "name": "end_line", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "git_branch": { + "name": "git_branch", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'main'" + }, + "is_base_branch": { + "name": "is_base_branch", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_source_embeddings_organization_id": { + "name": "IDX_source_embeddings_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_source_embeddings_kilo_user_id": { + "name": "IDX_source_embeddings_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_source_embeddings_project_id": { + "name": "IDX_source_embeddings_project_id", + "columns": [ + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_source_embeddings_created_at": { + "name": "IDX_source_embeddings_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_source_embeddings_updated_at": { + "name": "IDX_source_embeddings_updated_at", + "columns": [ + { + "expression": "updated_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_source_embeddings_file_path_lower": { + "name": "IDX_source_embeddings_file_path_lower", + "columns": [ + { + "expression": "LOWER(\"file_path\")", + "asc": true, + "isExpression": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_source_embeddings_git_branch": { + "name": "IDX_source_embeddings_git_branch", + "columns": [ + { + "expression": "git_branch", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_source_embeddings_org_project_branch": { + "name": "IDX_source_embeddings_org_project_branch", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "project_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "git_branch", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "source_embeddings_organization_id_organizations_id_fk": { + "name": "source_embeddings_organization_id_organizations_id_fk", + "tableFrom": "source_embeddings", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "source_embeddings_kilo_user_id_kilocode_users_id_fk": { + "name": "source_embeddings_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "source_embeddings", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_source_embeddings_org_project_branch_file_lines": { + "name": "UQ_source_embeddings_org_project_branch_file_lines", + "nullsNotDistinct": false, + "columns": [ + "organization_id", + "project_id", + "git_branch", + "file_path", + "start_line", + "end_line" + ] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.stripe_dispute_actions": { + "name": "stripe_dispute_actions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "case_id": { + "name": "case_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "action_type": { + "name": "action_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_key": { + "name": "target_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'queued'" + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "next_retry_at": { + "name": "next_retry_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "claimed_at": { + "name": "claimed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_attempt_at": { + "name": "last_attempt_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "terminal_at": { + "name": "terminal_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "result_code": { + "name": "result_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "result_reference_id": { + "name": "result_reference_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "failure_context": { + "name": "failure_context", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_stripe_dispute_actions_case_id": { + "name": "IDX_stripe_dispute_actions_case_id", + "columns": [ + { + "expression": "case_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_dispute_actions_claim_path": { + "name": "IDX_stripe_dispute_actions_claim_path", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "coalesce(\"next_retry_at\", '-infinity'::timestamptz)", + "asc": true, + "isExpression": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "stripe_dispute_actions_case_id_stripe_dispute_cases_id_fk": { + "name": "stripe_dispute_actions_case_id_stripe_dispute_cases_id_fk", + "tableFrom": "stripe_dispute_actions", + "tableTo": "stripe_dispute_cases", + "columnsFrom": [ + "case_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "restrict", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_stripe_dispute_actions_case_type_target": { + "name": "UQ_stripe_dispute_actions_case_type_target", + "nullsNotDistinct": false, + "columns": [ + "case_id", + "action_type", + "target_key" + ] + } + }, + "policies": {}, + "checkConstraints": { + "stripe_dispute_actions_action_type_check": { + "name": "stripe_dispute_actions_action_type_check", + "value": "\"stripe_dispute_actions\".\"action_type\" IN ('stripe_acceptance', 'user_block', 'auto_top_up_disable', 'credit_balance_reset', 'subscription_cancellation', 'access_termination', 'kiloclaw_suspension')" + }, + "stripe_dispute_actions_status_check": { + "name": "stripe_dispute_actions_status_check", + "value": "\"stripe_dispute_actions\".\"status\" IN ('queued', 'processing', 'completed', 'failed', 'skipped')" + }, + "stripe_dispute_actions_attempt_count_non_negative_check": { + "name": "stripe_dispute_actions_attempt_count_non_negative_check", + "value": "\"stripe_dispute_actions\".\"attempt_count\" >= 0" + }, + "stripe_dispute_actions_target_key_not_empty_check": { + "name": "stripe_dispute_actions_target_key_not_empty_check", + "value": "length(\"stripe_dispute_actions\".\"target_key\") > 0" + } + }, + "isRLSEnabled": false + }, + "public.stripe_dispute_cases": { + "name": "stripe_dispute_cases", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "stripe_dispute_id": { + "name": "stripe_dispute_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_event_id": { + "name": "stripe_event_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_event_created_at": { + "name": "stripe_event_created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "stripe_charge_id": { + "name": "stripe_charge_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_payment_intent_id": { + "name": "stripe_payment_intent_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "amount_minor_units": { + "name": "amount_minor_units", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "dispute_reason": { + "name": "dispute_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_status": { + "name": "stripe_status", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owner_classification": { + "name": "owner_classification", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'needs_action'" + }, + "status_reason": { + "name": "status_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "failure_context": { + "name": "failure_context", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_created_at": { + "name": "stripe_created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "evidence_due_by": { + "name": "evidence_due_by", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "synced_at": { + "name": "synced_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "accepted_by_kilo_user_id": { + "name": "accepted_by_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "acceptance_started_at": { + "name": "acceptance_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "next_retry_at": { + "name": "next_retry_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "accepted_at": { + "name": "accepted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "enforcement_completed_at": { + "name": "enforcement_completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "review_required_at": { + "name": "review_required_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "closed_at": { + "name": "closed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_stripe_dispute_cases_event_id": { + "name": "IDX_stripe_dispute_cases_event_id", + "columns": [ + { + "expression": "stripe_event_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_dispute_cases_charge_id": { + "name": "IDX_stripe_dispute_cases_charge_id", + "columns": [ + { + "expression": "stripe_charge_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_dispute_cases_payment_intent_id": { + "name": "IDX_stripe_dispute_cases_payment_intent_id", + "columns": [ + { + "expression": "stripe_payment_intent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_dispute_cases_customer_id": { + "name": "IDX_stripe_dispute_cases_customer_id", + "columns": [ + { + "expression": "stripe_customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_dispute_cases_kilo_user_id": { + "name": "IDX_stripe_dispute_cases_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_dispute_cases_organization_id": { + "name": "IDX_stripe_dispute_cases_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_dispute_cases_status_due_by": { + "name": "IDX_stripe_dispute_cases_status_due_by", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "evidence_due_by", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "stripe_created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "stripe_dispute_cases_kilo_user_id_kilocode_users_id_fk": { + "name": "stripe_dispute_cases_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "stripe_dispute_cases", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "stripe_dispute_cases_organization_id_organizations_id_fk": { + "name": "stripe_dispute_cases_organization_id_organizations_id_fk", + "tableFrom": "stripe_dispute_cases", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "stripe_dispute_cases_accepted_by_kilo_user_id_kilocode_users_id_fk": { + "name": "stripe_dispute_cases_accepted_by_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "stripe_dispute_cases", + "tableTo": "kilocode_users", + "columnsFrom": [ + "accepted_by_kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_stripe_dispute_cases_dispute_id": { + "name": "UQ_stripe_dispute_cases_dispute_id", + "nullsNotDistinct": false, + "columns": [ + "stripe_dispute_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "stripe_dispute_cases_owner_classification_check": { + "name": "stripe_dispute_cases_owner_classification_check", + "value": "\"stripe_dispute_cases\".\"owner_classification\" IN ('personal', 'organization', 'ambiguous', 'unmatched')" + }, + "stripe_dispute_cases_status_check": { + "name": "stripe_dispute_cases_status_check", + "value": "\"stripe_dispute_cases\".\"status\" IN ('needs_action', 'processing', 'accepted', 'acceptance_failed', 'enforcement_failed', 'review_required', 'closed')" + }, + "stripe_dispute_cases_amount_minor_units_non_negative_check": { + "name": "stripe_dispute_cases_amount_minor_units_non_negative_check", + "value": "\"stripe_dispute_cases\".\"amount_minor_units\" IS NULL OR \"stripe_dispute_cases\".\"amount_minor_units\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.stripe_early_fraud_warning_actions": { + "name": "stripe_early_fraud_warning_actions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "case_id": { + "name": "case_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "action_type": { + "name": "action_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_key": { + "name": "target_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'queued'" + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "next_retry_at": { + "name": "next_retry_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "claimed_at": { + "name": "claimed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_attempt_at": { + "name": "last_attempt_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "terminal_at": { + "name": "terminal_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "result_code": { + "name": "result_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "result_reference_id": { + "name": "result_reference_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "failure_context": { + "name": "failure_context", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_stripe_early_fraud_warning_actions_case_id": { + "name": "IDX_stripe_early_fraud_warning_actions_case_id", + "columns": [ + { + "expression": "case_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_early_fraud_warning_actions_claim_path": { + "name": "IDX_stripe_early_fraud_warning_actions_claim_path", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "coalesce(\"next_retry_at\", '-infinity'::timestamptz)", + "asc": true, + "isExpression": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "stripe_early_fraud_warning_actions_case_id_stripe_early_fraud_warning_cases_id_fk": { + "name": "stripe_early_fraud_warning_actions_case_id_stripe_early_fraud_warning_cases_id_fk", + "tableFrom": "stripe_early_fraud_warning_actions", + "tableTo": "stripe_early_fraud_warning_cases", + "columnsFrom": [ + "case_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "restrict", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_stripe_early_fraud_warning_actions_case_type_target": { + "name": "UQ_stripe_early_fraud_warning_actions_case_type_target", + "nullsNotDistinct": false, + "columns": [ + "case_id", + "action_type", + "target_key" + ] + } + }, + "policies": {}, + "checkConstraints": { + "stripe_early_fraud_warning_actions_action_type_check": { + "name": "stripe_early_fraud_warning_actions_action_type_check", + "value": "\"stripe_early_fraud_warning_actions\".\"action_type\" IN ('containment', 'refund', 'payment_value_clawback', 'subscription_termination', 'access_termination', 'kiloclaw_suspension', 'affiliate_payout_reversal', 'referral_reward_reversal', 'user_notice')" + }, + "stripe_early_fraud_warning_actions_status_check": { + "name": "stripe_early_fraud_warning_actions_status_check", + "value": "\"stripe_early_fraud_warning_actions\".\"status\" IN ('queued', 'processing', 'completed', 'failed', 'review_required', 'dismissed')" + }, + "stripe_early_fraud_warning_actions_attempt_count_non_negative_check": { + "name": "stripe_early_fraud_warning_actions_attempt_count_non_negative_check", + "value": "\"stripe_early_fraud_warning_actions\".\"attempt_count\" >= 0" + }, + "stripe_early_fraud_warning_actions_target_key_not_empty_check": { + "name": "stripe_early_fraud_warning_actions_target_key_not_empty_check", + "value": "length(\"stripe_early_fraud_warning_actions\".\"target_key\") > 0" + } + }, + "isRLSEnabled": false + }, + "public.stripe_early_fraud_warning_cases": { + "name": "stripe_early_fraud_warning_cases", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "stripe_early_fraud_warning_id": { + "name": "stripe_early_fraud_warning_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_event_id": { + "name": "stripe_event_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "stripe_charge_id": { + "name": "stripe_charge_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_payment_intent_id": { + "name": "stripe_payment_intent_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "amount_minor_units": { + "name": "amount_minor_units", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "owner_classification": { + "name": "owner_classification", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'queued'" + }, + "reason": { + "name": "reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "failure_context": { + "name": "failure_context", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "warning_created_at": { + "name": "warning_created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "contained_at": { + "name": "contained_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "processing_started_at": { + "name": "processing_started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "review_required_at": { + "name": "review_required_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "remediated_at": { + "name": "remediated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "dismissed_at": { + "name": "dismissed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_stripe_early_fraud_warning_cases_event_id": { + "name": "IDX_stripe_early_fraud_warning_cases_event_id", + "columns": [ + { + "expression": "stripe_event_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_early_fraud_warning_cases_charge_id": { + "name": "IDX_stripe_early_fraud_warning_cases_charge_id", + "columns": [ + { + "expression": "stripe_charge_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_early_fraud_warning_cases_payment_intent_id": { + "name": "IDX_stripe_early_fraud_warning_cases_payment_intent_id", + "columns": [ + { + "expression": "stripe_payment_intent_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_early_fraud_warning_cases_customer_id": { + "name": "IDX_stripe_early_fraud_warning_cases_customer_id", + "columns": [ + { + "expression": "stripe_customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_early_fraud_warning_cases_kilo_user_id": { + "name": "IDX_stripe_early_fraud_warning_cases_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_early_fraud_warning_cases_organization_id": { + "name": "IDX_stripe_early_fraud_warning_cases_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_stripe_early_fraud_warning_cases_status_created_at": { + "name": "IDX_stripe_early_fraud_warning_cases_status_created_at", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "stripe_early_fraud_warning_cases_kilo_user_id_kilocode_users_id_fk": { + "name": "stripe_early_fraud_warning_cases_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "stripe_early_fraud_warning_cases", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + }, + "stripe_early_fraud_warning_cases_organization_id_organizations_id_fk": { + "name": "stripe_early_fraud_warning_cases_organization_id_organizations_id_fk", + "tableFrom": "stripe_early_fraud_warning_cases", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_stripe_early_fraud_warning_cases_warning_id": { + "name": "UQ_stripe_early_fraud_warning_cases_warning_id", + "nullsNotDistinct": false, + "columns": [ + "stripe_early_fraud_warning_id" + ] + } + }, + "policies": {}, + "checkConstraints": { + "stripe_early_fraud_warning_cases_owner_classification_check": { + "name": "stripe_early_fraud_warning_cases_owner_classification_check", + "value": "\"stripe_early_fraud_warning_cases\".\"owner_classification\" IN ('personal', 'organization', 'ambiguous', 'unmatched')" + }, + "stripe_early_fraud_warning_cases_status_check": { + "name": "stripe_early_fraud_warning_cases_status_check", + "value": "\"stripe_early_fraud_warning_cases\".\"status\" IN ('queued', 'contained', 'processing', 'completed', 'review_required', 'failed', 'remediated', 'dismissed')" + }, + "stripe_early_fraud_warning_cases_amount_minor_units_non_negative_check": { + "name": "stripe_early_fraud_warning_cases_amount_minor_units_non_negative_check", + "value": "\"stripe_early_fraud_warning_cases\".\"amount_minor_units\" IS NULL OR \"stripe_early_fraud_warning_cases\".\"amount_minor_units\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.stytch_fingerprints": { + "name": "stytch_fingerprints", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "visitor_fingerprint": { + "name": "visitor_fingerprint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "browser_fingerprint": { + "name": "browser_fingerprint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "browser_id": { + "name": "browser_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "hardware_fingerprint": { + "name": "hardware_fingerprint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "network_fingerprint": { + "name": "network_fingerprint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "visitor_id": { + "name": "visitor_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "verdict_action": { + "name": "verdict_action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "detected_device_type": { + "name": "detected_device_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "is_authentic_device": { + "name": "is_authentic_device", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "reasons": { + "name": "reasons", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{\"\"}'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "status_code": { + "name": "status_code", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "fingerprint_data": { + "name": "fingerprint_data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "kilo_free_tier_allowed": { + "name": "kilo_free_tier_allowed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "http_x_forwarded_for": { + "name": "http_x_forwarded_for", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_city": { + "name": "http_x_vercel_ip_city", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_country": { + "name": "http_x_vercel_ip_country", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_latitude": { + "name": "http_x_vercel_ip_latitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_longitude": { + "name": "http_x_vercel_ip_longitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ja4_digest": { + "name": "http_x_vercel_ja4_digest", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_user_agent": { + "name": "http_user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_hardware_fingerprint": { + "name": "idx_hardware_fingerprint", + "columns": [ + { + "expression": "hardware_fingerprint", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_kilo_user_id": { + "name": "idx_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_stytch_fingerprints_reasons_gin": { + "name": "idx_stytch_fingerprints_reasons_gin", + "columns": [ + { + "expression": "reasons", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "gin", + "with": {} + }, + "idx_verdict_action": { + "name": "idx_verdict_action", + "columns": [ + { + "expression": "verdict_action", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_visitor_fingerprint": { + "name": "idx_visitor_fingerprint", + "columns": [ + { + "expression": "visitor_fingerprint", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.system_prompt_prefix": { + "name": "system_prompt_prefix", + "schema": "", + "columns": { + "system_prompt_prefix_id": { + "name": "system_prompt_prefix_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "system_prompt_prefix": { + "name": "system_prompt_prefix", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_system_prompt_prefix": { + "name": "UQ_system_prompt_prefix", + "columns": [ + { + "expression": "system_prompt_prefix", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.transactional_email_log": { + "name": "transactional_email_log", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "email_type": { + "name": "email_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "idempotency_key": { + "name": "idempotency_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "sent_at": { + "name": "sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_transactional_email_log_type_idempotency_key": { + "name": "UQ_transactional_email_log_type_idempotency_key", + "columns": [ + { + "expression": "email_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "idempotency_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_transactional_email_log_user_id": { + "name": "IDX_transactional_email_log_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_transactional_email_log_organization_id": { + "name": "IDX_transactional_email_log_organization_id", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "transactional_email_log_user_id_kilocode_users_id_fk": { + "name": "transactional_email_log_user_id_kilocode_users_id_fk", + "tableFrom": "transactional_email_log", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "transactional_email_log_organization_id_organizations_id_fk": { + "name": "transactional_email_log_organization_id_organizations_id_fk", + "tableFrom": "transactional_email_log", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "CHK_transactional_email_log_owner": { + "name": "CHK_transactional_email_log_owner", + "value": "\"transactional_email_log\".\"user_id\" IS NOT NULL OR \"transactional_email_log\".\"organization_id\" IS NOT NULL" + } + }, + "isRLSEnabled": false + }, + "public.user_admin_notes": { + "name": "user_admin_notes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "note_content": { + "name": "note_content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "admin_kilo_user_id": { + "name": "admin_kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_34517df0b385234babc38fe81b": { + "name": "IDX_34517df0b385234babc38fe81b", + "columns": [ + { + "expression": "admin_kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_ccbde98c4c14046daa5682ec4f": { + "name": "IDX_ccbde98c4c14046daa5682ec4f", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_d0270eb24ef6442d65a0b7853c": { + "name": "IDX_d0270eb24ef6442d65a0b7853c", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.user_affiliate_attributions": { + "name": "user_affiliate_attributions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "tracking_id": { + "name": "tracking_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_user_affiliate_attributions_user_id": { + "name": "IDX_user_affiliate_attributions_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "user_affiliate_attributions_user_id_kilocode_users_id_fk": { + "name": "user_affiliate_attributions_user_id_kilocode_users_id_fk", + "tableFrom": "user_affiliate_attributions", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_user_affiliate_attributions_user_provider": { + "name": "UQ_user_affiliate_attributions_user_provider", + "nullsNotDistinct": false, + "columns": [ + "user_id", + "provider" + ] + } + }, + "policies": {}, + "checkConstraints": { + "user_affiliate_attributions_provider_check": { + "name": "user_affiliate_attributions_provider_check", + "value": "\"user_affiliate_attributions\".\"provider\" IN ('impact')" + } + }, + "isRLSEnabled": false + }, + "public.user_affiliate_events": { + "name": "user_affiliate_events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_type": { + "name": "event_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "dedupe_key": { + "name": "dedupe_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "parent_event_id": { + "name": "parent_event_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "delivery_state": { + "name": "delivery_state", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'queued'" + }, + "payload_json": { + "name": "payload_json", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "stripe_charge_id": { + "name": "stripe_charge_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "impact_action_id": { + "name": "impact_action_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "impact_submission_uri": { + "name": "impact_submission_uri", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "attempt_count": { + "name": "attempt_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "next_retry_at": { + "name": "next_retry_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "claimed_at": { + "name": "claimed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_user_affiliate_events_claim_path": { + "name": "IDX_user_affiliate_events_claim_path", + "columns": [ + { + "expression": "delivery_state", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "coalesce(\"next_retry_at\", '-infinity'::timestamptz)", + "asc": true, + "isExpression": true, + "nulls": "last" + }, + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_affiliate_events_parent_event_id": { + "name": "IDX_user_affiliate_events_parent_event_id", + "columns": [ + { + "expression": "parent_event_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_affiliate_events_provider_event_type_charge": { + "name": "IDX_user_affiliate_events_provider_event_type_charge", + "columns": [ + { + "expression": "provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "event_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "stripe_charge_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "user_affiliate_events_user_id_kilocode_users_id_fk": { + "name": "user_affiliate_events_user_id_kilocode_users_id_fk", + "tableFrom": "user_affiliate_events", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + }, + "user_affiliate_events_parent_event_id_fk": { + "name": "user_affiliate_events_parent_event_id_fk", + "tableFrom": "user_affiliate_events", + "tableTo": "user_affiliate_events", + "columnsFrom": [ + "parent_event_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_user_affiliate_events_dedupe_key": { + "name": "UQ_user_affiliate_events_dedupe_key", + "nullsNotDistinct": false, + "columns": [ + "dedupe_key" + ] + } + }, + "policies": {}, + "checkConstraints": { + "user_affiliate_events_provider_check": { + "name": "user_affiliate_events_provider_check", + "value": "\"user_affiliate_events\".\"provider\" IN ('impact')" + }, + "user_affiliate_events_event_type_check": { + "name": "user_affiliate_events_event_type_check", + "value": "\"user_affiliate_events\".\"event_type\" IN ('signup', 'trial_start', 'trial_end', 'sale', 'sale_reversal')" + }, + "user_affiliate_events_delivery_state_check": { + "name": "user_affiliate_events_delivery_state_check", + "value": "\"user_affiliate_events\".\"delivery_state\" IN ('queued', 'blocked', 'sending', 'delivered', 'failed')" + }, + "user_affiliate_events_attempt_count_non_negative_check": { + "name": "user_affiliate_events_attempt_count_non_negative_check", + "value": "\"user_affiliate_events\".\"attempt_count\" >= 0" + } + }, + "isRLSEnabled": false + }, + "public.user_auth_provider": { + "name": "user_auth_provider", + "schema": "", + "columns": { + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "avatar_url": { + "name": "avatar_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "display_name": { + "name": "display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "hosted_domain": { + "name": "hosted_domain", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_user_auth_provider_kilo_user_id": { + "name": "IDX_user_auth_provider_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_auth_provider_hosted_domain": { + "name": "IDX_user_auth_provider_hosted_domain", + "columns": [ + { + "expression": "hosted_domain", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_auth_provider_provider_provider_account_id_pk": { + "name": "user_auth_provider_provider_provider_account_id_pk", + "columns": [ + "provider", + "provider_account_id" + ] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.user_feedback": { + "name": "user_feedback", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "feedback_text": { + "name": "feedback_text", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "feedback_for": { + "name": "feedback_for", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'unknown'" + }, + "feedback_batch": { + "name": "feedback_batch", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'unknown'" + }, + "context_json": { + "name": "context_json", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'::jsonb" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_user_feedback_created_at": { + "name": "IDX_user_feedback_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_feedback_kilo_user_id": { + "name": "IDX_user_feedback_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_feedback_feedback_for": { + "name": "IDX_user_feedback_feedback_for", + "columns": [ + { + "expression": "feedback_for", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_feedback_feedback_batch": { + "name": "IDX_user_feedback_feedback_batch", + "columns": [ + { + "expression": "feedback_batch", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_feedback_source": { + "name": "IDX_user_feedback_source", + "columns": [ + { + "expression": "source", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "user_feedback_kilo_user_id_kilocode_users_id_fk": { + "name": "user_feedback_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "user_feedback", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.user_github_app_tokens": { + "name": "user_github_app_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_app_type": { + "name": "github_app_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'standard'" + }, + "github_user_id": { + "name": "github_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "github_login": { + "name": "github_login", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token_encrypted": { + "name": "access_token_encrypted", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token_expires_at": { + "name": "access_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "refresh_token_encrypted": { + "name": "refresh_token_encrypted", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token_expires_at": { + "name": "refresh_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "credential_version": { + "name": "credential_version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "revoked_at": { + "name": "revoked_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "revocation_reason": { + "name": "revocation_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_user_github_app_tokens_user_app": { + "name": "UQ_user_github_app_tokens_user_app", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "github_app_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_user_github_app_tokens_github_user_app": { + "name": "UQ_user_github_app_tokens_github_user_app", + "columns": [ + { + "expression": "github_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "github_app_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "user_github_app_tokens_kilo_user_id_kilocode_users_id_fk": { + "name": "user_github_app_tokens_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "user_github_app_tokens", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "user_github_app_tokens_app_type_check": { + "name": "user_github_app_tokens_app_type_check", + "value": "\"user_github_app_tokens\".\"github_app_type\" IN ('standard', 'lite')" + } + }, + "isRLSEnabled": false + }, + "public.user_period_cache": { + "name": "user_period_cache", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "cache_type": { + "name": "cache_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "period_type": { + "name": "period_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "period_key": { + "name": "period_key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "computed_at": { + "name": "computed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "version": { + "name": "version", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 1 + }, + "shared_url_token": { + "name": "shared_url_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "shared_at": { + "name": "shared_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "IDX_user_period_cache_kilo_user_id": { + "name": "IDX_user_period_cache_kilo_user_id", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_user_period_cache": { + "name": "UQ_user_period_cache", + "columns": [ + { + "expression": "kilo_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "cache_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "period_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "period_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_period_cache_lookup": { + "name": "IDX_user_period_cache_lookup", + "columns": [ + { + "expression": "cache_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "period_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "period_key", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "UQ_user_period_cache_share_token": { + "name": "UQ_user_period_cache_share_token", + "columns": [ + { + "expression": "shared_url_token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"user_period_cache\".\"shared_url_token\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "user_period_cache_kilo_user_id_kilocode_users_id_fk": { + "name": "user_period_cache_kilo_user_id_kilocode_users_id_fk", + "tableFrom": "user_period_cache", + "tableTo": "kilocode_users", + "columnsFrom": [ + "kilo_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": { + "user_period_cache_period_type_check": { + "name": "user_period_cache_period_type_check", + "value": "\"user_period_cache\".\"period_type\" IN ('year', 'quarter', 'month', 'week', 'custom')" + } + }, + "isRLSEnabled": false + }, + "public.user_push_tokens": { + "name": "user_push_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "UQ_user_push_tokens_token": { + "name": "UQ_user_push_tokens_token", + "columns": [ + { + "expression": "token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_user_push_tokens_user_id": { + "name": "IDX_user_push_tokens_user_id", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "user_push_tokens_user_id_kilocode_users_id_fk": { + "name": "user_push_tokens_user_id_kilocode_users_id_fk", + "tableFrom": "user_push_tokens", + "tableTo": "kilocode_users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vercel_ip_city": { + "name": "vercel_ip_city", + "schema": "", + "columns": { + "vercel_ip_city_id": { + "name": "vercel_ip_city_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vercel_ip_city": { + "name": "vercel_ip_city", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_vercel_ip_city": { + "name": "UQ_vercel_ip_city", + "columns": [ + { + "expression": "vercel_ip_city", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.vercel_ip_country": { + "name": "vercel_ip_country", + "schema": "", + "columns": { + "vercel_ip_country_id": { + "name": "vercel_ip_country_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "vercel_ip_country": { + "name": "vercel_ip_country", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "UQ_vercel_ip_country": { + "name": "UQ_vercel_ip_country", + "columns": [ + { + "expression": "vercel_ip_country", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.webhook_events": { + "name": "webhook_events", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "pg_catalog.gen_random_uuid()" + }, + "owned_by_organization_id": { + "name": "owned_by_organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "owned_by_user_id": { + "name": "owned_by_user_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "platform": { + "name": "platform", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_type": { + "name": "event_type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_action": { + "name": "event_action", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "payload": { + "name": "payload", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "headers": { + "name": "headers", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "processed": { + "name": "processed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "processed_at": { + "name": "processed_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "handlers_triggered": { + "name": "handlers_triggered", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'" + }, + "errors": { + "name": "errors", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "event_signature": { + "name": "event_signature", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "IDX_webhook_events_owned_by_org_id": { + "name": "IDX_webhook_events_owned_by_org_id", + "columns": [ + { + "expression": "owned_by_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_webhook_events_owned_by_user_id": { + "name": "IDX_webhook_events_owned_by_user_id", + "columns": [ + { + "expression": "owned_by_user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_webhook_events_platform": { + "name": "IDX_webhook_events_platform", + "columns": [ + { + "expression": "platform", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_webhook_events_event_type": { + "name": "IDX_webhook_events_event_type", + "columns": [ + { + "expression": "event_type", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "IDX_webhook_events_created_at": { + "name": "IDX_webhook_events_created_at", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_events_owned_by_organization_id_organizations_id_fk": { + "name": "webhook_events_owned_by_organization_id_organizations_id_fk", + "tableFrom": "webhook_events", + "tableTo": "organizations", + "columnsFrom": [ + "owned_by_organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_events_owned_by_user_id_kilocode_users_id_fk": { + "name": "webhook_events_owned_by_user_id_kilocode_users_id_fk", + "tableFrom": "webhook_events", + "tableTo": "kilocode_users", + "columnsFrom": [ + "owned_by_user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "UQ_webhook_events_signature": { + "name": "UQ_webhook_events_signature", + "nullsNotDistinct": false, + "columns": [ + "event_signature" + ] + } + }, + "policies": {}, + "checkConstraints": { + "webhook_events_owner_check": { + "name": "webhook_events_owner_check", + "value": "(\n (\"webhook_events\".\"owned_by_user_id\" IS NOT NULL AND \"webhook_events\".\"owned_by_organization_id\" IS NULL) OR\n (\"webhook_events\".\"owned_by_user_id\" IS NULL AND \"webhook_events\".\"owned_by_organization_id\" IS NOT NULL)\n )" + } + }, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": { + "public.microdollar_usage_view": { + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "kilo_user_id": { + "name": "kilo_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message_id": { + "name": "message_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cost": { + "name": "cost", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "input_tokens": { + "name": "input_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "output_tokens": { + "name": "output_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "cache_write_tokens": { + "name": "cache_write_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "cache_hit_tokens": { + "name": "cache_hit_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "http_x_forwarded_for": { + "name": "http_x_forwarded_for", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_city": { + "name": "http_x_vercel_ip_city", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_country": { + "name": "http_x_vercel_ip_country", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_latitude": { + "name": "http_x_vercel_ip_latitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ip_longitude": { + "name": "http_x_vercel_ip_longitude", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "http_x_vercel_ja4_digest": { + "name": "http_x_vercel_ja4_digest", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "model": { + "name": "model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "requested_model": { + "name": "requested_model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_prompt_prefix": { + "name": "user_prompt_prefix", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "system_prompt_prefix": { + "name": "system_prompt_prefix", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "system_prompt_length": { + "name": "system_prompt_length", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "http_user_agent": { + "name": "http_user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "cache_discount": { + "name": "cache_discount", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "max_tokens": { + "name": "max_tokens", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "has_middle_out_transform": { + "name": "has_middle_out_transform", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "has_error": { + "name": "has_error", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "abuse_classification": { + "name": "abuse_classification", + "type": "smallint", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "inference_provider": { + "name": "inference_provider", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "project_id": { + "name": "project_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status_code": { + "name": "status_code", + "type": "smallint", + "primaryKey": false, + "notNull": false + }, + "upstream_id": { + "name": "upstream_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "finish_reason": { + "name": "finish_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "latency": { + "name": "latency", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "moderation_latency": { + "name": "moderation_latency", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "generation_time": { + "name": "generation_time", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "is_byok": { + "name": "is_byok", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "is_user_byok": { + "name": "is_user_byok", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "streamed": { + "name": "streamed", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "cancelled": { + "name": "cancelled", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "editor_name": { + "name": "editor_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_kind": { + "name": "api_kind", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "has_tools": { + "name": "has_tools", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "machine_id": { + "name": "machine_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "feature": { + "name": "feature", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "session_id": { + "name": "session_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "mode": { + "name": "mode", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auto_model": { + "name": "auto_model", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "market_cost": { + "name": "market_cost", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "is_free": { + "name": "is_free", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "abuse_delay": { + "name": "abuse_delay", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "abuse_downgraded_from": { + "name": "abuse_downgraded_from", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "definition": "\n SELECT\n mu.id,\n mu.kilo_user_id,\n meta.message_id,\n mu.cost,\n mu.input_tokens,\n mu.output_tokens,\n mu.cache_write_tokens,\n mu.cache_hit_tokens,\n mu.created_at,\n ip.http_ip AS http_x_forwarded_for,\n city.vercel_ip_city AS http_x_vercel_ip_city,\n country.vercel_ip_country AS http_x_vercel_ip_country,\n meta.vercel_ip_latitude AS http_x_vercel_ip_latitude,\n meta.vercel_ip_longitude AS http_x_vercel_ip_longitude,\n ja4.ja4_digest AS http_x_vercel_ja4_digest,\n mu.provider,\n mu.model,\n mu.requested_model,\n meta.user_prompt_prefix,\n spp.system_prompt_prefix,\n meta.system_prompt_length,\n ua.http_user_agent,\n mu.cache_discount,\n meta.max_tokens,\n meta.has_middle_out_transform,\n mu.has_error,\n mu.abuse_classification,\n mu.organization_id,\n mu.inference_provider,\n mu.project_id,\n meta.status_code,\n meta.upstream_id,\n frfr.finish_reason,\n meta.latency,\n meta.moderation_latency,\n meta.generation_time,\n meta.is_byok,\n meta.is_user_byok,\n meta.streamed,\n meta.cancelled,\n edit.editor_name,\n ak.api_kind,\n meta.has_tools,\n meta.machine_id,\n feat.feature,\n meta.session_id,\n md.mode,\n am.auto_model,\n meta.market_cost,\n meta.is_free,\n meta.abuse_delay,\n meta.abuse_downgraded_from\n FROM \"microdollar_usage\" mu\n LEFT JOIN \"microdollar_usage_metadata\" meta ON mu.id = meta.id\n LEFT JOIN \"http_ip\" ip ON meta.http_ip_id = ip.http_ip_id\n LEFT JOIN \"vercel_ip_city\" city ON meta.vercel_ip_city_id = city.vercel_ip_city_id\n LEFT JOIN \"vercel_ip_country\" country ON meta.vercel_ip_country_id = country.vercel_ip_country_id\n LEFT JOIN \"ja4_digest\" ja4 ON meta.ja4_digest_id = ja4.ja4_digest_id\n LEFT JOIN \"system_prompt_prefix\" spp ON meta.system_prompt_prefix_id = spp.system_prompt_prefix_id\n LEFT JOIN \"http_user_agent\" ua ON meta.http_user_agent_id = ua.http_user_agent_id\n LEFT JOIN \"finish_reason\" frfr ON meta.finish_reason_id = frfr.finish_reason_id\n LEFT JOIN \"editor_name\" edit ON meta.editor_name_id = edit.editor_name_id\n LEFT JOIN \"api_kind\" ak ON meta.api_kind_id = ak.api_kind_id\n LEFT JOIN \"feature\" feat ON meta.feature_id = feat.feature_id\n LEFT JOIN \"mode\" md ON meta.mode_id = md.mode_id\n LEFT JOIN \"auto_model\" am ON meta.auto_model_id = am.auto_model_id\n", + "name": "microdollar_usage_view", + "schema": "public", + "isExisting": false, + "materialized": false + } + }, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/packages/db/src/migrations/meta/_journal.json b/packages/db/src/migrations/meta/_journal.json index 57acc35b9..221545000 100644 --- a/packages/db/src/migrations/meta/_journal.json +++ b/packages/db/src/migrations/meta/_journal.json @@ -1114,6 +1114,13 @@ "when": 1780917052096, "tag": "0158_redundant_pixie", "breakpoints": true + }, + { + "idx": 159, + "version": "7", + "when": 1781520687273, + "tag": "0159_curvy_kat_farrell", + "breakpoints": true } ] } \ No newline at end of file diff --git a/packages/db/src/schema.ts b/packages/db/src/schema.ts index 76108fb37..ac579dde2 100644 --- a/packages/db/src/schema.ts +++ b/packages/db/src/schema.ts @@ -5921,6 +5921,68 @@ export type KiloClawGoogleOAuthConnection = typeof kiloclaw_google_oauth_connect export type NewKiloClawGoogleOAuthConnection = typeof kiloclaw_google_oauth_connections.$inferInsert; +// --------------------------------------------------------------------------- +// AgentCard OAuth connection (per-instance). Stores the OAuth 2.1 tokens +// obtained from AgentCard's authorization server (mcp.agentcard.sh) so the +// "Connect AgentCard" button can replace the legacy paste-a-token flow. +// +// Unlike the Google connection (whose worker uses a token broker), the +// OpenClaw gateway talks to the AgentCard MCP server directly with a static +// Bearer header. So the *access* token is pushed to the worker as the +// AGENTCARD_API_KEY secret, and both tokens are stored here symmetric- +// encrypted (web-readable) so the web app can refresh the short-lived +// (~1h) access token and re-push it. +// --------------------------------------------------------------------------- +export type KiloClawAgentCardOAuthStatus = 'active' | 'action_required' | 'disconnected'; + +export const kiloclaw_agentcard_oauth_connections = pgTable( + 'kiloclaw_agentcard_oauth_connections', + { + id: uuid() + .default(sql`gen_random_uuid()`) + .primaryKey() + .notNull(), + instance_id: uuid() + .notNull() + .references(() => kiloclaw_instances.id), + provider: text().notNull().default('agentcard'), + // The OAuth user's email, when known (AgentCard issues opaque tokens and + // has no userinfo endpoint, so this may be null). + account_email: text(), + // The dynamically-registered (or pre-configured) OAuth client_id used. + oauth_client_id: text().notNull(), + access_token_encrypted: text().notNull(), + refresh_token_encrypted: text(), + token_expires_at: timestamp({ withTimezone: true, mode: 'string' }), + scopes: text() + .array() + .notNull() + .default(sql`'{}'::text[]`), + status: text().$type().notNull().default('active'), + last_error: text(), + last_error_at: timestamp({ withTimezone: true, mode: 'string' }), + connected_at: timestamp({ withTimezone: true, mode: 'string' }).defaultNow().notNull(), + created_at: timestamp({ withTimezone: true, mode: 'string' }).defaultNow().notNull(), + updated_at: timestamp({ withTimezone: true, mode: 'string' }) + .defaultNow() + .notNull() + .$onUpdateFn(() => sql`now()`), + }, + table => [ + uniqueIndex('UQ_kiloclaw_agentcard_oauth_connections_instance').on(table.instance_id), + index('IDX_kiloclaw_agentcard_oauth_connections_status').on(table.status), + check( + 'kiloclaw_agentcard_oauth_connections_status_check', + sql`${table.status} IN ('active', 'action_required', 'disconnected')` + ), + ] +); + +export type KiloClawAgentCardOAuthConnection = + typeof kiloclaw_agentcard_oauth_connections.$inferSelect; +export type NewKiloClawAgentCardOAuthConnection = + typeof kiloclaw_agentcard_oauth_connections.$inferInsert; + export const kiloclaw_inbound_email_reserved_aliases = pgTable( 'kiloclaw_inbound_email_reserved_aliases', { diff --git a/packages/kiloclaw-secret-catalog/src/__tests__/catalog.test.ts b/packages/kiloclaw-secret-catalog/src/__tests__/catalog.test.ts index d9f541f19..5fa35ec34 100644 --- a/packages/kiloclaw-secret-catalog/src/__tests__/catalog.test.ts +++ b/packages/kiloclaw-secret-catalog/src/__tests__/catalog.test.ts @@ -211,14 +211,15 @@ describe('Secret Catalog', () => { }); it('returns all tool entries sorted by order', () => { + // AgentCard moved from a paste-a-token secret to an OAuth connection + // (see AgentCardCard in SettingsTab), so it's no longer a catalog entry. const tools = getEntriesByCategory('tool'); - expect(tools.length).toBe(6); + expect(tools.length).toBe(5); expect(tools[0].id).toBe('github'); - expect(tools[1].id).toBe('agentcard'); - expect(tools[2].id).toBe('onepassword'); - expect(tools[3].id).toBe('brave-search'); - expect(tools[4].id).toBe('linear'); - expect(tools[5].id).toBe('composio'); + expect(tools[1].id).toBe('onepassword'); + expect(tools[2].id).toBe('brave-search'); + expect(tools[3].id).toBe('linear'); + expect(tools[4].id).toBe('composio'); }); it('returns empty array for categories with no entries', () => { @@ -243,12 +244,11 @@ describe('Secret Catalog', () => { expect(keys).toContain('githubUsername'); expect(keys).toContain('githubEmail'); expect(keys).toContain('linearApiKey'); - expect(keys).toContain('agentcardApiKey'); expect(keys).toContain('onepasswordServiceAccountToken'); expect(keys).toContain('braveSearchApiKey'); expect(keys).toContain('composioUserApiKey'); expect(keys).toContain('composioOrg'); - expect(keys.size).toBe(9); + expect(keys.size).toBe(8); }); it('returns empty set for categories with no entries', () => { diff --git a/packages/kiloclaw-secret-catalog/src/catalog.ts b/packages/kiloclaw-secret-catalog/src/catalog.ts index b37948832..8ce9450e8 100644 --- a/packages/kiloclaw-secret-catalog/src/catalog.ts +++ b/packages/kiloclaw-secret-catalog/src/catalog.ts @@ -139,27 +139,10 @@ const SECRET_CATALOG_RAW = [ helpText: 'Manage your token from the GitHub developer settings.', helpUrl: 'https://github.com/settings/tokens?type=beta', }, - { - id: 'agentcard', - label: 'AgentCard', - category: 'tool', - icon: 'credit-card', - order: 2, - fields: [ - { - key: 'agentcardApiKey', - label: 'API Key (JWT)', - placeholder: 'eyJ...', - placeholderConfigured: 'Enter new JWT to replace', - envVar: 'AGENTCARD_API_KEY', - validationPattern: '^eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$', - validationMessage: 'Enter the JWT from ~/.agent-cards/config.json (starts with eyJ).', - maxLength: 2000, - }, - ], - helpText: 'Virtual debit cards for autonomous agent spending. See setup guide for details.', - helpUrl: 'https://agentcard.sh', - }, + // AgentCard is no longer a paste-a-token secret. It connects via OAuth — see + // AgentCardCard in SettingsTab.tsx and /api/integrations/agentcard/*. The + // worker still reads the AGENTCARD_API_KEY secret (now an OAuth access token + // pushed by the callback route), so config-writer is unchanged. { id: 'onepassword', label: '1Password', diff --git a/services/kiloclaw/controller/src/routes/config.test.ts b/services/kiloclaw/controller/src/routes/config.test.ts index 0a0c9db44..af11f2d4a 100644 --- a/services/kiloclaw/controller/src/routes/config.test.ts +++ b/services/kiloclaw/controller/src/routes/config.test.ts @@ -6,6 +6,7 @@ import type { Supervisor } from '../supervisor'; vi.mock('../config-writer', () => ({ backupConfigFile: vi.fn(), writeBaseConfig: vi.fn(), + writeMcporterConfig: vi.fn(), })); vi.mock('../bootstrap', async importOriginal => { @@ -28,7 +29,7 @@ vi.mock('node:fs', () => { }; }); -import { backupConfigFile, writeBaseConfig } from '../config-writer'; +import { backupConfigFile, writeBaseConfig, writeMcporterConfig } from '../config-writer'; import { seedExecApprovalsDefaults } from '../bootstrap'; import { atomicWrite } from '../atomic-write'; import fs from 'node:fs'; @@ -116,6 +117,9 @@ describe('/_kilo/config/restore routes', () => { expect(await resp.json()).toEqual({ ok: true, signaled: true }); expect(writeBaseConfig).toHaveBeenCalledWith(process.env); + // Restore also regenerates the MCP server config so credential changes + // (e.g. connecting Agentcard) activate without a redeploy. + expect(writeMcporterConfig).toHaveBeenCalledWith(process.env); expect(supervisor.signal).toHaveBeenCalledWith('SIGUSR1'); }); diff --git a/services/kiloclaw/controller/src/routes/config.ts b/services/kiloclaw/controller/src/routes/config.ts index 560b30ce8..c71022015 100644 --- a/services/kiloclaw/controller/src/routes/config.ts +++ b/services/kiloclaw/controller/src/routes/config.ts @@ -5,7 +5,7 @@ import { z } from 'zod'; import { atomicWrite } from '../atomic-write'; import { timingSafeTokenEqual } from '../auth'; import type { Supervisor } from '../supervisor'; -import { backupConfigFile, writeBaseConfig } from '../config-writer'; +import { backupConfigFile, writeBaseConfig, writeMcporterConfig } from '../config-writer'; import { GOG_SECTION_CONFIG, seedExecApprovalsDefaults, updateToolsMdSection } from '../bootstrap'; import { getBearerToken } from './gateway'; import { registerAgentConfigRoutes } from './config-agents'; @@ -111,6 +111,12 @@ export function registerConfigRoutes( try { writeBaseConfig(process.env); + // Also regenerate the mcporter (MCP servers) config from the current + // env so credential changes that toggle managed MCP servers — e.g. + // connecting/disconnecting Agentcard (AGENTCARD_API_KEY) — take effect + // on restore instead of only at bootstrap. Without this the + // `agentcard` MCP server wouldn't appear until the next redeploy. + writeMcporterConfig(process.env); const gatewayState = supervisor.getState(); const signaled = gatewayState === 'running' && supervisor.signal('SIGUSR1'); if (!signaled) { From 505aa8a7ee4aff979a0efc22a4c263976ec3d570 Mon Sep 17 00:00:00 2001 From: Karen Date: Tue, 16 Jun 2026 15:10:09 +0200 Subject: [PATCH 3/8] fix(agentcard): harden OAuth token lifecycle from review Addresses correctness issues found in a second-pass review of the AgentCard OAuth integration: - Refresh-token rotation race: AgentCard rotates refresh tokens (each refresh invalidates the previous one), so two overlapping cron sweeps could refresh the same connection and flip it to action_required. Add an atomic optimistic row claim (claimAgentCardConnectionForRefresh) so exactly one sweep processes each connection. - Initial secret-push failure no longer silently reports success: the callback retries the worker push, and on final failure marks the connection action_required and redirects with an error instead of success (the cron only refreshes near-expiry tokens, so it would not re-push a fresh ~1h token for ~40 min). - FK now ON DELETE CASCADE (matches sibling instance-scoped tables) so deleting a kiloclaw_instance can't fail on a lingering connection row. Amended migration 0159 + snapshot in place (table not yet shipped). - Disconnect removes the worker secret BEFORE deleting the DB row so a push failure can't orphan a live token with no row to retry from, and now revokes the access token in addition to the refresh token. - Remove dead getValidAgentCardAccessToken (+ unused imports/const). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../integrations/agentcard/callback/route.ts | 57 ++++++++++---- .../agentcard/disconnect/route.ts | 18 +++-- .../kiloclaw/agentcard-oauth-connections.ts | 78 +++++++------------ .../lib/kiloclaw/agentcard-token-refresh.ts | 9 +++ .../src/migrations/0159_curvy_kat_farrell.sql | 2 +- .../db/src/migrations/meta/0159_snapshot.json | 2 +- packages/db/src/schema.ts | 2 +- 7 files changed, 93 insertions(+), 75 deletions(-) diff --git a/apps/web/src/app/api/integrations/agentcard/callback/route.ts b/apps/web/src/app/api/integrations/agentcard/callback/route.ts index 7600b311e..c0a429ff3 100644 --- a/apps/web/src/app/api/integrations/agentcard/callback/route.ts +++ b/apps/web/src/app/api/integrations/agentcard/callback/route.ts @@ -13,7 +13,10 @@ import { type VerifiedAgentCardOAuthState, verifyAgentCardOAuthState, } from '@/lib/integrations/agentcard/oauth-state'; -import { upsertKiloClawAgentCardOAuthConnection } from '@/lib/kiloclaw/agentcard-oauth-connections'; +import { + setKiloClawAgentCardOAuthConnectionError, + upsertKiloClawAgentCardOAuthConnection, +} from '@/lib/kiloclaw/agentcard-oauth-connections'; import { encryptKiloClawSecret } from '@/lib/kiloclaw/encryption'; import { KiloClawInternalClient } from '@/lib/kiloclaw/kiloclaw-internal-client'; @@ -180,22 +183,48 @@ export async function GET(request: NextRequest) { // Push the freshly-minted access token to the worker. config-writer turns // AGENTCARD_API_KEY into the `agentcard` MCP server's Bearer header. - // Best-effort: the OAuth grant is already persisted above, so a transient - // secret-push failure (e.g. worker unavailable) must not discard the - // connection — the token-refresh job / next checkin re-pushes it. - try { - const kiloclawClient = new KiloClawInternalClient(); - await kiloclawClient.patchSecrets( - user.id, - { secrets: { [AGENTCARD_SECRET_KEY]: encryptKiloClawSecret(tokens.accessToken) } }, - workerInstanceId(instance) - ); - } catch (pushError) { - console.error('AgentCard secret push failed (connection kept):', pushError); - captureException(pushError, { + // Retry a few times: the grant is already persisted, but the cron only + // refreshes near-expiry tokens, so it won't re-push this fresh (~1h) token + // for ~40 min — a silent push failure would leave the agent "connected" but + // unable to use AgentCard until then. + const kiloclawClient = new KiloClawInternalClient(); + let pushed = false; + let lastPushError: unknown = null; + for (let attempt = 1; attempt <= 3; attempt++) { + try { + await kiloclawClient.patchSecrets( + user.id, + { secrets: { [AGENTCARD_SECRET_KEY]: encryptKiloClawSecret(tokens.accessToken) } }, + workerInstanceId(instance) + ); + pushed = true; + break; + } catch (pushError) { + lastPushError = pushError; + if (attempt < 3) { + await new Promise(resolve => { + setTimeout(resolve, 300 * attempt); + }); + } + } + } + + if (!pushed) { + // Persisted grant but the worker never got the token. Mark the connection + // so the dashboard shows "Reconnect", and surface an error instead of a + // misleading success. + console.error('AgentCard secret push failed after retries:', lastPushError); + captureException(lastPushError, { tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth_push' }, extra: oauthSentryContext(searchParams), }); + await setKiloClawAgentCardOAuthConnectionError( + verifiedState.instanceId, + lastPushError instanceof Error ? lastPushError.message : 'AgentCard secret push failed' + ); + return NextResponse.redirect( + new URL(buildRedirectPath(verifiedState, 'error=agentcard_connect_incomplete'), APP_URL) + ); } const successPath = buildRedirectPath(verifiedState, 'success=agentcard_connected'); diff --git a/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts b/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts index 4fbe19639..e96bec331 100644 --- a/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts +++ b/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts @@ -12,6 +12,7 @@ import { } from '@/lib/kiloclaw/instance-registry'; import { clearKiloClawAgentCardOAuthConnection, + decryptAccessToken, decryptRefreshToken, getKiloClawAgentCardOAuthConnection, } from '@/lib/kiloclaw/agentcard-oauth-connections'; @@ -82,11 +83,11 @@ export async function POST(request: NextRequest) { const existing = await getKiloClawAgentCardOAuthConnection(instance.id); - // Clear the stored connection first so disconnect fails closed. - await clearKiloClawAgentCardOAuthConnection(instance.id); - - // Remove the worker secret so the `agentcard` MCP server is dropped from - // the gateway config on next sync. + // Remove the worker secret FIRST — this is what actually cuts off the + // agent's access. Do it before deleting the DB row so that if it throws we + // bail to the catch with the row still present and the user can retry, + // rather than orphaning a live token on the worker with no row to retry + // from. const kiloclawClient = new KiloClawInternalClient(); await kiloclawClient.patchSecrets( user.id, @@ -94,12 +95,17 @@ export async function POST(request: NextRequest) { workerInstanceId(instance) ); - // Best-effort revocation of the OAuth grant at AgentCard. + // Worker secret is gone; now drop the stored connection. + await clearKiloClawAgentCardOAuthConnection(instance.id); + + // Best-effort revocation of the OAuth grant at AgentCard — revoke both the + // refresh token and the (still ~1h-valid) access token. if (existing) { const refreshToken = decryptRefreshToken(existing); if (refreshToken) { await revokeAgentCardToken(refreshToken); } + await revokeAgentCardToken(decryptAccessToken(existing)); } return NextResponse.redirect( diff --git a/apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts b/apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts index d87b10c74..beebe3389 100644 --- a/apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts +++ b/apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts @@ -9,14 +9,7 @@ import { type KiloClawAgentCardOAuthConnection, type KiloClawAgentCardOAuthStatus, } from '@kilocode/db/schema'; -import { - refreshAgentCardToken, - type AgentCardTokenSet, -} from '@/lib/integrations/agentcard/agentcard-service'; - -// Refresh the access token when it expires within this window so the worker is -// never handed a token that's about to die. -const REFRESH_BUFFER_MS = 5 * 60 * 1000; +import type { AgentCardTokenSet } from '@/lib/integrations/agentcard/agentcard-service'; function encryptToken(value: string): string { if (!BYOK_ENCRYPTION_KEY) { @@ -148,52 +141,33 @@ export function decryptRefreshToken(connection: KiloClawAgentCardOAuthConnection : null; } +/** Decrypt the stored access token. */ +export function decryptAccessToken(connection: KiloClawAgentCardOAuthConnection): string { + return decryptToken(connection.access_token_encrypted); +} + /** - * Returns a valid (non-expired) access token for the connection's instance, - * refreshing via AgentCard if it's within the refresh buffer of expiry. On - * refresh failure the connection is marked `action_required` and the error is - * rethrown so callers can surface a reconnect prompt. + * Optimistically claim a connection for refresh so two overlapping sweeps don't + * both refresh the same row. AgentCard rotates refresh tokens (each refresh + * invalidates the previous one), so a concurrent double-refresh would make one + * side fail and needlessly flip the connection to `action_required`. * - * AgentCard access tokens are short-lived (~1h); the OpenClaw gateway hits the - * MCP server directly with a static Bearer header, so the web app must keep a - * fresh token in the worker secret. Call this before pushing to the worker. + * Bumps `updated_at` only if it still matches what the caller read; the row + * lock makes this atomic, so exactly one concurrent caller gets `true`. */ -export async function getValidAgentCardAccessToken( +export async function claimAgentCardConnectionForRefresh( connection: KiloClawAgentCardOAuthConnection -): Promise { - const expiresAt = connection.token_expires_at - ? new Date(connection.token_expires_at).getTime() - : null; - const needsRefresh = expiresAt !== null && expiresAt - Date.now() <= REFRESH_BUFFER_MS; - - if (!needsRefresh) { - return decryptToken(connection.access_token_encrypted); - } - - const refreshToken = decryptRefreshToken(connection); - if (!refreshToken) { - // No refresh token — return the (possibly stale) access token; the worker - // call will fail and the user can reconnect. - return decryptToken(connection.access_token_encrypted); - } - - try { - const tokens = await refreshAgentCardToken({ - refreshToken, - clientId: connection.oauth_client_id, - }); - const updated = await upsertKiloClawAgentCardOAuthConnection({ - instanceId: connection.instance_id, - oauthClientId: connection.oauth_client_id, - tokens, - accountEmail: connection.account_email, - }); - return decryptToken(updated.access_token_encrypted); - } catch (error) { - await setKiloClawAgentCardOAuthConnectionError( - connection.instance_id, - error instanceof Error ? error.message : 'AgentCard token refresh failed' - ); - throw error; - } +): Promise { + const claimedAt = new Date().toISOString(); + const claimed = await db + .update(kiloclaw_agentcard_oauth_connections) + .set({ updated_at: claimedAt }) + .where( + and( + eq(kiloclaw_agentcard_oauth_connections.id, connection.id), + eq(kiloclaw_agentcard_oauth_connections.updated_at, connection.updated_at) + ) + ) + .returning({ id: kiloclaw_agentcard_oauth_connections.id }); + return claimed.length === 1; } diff --git a/apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts b/apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts index cd48542bb..c19f62206 100644 --- a/apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts +++ b/apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts @@ -6,6 +6,7 @@ import { kiloclaw_agentcard_oauth_connections } from '@kilocode/db/schema'; import { getInstanceById, workerInstanceId } from '@/lib/kiloclaw/instance-registry'; import { refreshAgentCardToken } from '@/lib/integrations/agentcard/agentcard-service'; import { + claimAgentCardConnectionForRefresh, decryptRefreshToken, setKiloClawAgentCardOAuthConnectionError, upsertKiloClawAgentCardOAuthConnection, @@ -72,6 +73,14 @@ export async function refreshExpiringAgentCardConnections(opts: { continue; } + // Claim the row before the (token-rotating) refresh so an overlapping sweep + // can't refresh the same connection and invalidate our rotated token. + const claimed = await claimAgentCardConnectionForRefresh(conn); + if (!claimed) { + skipped++; + continue; + } + try { const tokens = await refreshAgentCardToken({ refreshToken, diff --git a/packages/db/src/migrations/0159_curvy_kat_farrell.sql b/packages/db/src/migrations/0159_curvy_kat_farrell.sql index 3af889959..fd695fa9d 100644 --- a/packages/db/src/migrations/0159_curvy_kat_farrell.sql +++ b/packages/db/src/migrations/0159_curvy_kat_farrell.sql @@ -17,6 +17,6 @@ CREATE TABLE "kiloclaw_agentcard_oauth_connections" ( CONSTRAINT "kiloclaw_agentcard_oauth_connections_status_check" CHECK ("kiloclaw_agentcard_oauth_connections"."status" IN ('active', 'action_required', 'disconnected')) ); --> statement-breakpoint -ALTER TABLE "kiloclaw_agentcard_oauth_connections" ADD CONSTRAINT "kiloclaw_agentcard_oauth_connections_instance_id_kiloclaw_instances_id_fk" FOREIGN KEY ("instance_id") REFERENCES "public"."kiloclaw_instances"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "kiloclaw_agentcard_oauth_connections" ADD CONSTRAINT "kiloclaw_agentcard_oauth_connections_instance_id_kiloclaw_instances_id_fk" FOREIGN KEY ("instance_id") REFERENCES "public"."kiloclaw_instances"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint CREATE UNIQUE INDEX "UQ_kiloclaw_agentcard_oauth_connections_instance" ON "kiloclaw_agentcard_oauth_connections" USING btree ("instance_id");--> statement-breakpoint CREATE INDEX "IDX_kiloclaw_agentcard_oauth_connections_status" ON "kiloclaw_agentcard_oauth_connections" USING btree ("status"); \ No newline at end of file diff --git a/packages/db/src/migrations/meta/0159_snapshot.json b/packages/db/src/migrations/meta/0159_snapshot.json index 8cecea502..02cf43dad 100644 --- a/packages/db/src/migrations/meta/0159_snapshot.json +++ b/packages/db/src/migrations/meta/0159_snapshot.json @@ -13543,7 +13543,7 @@ "columnsTo": [ "id" ], - "onDelete": "no action", + "onDelete": "cascade", "onUpdate": "no action" } }, diff --git a/packages/db/src/schema.ts b/packages/db/src/schema.ts index ac579dde2..7205fd85c 100644 --- a/packages/db/src/schema.ts +++ b/packages/db/src/schema.ts @@ -5944,7 +5944,7 @@ export const kiloclaw_agentcard_oauth_connections = pgTable( .notNull(), instance_id: uuid() .notNull() - .references(() => kiloclaw_instances.id), + .references(() => kiloclaw_instances.id, { onDelete: 'cascade' }), provider: text().notNull().default('agentcard'), // The OAuth user's email, when known (AgentCard issues opaque tokens and // has no userinfo endpoint, so this may be null). From 7104e732fde719bb26aaf6bfa70807cf174b6d60 Mon Sep 17 00:00:00 2001 From: Karen Date: Tue, 16 Jun 2026 15:23:45 +0200 Subject: [PATCH 4/8] chore: move local-dev scaffolding out of the AgentCard PR The Stytch fraud-validation auto-pass and the KILOCLAW_DEV_MOCK fake local-instance provisioning are local-dev-only conveniences (gated on allow_fake_login) that don't belong in the AgentCard integration. Pulled out to a separate branch (chore/local-dev-kiloclaw-mock) so this PR is AgentCard-only and the dev/auth-bypass code gets reviewed on its own. No behavior change to the AgentCard integration. Co-Authored-By: Claude Opus 4.8 (1M context) --- apps/web/src/lib/stytch.ts | 22 ----- apps/web/src/routers/kiloclaw-router.ts | 116 +----------------------- 2 files changed, 2 insertions(+), 136 deletions(-) diff --git a/apps/web/src/lib/stytch.ts b/apps/web/src/lib/stytch.ts index 8e9e68ac4..5aabb1fa1 100644 --- a/apps/web/src/lib/stytch.ts +++ b/apps/web/src/lib/stytch.ts @@ -12,20 +12,11 @@ import { domainIsRestrictedFromStytchFreeCredits } from './domainIsRestrictedFro import { grantCreditForCategory } from './promotionalCredits'; import PostHogClient from '@/lib/posthog'; import { reportEvents } from '@/lib/ai-gateway/abuse-service'; -import { allow_fake_login } from '@/lib/constants'; const NEXT_PUBLIC_STYTCH_PROJECT_ENV = getEnvVariable('NEXT_PUBLIC_STYTCH_PROJECT_ENV'); const STYTCH_PROJECT_ID = getEnvVariable('STYTCH_PROJECT_ID'); const STYTCH_PROJECT_SECRET = getEnvVariable('STYTCH_PROJECT_SECRET'); -// Local-dev only: when fake-login is enabled and no real Stytch project is -// configured (the placeholder `test-fake-…` creds, or empty), the client-side -// telemetry/fingerprint round-trip in can never complete, so -// `/account-verification` hangs forever on "Creating Your Account". Detect that -// case so getStytchStatus can auto-pass validation. Gated on allow_fake_login, -// which is false in production and on Vercel, so this never affects real envs. -const STYTCH_NOT_CONFIGURED = !STYTCH_PROJECT_ID || STYTCH_PROJECT_ID.includes('fake'); - const client = new Client({ project_id: STYTCH_PROJECT_ID, secret: STYTCH_PROJECT_SECRET, @@ -38,19 +29,6 @@ export const getStytchStatus = async ( headers: Headers ): Promise => { if (user.has_validation_stytch !== null) return user.has_validation_stytch; - - // Local-dev bypass: no real Stytch project, so auto-approve validation and - // persist it (mirrors the success path in saveFingerprints) instead of - // looping on the "Creating Your Account" spinner. See STYTCH_NOT_CONFIGURED. - if (allow_fake_login && STYTCH_NOT_CONFIGURED) { - if (process.env.NODE_ENV !== 'test') - console.log( - `SECURITY: Stytch not configured + fake-login enabled — auto-passing validation for ${user.google_user_email} (local dev only)` - ); - await updateStytchValidation(user, { ...user, has_validation_stytch: true }); - return true; - } - if (!telemetryId) return null; const fingerprintData = await client.fraud.fingerprint diff --git a/apps/web/src/routers/kiloclaw-router.ts b/apps/web/src/routers/kiloclaw-router.ts index b85cc3449..2ecde548a 100644 --- a/apps/web/src/routers/kiloclaw-router.ts +++ b/apps/web/src/routers/kiloclaw-router.ts @@ -60,15 +60,7 @@ import { organizations, } from '@kilocode/db/schema'; import { and, asc, eq, ne, desc, isNull, inArray, sql, like, or } from 'drizzle-orm'; -import { - ImpactReferralProduct, - ImpactReferralRewardKind, - KiloClawPlan, - KiloClawProvider, - KiloClawSubscriptionStatus, - KiloClawSubscriptionChangeAction, - KiloClawSubscriptionChangeActorType, -} from '@kilocode/db/schema-types'; +import { ImpactReferralProduct, ImpactReferralRewardKind } from '@kilocode/db/schema-types'; import { alias } from 'drizzle-orm/pg-core'; import { deleteWorkerTrigger } from '@/lib/webhook-agent/webhook-agent-client'; import { sentryLogger } from '@/lib/utils.server'; @@ -101,8 +93,7 @@ import { mapStripeInvoiceToBillingHistoryEntry, } from '@/lib/subscriptions/subscription-center'; import { client as stripe } from '@/lib/stripe-client'; -import { APP_URL, allow_fake_login } from '@/lib/constants'; -import { randomUUID } from 'node:crypto'; +import { APP_URL } from '@/lib/constants'; import { getAffiliateAttribution } from '@/lib/affiliate-attribution'; import { buildAffiliateEventDedupeKey, @@ -1136,115 +1127,12 @@ function sanitizeKiloCodeConfigResponse( }; } -// Local-dev provision mock. When fake-login is enabled and no KiloClaw worker -// URL is configured, there is no backend to provision a real agent instance, so -// `provisionInstance` would throw at `new KiloClawInternalClient()`. Instead, -// create a DB-only "fake seed" instance (sandbox_id `ki_fake_…`, provider -// docker-local) — the exact shape `dev/seed/kiloclaw/fake-instance.ts` produces -// and that `getStatus` renders via `createFakeSeedInstanceStatus`. This lets the -// onboarding flow complete locally. Gated on `allow_fake_login`, which is false -// in production and on Vercel, so it can never run outside local dev. -// Opt in with `KILOCLAW_DEV_MOCK=1` in `.env.local` (or simply leave -// `KILOCLAW_API_URL` unset). Note: `apps/web/.env.development.local` sets -// `KILOCLAW_API_URL=http://localhost:8795`, which outranks `.env.local`, so an -// explicit flag is the reliable switch when the worker isn't actually running. -const KILOCLAW_DEV_MOCK = - allow_fake_login && (process.env.KILOCLAW_DEV_MOCK === '1' || !KILOCLAW_API_URL); - -async function provisionFakeLocalInstanceForDev( - user: Parameters[0], - params: { instanceId: string | null; bootstrapSubscription: boolean }, - executor: typeof db | DrizzleTransaction -): Promise<{ sandboxId: string; instanceId: string }> { - // Re-provision / updateConfig path: the instance row already exists, so just - // echo back its ids. No worker means there's nothing live to reconfigure. - if (params.instanceId) { - const [existing] = await executor - .select({ id: kiloclaw_instances.id, sandbox_id: kiloclaw_instances.sandbox_id }) - .from(kiloclaw_instances) - .where(eq(kiloclaw_instances.id, params.instanceId)) - .limit(1); - if (existing) { - return { sandboxId: existing.sandbox_id, instanceId: existing.id }; - } - } - - const nowIso = new Date().toISOString(); - const instanceId = randomUUID(); - const sandboxId = `ki_fake_${instanceId.replaceAll('-', '')}`; - - const [instance] = await executor - .insert(kiloclaw_instances) - .values({ - id: instanceId, - user_id: user.id, - sandbox_id: sandboxId, - provider: KiloClawProvider.DockerLocal, - organization_id: null, - name: 'Local KiloClaw (dev)', - inbound_email_enabled: true, - inactive_trial_stopped_at: null, - created_at: nowIso, - destroyed_at: null, - tracked_image_tag: 'fake-local-instance', - }) - .returning(); - - // Mirror the worker's trial-bootstrap so billing/status reads resolve. - if (params.bootstrapSubscription) { - const trialEndsIso = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(); - const [subscription] = await executor - .insert(kiloclaw_subscriptions) - .values({ - user_id: user.id, - instance_id: instance.id, - kiloclaw_price_version: CURRENT_KILOCLAW_PRICE_VERSION, - payment_source: null, - plan: KiloClawPlan.Trial, - status: KiloClawSubscriptionStatus.Trialing, - cancel_at_period_end: false, - pending_conversion: false, - trial_started_at: nowIso, - trial_ends_at: trialEndsIso, - current_period_start: null, - current_period_end: null, - credit_renewal_at: null, - commit_ends_at: null, - }) - .returning(); - - await insertKiloClawSubscriptionChangeLog(executor, { - subscriptionId: subscription.id, - actor: { - actorType: KiloClawSubscriptionChangeActorType.System, - actorId: 'dev-mock:kiloclaw/provision', - }, - action: KiloClawSubscriptionChangeAction.Created, - reason: 'dev_mock:fake_instance', - before: null, - after: subscription, - }); - } - - console.log( - `KILOCLAW DEV MOCK: provisioned fake local instance ${instanceId} (sandbox ${sandboxId}) for ${user.google_user_email} — DB-only, no worker/container exists` - ); - return { sandboxId, instanceId }; -} - async function provisionInstance( user: Parameters[0], input: z.infer, params: { instanceId: string | null; bootstrapSubscription: boolean }, executor: typeof db | DrizzleTransaction = db ) { - // No KiloClaw worker in local dev — fabricate a DB-only instance instead of - // throwing at `new KiloClawInternalClient()`. Must run before secret - // encryption below, since the worker encryption key is also unset locally. - if (KILOCLAW_DEV_MOCK) { - return await provisionFakeLocalInstanceForDev(user, params, executor); - } - const encryptedSecrets = encryptProvisionSecretsForWorker(input.secrets); const expiresInSeconds = TOKEN_EXPIRY.thirtyDays; From b8ebd093443e1428c67843dfa3e828c300a5df9e Mon Sep 17 00:00:00 2001 From: Karen Date: Tue, 16 Jun 2026 17:14:05 +0200 Subject: [PATCH 5/8] docs(agentcard skill): reference the full AgentCard MCP tool set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expand the agentcard SKILL.md from the 6 card tools to the complete MCP surface — cards, approvals, account/onboarding, plan & billing, payment methods, connections, support, and the (extension-gated) browser checkout tools — grouped with one-line usage. Notes that the checkout tools need the Chrome extension and won't work in the headless agent. Co-Authored-By: Claude Opus 4.8 (1M context) --- services/kiloclaw/skills/agentcard/SKILL.md | 93 +++++++++++++++++---- 1 file changed, 78 insertions(+), 15 deletions(-) diff --git a/services/kiloclaw/skills/agentcard/SKILL.md b/services/kiloclaw/skills/agentcard/SKILL.md index 91914c6d8..12e660d72 100644 --- a/services/kiloclaw/skills/agentcard/SKILL.md +++ b/services/kiloclaw/skills/agentcard/SKILL.md @@ -1,13 +1,13 @@ --- name: agentcard -description: Create and manage virtual debit cards with AgentCard. Use when the user wants to create a card, check a card balance, review card transactions, or close a card. +description: Create and manage virtual debit cards with AgentCard — issue and close cards, check balances and transactions, manage plan, payment methods, and account, and contact support. Use whenever the user wants to create or spend a virtual card, fund a purchase, or manage their AgentCard account. --- # AgentCard -AgentCard issues virtual debit cards. Use this skill whenever the user wants to -create a card, fund a purchase, check a balance, review transactions, or close a -card. +AgentCard issues virtual debit cards for agent spending. Use this skill whenever +the user wants to create or close a card, fund a purchase, check a balance or +transactions, manage their plan or payment methods, or contact AgentCard support. AgentCard runs as the `agentcard` MCP server, reached through your `mcporter` skill. Call its tools with: @@ -18,25 +18,88 @@ mcporter call agentcard. : ## First: discover the live tools and their exact arguments -Tool arguments can change, so introspect rather than guess: +The tool set and arguments can change, so introspect rather than guess: ```bash mcporter list agentcard # list available tools mcporter call agentcard. --schema # see one tool's exact parameters ``` +## Available tools + +### Cards +- **`list_cards`** — List all virtual cards with IDs, last four, expiry, balance, + and status. Start here to find a card. +- **`create_card`** — Create a new virtual debit card. Takes `amount_cents` (integer, + min 100; e.g. `2000` = $20). New accounts default to test mode. Limits depend on the + plan — see `get_plan`. +- **`check_balance`** — Live balance for a card. Prefer this over `get_card_details` + when you only need funds (faster, no sensitive credentials). +- **`get_card_details`** — Decrypted PAN, CVV, expiry, and balance for a card. Use + only to fill a payment form. May require human approval — if it returns a 202, + prompt the user and then call `approve_request`. +- **`list_transactions`** — Transactions for a card (amount, merchant, status, + timestamps); supports `limit`/`status` filters. +- **`close_card`** — Permanently close a card. Irreversible; idempotent. + +### Approvals +- **`approve_request`** — Resolve a pending approval (approve/deny). Use after + `get_card_details` or `create_card` returns a 202 requiring approval; on approval it + automatically completes the follow-up action. + +### Account & onboarding +- **`submit_user_info`** — Submit phone number + terms acceptance required before the + first card. Call after `create_card` returns a `user_info_required` response. (Name + and DOB are collected automatically during KYC.) +- **`get_mode`** — Get the current issuing mode (`test` vs `prod`). +- **`set_mode`** — Switch issuing mode. `mode:prod` issues live cards funded by the + saved payment method (real charges); `mode:test` issues sandbox cards. Confirm with + the user before switching to `prod`. + +### Plan & billing +- **`get_plan`** — Current plan, per-card cap, monthly card limit, and usage. Call + before `create_card` when you need the cap or remaining quota. +- **`upgrade_plan`** — Start an upgrade to the Basic plan ($15/mo); returns a Stripe + Checkout URL the user opens to pay. Use only when the user explicitly wants to upgrade. +- **`cancel_plan`** — Cancel the active paid subscription, reverting to free. + +### Payment methods +- **`list_payment_methods`** — Saved methods used to fund card creation (id, brand, + last 4, expiry, default). +- **`setup_payment_method`** — Add a payment method; returns a secure checkout URL the + user must open. +- **`set_default_payment_method`** — Set which saved method funds new cards + (`payment_method_id`). +- **`remove_payment_method`** — Detach a saved method permanently (`payment_method_id`). + +### Connections +- **`list_connections`** — Third-party apps (e.g. Kilo) connected to the user's + AgentCard account via OAuth, with connected-at and active status. Read-only — to + revoke, the user runs `agent-cards connections revoke ` in the CLI. + +### Support +- **`start_support_chat`** — Start a support conversation and send the first message. +- **`send_support_message`** — Send a message in an existing support conversation. +- **`read_support_chat`** — Read a support conversation's message history. + +### Browser checkout (requires the AgentCard Pay Chrome extension) +These automate paying on a real checkout page and need Chrome with the AgentCard Pay +extension — **not available in the headless agent**, so they typically won't work here. +Prefer `create_card` + `get_card_details` and fill the form yourself. +- **`detect_checkout`** — Check whether the current browser tab is a checkout page. +- **`pay_checkout`** — Create/reuse a card and auto-fill a checkout page. +- **`fill_card`** — Fill an existing card into the current checkout form. + ## Common operations -- **Create a card** — `create_card` requires `amount_cents` (an integer; e.g. `2000` - for a $20 card): - ```bash - mcporter call agentcard.create_card amount_cents:2000 - ``` -- **List cards** — `mcporter call agentcard.list_cards` -- **Card details** (PAN / expiry / CVC) — `mcporter call agentcard.get_card_details card_id:` -- **Check balance** — `mcporter call agentcard.check_balance card_id:` -- **List transactions** — `mcporter call agentcard.list_transactions card_id:` -- **Close a card** — `mcporter call agentcard.close_card card_id:` +```bash +mcporter call agentcard.create_card amount_cents:2000 # $20 card +mcporter call agentcard.list_cards +mcporter call agentcard.check_balance card_id: +mcporter call agentcard.get_card_details card_id: # PAN/CVC/expiry (may need approval) +mcporter call agentcard.list_transactions card_id: +mcporter call agentcard.close_card card_id: +``` ## Test mode vs production From 0592caa0f422abb5e4a3b4fba45f187f6bee2dc3 Mon Sep 17 00:00:00 2001 From: Karen Date: Wed, 17 Jun 2026 10:58:48 +0200 Subject: [PATCH 6/8] fix(agentcard disconnect): revoke-first, best-effort worker secret removal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disconnect previously removed the worker secret first and fail-closed, so if the KiloClaw worker was unreachable the whole disconnect aborted (error=disconnect_failed) and nothing was revoked or cleared. Reorder to make disconnect robust and actually revoke access: 1. Revoke the OAuth grant at AgentCard (refresh + access token) — the authoritative cut-off; invalidates the copy already on the worker too. 2. Clear the stored connection so the refresh cron stops touching it. 3. Remove the worker secret best-effort (failure no longer aborts the disconnect — the grant is already revoked, so only an already-dead token could remain). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../agentcard/disconnect/route.ts | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts b/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts index e96bec331..0ff8f4178 100644 --- a/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts +++ b/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts @@ -83,23 +83,10 @@ export async function POST(request: NextRequest) { const existing = await getKiloClawAgentCardOAuthConnection(instance.id); - // Remove the worker secret FIRST — this is what actually cuts off the - // agent's access. Do it before deleting the DB row so that if it throws we - // bail to the catch with the row still present and the user can retry, - // rather than orphaning a live token on the worker with no row to retry - // from. - const kiloclawClient = new KiloClawInternalClient(); - await kiloclawClient.patchSecrets( - user.id, - { secrets: { [AGENTCARD_SECRET_KEY]: null } }, - workerInstanceId(instance) - ); - - // Worker secret is gone; now drop the stored connection. - await clearKiloClawAgentCardOAuthConnection(instance.id); - - // Best-effort revocation of the OAuth grant at AgentCard — revoke both the - // refresh token and the (still ~1h-valid) access token. + // Revoke the OAuth grant at AgentCard first — this is the authoritative + // "cut off access": it invalidates both the refresh token (no new tokens) + // and the (still ~1h-valid) access token, so even the copy already pushed to + // the worker stops working. revokeAgentCardToken is best-effort (never throws). if (existing) { const refreshToken = decryptRefreshToken(existing); if (refreshToken) { @@ -108,6 +95,28 @@ export async function POST(request: NextRequest) { await revokeAgentCardToken(decryptAccessToken(existing)); } + // Drop the stored connection so the refresh cron stops touching it. + await clearKiloClawAgentCardOAuthConnection(instance.id); + + // Best-effort: remove the worker secret so the `agentcard` MCP server is + // dropped from the gateway config on next sync. The grant is already revoked + // above, so a failure here (e.g. worker unreachable) leaves only an + // already-dead token behind — it must not fail the whole disconnect. + try { + const kiloclawClient = new KiloClawInternalClient(); + await kiloclawClient.patchSecrets( + user.id, + { secrets: { [AGENTCARD_SECRET_KEY]: null } }, + workerInstanceId(instance) + ); + } catch (secretError) { + console.error('AgentCard worker secret removal failed (disconnect kept):', secretError); + captureException(secretError, { + tags: { endpoint: 'agentcard/disconnect', source: 'agentcard_oauth_secret_clear' }, + extra: { organizationId }, + }); + } + return NextResponse.redirect( new URL(buildDisconnectPath(organizationId, 'success=agentcard_disconnected'), APP_URL), 303 From 9760f8fc5414dbf35803394718c26ae78a8d4690 Mon Sep 17 00:00:00 2001 From: Karen Date: Wed, 17 Jun 2026 21:10:05 +0200 Subject: [PATCH 7/8] fix(agentcard): show AgentCard-specific OAuth feedback (not Google copy) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The connect/callback/disconnect routes share generic error codes (oauth_init_failed, missing_instance, …) with the Google Calendar OAuth flow, and the settings page only had a Google feedback map — so an AgentCard connect failure surfaced as "Could not start the Google connection." Tag every AgentCard settings redirect with provider=agentcard and add a parallel agentcard-oauth-feedback resolver; ClawSettingsPage picks the resolver by that marker (and strips it on cleanup). Adds tailored copy incl. agentcard_connect_incomplete (worker secret push failed). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../claw/components/ClawSettingsPage.tsx | 13 +++-- .../components/agentcard-oauth-feedback.ts | 53 +++++++++++++++++++ .../integrations/agentcard/callback/route.ts | 17 +++--- .../integrations/agentcard/connect/route.ts | 9 ++-- .../agentcard/disconnect/route.ts | 11 ++-- 5 files changed, 84 insertions(+), 19 deletions(-) create mode 100644 apps/web/src/app/(app)/claw/components/agentcard-oauth-feedback.ts diff --git a/apps/web/src/app/(app)/claw/components/ClawSettingsPage.tsx b/apps/web/src/app/(app)/claw/components/ClawSettingsPage.tsx index 01b97811f..575253cc9 100644 --- a/apps/web/src/app/(app)/claw/components/ClawSettingsPage.tsx +++ b/apps/web/src/app/(app)/claw/components/ClawSettingsPage.tsx @@ -5,6 +5,7 @@ import { toast } from 'sonner'; import { Settings } from 'lucide-react'; import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import { resolveGoogleOAuthFeedback } from './google-oauth-feedback'; +import { resolveAgentCardOAuthFeedback } from './agentcard-oauth-feedback'; import { TRPCClientError } from '@trpc/client'; import type { KiloClawDashboardStatus } from '@/lib/kiloclaw/types'; import { useKiloClawStatus, useKiloClawMutations, useKiloClawMyPin } from '@/hooks/useKiloClaw'; @@ -183,10 +184,13 @@ function ClawSettingsWithStatus({ // bounces to onboarding. Wait for status so `shouldRedirect` is meaningful. useEffect(() => { if (oauthFeedbackHandledRef.current || isLoading) return; - const feedback = resolveGoogleOAuthFeedback( - searchParams.get('success'), - searchParams.get('error') - ); + // AgentCard routes tag their redirects with provider=agentcard; everything + // else (Google) keeps the existing behavior. The codes overlap, so the + // marker is what disambiguates which copy to show. + const feedback = + searchParams.get('provider') === 'agentcard' + ? resolveAgentCardOAuthFeedback(searchParams.get('success'), searchParams.get('error')) + : resolveGoogleOAuthFeedback(searchParams.get('success'), searchParams.get('error')); if (!feedback) return; oauthFeedbackHandledRef.current = true; @@ -203,6 +207,7 @@ function ClawSettingsWithStatus({ const next = new URLSearchParams(searchParams); next.delete('success'); next.delete('error'); + next.delete('provider'); const query = next.toString(); router.replace(query ? `${pathname}?${query}` : pathname, { scroll: false }); } diff --git a/apps/web/src/app/(app)/claw/components/agentcard-oauth-feedback.ts b/apps/web/src/app/(app)/claw/components/agentcard-oauth-feedback.ts new file mode 100644 index 000000000..7c5332dfc --- /dev/null +++ b/apps/web/src/app/(app)/claw/components/agentcard-oauth-feedback.ts @@ -0,0 +1,53 @@ +// Maps the one-shot `?success=`/`?error=` params the AgentCard OAuth +// connect/callback/disconnect routes append when they redirect back to the claw +// settings route into a user-facing toast. Mirrors google-oauth-feedback.ts. +// +// AgentCard and Google share several generic error codes (oauth_init_failed, +// missing_instance, …), so the routes also append `provider=agentcard`; the +// settings page uses that marker to pick this resolver over the Google one. + +const AGENTCARD_OAUTH_GENERIC_ERROR = 'Could not connect Agentcard. Please try again.'; + +const AGENTCARD_OAUTH_ERROR_MESSAGES: Record = { + access_denied: 'Agentcard connection was cancelled.', + connection_failed: AGENTCARD_OAUTH_GENERIC_ERROR, + oauth_init_failed: 'Could not start the Agentcard connection. Please try again.', + oauth_error: AGENTCARD_OAUTH_GENERIC_ERROR, + missing_instance: 'Your KiloClaw instance is still starting. Try again in a moment.', + missing_code: 'Agentcard did not return an authorization code. Please try again.', + invalid_state: 'The connection link expired. Please try connecting again.', + invalid_origin: 'Could not complete the request. Please try again.', + invalid_organization: 'Invalid organization for this connection.', + unauthorized: 'You are not authorized to complete this connection.', + // The grant succeeded but pushing the token to the agent's worker did not. + agentcard_connect_incomplete: + 'Agentcard connected, but we could not finish setting it up on your agent. Please try reconnecting.', + disconnect_failed: 'Could not disconnect Agentcard. Please try again.', + method_not_allowed: 'That request could not be completed. Please try again.', +}; + +export type AgentCardOAuthFeedback = { kind: 'success' | 'error'; message: string }; + +/** + * Resolve the toast to show for the AgentCard OAuth redirect params. Only + * `agentcard_connected`/`agentcard_disconnected` count as success; any non-empty + * `error` falls back to the generic message so failures are never silent. + */ +export function resolveAgentCardOAuthFeedback( + success: string | null, + error: string | null +): AgentCardOAuthFeedback | null { + if (success === 'agentcard_connected') { + return { kind: 'success', message: 'Agentcard connected' }; + } + if (success === 'agentcard_disconnected') { + return { kind: 'success', message: 'Agentcard disconnected' }; + } + if (error) { + return { + kind: 'error', + message: AGENTCARD_OAUTH_ERROR_MESSAGES[error] ?? AGENTCARD_OAUTH_GENERIC_ERROR, + }; + } + return null; +} diff --git a/apps/web/src/app/api/integrations/agentcard/callback/route.ts b/apps/web/src/app/api/integrations/agentcard/callback/route.ts index c0a429ff3..1aedfadd5 100644 --- a/apps/web/src/app/api/integrations/agentcard/callback/route.ts +++ b/apps/web/src/app/api/integrations/agentcard/callback/route.ts @@ -29,14 +29,17 @@ function buildRedirectPath( state: { owner: VerifiedAgentCardOAuthState['owner']; returnTo?: string } | null | undefined, preEncodedQueryFragment: string ): string { + // Tag every redirect so the settings page shows AgentCard copy (not Google) + // for the otherwise-shared error/success codes. + const fragment = `${preEncodedQueryFragment}&provider=agentcard`; if (state?.returnTo) { const separator = state.returnTo.includes('?') ? '&' : '?'; - return `${state.returnTo}${separator}${preEncodedQueryFragment}`; + return `${state.returnTo}${separator}${fragment}`; } if (state?.owner?.type === 'org') { - return `/organizations/${state.owner.id}/claw/settings?${preEncodedQueryFragment}`; + return `/organizations/${state.owner.id}/claw/settings?${fragment}`; } - return `/claw/settings?${preEncodedQueryFragment}`; + return `/claw/settings?${fragment}`; } function sanitizeOAuthProviderError( @@ -98,7 +101,7 @@ export async function GET(request: NextRequest) { tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth' }, extra: oauthSentryContext(searchParams), }); - return NextResponse.redirect(new URL('/claw/settings?error=invalid_state', APP_URL)); + return NextResponse.redirect(new URL(buildRedirectPath(null, 'error=invalid_state'), APP_URL)); } if (verifiedState.userId !== user.id) { @@ -107,13 +110,13 @@ export async function GET(request: NextRequest) { tags: { endpoint: 'agentcard/callback', source: 'agentcard_oauth' }, extra: { stateUserId: verifiedState.userId, sessionUserId: user.id }, }); - return NextResponse.redirect(new URL('/claw/settings?error=unauthorized', APP_URL)); + return NextResponse.redirect(new URL(buildRedirectPath(null, 'error=unauthorized'), APP_URL)); } if (verifiedState.owner.type === 'org') { await ensureOrganizationAccess({ user }, verifiedState.owner.id); } else if (verifiedState.owner.id !== user.id) { - return NextResponse.redirect(new URL('/claw/settings?error=unauthorized', APP_URL)); + return NextResponse.redirect(new URL(buildRedirectPath(null, 'error=unauthorized'), APP_URL)); } const oauthErrorCode = sanitizeOAuthProviderError(error, errorDescription); @@ -160,7 +163,7 @@ export async function GET(request: NextRequest) { userId: user.id, }, }); - return NextResponse.redirect(new URL('/claw/settings?error=unauthorized', APP_URL)); + return NextResponse.redirect(new URL(buildRedirectPath(null, 'error=unauthorized'), APP_URL)); } if (verifiedState.owner.type === 'org') { diff --git a/apps/web/src/app/api/integrations/agentcard/connect/route.ts b/apps/web/src/app/api/integrations/agentcard/connect/route.ts index b88b58ff4..c7f364f78 100644 --- a/apps/web/src/app/api/integrations/agentcard/connect/route.ts +++ b/apps/web/src/app/api/integrations/agentcard/connect/route.ts @@ -23,10 +23,11 @@ import type { Owner } from '@/lib/integrations/core/types'; const OrganizationIdSchema = z.string().uuid(); function buildConnectErrorPath(organizationId: string | undefined, errorCode: string): string { + const query = `error=${encodeURIComponent(errorCode)}&provider=agentcard`; if (organizationId) { - return `/organizations/${organizationId}/claw/settings?error=${encodeURIComponent(errorCode)}`; + return `/organizations/${organizationId}/claw/settings?${query}`; } - return `/claw/settings?error=${encodeURIComponent(errorCode)}`; + return `/claw/settings?${query}`; } /** @@ -48,7 +49,9 @@ export async function GET(request: NextRequest) { if (organizationIdParam) { const parsedOrgId = OrganizationIdSchema.safeParse(organizationIdParam); if (!parsedOrgId.success) { - return NextResponse.redirect(new URL('/claw/settings?error=invalid_organization', APP_URL)); + return NextResponse.redirect( + new URL(buildConnectErrorPath(undefined, 'invalid_organization'), APP_URL) + ); } organizationId = parsedOrgId.data; await ensureOrganizationAccess({ user }, organizationId); diff --git a/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts b/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts index 0ff8f4178..14a7bc2d5 100644 --- a/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts +++ b/apps/web/src/app/api/integrations/agentcard/disconnect/route.ts @@ -23,10 +23,11 @@ const AGENTCARD_SECRET_KEY = 'AGENTCARD_API_KEY'; const OrganizationIdSchema = z.string().uuid(); function buildDisconnectPath(organizationId: string | undefined, queryParam: string): string { + const query = `${queryParam}&provider=agentcard`; if (organizationId) { - return `/organizations/${organizationId}/claw/settings?${queryParam}`; + return `/organizations/${organizationId}/claw/settings?${query}`; } - return `/claw/settings?${queryParam}`; + return `/claw/settings?${query}`; } function isSameOriginMutation(request: NextRequest): boolean { @@ -44,7 +45,7 @@ export async function POST(request: NextRequest) { try { if (!isSameOriginMutation(request)) { - return NextResponse.redirect(new URL('/claw/settings?error=invalid_origin', APP_URL), 303); + return NextResponse.redirect(new URL(buildDisconnectPath(undefined, 'error=invalid_origin'), APP_URL), 303); } const { user, authFailedResponse } = await getUserFromAuth({ adminOnly: false }); @@ -57,7 +58,7 @@ export async function POST(request: NextRequest) { const parsedOrgId = OrganizationIdSchema.safeParse(organizationIdParam); if (!parsedOrgId.success) { return NextResponse.redirect( - new URL('/claw/settings?error=invalid_organization', APP_URL), + new URL(buildDisconnectPath(undefined, 'error=invalid_organization'), APP_URL), 303 ); } @@ -135,5 +136,5 @@ export async function POST(request: NextRequest) { } export async function GET() { - return NextResponse.redirect(new URL('/claw/settings?error=method_not_allowed', APP_URL)); + return NextResponse.redirect(new URL(buildDisconnectPath(undefined, 'error=method_not_allowed'), APP_URL)); } From 1737b3245ad1987957b2c18da877865cdc692576 Mon Sep 17 00:00:00 2001 From: Karen Date: Wed, 17 Jun 2026 21:24:58 +0200 Subject: [PATCH 8/8] docs(agentcard): add integration README with test guide + screenshots README for the AgentCard integration: how it works, key files, env vars, production and local (no-worker) test instructions, and how to verify the OAuth token against the AgentCard MCP by simulating the worker. Includes screenshots of the first-run prompt, not-connected, and connected states. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/lib/integrations/agentcard/README.md | 106 ++++++++++++++++++ .../agentcard/docs/connect-prompt.png | Bin 0 -> 287613 bytes .../agentcard/docs/settings-connected.png | Bin 0 -> 254914 bytes .../agentcard/docs/settings-not-connected.png | Bin 0 -> 260685 bytes 4 files changed, 106 insertions(+) create mode 100644 apps/web/src/lib/integrations/agentcard/README.md create mode 100644 apps/web/src/lib/integrations/agentcard/docs/connect-prompt.png create mode 100644 apps/web/src/lib/integrations/agentcard/docs/settings-connected.png create mode 100644 apps/web/src/lib/integrations/agentcard/docs/settings-not-connected.png diff --git a/apps/web/src/lib/integrations/agentcard/README.md b/apps/web/src/lib/integrations/agentcard/README.md new file mode 100644 index 000000000..a422a5550 --- /dev/null +++ b/apps/web/src/lib/integrations/agentcard/README.md @@ -0,0 +1,106 @@ +# AgentCard integration + +A first-class **AgentCard** connection for KiloClaw: a one-click *Connect Agentcard* +OAuth 2.1 (PKCE) flow that replaces the old paste-a-token approach. Once connected, +the user's AgentCard access token is pushed to their agent's worker, the `agentcard` +MCP server is configured automatically, and the bundled `agentcard` skill lets the +agent act on requests like "create a $20 card." + +## Screenshots + +| First-run prompt | Not connected | Connected | +|---|---|---| +| ![Connect prompt](./docs/connect-prompt.png) | ![Not connected](./docs/settings-not-connected.png) | ![Connected](./docs/settings-connected.png) | + +## How it works + +``` +Settings ▸ Connect Agentcard + └─ GET /api/integrations/agentcard/connect → signed PKCE state, redirect to AgentCard /authorize + └─ AgentCard sign-in (magic link) + consent + └─ GET /api/integrations/agentcard/callback → verify state, exchange code → tokens (encrypted, stored) + └─ push access token to the worker as AGENTCARD_API_KEY (config-writer → `agentcard` MCP Bearer) + └─ POST /api/integrations/agentcard/disconnect → revoke grant, clear connection, drop worker secret + cron /api/cron/agentcard-token-refresh (10m) → refresh near-expiry tokens, re-push to the worker +``` + +Key files: + +| Path | Purpose | +|---|---| +| `apps/web/src/lib/integrations/agentcard/agentcard-service.ts` | OAuth 2.1 client (PKCE, dynamic registration, token exchange/refresh/revoke) | +| `apps/web/src/lib/integrations/agentcard/oauth-state.ts` | HMAC-signed PKCE state (binds the flow to the user; 10-min TTL) | +| `apps/web/src/lib/kiloclaw/agentcard-oauth-connections.ts` | Encrypted per-instance token store + refresh helpers | +| `apps/web/src/lib/kiloclaw/agentcard-token-refresh.ts` | Cron sweep that refreshes + re-pushes tokens | +| `apps/web/src/app/api/integrations/agentcard/{connect,callback,disconnect}/route.ts` | The three OAuth routes | +| `apps/web/src/app/(app)/claw/components/SettingsTab.tsx` | The "Agentcard" settings card | +| `services/kiloclaw/skills/agentcard/SKILL.md` | Agent skill describing the AgentCard MCP tools | +| `packages/db` migration `0159` | `kiloclaw_agentcard_oauth_connections` table | + +## Environment variables + +| Var | Required | Default | Notes | +|---|---|---|---| +| `AGENTCARD_MCP_BASE_URL` | no | `https://mcp.agentcard.sh` | AgentCard's OAuth 2.1 server. Override for sandbox/local. | +| `AGENTCARD_OAUTH_CLIENT_ID` | no | — | Pre-registered client id; if unset, the integration dynamically registers one. | +| `AGENT_ENV_VARS_PUBLIC_KEY` | for the worker push | — | RSA public key used to encrypt the token pushed to the worker (worker decrypts with `AGENT_ENV_VARS_PRIVATE_KEY`). Normally pulled from the project's Vercel env. | +| `BYOK_ENCRYPTION_KEY` | yes | — | Symmetric key the web app uses to encrypt tokens at rest. | + +## Testing + +### Production-shaped (full end-to-end) + +Requires the normal KiloClaw stack — a running agent worker and the project Vercel +env (`vercel env pull`, which provides `AGENT_ENV_VARS_PUBLIC_KEY` and the worker's +private key). Connect from Settings; the token is pushed to the worker and the agent +can call AgentCard tools (`mcporter call agentcard.list_cards`, etc.). + +### Local (no worker) + +The OAuth flow itself — connect, magic link, consent, callback, token storage, +disconnect — is fully testable locally. The only piece that needs a real worker is +the secret hand-off, so card *usage* by the agent isn't exercised locally. + +> Local sign-in and a worker-less instance rely on the dev conveniences on branch +> `chore/local-dev-kiloclaw-mock` (fake login + `KILOCLAW_DEV_MOCK` fake instance). +> Merge/cherry-pick that branch locally before testing. + +1. **Infra + migrations** + ```bash + docker compose -f dev/docker-compose.yml up -d + pnpm drizzle migrate + ``` +2. **Run AgentCard locally** (in the agent-cards repo): backend on `:3001`, then the + MCP OAuth server pointed at it: + ```bash + AGENT_CARDS_API_URL=http://localhost:3001 MCP_BASE_URL=http://localhost:3012 PORT=3012 \ + pnpm --filter mcp dev:http + ``` +3. **Point Kilo at it** — in `apps/web/.env.development.local`: + ``` + AGENTCARD_MCP_BASE_URL=http://localhost:3012 + ``` +4. **Run the web app** (`pnpm dev:start` or `pnpm --filter web dev`) and sign in: + ``` + http://localhost:3000/users/sign_in?fakeUser=you@admin.example.com&callbackPath=/claw/settings + ``` +5. **Settings ▸ Payments ▸ Connect Agentcard** → finish the magic-link + consent → + you land back on Settings showing **Connected**. (On a worker-less fake instance + the token push is skipped so the connection shows connected rather than + `agentcard_connect_incomplete`.) + +### Verifying the token actually works (simulating the worker) + +The worker just sets a `Bearer` header on the `agentcard` MCP server. To prove the +token Kilo obtained authorizes against AgentCard without standing up a worker, +decrypt the stored access token (`kiloclaw_agentcard_oauth_connections.access_token_encrypted`, +`BYOK_ENCRYPTION_KEY`) and call the AgentCard MCP server directly: + +``` +POST http://localhost:3012/mcp +Authorization: Bearer +{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" } +``` + +A successful `tools/list` (and a read-only `get_mode` / `list_cards` call) confirms +the full chain end-to-end except the Cloudflare worker hop. diff --git a/apps/web/src/lib/integrations/agentcard/docs/connect-prompt.png b/apps/web/src/lib/integrations/agentcard/docs/connect-prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..b6c237b4db1776a19fe628b72d7a027ce5d376ee GIT binary patch literal 287613 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 W0w3@T&MrJ2eBnM|36(d3%7vh@|pWHsJ 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ํZAM)BIQt8p}FWdHmgV5*@1kCr@0qnsr7^+3ib&BU8;vK9j0V_~OV=tG~l zznZ9UzMl-j-BEo}2OLf&7vI|vJV(k_ptX<_@xKP>LR}&m$8BmJsN4aL0~%MYUclJ+ zuXKOOag$9F#sDN?L6#E_gwc7%D{7p?VWc?ujE5dx9QcBafV*hx;(eS1#jEi1@bxCa zDPlebF~VYm6szNoLrg;VVCDIzq{DwrPae9krWAC4q$^PUL>T`r}{NhgFk}YbZ+qOO%$^4e(vM6$41rT% zUaE0q_o)0>{986W*jm26z+0*#Go+gOCfFuy4>&}RUX1#Ne(i!o~wZJB#lzhk~Da%dUD(Y3u3y=*is;p-3vW$rdonC-D{9 zbL4o{-laETUR{b!YV-s;Ak5_PC1mlta=w?+$Nb|Je;1CB5XiM=y`sDkyPB;KL*js` zPLEU7r7;^G?cYO#j`n+%Gomb0+bX*F>rqdeXOGYp_(cd6Tdy5kM1=t{uB>09VCEz= zfmof#N6cC00wI53?~n|9Y9vm1RK8rNLl(P-F>66hxY}We2itp>SYr1=uQb?I+)C^#}Bd?B{&&Z zpOqTkw_1Hrvwf|VxLY-uo+Z|vcpzN5WIvr`h|DAs9CCnoHsHPSVX%wDx^ z5MxNK&iG z*2alNJ4xNCVVM%!yKy@f)vT!1x8CX;uVe=pCyc(RF{H@6HmV=JYC7C@cbiqX+1mYbkY<52o_foFdqbc#O}vS*yx)??eDaEp6}QW>fJ%<&e! z$NHQE`Bred;EJ!PtkE+CY0uPmyKeKNd^M@<^T{xVctHt_yM$mc1+Z@Rjx(~cN;XmunsOy%D*tRg7F_h|?W@SInMRa4UREIIf=Oa!6 zd+x&uV1)VmP(T{=v9Uw=&__9SYu9$cvoYR-((9ey8#m~QuX2CRT^0 zkU}!yBmq%bnx}JTd(?%6&}kwatToNvuTGmEMO_k$(k^f7B9#UbBF60&r?h)k9~p3S zXmq+Bw10kef?Ve#kW!wzi?IE-B@rIgIU5_!HA`P(J)cKoR#oumq>14SJT_`|gC6 zl;QFsCYl#6CD?UNQgzy~G#MmK&!OL9ie@Z^)-?>KCw7f)TBSVIpsw>EP=8exyuHC5 zIKsrYYoY1?*xrmHuzIdx*fx~-ly~*Q@AM5jhQ{ts9v;fNP5w=nmsRYVp@M{dka5IM zi1X@ki|lS-_B6trY!;qf79FSfMUrPZjdB)M^nAm%no`oomLUl#`w*dkA;GI&xkY4$TX*-u z$qDjSJ%WDCykbJA8uQSKN*P_oU_tSZFQ7!`F(RZ!)z;B=k5P}wK0-R>$$9jVZA^Z; zQ|XwQ_LfwRgztb<-nHHB{iiys0>WuhLZV-=j!`yl87g(5fE^7pJrEw*aZj)JH2x47 z8Y`h=sijx8Vy9F&=staEOC`K$UsnG|e>SrmueukyfsXA=!Q1A=ZNxZ<*MYF<^4rt3 z=G#pMI(XsneKgY-hGneFfgmHYb>S7e#k(JhmY(XW<~hNz6IUaf^lc2y7jH!~?+SeO zi^E+&_OV{fa|?o*Qx~tK;0+go8OAa>@cym+JCD&bz4rsz!#)KEE^N4=ke**xL!Tw8 z)hC}dFH;xqf%0AkBW{s4Bp@a2TCW5dU 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�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 No|d8JE%k%p{{xtF$zA{e literal 0 HcmV?d00001 diff --git a/apps/web/src/lib/integrations/agentcard/docs/settings-not-connected.png b/apps/web/src/lib/integrations/agentcard/docs/settings-not-connected.png new file mode 100644 index 0000000000000000000000000000000000000000..d96da451ac7d94802712a958301f11121b572943 GIT binary patch literal 260685 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 d;%3}Lwxi~;f9