diff --git a/.changeset/close-frontend-review.md b/.changeset/close-frontend-review.md
new file mode 100644
index 00000000..7e4be0f7
--- /dev/null
+++ b/.changeset/close-frontend-review.md
@@ -0,0 +1,5 @@
+---
+'neondeck': patch
+---
+
+Close the frontend review with stable PR-finding provenance, operation-scoped review feedback, stricter Flue chat configuration, and final dashboard polish.
diff --git a/.plans/DIFF_IMPROVEMENTS_PLAN.md b/.plans/DIFF_IMPROVEMENTS_PLAN.md
index 594a2da4..04c43662 100644
--- a/.plans/DIFF_IMPROVEMENTS_PLAN.md
+++ b/.plans/DIFF_IMPROVEMENTS_PLAN.md
@@ -1,6 +1,8 @@
# Diff Improvements Plan
-Status: proposed
+Status: proposed; Phase A performance reconciliation is complete, and normalized source/revision contracts are next
+
+Progress note (2026-07-18): the specialized large-PR work now has real registered-PR measurements, stable review-thread identity, bounded local metadata reuse, active-patch priority, and a passing first-patch browser budget. The one-time cold-fetch decision remains deferred in `.plans/PR_REVIEW_PERF_PLAN.md`; it does not block the remaining Phase A source/revision contract work.
Related plans:
diff --git a/.plans/FRONTEND_STATIC_REVIEW_20260715.html b/.plans/FRONTEND_STATIC_REVIEW_20260715.html
index 30e0393b..0298004b 100644
--- a/.plans/FRONTEND_STATIC_REVIEW_20260715.html
+++ b/.plans/FRONTEND_STATIC_REVIEW_20260715.html
@@ -992,9 +992,10 @@
CodeView are implemented and verified. The real large-PR backend/browser trace is also
complete. The two approved request-path fixes are now implemented and remeasured:
review-thread identity is stable and immutable local PR metadata is reused across
- patch reads. Active-patch prioritization remains the next performance discussion;
- keep cold-fetch changes, Runtime aggregation, review-subtree consolidation, and
- registry splitting behind workload and budget evidence.
+ patch reads. Active-patch prioritization is also implemented and remeasured: the
+ selected patch now passes the one-second target in all three retained samples. Keep
+ cold-fetch changes, Runtime aggregation, review-subtree consolidation, and registry
+ splitting behind workload and budget evidence.
No findings match this filter.
@@ -1353,8 +1354,8 @@ Recommended sequence
COMPLETED · ACTIVE PATCH PRIORITY P1 · Active patch priority: discuss whether neighbor and unresolved-path prefetch should wait for the active patch. The retained remediated trace was 195 ms over target; the implemented active-first schedule now reaches a 798 ms median and passes all three samples while preserving zero abandoned reads.
COMPLETED · COPY/DISCLOSURE P2 · Copy/disclosure: row-specific action names and full-value affordances for operational text. Suggested command: $impeccable clarify.
COMPLETED · PR #140 P2 · Editor state ownership: keep new-comment, draft-edit, and thread-reply bodies scoped to their editor generation so older async completions cannot clear newer work.
- P3 · Final pass: tabular metrics, timer cleanup, operation-scoped status, stable finding IDs, and config tightening. Suggested command: $impeccable polish.
- Re-audit: repeat the static audit, then run focused runtime and accessibility checks against the agreed fixtures.
+ COMPLETED · FINAL PASS P3 · Final pass: tabular metrics, timer cleanup, operation-scoped status, stable finding IDs, and config tightening. Suggested command: $impeccable polish.
+ COMPLETED · CLOSING GATE Re-audit: repeat the static audit, then run focused runtime and accessibility checks against the agreed fixtures.
You can ask to run these one at a time, all at once, or in any order. Re-run
diff --git a/src/modules/github/reviews.ts b/src/modules/github/reviews.ts
index 814bb7ee..04384291 100644
--- a/src/modules/github/reviews.ts
+++ b/src/modules/github/reviews.ts
@@ -42,6 +42,7 @@ export type GitHubPrReviewDraftComment = {
startSide: GitHubPrReviewDraftCommentSide | null;
body: string;
origin: GitHubPrReviewDraftCommentOrigin;
+ sourceFindingId: string | null;
createdAt: string;
updatedAt: string;
};
@@ -146,6 +147,7 @@ const draftCommentRowSchema = v.object({
start_side: v.nullable(reviewCommentSideSchema),
body: v.string(),
origin: reviewCommentOriginSchema,
+ source_finding_id: v.nullable(v.string()),
created_at: v.string(),
updated_at: v.string(),
});
@@ -386,6 +388,7 @@ export function addPrReviewDraftComment(options: {
startSide?: GitHubPrReviewDraftCommentSide | null;
body: string;
origin?: GitHubPrReviewDraftCommentOrigin;
+ sourceFindingId?: string | null;
}): GitHubPrReviewDraft {
const database = openDb(options.databasePath);
const now = new Date().toISOString();
@@ -405,10 +408,11 @@ export function addPrReviewDraftComment(options: {
start_side,
body,
origin,
+ source_finding_id,
created_at,
updated_at
)
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
`,
)
.run(
@@ -421,6 +425,7 @@ export function addPrReviewDraftComment(options: {
options.startSide ?? null,
options.body.trim(),
options.origin ?? 'human',
+ options.sourceFindingId ?? null,
now,
now,
);
@@ -1192,6 +1197,7 @@ function readDraftComments(
startSide: parsed.start_side,
body: parsed.body,
origin: parsed.origin,
+ sourceFindingId: parsed.source_finding_id,
createdAt: parsed.created_at,
updatedAt: parsed.updated_at,
};
diff --git a/src/modules/pr-events/schemas.ts b/src/modules/pr-events/schemas.ts
index bf01817a..97218cf6 100644
--- a/src/modules/pr-events/schemas.ts
+++ b/src/modules/pr-events/schemas.ts
@@ -159,6 +159,9 @@ export const prReviewDraftCommentInputSchema = v.object({
),
startSide: v.optional(v.nullable(v.picklist(['RIGHT', 'LEFT']))),
body: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(65_536)),
+ sourceFindingId: v.optional(
+ v.nullable(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(128))),
+ ),
});
export const prReviewDraftCommentUpdateInputSchema = v.object({
body: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(65_536)),
diff --git a/src/modules/pr-events/service.ts b/src/modules/pr-events/service.ts
index 9fef567d..cd795d18 100644
--- a/src/modules/pr-events/service.ts
+++ b/src/modules/pr-events/service.ts
@@ -583,6 +583,7 @@ export async function postGitHubPrReviewDraftComment(
startLine: parsed.output.startLine ?? null,
startSide: parsed.output.startSide ?? null,
body: parsed.output.body,
+ sourceFindingId: parsed.output.sourceFindingId ?? null,
});
return okResult(
'github_pr_review_draft_comment_post',
diff --git a/src/modules/pr-review-assist/service.ts b/src/modules/pr-review-assist/service.ts
index ca816476..271950ad 100644
--- a/src/modules/pr-review-assist/service.ts
+++ b/src/modules/pr-review-assist/service.ts
@@ -42,6 +42,7 @@ import {
type ReviewAssistStructuredOutput,
} from './schemas';
import { buildReviewReportDecks } from './report-deck';
+import { prReviewFindingSourceId } from '../pr-reviews/finding-id';
export type ReviewAssistFacts = {
target: PullRequestTarget;
@@ -198,6 +199,10 @@ export async function reviewPrForHuman(
seededCount: seedResult.seeded.length,
reportOnlyCount: seedResult.reportOnly.length,
reportOnlyFindings: seedResult.reportOnly.map((item) => ({
+ sourceId: prReviewFindingSourceId({
+ ...item.finding,
+ line: findingLine(item.finding),
+ }),
severity: item.finding.severity,
path: item.finding.path,
line: findingLine(item.finding),
@@ -417,6 +422,10 @@ async function seedDraftComments(
startSide: item.anchor.startSide ?? null,
body: seededCommentBody(item.finding),
origin: 'neon',
+ sourceFindingId: prReviewFindingSourceId({
+ ...item.finding,
+ line: findingLine(item.finding),
+ }),
});
const added = draft.comments.find(
(comment) => !beforeIds.has(comment.id),
diff --git a/src/modules/pr-reviews/finding-id.ts b/src/modules/pr-reviews/finding-id.ts
new file mode 100644
index 00000000..e7a6f3c6
--- /dev/null
+++ b/src/modules/pr-reviews/finding-id.ts
@@ -0,0 +1,20 @@
+import { createHash } from 'node:crypto';
+
+export type PrReviewFindingIdentity = {
+ line: number | null;
+ path: string;
+ severity: 'critical' | 'major' | 'minor' | 'nit';
+ suggestedFix: string;
+ summary: string;
+};
+
+export function prReviewFindingSourceId(finding: PrReviewFindingIdentity) {
+ const canonicalFinding = JSON.stringify([
+ finding.severity,
+ finding.path,
+ finding.line,
+ finding.summary,
+ finding.suggestedFix,
+ ]);
+ return `prf_${createHash('sha256').update(canonicalFinding).digest('hex').slice(0, 24)}`;
+}
diff --git a/src/modules/pr-reviews/store.ts b/src/modules/pr-reviews/store.ts
index ed3d668d..811f99c2 100644
--- a/src/modules/pr-reviews/store.ts
+++ b/src/modules/pr-reviews/store.ts
@@ -7,6 +7,7 @@ import type {
PrReviewStatus,
PrReviewVerdict,
} from './types';
+import { prReviewFindingSourceId } from './finding-id';
export function readPrReview(id: string, paths: RuntimePaths) {
return readOne('id = ?', id.trim(), paths);
@@ -161,26 +162,46 @@ function reportOnlyFindings(value: unknown): PrReviewReportOnlyFinding[] {
try {
const parsed = JSON.parse(stringValue(value));
if (!Array.isArray(parsed)) return [];
- return parsed.filter(isReportOnlyFinding);
+ return parsed.flatMap((item) => {
+ const finding = reportOnlyFinding(item);
+ return finding ? [finding] : [];
+ });
} catch {
return [];
}
}
-function isReportOnlyFinding(
- value: unknown,
-): value is PrReviewReportOnlyFinding {
- if (!value || typeof value !== 'object' || Array.isArray(value)) return false;
+function reportOnlyFinding(value: unknown): PrReviewReportOnlyFinding | null {
+ if (!value || typeof value !== 'object' || Array.isArray(value)) return null;
const item = value as Record;
- return (
- (item.severity === 'critical' ||
+ if (
+ !(
+ item.severity === 'critical' ||
item.severity === 'major' ||
item.severity === 'minor' ||
- item.severity === 'nit') &&
- typeof item.path === 'string' &&
- (item.line === null || typeof item.line === 'number') &&
- typeof item.summary === 'string' &&
- typeof item.suggestedFix === 'string' &&
- typeof item.reason === 'string'
- );
+ item.severity === 'nit'
+ ) ||
+ typeof item.path !== 'string' ||
+ !(item.line === null || typeof item.line === 'number') ||
+ typeof item.summary !== 'string' ||
+ typeof item.suggestedFix !== 'string' ||
+ typeof item.reason !== 'string'
+ ) {
+ return null;
+ }
+ const finding: Omit = {
+ severity: item.severity,
+ path: item.path,
+ line: item.line,
+ summary: item.summary,
+ suggestedFix: item.suggestedFix,
+ reason: item.reason,
+ };
+ return {
+ ...finding,
+ sourceId:
+ typeof item.sourceId === 'string' && item.sourceId.trim().length > 0
+ ? item.sourceId
+ : prReviewFindingSourceId(finding),
+ };
}
diff --git a/src/modules/pr-reviews/types.ts b/src/modules/pr-reviews/types.ts
index 8b591fd0..5081598b 100644
--- a/src/modules/pr-reviews/types.ts
+++ b/src/modules/pr-reviews/types.ts
@@ -6,6 +6,7 @@ export type PrReviewOrigin = 'chat' | 'panel' | 'api';
export type PrReviewVerdict = 'comment' | 'approve' | 'request-changes';
export type PrReviewReportOnlyFinding = {
+ sourceId?: string;
severity: 'critical' | 'major' | 'minor' | 'nit';
path: string;
line: number | null;
diff --git a/src/pr-review-assist.test.ts b/src/pr-review-assist.test.ts
index de24d33d..80240cb0 100644
--- a/src/pr-review-assist.test.ts
+++ b/src/pr-review-assist.test.ts
@@ -58,10 +58,14 @@ describe('PR review assist', () => {
line: 3,
body: 'Neon draft',
origin: 'neon',
+ sourceFindingId: 'prf_seeded_finding',
});
expect(withHuman.comments.at(-1)).toMatchObject({ origin: 'human' });
- expect(withNeon.comments.at(-1)).toMatchObject({ origin: 'neon' });
+ expect(withNeon.comments.at(-1)).toMatchObject({
+ origin: 'neon',
+ sourceFindingId: 'prf_seeded_finding',
+ });
});
it('seeds only anchor-valid Neon draft comments and writes escaped reports', async () => {
@@ -124,6 +128,12 @@ describe('PR review assist', () => {
seededCount: 1,
reportOnlyCount: 1,
skippedSeedingReason: null,
+ reportOnlyFindings: [
+ expect.objectContaining({
+ sourceId: expect.stringMatching(/^prf_[a-f0-9]{24}$/),
+ summary: 'This cannot be anchored.',
+ }),
+ ],
});
const draft = readLivePrReviewDraft({
@@ -136,6 +146,7 @@ describe('PR review assist', () => {
path: 'src/app.ts',
line: 2,
origin: 'neon',
+ sourceFindingId: expect.stringMatching(/^prf_[a-f0-9]{24}$/),
body: expect.stringContaining('Generated by Neon'),
},
]);
diff --git a/src/runtime-home/app-db/migrations/20260718025447_pr_review_finding_provenance/migration.sql b/src/runtime-home/app-db/migrations/20260718025447_pr_review_finding_provenance/migration.sql
new file mode 100644
index 00000000..6238c075
--- /dev/null
+++ b/src/runtime-home/app-db/migrations/20260718025447_pr_review_finding_provenance/migration.sql
@@ -0,0 +1 @@
+ALTER TABLE `pr_review_draft_comments` ADD `source_finding_id` text;
diff --git a/src/runtime-home/app-db/migrations/20260718025447_pr_review_finding_provenance/snapshot.json b/src/runtime-home/app-db/migrations/20260718025447_pr_review_finding_provenance/snapshot.json
new file mode 100644
index 00000000..190a064b
--- /dev/null
+++ b/src/runtime-home/app-db/migrations/20260718025447_pr_review_finding_provenance/snapshot.json
@@ -0,0 +1,7819 @@
+{
+ "version": "7",
+ "dialect": "sqlite",
+ "id": "31eab6a2-f07c-40f5-a945-84cf17590ab0",
+ "prevIds": ["80df034a-5dab-4102-a17a-86963235711d"],
+ "ddl": [
+ {
+ "name": "app_metadata",
+ "entityType": "tables"
+ },
+ {
+ "name": "autopilot_admissions",
+ "entityType": "tables"
+ },
+ {
+ "name": "briefing_profiles",
+ "entityType": "tables"
+ },
+ {
+ "name": "briefing_runs",
+ "entityType": "tables"
+ },
+ {
+ "name": "chat_session_audit",
+ "entityType": "tables"
+ },
+ {
+ "name": "chat_session_command_events",
+ "entityType": "tables"
+ },
+ {
+ "name": "chat_session_surfaces",
+ "entityType": "tables"
+ },
+ {
+ "name": "chat_sessions",
+ "entityType": "tables"
+ },
+ {
+ "name": "config_history",
+ "entityType": "tables"
+ },
+ {
+ "name": "execution_approvals",
+ "entityType": "tables"
+ },
+ {
+ "name": "github_pr_file_cache",
+ "entityType": "tables"
+ },
+ {
+ "name": "kilo_result_events",
+ "entityType": "tables"
+ },
+ {
+ "name": "kilo_result_state",
+ "entityType": "tables"
+ },
+ {
+ "name": "kilo_session_audit",
+ "entityType": "tables"
+ },
+ {
+ "name": "kilo_task_events",
+ "entityType": "tables"
+ },
+ {
+ "name": "kilo_tasks",
+ "entityType": "tables"
+ },
+ {
+ "name": "learning_candidates",
+ "entityType": "tables"
+ },
+ {
+ "name": "learning_events",
+ "entityType": "tables"
+ },
+ {
+ "name": "learning_reviews",
+ "entityType": "tables"
+ },
+ {
+ "name": "mcp_oauth_logins",
+ "entityType": "tables"
+ },
+ {
+ "name": "mcp_oauth_tokens",
+ "entityType": "tables"
+ },
+ {
+ "name": "mcp_tool_approvals",
+ "entityType": "tables"
+ },
+ {
+ "name": "mcp_tool_audit",
+ "entityType": "tables"
+ },
+ {
+ "name": "mcp_tool_catalog",
+ "entityType": "tables"
+ },
+ {
+ "name": "memories",
+ "entityType": "tables"
+ },
+ {
+ "name": "memory_events",
+ "entityType": "tables"
+ },
+ {
+ "name": "notifications",
+ "entityType": "tables"
+ },
+ {
+ "name": "pr_review_draft_comments",
+ "entityType": "tables"
+ },
+ {
+ "name": "pr_review_drafts",
+ "entityType": "tables"
+ },
+ {
+ "name": "pr_review_neon_seeded_comments",
+ "entityType": "tables"
+ },
+ {
+ "name": "pr_reviews",
+ "entityType": "tables"
+ },
+ {
+ "name": "pr_watch_event_watermarks",
+ "entityType": "tables"
+ },
+ {
+ "name": "pr_watches",
+ "entityType": "tables"
+ },
+ {
+ "name": "prepared_diff_approvals",
+ "entityType": "tables"
+ },
+ {
+ "name": "prepared_diffs",
+ "entityType": "tables"
+ },
+ {
+ "name": "ref_watches",
+ "entityType": "tables"
+ },
+ {
+ "name": "repo_edit_events",
+ "entityType": "tables"
+ },
+ {
+ "name": "repo_file_reads",
+ "entityType": "tables"
+ },
+ {
+ "name": "reports",
+ "entityType": "tables"
+ },
+ {
+ "name": "scheduled_task_runs",
+ "entityType": "tables"
+ },
+ {
+ "name": "scheduled_tasks",
+ "entityType": "tables"
+ },
+ {
+ "name": "workflow_events",
+ "entityType": "tables"
+ },
+ {
+ "name": "workflow_run_observations",
+ "entityType": "tables"
+ },
+ {
+ "name": "workflow_summaries",
+ "entityType": "tables"
+ },
+ {
+ "name": "worktree_cleanup_attempts",
+ "entityType": "tables"
+ },
+ {
+ "name": "worktree_events",
+ "entityType": "tables"
+ },
+ {
+ "name": "worktree_locks",
+ "entityType": "tables"
+ },
+ {
+ "name": "worktrees",
+ "entityType": "tables"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "key",
+ "entityType": "columns",
+ "table": "app_metadata"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "value",
+ "entityType": "columns",
+ "table": "app_metadata"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "app_metadata"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "watch_id",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "event_fingerprint",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "mode",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'{}'",
+ "generated": null,
+ "name": "input_json",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "state",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "priority",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "current_workflow",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "current_run_id",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "prepared_diff_id",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "attempt_count",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "next_attempt_at",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_error",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "autopilot_admissions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "name",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "1",
+ "generated": null,
+ "name": "enabled",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "instructions",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "1",
+ "generated": null,
+ "name": "instructions_version",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "schedule",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "timezone",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "briefing_profiles"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "profile_id",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "trigger",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "snapshot_json",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "instructions",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "instructions_version",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "command_event_id",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "dispatch_id",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "workflow_run_id",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "queued_at",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "completed_at",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "briefing_runs"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "chat_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "action",
+ "entityType": "columns",
+ "table": "chat_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "chat_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "surface",
+ "entityType": "columns",
+ "table": "chat_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "reason",
+ "entityType": "columns",
+ "table": "chat_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "metadata_json",
+ "entityType": "columns",
+ "table": "chat_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "chat_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "input",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "result_json",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "flue_run_id",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "workflow_summary_id",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "completed_at",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "chat_session_command_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "surface",
+ "entityType": "columns",
+ "table": "chat_session_surfaces"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "chat_session_surfaces"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "chat_session_surfaces"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "title",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "agent_name",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "kind",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "pinned",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "archived_at",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "linked_repo_id",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "linked_watch_id",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "linked_task_id",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "stale_reasons_json",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "ui_metadata_json",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary_generated_at",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary_source",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary_refresh_note",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "context_loaded_at",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "context_memory_ids_json",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "learning_turn_count",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "last_learning_review_turn_count",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_learning_review_at",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "last_learning_curation_turn_count",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_learning_curation_at",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_active_at",
+ "entityType": "columns",
+ "table": "chat_sessions"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "config_history"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "action",
+ "entityType": "columns",
+ "table": "config_history"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "file",
+ "entityType": "columns",
+ "table": "config_history"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "target",
+ "entityType": "columns",
+ "table": "config_history"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "before_json",
+ "entityType": "columns",
+ "table": "config_history"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "after_json",
+ "entityType": "columns",
+ "table": "config_history"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "changed_at",
+ "entityType": "columns",
+ "table": "config_history"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "command",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "backend",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "cwd",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "context",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "risk",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "policy_decision",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "approval_decision",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "approver_surface",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "request_context_json",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "result_json",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "exit_code",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "stdout_preview",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "stderr_preview",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "resolved_at",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "used_at",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "executed_at",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "execution_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo",
+ "entityType": "columns",
+ "table": "github_pr_file_cache"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "github_pr_file_cache"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_sha",
+ "entityType": "columns",
+ "table": "github_pr_file_cache"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "payload",
+ "entityType": "columns",
+ "table": "github_pr_file_cache"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "byte_size",
+ "entityType": "columns",
+ "table": "github_pr_file_cache"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "fetched_at",
+ "entityType": "columns",
+ "table": "github_pr_file_cache"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "kilo_result_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "task_id",
+ "entityType": "columns",
+ "table": "kilo_result_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "event_type",
+ "entityType": "columns",
+ "table": "kilo_result_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary",
+ "entityType": "columns",
+ "table": "kilo_result_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "data_json",
+ "entityType": "columns",
+ "table": "kilo_result_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "kilo_result_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "task_id",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "prepared_diff_id",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "classification",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "verification_status",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "promotion_status",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "diff_fingerprint",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "verified_diff_fingerprint",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "review_summary_json",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "diff_summary_json",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "policy_json",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "verification_json",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "promotion_json",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'[]'",
+ "generated": null,
+ "name": "pending_approvals_json",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "reviewed_at",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "verified_at",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "promoted_at",
+ "entityType": "columns",
+ "table": "kilo_result_state"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "task_id",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "child_session_id",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "read_type",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "requester_surface",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "reason",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "limit_count",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "offset_count",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "include_full_transcript",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "include_tool_output",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "include_diff",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "kilo_session_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "task_id",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "event_index",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "event_type",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "stream",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "child_session_id",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "data_json",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "kilo_task_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "title",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "prompt",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_full_name",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "lock_id",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "cwd",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "mode",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "explicit_user_request",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "auto_enabled",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "cli_path",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "args_json",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pid",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "process_started_at",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "root_session_id",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'[]'",
+ "generated": null,
+ "name": "child_session_ids_json",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "raw_log_path",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "exit_code",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "completed_at",
+ "entityType": "columns",
+ "table": "kilo_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "target",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "action",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "scope",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "key",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "value_json",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "skill_id",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "patch_json",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "reason",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "review_id",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "decided_at",
+ "entityType": "columns",
+ "table": "learning_candidates"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "type",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source_id",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_key",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "data_json",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "learning_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "kind",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "model",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "thinking_level",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "trigger_json",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "input_summary_json",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "result_json",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "flue_run_id",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "started_at",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "completed_at",
+ "entityType": "columns",
+ "table": "learning_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "server_id",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "server_identity",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "state",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "redirect_url",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "authorization_url",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "discovery_state_json",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "code_verifier",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "expires_at",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "completed_at",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "mcp_oauth_logins"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "server_id",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "server_identity",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "access_token",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "refresh_token",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "token_type",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id_token",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "expires_at",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "scopes_json",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "client_information_json",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "discovery_state_json",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "code_verifier",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "mcp_oauth_tokens"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "server_id",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "tool_name",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "adapted_name",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "arguments_hash",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "arguments_preview",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "approver_surface",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "expires_at",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "resolved_at",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "used_at",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "server_id",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "tool_name",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "adapted_name",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "arguments_hash",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "decision",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "approval_id",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "duration_ms",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "ok",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "result_preview",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "server_id",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "tool_name",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "adapted_name",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "description",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "input_schema_json",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "output_schema_json",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "annotations_json",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "scope",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "key",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "value_json",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'active'",
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "use_count",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_used_at",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "memories"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "memory_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "memory_id",
+ "entityType": "columns",
+ "table": "memory_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "action",
+ "entityType": "columns",
+ "table": "memory_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "actor",
+ "entityType": "columns",
+ "table": "memory_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "reason",
+ "entityType": "columns",
+ "table": "memory_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "before_json",
+ "entityType": "columns",
+ "table": "memory_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "after_json",
+ "entityType": "columns",
+ "table": "memory_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "memory_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "level",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "title",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "message",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source_id",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "data_json",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "read_at",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "resolved_at",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "1",
+ "generated": null,
+ "name": "occurrence_count",
+ "entityType": "columns",
+ "table": "notifications"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "draft_id",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "path",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "side",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "line",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "start_line",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "start_side",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "body",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'human'",
+ "generated": null,
+ "name": "origin",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source_finding_id",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_sha",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "verdict",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "body",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "submitted_at",
+ "entityType": "columns",
+ "table": "pr_review_drafts"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "comment_id",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "draft_id",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_sha",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "path",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "side",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "line",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "start_line",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "start_side",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "severity",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "outcome",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "outcome_at",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "seeded_at",
+ "entityType": "columns",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "ref",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_full_name",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "title",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "author",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_url",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "attempt_id",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "run_id",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_sha",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "origin",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "review_url",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'[]'",
+ "generated": null,
+ "name": "report_ids_json",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "finding_count",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "seeded_count",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "report_only_count",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'[]'",
+ "generated": null,
+ "name": "report_only_findings_json",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "trust_boundary",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "verdict",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "previous_verdict",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "github_review_url",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "failure_message",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "ready_at",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "submitted_at",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "failed_at",
+ "entityType": "columns",
+ "table": "pr_reviews"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "watch_id",
+ "entityType": "columns",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "category",
+ "entityType": "columns",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "watermark_json",
+ "entityType": "columns",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source_updated_at",
+ "entityType": "columns",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "checked_at",
+ "entityType": "columns",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_full_name",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "github_owner",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "github_name",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "desired_terminal_state",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_state",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "title",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "url",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "merge_commit_sha",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_snapshot_json",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_outcome",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_checked_at",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_by",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "pr_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "prepared_diff_id",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "approval_type",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "target_sha",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "policy_hash",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "policy_decision",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "reason",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "approver_surface",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "requested_at",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "resolved_at",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_full_name",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "title",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source_worktree_path",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "base_ref",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_ref",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_sha",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "push_approval_status",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "verification_status",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary_json",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_by",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "abandoned_at",
+ "entityType": "columns",
+ "table": "prepared_diffs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_full_name",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "github_owner",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "github_name",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "ref",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "title",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "url",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_snapshot_json",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_outcome",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_checked_at",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "ref_watches"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "workflow_run_id",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "actor_type",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "actor_id",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "action",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "reason",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "paths_json",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "input_hash",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "diff_summary_json",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "diff_patch",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error_json",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "repo_edit_events"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "path",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "real",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "mtime_ms",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "size",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "sha256",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "partial",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "read_at",
+ "entityType": "columns",
+ "table": "repo_file_reads"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "kind",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "title",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "source_ref",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "html_path",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary_json",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_by",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "reports"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "task_id",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "outcome",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "message",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "workflow_run_id",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "session_id",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "result_json",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "started_at",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "completed_at",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "kind",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "trigger_json",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "payload_json",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "1",
+ "generated": null,
+ "name": "enabled",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "next_run_at",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "claim_id",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "claim_expires_at",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_run_at",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "scheduled_tasks"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "run_id",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "workflow",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "event_type",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "event_index",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "level",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "message",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "name",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "operation_kind",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "operation_id",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "duration_ms",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "is_error",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary_json",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "workflow_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "run_id",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "workflow",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "started_at",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "ended_at",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_event_at",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_message",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "event_count",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "duration_ms",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "is_error",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "workflow_run_observations"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "workflow_summaries"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "workflow",
+ "entityType": "columns",
+ "table": "workflow_summaries"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "run_id",
+ "entityType": "columns",
+ "table": "workflow_summaries"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "workflow_summaries"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary_json",
+ "entityType": "columns",
+ "table": "workflow_summaries"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "workflow_summaries"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "workflow_summaries"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "action",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "outcome",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "reason",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "error",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "deleted",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "attempted_at",
+ "entityType": "columns",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "worktree_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "worktree_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "worktree_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "event_type",
+ "entityType": "columns",
+ "table": "worktree_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "status",
+ "entityType": "columns",
+ "table": "worktree_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "message",
+ "entityType": "columns",
+ "table": "worktree_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "data_json",
+ "entityType": "columns",
+ "table": "worktree_events"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "worktree_events"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "scope",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "scope_key",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "worktree_id",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "owner",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "workflow_run_id",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "expires_at",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "revoked_at",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "released_at",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "stale_recovered_at",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "worktree_locks"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_id",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "repo_full_name",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "github_owner",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "github_name",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pr_number",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "base_ref",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_owner",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_name",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_ref",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "head_sha",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "local_path",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "storage_kind",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "owning_workflow_run_id",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "lifecycle_status",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_synced_sha",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "last_pushed_sha",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "cleanup_policy_json",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "direct_push_allowed",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "adopted",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_by",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "created_at",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updated_at",
+ "entityType": "columns",
+ "table": "worktrees"
+ },
+ {
+ "columns": ["draft_id"],
+ "tableTo": "pr_review_drafts",
+ "columnsTo": ["id"],
+ "onUpdate": "NO ACTION",
+ "onDelete": "NO ACTION",
+ "nameExplicit": false,
+ "name": "fk_pr_review_draft_comments_draft_id_pr_review_drafts_id_fk",
+ "entityType": "fks",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "columns": ["draft_id"],
+ "tableTo": "pr_review_drafts",
+ "columnsTo": ["id"],
+ "onUpdate": "NO ACTION",
+ "onDelete": "NO ACTION",
+ "nameExplicit": false,
+ "name": "fk_pr_review_neon_seeded_comments_draft_id_pr_review_drafts_id_fk",
+ "entityType": "fks",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "columns": ["repo", "pr_number", "head_sha"],
+ "nameExplicit": false,
+ "name": "github_pr_file_cache_pk",
+ "entityType": "pks",
+ "table": "github_pr_file_cache"
+ },
+ {
+ "columns": ["server_id", "tool_name"],
+ "nameExplicit": false,
+ "name": "mcp_tool_catalog_pk",
+ "entityType": "pks",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "columns": ["watch_id", "category"],
+ "nameExplicit": false,
+ "name": "pr_watch_event_watermarks_pk",
+ "entityType": "pks",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "columns": ["key"],
+ "nameExplicit": false,
+ "name": "app_metadata_pk",
+ "table": "app_metadata",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "autopilot_admissions_pk",
+ "table": "autopilot_admissions",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "briefing_profiles_pk",
+ "table": "briefing_profiles",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "briefing_runs_pk",
+ "table": "briefing_runs",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "chat_session_audit_pk",
+ "table": "chat_session_audit",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "chat_session_command_events_pk",
+ "table": "chat_session_command_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["surface"],
+ "nameExplicit": false,
+ "name": "chat_session_surfaces_pk",
+ "table": "chat_session_surfaces",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "chat_sessions_pk",
+ "table": "chat_sessions",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "config_history_pk",
+ "table": "config_history",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "execution_approvals_pk",
+ "table": "execution_approvals",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "kilo_result_events_pk",
+ "table": "kilo_result_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["task_id"],
+ "nameExplicit": false,
+ "name": "kilo_result_state_pk",
+ "table": "kilo_result_state",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "kilo_session_audit_pk",
+ "table": "kilo_session_audit",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "kilo_task_events_pk",
+ "table": "kilo_task_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "kilo_tasks_pk",
+ "table": "kilo_tasks",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "learning_candidates_pk",
+ "table": "learning_candidates",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "learning_events_pk",
+ "table": "learning_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "learning_reviews_pk",
+ "table": "learning_reviews",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "mcp_oauth_logins_pk",
+ "table": "mcp_oauth_logins",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["server_id"],
+ "nameExplicit": false,
+ "name": "mcp_oauth_tokens_pk",
+ "table": "mcp_oauth_tokens",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "mcp_tool_approvals_pk",
+ "table": "mcp_tool_approvals",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "mcp_tool_audit_pk",
+ "table": "mcp_tool_audit",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "memories_pk",
+ "table": "memories",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "memory_events_pk",
+ "table": "memory_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "notifications_pk",
+ "table": "notifications",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "pr_review_draft_comments_pk",
+ "table": "pr_review_draft_comments",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "pr_review_drafts_pk",
+ "table": "pr_review_drafts",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["comment_id"],
+ "nameExplicit": false,
+ "name": "pr_review_neon_seeded_comments_pk",
+ "table": "pr_review_neon_seeded_comments",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "pr_reviews_pk",
+ "table": "pr_reviews",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "pr_watches_pk",
+ "table": "pr_watches",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "prepared_diff_approvals_pk",
+ "table": "prepared_diff_approvals",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "prepared_diffs_pk",
+ "table": "prepared_diffs",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "ref_watches_pk",
+ "table": "ref_watches",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "repo_edit_events_pk",
+ "table": "repo_edit_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "repo_file_reads_pk",
+ "table": "repo_file_reads",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "reports_pk",
+ "table": "reports",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "scheduled_task_runs_pk",
+ "table": "scheduled_task_runs",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "scheduled_tasks_pk",
+ "table": "scheduled_tasks",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "workflow_events_pk",
+ "table": "workflow_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["run_id"],
+ "nameExplicit": false,
+ "name": "workflow_run_observations_pk",
+ "table": "workflow_run_observations",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "workflow_summaries_pk",
+ "table": "workflow_summaries",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "worktree_cleanup_attempts_pk",
+ "table": "worktree_cleanup_attempts",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "worktree_events_pk",
+ "table": "worktree_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "worktree_locks_pk",
+ "table": "worktree_locks",
+ "entityType": "pks"
+ },
+ {
+ "columns": ["id"],
+ "nameExplicit": false,
+ "name": "worktrees_pk",
+ "table": "worktrees",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ {
+ "value": "watch_id",
+ "isExpression": false
+ },
+ {
+ "value": "event_fingerprint",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_autopilot_admissions_watch_event",
+ "entityType": "indexes",
+ "table": "autopilot_admissions"
+ },
+ {
+ "columns": [
+ {
+ "value": "state",
+ "isExpression": false
+ },
+ {
+ "value": "next_attempt_at",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_autopilot_admissions_state_due",
+ "entityType": "indexes",
+ "table": "autopilot_admissions"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo_id",
+ "isExpression": false
+ },
+ {
+ "value": "pr_number",
+ "isExpression": false
+ },
+ {
+ "value": "state",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_autopilot_admissions_repo_pr",
+ "entityType": "indexes",
+ "table": "autopilot_admissions"
+ },
+ {
+ "columns": [
+ {
+ "value": "profile_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_briefing_runs_profile",
+ "entityType": "indexes",
+ "table": "briefing_runs"
+ },
+ {
+ "columns": [
+ {
+ "value": "dispatch_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_briefing_runs_dispatch",
+ "entityType": "indexes",
+ "table": "briefing_runs"
+ },
+ {
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_briefing_runs_status",
+ "entityType": "indexes",
+ "table": "briefing_runs"
+ },
+ {
+ "columns": [
+ {
+ "value": "session_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_chat_session_audit_session",
+ "entityType": "indexes",
+ "table": "chat_session_audit"
+ },
+ {
+ "columns": [
+ {
+ "value": "session_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_chat_session_command_events_session",
+ "entityType": "indexes",
+ "table": "chat_session_command_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "archived_at",
+ "isExpression": false
+ },
+ {
+ "value": "\"pinned\" DESC",
+ "isExpression": true
+ },
+ {
+ "value": "\"last_active_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_chat_sessions_recent",
+ "entityType": "indexes",
+ "table": "chat_sessions"
+ },
+ {
+ "columns": [
+ {
+ "value": "kind",
+ "isExpression": false
+ },
+ {
+ "value": "archived_at",
+ "isExpression": false
+ },
+ {
+ "value": "\"last_active_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_chat_sessions_kind",
+ "entityType": "indexes",
+ "table": "chat_sessions"
+ },
+ {
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_execution_approvals_status",
+ "entityType": "indexes",
+ "table": "execution_approvals"
+ },
+ {
+ "columns": [
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_execution_approvals_updated",
+ "entityType": "indexes",
+ "table": "execution_approvals"
+ },
+ {
+ "columns": [
+ {
+ "value": "task_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_kilo_result_events_task",
+ "entityType": "indexes",
+ "table": "kilo_result_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_kilo_result_state_updated",
+ "entityType": "indexes",
+ "table": "kilo_result_state"
+ },
+ {
+ "columns": [
+ {
+ "value": "session_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_kilo_session_audit_session",
+ "entityType": "indexes",
+ "table": "kilo_session_audit"
+ },
+ {
+ "columns": [
+ {
+ "value": "task_id",
+ "isExpression": false
+ },
+ {
+ "value": "event_index",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_kilo_task_events_task",
+ "entityType": "indexes",
+ "table": "kilo_task_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_kilo_tasks_status",
+ "entityType": "indexes",
+ "table": "kilo_tasks"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_kilo_tasks_repo",
+ "entityType": "indexes",
+ "table": "kilo_tasks"
+ },
+ {
+ "columns": [
+ {
+ "value": "root_session_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_kilo_tasks_session",
+ "entityType": "indexes",
+ "table": "kilo_tasks"
+ },
+ {
+ "columns": [
+ {
+ "value": "target",
+ "isExpression": false
+ },
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_learning_candidates_status",
+ "entityType": "indexes",
+ "table": "learning_candidates"
+ },
+ {
+ "columns": [
+ {
+ "value": "type",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_learning_events_type",
+ "entityType": "indexes",
+ "table": "learning_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "source_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": "\"learning_events\".\"type\" = 'pr_handled' AND \"learning_events\".\"source_id\" IS NOT NULL",
+ "origin": "manual",
+ "name": "idx_learning_pr_handled_source",
+ "entityType": "indexes",
+ "table": "learning_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "kind",
+ "isExpression": false
+ },
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"started_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_learning_reviews_kind",
+ "entityType": "indexes",
+ "table": "learning_reviews"
+ },
+ {
+ "columns": [
+ {
+ "value": "server_id",
+ "isExpression": false
+ },
+ {
+ "value": "tool_name",
+ "isExpression": false
+ },
+ {
+ "value": "adapted_name",
+ "isExpression": false
+ },
+ {
+ "value": "arguments_hash",
+ "isExpression": false
+ },
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "expires_at",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_mcp_tool_approvals_pending",
+ "entityType": "indexes",
+ "table": "mcp_tool_approvals"
+ },
+ {
+ "columns": [
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_mcp_tool_audit_created",
+ "entityType": "indexes",
+ "table": "mcp_tool_audit"
+ },
+ {
+ "columns": [
+ {
+ "value": "server_id",
+ "isExpression": false
+ },
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_mcp_tool_catalog_status",
+ "entityType": "indexes",
+ "table": "mcp_tool_catalog"
+ },
+ {
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "scope",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_memories_active_scope",
+ "entityType": "indexes",
+ "table": "memories"
+ },
+ {
+ "columns": [
+ {
+ "value": "scope",
+ "isExpression": false
+ },
+ {
+ "value": "key",
+ "isExpression": false
+ },
+ {
+ "value": "COALESCE(\"repo_id\", '')",
+ "isExpression": true
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_memories_scope_key_repo",
+ "entityType": "indexes",
+ "table": "memories"
+ },
+ {
+ "columns": [
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_memory_events_changed",
+ "entityType": "indexes",
+ "table": "memory_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "source",
+ "isExpression": false
+ },
+ {
+ "value": "source_id",
+ "isExpression": false
+ },
+ {
+ "value": "resolved_at",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_notifications_source_unresolved",
+ "entityType": "indexes",
+ "table": "notifications"
+ },
+ {
+ "columns": [
+ {
+ "value": "resolved_at",
+ "isExpression": false
+ },
+ {
+ "value": "read_at",
+ "isExpression": false
+ },
+ {
+ "value": "level",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_notifications_attention",
+ "entityType": "indexes",
+ "table": "notifications"
+ },
+ {
+ "columns": [
+ {
+ "value": "draft_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" ASC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_pr_review_draft_comments_draft",
+ "entityType": "indexes",
+ "table": "pr_review_draft_comments"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo",
+ "isExpression": false
+ },
+ {
+ "value": "pr_number",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": "\"pr_review_drafts\".\"status\" = 'draft'",
+ "origin": "manual",
+ "name": "idx_pr_review_drafts_live",
+ "entityType": "indexes",
+ "table": "pr_review_drafts"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo",
+ "isExpression": false
+ },
+ {
+ "value": "pr_number",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_pr_review_drafts_pr",
+ "entityType": "indexes",
+ "table": "pr_review_drafts"
+ },
+ {
+ "columns": [
+ {
+ "value": "draft_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"seeded_at\" ASC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_pr_review_neon_seeded_comments_draft",
+ "entityType": "indexes",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo",
+ "isExpression": false
+ },
+ {
+ "value": "pr_number",
+ "isExpression": false
+ },
+ {
+ "value": "\"seeded_at\" ASC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_pr_review_neon_seeded_comments_pr",
+ "entityType": "indexes",
+ "table": "pr_review_neon_seeded_comments"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo_full_name",
+ "isExpression": false
+ },
+ {
+ "value": "pr_number",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_pr_reviews_target",
+ "entityType": "indexes",
+ "table": "pr_reviews"
+ },
+ {
+ "columns": [
+ {
+ "value": "run_id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_pr_reviews_run",
+ "entityType": "indexes",
+ "table": "pr_reviews"
+ },
+ {
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_pr_reviews_status_updated",
+ "entityType": "indexes",
+ "table": "pr_reviews"
+ },
+ {
+ "columns": [
+ {
+ "value": "watch_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_pr_watch_event_watermarks_watch",
+ "entityType": "indexes",
+ "table": "pr_watch_event_watermarks"
+ },
+ {
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_prepared_diff_approvals_pending",
+ "entityType": "indexes",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "columns": [
+ {
+ "value": "prepared_diff_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_prepared_diff_approvals_diff",
+ "entityType": "indexes",
+ "table": "prepared_diff_approvals"
+ },
+ {
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_prepared_diffs_status",
+ "entityType": "indexes",
+ "table": "prepared_diffs"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo_id",
+ "isExpression": false
+ },
+ {
+ "value": "pr_number",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_prepared_diffs_repo",
+ "entityType": "indexes",
+ "table": "prepared_diffs"
+ },
+ {
+ "columns": [
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_repo_edit_events_updated",
+ "entityType": "indexes",
+ "table": "repo_edit_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_repo_edit_events_repo",
+ "entityType": "indexes",
+ "table": "repo_edit_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "session_id",
+ "isExpression": false
+ },
+ {
+ "value": "repo_id",
+ "isExpression": false
+ },
+ {
+ "value": "worktree_id",
+ "isExpression": false
+ },
+ {
+ "value": "path",
+ "isExpression": false
+ },
+ {
+ "value": "\"read_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_repo_file_reads_lookup",
+ "entityType": "indexes",
+ "table": "repo_file_reads"
+ },
+ {
+ "columns": [
+ {
+ "value": "kind",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_reports_kind_created",
+ "entityType": "indexes",
+ "table": "reports"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_reports_repo_created",
+ "entityType": "indexes",
+ "table": "reports"
+ },
+ {
+ "columns": [
+ {
+ "value": "task_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_scheduled_task_runs_task",
+ "entityType": "indexes",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_scheduled_task_runs_status",
+ "entityType": "indexes",
+ "table": "scheduled_task_runs"
+ },
+ {
+ "columns": [
+ {
+ "value": "enabled",
+ "isExpression": false
+ },
+ {
+ "value": "next_run_at",
+ "isExpression": false
+ },
+ {
+ "value": "claim_expires_at",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_scheduled_tasks_due",
+ "entityType": "indexes",
+ "table": "scheduled_tasks"
+ },
+ {
+ "columns": [
+ {
+ "value": "kind",
+ "isExpression": false
+ },
+ {
+ "value": "enabled",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_scheduled_tasks_kind",
+ "entityType": "indexes",
+ "table": "scheduled_tasks"
+ },
+ {
+ "columns": [
+ {
+ "value": "run_id",
+ "isExpression": false
+ },
+ {
+ "value": "event_index",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_workflow_events_run",
+ "entityType": "indexes",
+ "table": "workflow_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_workflow_events_created",
+ "entityType": "indexes",
+ "table": "workflow_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "worktree_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"attempted_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_worktree_cleanup_attempts_worktree",
+ "entityType": "indexes",
+ "table": "worktree_cleanup_attempts"
+ },
+ {
+ "columns": [
+ {
+ "value": "worktree_id",
+ "isExpression": false
+ },
+ {
+ "value": "\"created_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_worktree_events_worktree",
+ "entityType": "indexes",
+ "table": "worktree_events"
+ },
+ {
+ "columns": [
+ {
+ "value": "scope_key",
+ "isExpression": false
+ },
+ {
+ "value": "released_at",
+ "isExpression": false
+ },
+ {
+ "value": "expires_at",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_worktree_locks_active",
+ "entityType": "indexes",
+ "table": "worktree_locks"
+ },
+ {
+ "columns": [
+ {
+ "value": "scope_key",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": "\"worktree_locks\".\"released_at\" IS NULL",
+ "origin": "manual",
+ "name": "idx_worktree_locks_one_active",
+ "entityType": "indexes",
+ "table": "worktree_locks"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo_id",
+ "isExpression": false
+ },
+ {
+ "value": "lifecycle_status",
+ "isExpression": false
+ },
+ {
+ "value": "\"updated_at\" DESC",
+ "isExpression": true
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_worktrees_repo",
+ "entityType": "indexes",
+ "table": "worktrees"
+ },
+ {
+ "columns": [
+ {
+ "value": "repo_id",
+ "isExpression": false
+ },
+ {
+ "value": "pr_number",
+ "isExpression": false
+ },
+ {
+ "value": "head_ref",
+ "isExpression": false
+ },
+ {
+ "value": "lifecycle_status",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "idx_worktrees_pr",
+ "entityType": "indexes",
+ "table": "worktrees"
+ },
+ {
+ "columns": ["repo_full_name", "pr_number"],
+ "nameExplicit": false,
+ "name": "pr_watches_repo_full_name_pr_number_unique",
+ "entityType": "uniques",
+ "table": "pr_watches"
+ },
+ {
+ "columns": ["worktree_id"],
+ "nameExplicit": false,
+ "name": "prepared_diffs_worktree_id_unique",
+ "entityType": "uniques",
+ "table": "prepared_diffs"
+ },
+ {
+ "columns": ["repo_full_name", "ref"],
+ "nameExplicit": false,
+ "name": "ref_watches_repo_full_name_ref_unique",
+ "entityType": "uniques",
+ "table": "ref_watches"
+ },
+ {
+ "columns": ["local_path"],
+ "nameExplicit": false,
+ "name": "worktrees_local_path_unique",
+ "entityType": "uniques",
+ "table": "worktrees"
+ }
+ ],
+ "renames": []
+}
diff --git a/src/runtime-home/app-db/schema.ts b/src/runtime-home/app-db/schema.ts
index f3467d29..a4bf6c4b 100644
--- a/src/runtime-home/app-db/schema.ts
+++ b/src/runtime-home/app-db/schema.ts
@@ -465,6 +465,7 @@ export const prReviewDraftComments = sqliteTable(
startSide: text('start_side'),
body: text('body').notNull(),
origin: text('origin').default('human').notNull(),
+ sourceFindingId: text('source_finding_id'),
createdAt: text('created_at').notNull(),
updatedAt: text('updated_at').notNull(),
},
diff --git a/web/src/App.tsx b/web/src/App.tsx
index 18bdb89c..b4b01cc4 100644
--- a/web/src/App.tsx
+++ b/web/src/App.tsx
@@ -354,6 +354,7 @@ function DashboardPanel({
const initialTabId = region.defaultTab ?? region.tabs[0]?.id ?? '';
const [activeTabId, setActiveTabId] = useState(initialTabId);
const [focusPulse, setFocusPulse] = useState(false);
+ const focusPulseTimeoutRef = useRef(null);
const tabIdPrefix = useId();
const defaultTabRef = useRef({ regionId: region.id, tabId: initialTabId });
const activeTab =
@@ -395,7 +396,13 @@ function DashboardPanel({
detail.handled = true;
setActiveTabId(tab.id);
setFocusPulse(true);
- window.setTimeout(() => setFocusPulse(false), 900);
+ if (focusPulseTimeoutRef.current !== null) {
+ window.clearTimeout(focusPulseTimeoutRef.current);
+ }
+ focusPulseTimeoutRef.current = window.setTimeout(() => {
+ focusPulseTimeoutRef.current = null;
+ setFocusPulse(false);
+ }, 900);
}
window.addEventListener('neondeck:navigate', handleNavigation);
@@ -406,6 +413,15 @@ function DashboardPanel({
};
}, [region.tabs]);
+ useEffect(() => {
+ return () => {
+ if (focusPulseTimeoutRef.current !== null) {
+ window.clearTimeout(focusPulseTimeoutRef.current);
+ focusPulseTimeoutRef.current = null;
+ }
+ };
+ }, []);
+
// In column mode an error frame must stay visible, not be capped under the
// data band's max-height. Promote the failing region to the agent role so it
// uses the floor + grow behavior and the misconfiguration is unmissable.
diff --git a/web/src/api/github.ts b/web/src/api/github.ts
index bca0f28b..fb45cb4e 100644
--- a/web/src/api/github.ts
+++ b/web/src/api/github.ts
@@ -155,6 +155,7 @@ export async function postGitHubPrReviewDraftComment(input: {
startLine?: number | null;
startSide?: 'RIGHT' | 'LEFT' | null;
body: string;
+ sourceFindingId?: string | null;
}) {
const [owner, name] = parseRepo(input.repo);
const response = await postJson(
@@ -167,6 +168,7 @@ export async function postGitHubPrReviewDraftComment(input: {
startLine: input.startLine ?? null,
startSide: input.startSide ?? null,
body: input.body,
+ sourceFindingId: input.sourceFindingId ?? null,
},
);
if (!response.data?.draft) throw new Error(response.message);
diff --git a/web/src/api/types.ts b/web/src/api/types.ts
index 246c5dab..1dc26e86 100644
--- a/web/src/api/types.ts
+++ b/web/src/api/types.ts
@@ -107,6 +107,7 @@ export type PrReviewStatus =
export type PrReviewVerdict = 'comment' | 'approve' | 'request-changes';
export type PrReviewReportOnlyFinding = {
+ sourceId?: string;
severity: 'critical' | 'major' | 'minor' | 'nit';
path: string;
line: number | null;
@@ -349,6 +350,7 @@ export type GitHubPrReviewDraftComment = {
startSide: 'RIGHT' | 'LEFT' | null;
body: string;
origin: 'human' | 'neon';
+ sourceFindingId?: string | null;
createdAt: string;
updatedAt: string;
};
diff --git a/web/src/components/ui.test.tsx b/web/src/components/ui.test.tsx
index 661e614a..a141bee4 100644
--- a/web/src/components/ui.test.tsx
+++ b/web/src/components/ui.test.tsx
@@ -1,6 +1,6 @@
import { renderToStaticMarkup } from 'react-dom/server';
import { describe, expect, it } from 'vitest';
-import { EmptyState } from './ui';
+import { EmptyState, Metric, StatusPill } from './ui';
describe('EmptyState accessibility', () => {
it('announces ordinary loading and empty states politely', () => {
@@ -25,3 +25,16 @@ describe('EmptyState accessibility', () => {
expect(html).toContain('aria-live="assertive"');
});
});
+
+describe('live metric typography', () => {
+ it('uses tabular numerals for shared metric and status values', () => {
+ const html = renderToStaticMarkup(
+ <>
+
+
+ >,
+ );
+
+ expect(html.match(/tabular-nums/g)).toHaveLength(2);
+ });
+});
diff --git a/web/src/components/ui.tsx b/web/src/components/ui.tsx
index fb3704a5..982fa449 100644
--- a/web/src/components/ui.tsx
+++ b/web/src/components/ui.tsx
@@ -86,7 +86,7 @@ export function Kbd({ className, ...props }: HTMLAttributes) {
export function Metric({ label, value }: { label: string; value: ReactNode }) {
return (
- {value}
+ {value}
{label}
);
@@ -103,7 +103,9 @@ export function StatusPill({
}) {
return (
- {value}
+
+ {value}
+
{label}
);
diff --git a/web/src/features/flue-chat/config.test.ts b/web/src/features/flue-chat/config.test.ts
new file mode 100644
index 00000000..3cf2d1a3
--- /dev/null
+++ b/web/src/features/flue-chat/config.test.ts
@@ -0,0 +1,20 @@
+import { describe, expect, it } from 'vitest';
+import { parseFlueChatConfig } from './config';
+
+describe('parseFlueChatConfig', () => {
+ it('accepts the routed display assistant agent', () => {
+ expect(
+ parseFlueChatConfig({ agentName: 'display-assistant' }),
+ ).toMatchObject({
+ config: { agentName: 'display-assistant' },
+ issues: [],
+ });
+ });
+
+ it('rejects agent names that do not share the session and route model', () => {
+ expect(parseFlueChatConfig({ agentName: 'other-agent' })).toMatchObject({
+ config: { agentName: 'display-assistant' },
+ issues: ['agentName must be "display-assistant".'],
+ });
+ });
+});
diff --git a/web/src/features/flue-chat/config.ts b/web/src/features/flue-chat/config.ts
index a67bac34..c3daff33 100644
--- a/web/src/features/flue-chat/config.ts
+++ b/web/src/features/flue-chat/config.ts
@@ -1,4 +1,4 @@
-import { nonEmptyString, plainConfigRecord } from '../../plugins/config';
+import { plainConfigRecord } from '../../plugins/config';
import {
flueChatDefaultConfig,
type FlueChatCommand,
@@ -13,12 +13,7 @@ export function parseFlueChatConfig(
return {
config: {
- agentName: nonEmptyString(
- source.agentName,
- flueChatDefaultConfig.agentName,
- 'agentName',
- issues,
- ),
+ agentName: parseAgentName(source.agentName, issues),
sessions: parseSessions(source.sessions, issues),
quickCommands: parseQuickCommands(source.quickCommands, issues),
},
@@ -26,6 +21,14 @@ export function parseFlueChatConfig(
};
}
+function parseAgentName(value: unknown, issues: string[]) {
+ if (value === undefined || value === flueChatDefaultConfig.agentName) {
+ return flueChatDefaultConfig.agentName;
+ }
+ issues.push('agentName must be "display-assistant".');
+ return flueChatDefaultConfig.agentName;
+}
+
function parseSessions(value: unknown, issues: string[]) {
if (value === undefined) return flueChatDefaultConfig.sessions;
if (!Array.isArray(value)) {
diff --git a/web/src/features/flue-chat/types.ts b/web/src/features/flue-chat/types.ts
index 6b942e2b..61f3479b 100644
--- a/web/src/features/flue-chat/types.ts
+++ b/web/src/features/flue-chat/types.ts
@@ -11,7 +11,7 @@ export type FlueChatCommand = {
};
export type FlueChatConfig = {
- agentName: string;
+ agentName: 'display-assistant';
sessions: FlueChatSession[];
quickCommands: FlueChatCommand[];
};
diff --git a/web/src/features/pr-review/GitHubPrReview.test.ts b/web/src/features/pr-review/GitHubPrReview.test.ts
index 322feab5..e1d2a99f 100644
--- a/web/src/features/pr-review/GitHubPrReview.test.ts
+++ b/web/src/features/pr-review/GitHubPrReview.test.ts
@@ -21,7 +21,14 @@ import {
draftCommentIdsWithUnknownPatch,
reviewPatchQuerySettled,
} from './review-view-model';
-import { clearCompletedEditor } from './review-ui-helpers';
+import {
+ reportOnlyFindingBody,
+ isReportOnlyFindingDrafted,
+} from './PrReviewFindingsSidebar';
+import {
+ clearCompletedEditor,
+ isCurrentReviewOperation,
+} from './review-ui-helpers';
import capturedReviewPatch from './fixtures/captured-review.patch?raw';
describe('GitHubPrReview helpers', () => {
@@ -366,6 +373,60 @@ describe('GitHubPrReview helpers', () => {
reopenedComment,
);
});
+
+ it('ignores status from an operation superseded by newer work', () => {
+ expect(isCurrentReviewOperation(2, 1)).toBe(false);
+ expect(isCurrentReviewOperation(2, 2)).toBe(true);
+ });
+
+ it('matches report-only drafts by persisted source identity', () => {
+ const finding = {
+ sourceId: 'prf_source_1',
+ severity: 'minor' as const,
+ path: 'src/review.ts',
+ line: null,
+ summary: 'Overlapping summary',
+ suggestedFix: 'Keep the source identity.',
+ reason: 'unanchorable',
+ };
+ const draft = draftWithComments([draftComment('generated', finding.path)]);
+ const comment = draft.comments[0];
+ if (!comment) throw new Error('Expected draft comment fixture.');
+ comment.body = 'The user edited the generated text.';
+ comment.path = 'src/another-file.ts';
+ comment.sourceFindingId = finding.sourceId;
+
+ expect(isReportOnlyFindingDrafted(draft, finding)).toBe(true);
+ expect(
+ isReportOnlyFindingDrafted(draft, {
+ ...finding,
+ sourceId: 'prf_source_2',
+ }),
+ ).toBe(false);
+ });
+
+ it('falls back to exact text and path for provenance-less legacy drafts', () => {
+ const finding = {
+ sourceId: 'prf_synthesized_on_read',
+ severity: 'minor' as const,
+ path: 'src/review.ts',
+ line: null,
+ summary: 'Shared words',
+ suggestedFix: 'Use exact matching.',
+ reason: 'unanchorable',
+ };
+ const draft = draftWithComments([draftComment('legacy', finding.path)]);
+ const comment = draft.comments[0];
+ if (!comment) throw new Error('Expected draft comment fixture.');
+ comment.body = reportOnlyFindingBody(finding);
+
+ expect(isReportOnlyFindingDrafted(draft, finding)).toBe(true);
+ comment.sourceFindingId = 'prf_different_finding';
+ expect(isReportOnlyFindingDrafted(draft, finding)).toBe(false);
+ comment.sourceFindingId = null;
+ comment.path = 'src/other.ts';
+ expect(isReportOnlyFindingDrafted(draft, finding)).toBe(false);
+ });
});
function selection(input: { side: 'additions' | 'deletions'; line: number }) {
diff --git a/web/src/features/pr-review/GitHubPrReview.tsx b/web/src/features/pr-review/GitHubPrReview.tsx
index 4202a213..c839bc0c 100644
--- a/web/src/features/pr-review/GitHubPrReview.tsx
+++ b/web/src/features/pr-review/GitHubPrReview.tsx
@@ -47,7 +47,10 @@ import {
reviewPatchQuerySettled,
summaryLabel,
} from './review-view-model';
-import { clearCompletedEditor } from './review-ui-helpers';
+import {
+ clearCompletedEditor,
+ isCurrentReviewOperation,
+} from './review-ui-helpers';
import { usePrReviewRecord } from './usePrReviewRecord';
type ComposerState = {
@@ -55,6 +58,7 @@ type ComposerState = {
path: string;
selection: SelectedLineRange;
annotation: DiffReviewAnnotation;
+ sourceFindingId: string | null;
token: number;
};
@@ -99,6 +103,7 @@ export function GitHubPrReview({
start: startReview,
} = usePrReviewRecord(pr);
const nextEditorToken = useRef(0);
+ const nextOperationToken = useRef(0);
const [activePath, setActivePath] = useState(null);
const [composer, setComposer] = useState(null);
const [commentEditor, setCommentEditor] = useState(
@@ -119,11 +124,31 @@ export function GitHubPrReview({
const [submitFailedCommentIds, setSubmitFailedCommentIds] = useState<
Set
>(() => new Set());
- const [statusMessage, setStatusMessage] = useState(null);
+ const [statusMessage, setStatusMessageState] = useState(null);
const createEditorToken = () => {
nextEditorToken.current += 1;
return nextEditorToken.current;
};
+ const beginOperation = () => {
+ nextOperationToken.current += 1;
+ setStatusMessageState(null);
+ return nextOperationToken.current;
+ };
+ const finishOperation = (token: number, message: string) => {
+ if (isCurrentReviewOperation(nextOperationToken.current, token)) {
+ setStatusMessageState(message);
+ }
+ };
+ const failOperation = (token: number, error: unknown) => {
+ if (!isCurrentReviewOperation(nextOperationToken.current, token)) return;
+ setStatusMessageState(
+ mutationErrorMessage(error, draft) ?? 'The operation failed.',
+ );
+ };
+ const setStatusMessage = (message: string | null) => {
+ nextOperationToken.current += 1;
+ setStatusMessageState(message);
+ };
const fileList = useMemo(
() => (filesQuery.data?.files ?? []) as DiffFilePatch[],
[filesQuery.data?.files],
@@ -241,21 +266,7 @@ export function GitHubPrReview({
const isThreadMutationPending =
mutations.replyToThread.isPending ||
mutations.setThreadResolution.isPending;
- const reviewBarStatusMessage =
- mutationErrorMessage(
- mutations.submitReview.error ??
- mutations.saveDraft.error ??
- mutations.addComment.error ??
- mutations.updateComment.error ??
- mutations.deleteComment.error ??
- mutations.discardDraft.error ??
- mutations.replyToThread.error ??
- mutations.setThreadResolution.error ??
- startReview.error ??
- restartReview.error ??
- reconcileSubmission.error,
- draft,
- ) ?? statusMessage;
+ const reviewBarStatusMessage = statusMessage;
const fileLoadMessage = filesQuery.isLoading
? 'Loading PR files.'
: filesQuery.error
@@ -307,7 +318,6 @@ export function GitHubPrReview({
}> = {},
headSha = currentHeadSha,
) => {
- setStatusMessage(null);
if (!headSha) throw new Error('PR head SHA is unavailable.');
return mutations.saveDraft.mutateAsync({
repo: pr.repo,
@@ -345,7 +355,7 @@ export function GitHubPrReview({
};
const refreshDraftHead = async () => {
if (!draft) return;
- setStatusMessage(null);
+ const operationToken = beginOperation();
try {
const refreshedHeadSha = await mutations
.refetchPullRequestHeadSha()
@@ -354,9 +364,12 @@ export function GitHubPrReview({
await saveDraft({ reanchorHeadSha: true }, nextHeadSha);
await mutations.invalidateReviewSources();
setSubmitFailedCommentIds(new Set());
- setStatusMessage('Draft head updated to the current PR revision.');
- } catch {
- // React Query owns the visible error state.
+ finishOperation(
+ operationToken,
+ 'Draft head updated to the current PR revision.',
+ );
+ } catch (error) {
+ failOperation(operationToken, error);
}
};
const onSelectionChange = (selection: SelectedLineRange | null) => {
@@ -375,7 +388,7 @@ export function GitHubPrReview({
setReanchoringCommentId(null);
return;
}
- setStatusMessage(null);
+ const operationToken = beginOperation();
mutations.updateComment
.mutateAsync({
repo: pr.repo,
@@ -392,9 +405,9 @@ export function GitHubPrReview({
return next;
});
setReanchoringCommentId(null);
- setStatusMessage('Draft comment re-anchored.');
+ finishOperation(operationToken, 'Draft comment re-anchored.');
})
- .catch(() => undefined);
+ .catch((error) => failOperation(operationToken, error));
return;
}
const annotation = annotationFromSelection(selection, index);
@@ -403,6 +416,7 @@ export function GitHubPrReview({
body: anchoringFinding ? reportOnlyFindingBody(anchoringFinding) : '',
path: activePath,
selection,
+ sourceFindingId: anchoringFinding?.sourceId ?? null,
token: createEditorToken(),
});
setAnchoringFinding(null);
@@ -413,7 +427,7 @@ export function GitHubPrReview({
const submittedComposer = composer;
if (!submittedComposer || submittedComposer.body.trim().length === 0)
return;
- setStatusMessage(null);
+ const operationToken = beginOperation();
try {
const nextDraft = await ensureDraft();
const index = patchIndexesByPath.get(submittedComposer.path);
@@ -422,7 +436,10 @@ export function GitHubPrReview({
index,
);
if (index && !commentAnchorExists(index, input)) {
- setStatusMessage('Selected range is not valid for the current patch.');
+ finishOperation(
+ operationToken,
+ 'Selected range is not valid for the current patch.',
+ );
return;
}
await mutations.addComment.mutateAsync({
@@ -432,20 +449,21 @@ export function GitHubPrReview({
path: submittedComposer.path,
...input,
body: submittedComposer.body,
+ sourceFindingId: submittedComposer.sourceFindingId,
});
setComposer((current) =>
clearCompletedEditor(current, submittedComposer.token),
);
- setStatusMessage('Draft comment saved.');
- } catch {
- // React Query owns the visible error state.
+ finishOperation(operationToken, 'Draft comment saved.');
+ } catch (error) {
+ failOperation(operationToken, error);
}
};
const submitEdit = async (event: FormEvent) => {
event.preventDefault();
const submittedEditor = commentEditor;
if (!submittedEditor || submittedEditor.body.trim().length === 0) return;
- setStatusMessage(null);
+ const operationToken = beginOperation();
try {
await mutations.updateComment.mutateAsync({
repo: pr.repo,
@@ -456,8 +474,9 @@ export function GitHubPrReview({
setCommentEditor((current) =>
clearCompletedEditor(current, submittedEditor.token),
);
- } catch {
- // React Query owns the visible error state.
+ finishOperation(operationToken, 'Draft comment updated.');
+ } catch (error) {
+ failOperation(operationToken, error);
}
};
const submitReply = async (threadId: string, event: FormEvent) => {
@@ -469,7 +488,7 @@ export function GitHubPrReview({
submittedEditor.body.trim().length === 0
)
return;
- setStatusMessage(null);
+ const operationToken = beginOperation();
try {
await mutations.replyToThread.mutateAsync({
repo: pr.repo,
@@ -480,11 +499,26 @@ export function GitHubPrReview({
setReplyEditor((current) =>
clearCompletedEditor(current, submittedEditor.token),
);
- setStatusMessage('Thread reply posted.');
- } catch {
- // React Query owns the visible error state.
+ finishOperation(operationToken, 'Thread reply posted.');
+ } catch (error) {
+ failOperation(operationToken, error);
}
};
+ const deleteDraftComment = (commentId: string) => {
+ const operationToken = beginOperation();
+ mutations.deleteComment.mutate(
+ {
+ repo: pr.repo,
+ number: pr.number,
+ id: commentId,
+ },
+ {
+ onError: (error) => failOperation(operationToken, error),
+ onSuccess: () =>
+ finishOperation(operationToken, 'Draft comment deleted.'),
+ },
+ );
+ };
const renderAnnotation = (annotation: DiffReviewAnnotation) => (
setComposer((current) => (current ? { ...current, body } : current))
}
- onDeleteComment={(commentId) => {
- setStatusMessage(null);
- mutations.deleteComment.mutate({
- repo: pr.repo,
- number: pr.number,
- id: commentId,
- });
- }}
+ onDeleteComment={deleteDraftComment}
onEditingBodyChange={(body) =>
setCommentEditor((current) =>
current ? { ...current, body } : current,
@@ -530,13 +557,24 @@ export function GitHubPrReview({
setReplyEditor((current) => (current ? { ...current, body } : current))
}
onSetThreadResolution={(thread) => {
- setStatusMessage(null);
- mutations.setThreadResolution.mutate({
- repo: pr.repo,
- number: pr.number,
- threadId: thread.id,
- resolved: !thread.isResolved,
- });
+ const operationToken = beginOperation();
+ const resolved = !thread.isResolved;
+ mutations.setThreadResolution.mutate(
+ {
+ repo: pr.repo,
+ number: pr.number,
+ threadId: thread.id,
+ resolved,
+ },
+ {
+ onError: (error) => failOperation(operationToken, error),
+ onSuccess: () =>
+ finishOperation(
+ operationToken,
+ resolved ? 'Thread resolved.' : 'Thread reopened.',
+ ),
+ },
+ );
}}
onStartEdit={(commentId, body) => {
setCommentEditor({
@@ -565,7 +603,7 @@ export function GitHubPrReview({
);
return;
}
- setStatusMessage(null);
+ const operationToken = beginOperation();
try {
const normalizedBody = normalizeReviewBody(reviewBody);
await mutations.submitReview.mutateAsync({
@@ -577,13 +615,13 @@ export function GitHubPrReview({
commentIds: cleanCommentIds,
});
setSubmitFailedCommentIds(new Set());
- setStatusMessage('Review submitted.');
+ finishOperation(operationToken, 'Review submitted.');
} catch (error) {
const failingIds = failingCommentIdsFromError(error);
if (failingIds.length > 0) {
setSubmitFailedCommentIds(new Set(failingIds));
}
- // React Query owns the visible error state.
+ failOperation(operationToken, error);
}
};
const focusNextPendingComment = () => {
@@ -621,14 +659,7 @@ export function GitHubPrReview({
isDeleting: mutations.deleteComment.isPending,
isLoadingThreads: threadsQuery.isLoading,
onChooseLine: beginAnchorFinding,
- onDelete: (commentId: string) => {
- setStatusMessage(null);
- mutations.deleteComment.mutate({
- repo: pr.repo,
- number: pr.number,
- id: commentId,
- });
- },
+ onDelete: deleteDraftComment,
onReanchor: (comment: GitHubPrReviewDraftComment) =>
beginReanchorComment(comment.id, comment.path),
review: reviewRecord,
@@ -679,13 +710,19 @@ export function GitHubPrReview({
reviewRecord.status === 'reviewing'
}
onClick={() => {
- setStatusMessage(null);
+ const operationToken = beginOperation();
if (reviewRecord.status === 'submitting') {
reconcileSubmission.mutate(reviewRecord.id, {
- onSuccess: (result) => setStatusMessage(result.message),
+ onError: (error) => failOperation(operationToken, error),
+ onSuccess: (result) =>
+ finishOperation(operationToken, result.message),
});
} else {
- restartReview.mutate(reviewRecord.id);
+ restartReview.mutate(reviewRecord.id, {
+ onError: (error) => failOperation(operationToken, error),
+ onSuccess: () =>
+ finishOperation(operationToken, 'Neon review restarted.'),
+ });
}
}}
title={
@@ -714,8 +751,12 @@ export function GitHubPrReview({
className="pr-review-popout-button"
disabled={startReview.isPending}
onClick={() => {
- setStatusMessage(null);
- startReview.mutate();
+ const operationToken = beginOperation();
+ startReview.mutate(undefined, {
+ onError: (error) => failOperation(operationToken, error),
+ onSuccess: () =>
+ finishOperation(operationToken, 'Neon review started.'),
+ });
}}
title="Run Neon review assistance for this pull request"
type="button"
@@ -811,9 +852,13 @@ export function GitHubPrReview({
setIsReviewBodyFocused(false);
const normalizedBody = normalizeReviewBody(reviewBody);
if ((draft?.body ?? null) !== normalizedBody) {
+ const operationToken = beginOperation();
void saveDraft({ body: normalizedBody })
- .then(() => setHasPendingReviewBodyEdit(false))
- .catch(() => undefined);
+ .then(() => {
+ setHasPendingReviewBodyEdit(false);
+ finishOperation(operationToken, 'Review summary saved.');
+ })
+ .catch((error) => failOperation(operationToken, error));
} else {
setHasPendingReviewBodyEdit(false);
}
@@ -825,20 +870,30 @@ export function GitHubPrReview({
onBodyFocus={() => setIsReviewBodyFocused(true)}
onDiscard={() => {
if (!draft) return;
- setStatusMessage(null);
const confirmed = window.confirm('Discard this PR review draft?');
if (confirmed) {
- mutations.discardDraft.mutate({
- repo: pr.repo,
- number: pr.number,
- });
+ const operationToken = beginOperation();
+ mutations.discardDraft.mutate(
+ {
+ repo: pr.repo,
+ number: pr.number,
+ },
+ {
+ onError: (error) => failOperation(operationToken, error),
+ onSuccess: () =>
+ finishOperation(operationToken, 'Review draft discarded.'),
+ },
+ );
}
}}
onSubmit={submitReview}
onPendingCountClick={focusNextPendingComment}
onVerdictChange={(next) => {
setVerdict(next);
- void saveDraft({ verdict: next }).catch(() => undefined);
+ const operationToken = beginOperation();
+ void saveDraft({ verdict: next })
+ .then(() => finishOperation(operationToken, 'Verdict saved.'))
+ .catch((error) => failOperation(operationToken, error));
}}
isSubmitting={mutations.submitReview.isPending}
reviewBody={reviewBody}
diff --git a/web/src/features/pr-review/PrReviewFindingsSidebar.tsx b/web/src/features/pr-review/PrReviewFindingsSidebar.tsx
index b74b6a14..2a2c7f83 100644
--- a/web/src/features/pr-review/PrReviewFindingsSidebar.tsx
+++ b/web/src/features/pr-review/PrReviewFindingsSidebar.tsx
@@ -268,13 +268,13 @@ function ReportOnlyFindingPanel({
{review.reportOnlyFindings.map((finding, index) => {
- const drafted = draft?.comments.some((comment) =>
- comment.body.includes(finding.summary),
- );
+ const drafted = isReportOnlyFindingDrafted(draft, finding);
return (
{finding.severity} · {finding.path}
@@ -322,3 +322,22 @@ export function reportOnlyFindingBody(finding: PrReviewReportOnlyFinding) {
'Manually anchored from a report-only finding. Edit or delete before submitting the review.',
].join('\n');
}
+
+export function isReportOnlyFindingDrafted(
+ draft: GitHubPrReviewDraft | null,
+ finding: PrReviewReportOnlyFinding,
+) {
+ const generatedBody = reportOnlyFindingBody(finding);
+ return Boolean(
+ draft?.comments.some((comment) => {
+ if (finding.sourceId && comment.sourceFindingId === finding.sourceId) {
+ return true;
+ }
+ return (
+ !comment.sourceFindingId &&
+ comment.path === finding.path &&
+ comment.body === generatedBody
+ );
+ }),
+ );
+}
diff --git a/web/src/features/pr-review/review-ui-helpers.ts b/web/src/features/pr-review/review-ui-helpers.ts
index dd92c06f..925324d9 100644
--- a/web/src/features/pr-review/review-ui-helpers.ts
+++ b/web/src/features/pr-review/review-ui-helpers.ts
@@ -26,3 +26,10 @@ export function clearCompletedEditor(
) {
return current?.token === completedToken ? null : current;
}
+
+export function isCurrentReviewOperation(
+ currentToken: number,
+ completedToken: number,
+) {
+ return currentToken === completedToken;
+}