@neurynae/toolcairn-mcp 0.1.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,209 @@
1
+ # @neurynae/toolcairn-mcp
2
+
3
+ **Graph-powered tool intelligence for AI agents and developers.**
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@neurynae/toolcairn-mcp)](https://www.npmjs.com/package/@neurynae/toolcairn-mcp)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/NEURYNAE/ToolCairn/blob/main/LICENSE)
7
+ [![npm downloads](https://img.shields.io/npm/dm/@neurynae/toolcairn-mcp)](https://www.npmjs.com/package/@neurynae/toolcairn-mcp)
8
+
9
+ ToolCairn is an MCP (Model Context Protocol) server that gives your AI agent graph-powered tool intelligence. Search 12,000+ open source tools using a 4-stage pipeline combining BM25 keyword search, vector embeddings, and graph re-ranking — so your agent always recommends the *right* tool.
10
+
11
+ ---
12
+
13
+ ## Quick Start
14
+
15
+ No installation required. Add this to your MCP configuration and ToolCairn starts on the next session:
16
+
17
+ ```json
18
+ {
19
+ "mcpServers": {
20
+ "toolcairn": {
21
+ "command": "npx",
22
+ "args": ["@neurynae/toolcairn-mcp"]
23
+ }
24
+ }
25
+ }
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Installation by Client
31
+
32
+ ### Claude Code (CLI)
33
+
34
+ Add to `~/.claude/claude_desktop_config.json` (or project `.mcp.json`):
35
+
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "toolcairn": {
40
+ "command": "npx",
41
+ "args": ["@neurynae/toolcairn-mcp"]
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ Or via the CLI:
48
+ ```bash
49
+ claude mcp add toolcairn -- npx @neurynae/toolcairn-mcp
50
+ ```
51
+
52
+ ### Cursor
53
+
54
+ Open **Settings → MCP** and add:
55
+
56
+ ```json
57
+ {
58
+ "mcpServers": {
59
+ "toolcairn": {
60
+ "command": "npx",
61
+ "args": ["@neurynae/toolcairn-mcp"]
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ### VS Code (Copilot)
68
+
69
+ Add to `.vscode/settings.json` or user settings:
70
+
71
+ ```json
72
+ {
73
+ "github.copilot.chat.mcp.servers": {
74
+ "toolcairn": {
75
+ "command": "npx",
76
+ "args": ["@neurynae/toolcairn-mcp"],
77
+ "type": "stdio"
78
+ }
79
+ }
80
+ }
81
+ ```
82
+
83
+ ### Windsurf
84
+
85
+ Add to `~/.codeium/windsurf/mcp_config.json`:
86
+
87
+ ```json
88
+ {
89
+ "mcpServers": {
90
+ "toolcairn": {
91
+ "command": "npx",
92
+ "args": ["@neurynae/toolcairn-mcp"]
93
+ }
94
+ }
95
+ }
96
+ ```
97
+
98
+ ### Custom / Other Clients
99
+
100
+ Any MCP-compatible client supporting stdio transport works:
101
+
102
+ ```bash
103
+ npx @neurynae/toolcairn-mcp
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Authentication
109
+
110
+ ToolCairn works out of the box with no authentication — an anonymous API key is generated on first run and stored in `~/.toolpilot/credentials.json`.
111
+
112
+ **Authenticated users** get higher rate limits (300 req/min vs 60 req/min for anonymous).
113
+
114
+ To authenticate, ask your agent to run:
115
+
116
+ ```
117
+ toolcairn_auth login
118
+ ```
119
+
120
+ This opens your browser to `https://toolcairn.neurynae.com/device`, where you sign in with Google, GitHub, or email/password. Once confirmed, your agent is authenticated — no per-tool login needed.
121
+
122
+ Check auth status:
123
+ ```
124
+ toolcairn_auth status
125
+ ```
126
+
127
+ Log out:
128
+ ```
129
+ toolcairn_auth logout
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Available Tools
135
+
136
+ | Tool | Description |
137
+ |------|-------------|
138
+ | `search_tools` | Natural-language tool search with guided clarification |
139
+ | `search_tools_respond` | Submit clarification answers to refine search results |
140
+ | `get_stack` | Full stack recommendation for a project description |
141
+ | `compare_tools` | Head-to-head comparison of two tools with health metrics |
142
+ | `check_compatibility` | Check if two tools are known to work together |
143
+ | `check_issue` | Look up known GitHub issues for a tool before debugging |
144
+ | `report_outcome` | Report whether a recommended tool worked (improves future results) |
145
+ | `refine_requirement` | Decompose a vague need into searchable tool requirements |
146
+ | `verify_suggestion` | Validate agent-suggested tools against the ToolCairn graph |
147
+ | `suggest_graph_update` | Contribute new tool relationships to the knowledge graph |
148
+ | `toolcairn_init` | Set up ToolCairn integration for the current project |
149
+ | `init_project_config` | Initialize `.toolcairn/config.json` for the project |
150
+ | `read_project_config` | Read and validate the project's tool configuration |
151
+ | `update_project_config` | Add or remove tools from the project config |
152
+ | `toolcairn_auth` | Authenticate with ToolCairn (login / status / logout) |
153
+
154
+ ---
155
+
156
+ ## How It Works
157
+
158
+ ToolCairn uses a **4-stage search pipeline**:
159
+
160
+ 1. **Hybrid Search** — BM25 keyword matching + vector embeddings search 12,000+ indexed tools in parallel
161
+ 2. **Graph Re-ranking** — A knowledge graph (Memgraph) re-ranks candidates using ecosystem relationships: integrations, alternatives, co-occurrence signals
162
+ 3. **Clarification** — When queries are ambiguous, targeted follow-up questions narrow the results
163
+ 4. **Final Selection** — Returns the top 1–2 tools with confidence scores, reasons, and documentation links
164
+
165
+ ---
166
+
167
+ ## Project Configuration
168
+
169
+ On first run, ToolCairn creates `.toolcairn/config.json` in your project root. Your agent reads this file to understand which tools are already confirmed for the project and avoids redundant searches.
170
+
171
+ ```json
172
+ {
173
+ "project": {
174
+ "name": "my-project",
175
+ "language": "TypeScript",
176
+ "framework": "Next.js"
177
+ },
178
+ "confirmed_tools": ["next", "prisma", "tailwindcss"],
179
+ "pending_evaluation": [],
180
+ "stale_tools": []
181
+ }
182
+ ```
183
+
184
+ ---
185
+
186
+ ## Rate Limits
187
+
188
+ | Tier | Rate Limit |
189
+ |------|-----------|
190
+ | Anonymous (default) | 60 requests / minute |
191
+ | Authenticated | 300 requests / minute |
192
+
193
+ Rate limits are per API key, enforced at the Cloudflare edge.
194
+
195
+ ---
196
+
197
+ ## Links
198
+
199
+ - **Website**: https://toolcairn.neurynae.com
200
+ - **Docs**: https://toolcairn.neurynae.com/docs
201
+ - **GitHub**: https://github.com/NEURYNAE/ToolCairn
202
+ - **npm**: https://www.npmjs.com/package/@neurynae/toolcairn-mcp
203
+ - **Issues**: https://github.com/NEURYNAE/ToolCairn/issues
204
+
205
+ ---
206
+
207
+ ## License
208
+
209
+ MIT — © NEURYNAE
@@ -5812,6 +5812,61 @@ var require_client = __commonJS({
5812
5812
  created_at: "created_at",
5813
5813
  updated_at: "updated_at"
5814
5814
  };
5815
+ exports.Prisma.UserScalarFieldEnum = {
5816
+ id: "id",
5817
+ name: "name",
5818
+ email: "email",
5819
+ emailVerified: "emailVerified",
5820
+ image: "image",
5821
+ passwordHash: "passwordHash",
5822
+ createdAt: "createdAt",
5823
+ updatedAt: "updatedAt"
5824
+ };
5825
+ exports.Prisma.AccountScalarFieldEnum = {
5826
+ id: "id",
5827
+ userId: "userId",
5828
+ type: "type",
5829
+ provider: "provider",
5830
+ providerAccountId: "providerAccountId",
5831
+ refresh_token: "refresh_token",
5832
+ access_token: "access_token",
5833
+ expires_at: "expires_at",
5834
+ token_type: "token_type",
5835
+ scope: "scope",
5836
+ id_token: "id_token",
5837
+ session_state: "session_state"
5838
+ };
5839
+ exports.Prisma.SessionScalarFieldEnum = {
5840
+ id: "id",
5841
+ sessionToken: "sessionToken",
5842
+ userId: "userId",
5843
+ expires: "expires"
5844
+ };
5845
+ exports.Prisma.VerificationTokenScalarFieldEnum = {
5846
+ identifier: "identifier",
5847
+ token: "token",
5848
+ expires: "expires"
5849
+ };
5850
+ exports.Prisma.ApiKeyScalarFieldEnum = {
5851
+ id: "id",
5852
+ key: "key",
5853
+ userId: "userId",
5854
+ label: "label",
5855
+ tier: "tier",
5856
+ rateLimit: "rateLimit",
5857
+ lastUsed: "lastUsed",
5858
+ createdAt: "createdAt",
5859
+ revokedAt: "revokedAt"
5860
+ };
5861
+ exports.Prisma.DeviceCodeScalarFieldEnum = {
5862
+ id: "id",
5863
+ deviceCode: "deviceCode",
5864
+ userCode: "userCode",
5865
+ userId: "userId",
5866
+ status: "status",
5867
+ expiresAt: "expiresAt",
5868
+ createdAt: "createdAt"
5869
+ };
5815
5870
  exports.Prisma.AppSettingsScalarFieldEnum = {
5816
5871
  id: "id",
5817
5872
  reindex_scheduler_enabled: "reindex_scheduler_enabled",
@@ -5856,6 +5911,12 @@ var require_client = __commonJS({
5856
5911
  OutcomeReport: "OutcomeReport",
5857
5912
  McpEvent: "McpEvent",
5858
5913
  IndexedTool: "IndexedTool",
5914
+ User: "User",
5915
+ Account: "Account",
5916
+ Session: "Session",
5917
+ VerificationToken: "VerificationToken",
5918
+ ApiKey: "ApiKey",
5919
+ DeviceCode: "DeviceCode",
5859
5920
  AppSettings: "AppSettings"
5860
5921
  };
5861
5922
  var config = {
@@ -5902,8 +5963,8 @@ var require_client = __commonJS({
5902
5963
  }
5903
5964
  }
5904
5965
  },
5905
- "inlineSchema": '// ToolPilot \u2014 PostgreSQL Staging Layer\n// This database holds AI-generated nodes awaiting graduation to Memgraph,\n// search sessions for multi-turn guided discovery, and outcome feedback.\n\ngenerator client {\n provider = "prisma-client-js"\n}\n\ndatasource db {\n provider = "postgresql"\n url = env("DATABASE_URL")\n}\n\n// \u2500\u2500\u2500 Staging Layer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// AI-generated graph nodes awaiting review and graduation to Memgraph\nmodel StagedNode {\n id String @id @default(uuid())\n node_type String // "Tool" | "UseCase" | "Stack" | "Pattern" | "Requirement"\n node_data Json // Full node properties as JSON\n confidence Float // 0\u20131 confidence score from the AI generator\n source String // "ai_generated" | "indexer" | "user_report"\n supporting_queries String[] // query_ids that triggered this node proposal\n graduated Boolean @default(false)\n graduated_at DateTime?\n reviewed_by String?\n reviewed_at DateTime?\n rejection_reason String?\n created_at DateTime @default(now())\n updated_at DateTime @updatedAt\n\n @@index([node_type, graduated])\n @@index([confidence])\n}\n\n/// AI-generated graph edges awaiting review and graduation to Memgraph\nmodel StagedEdge {\n id String @id @default(uuid())\n edge_type String // "SOLVES" | "INTEGRATES_WITH" | "CONFLICTS_WITH" etc.\n source_node_id String // Memgraph node ID\n target_node_id String // Memgraph node ID\n edge_data Json // EdgeProperties as JSON\n confidence Float // 0\u20131\n source String // "ai_generated" | "github_signal" | "co_occurrence"\n supporting_queries String[]\n graduated Boolean @default(false)\n graduated_at DateTime?\n reviewed_by String?\n reviewed_at DateTime?\n rejection_reason String?\n created_at DateTime @default(now())\n updated_at DateTime @updatedAt\n\n @@index([edge_type, graduated])\n @@index([source_node_id, target_node_id])\n}\n\n// \u2500\u2500\u2500 Search Sessions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Multi-turn guided discovery session state\nmodel SearchSession {\n id String @id @default(uuid())\n query String // Original user query\n context Json? // Additional context (stack, constraints, etc.)\n /// Accumulated clarification Q&A: [{ question, options, answer }]\n clarification_history Json[] @default([])\n results Json? // Final results once search completes\n stage Int @default(1) // Current stage (1\u20134)\n status String @default("active") // "active" | "completed" | "abandoned"\n expires_at DateTime // 30 minutes from creation\n created_at DateTime @default(now())\n updated_at DateTime @updatedAt\n\n outcomes OutcomeReport[]\n\n @@index([status, expires_at])\n}\n\n// \u2500\u2500\u2500 Feedback Loop \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Outcome reports from report_outcome() MCP tool\n/// Used to update graph edge weights via async queue jobs\nmodel OutcomeReport {\n id String @id @default(uuid())\n query_id String\n chosen_tool String // Tool name that was selected\n reason String? // Why the user chose this tool\n outcome String? // "success" | "failure" | "replaced" | "pending"\n feedback String? // Free-form feedback from the agent/user\n processed Boolean @default(false)\n processed_at DateTime?\n created_at DateTime @default(now())\n\n session SearchSession? @relation(fields: [query_id], references: [id], onDelete: SetNull)\n\n @@index([processed])\n @@index([chosen_tool])\n}\n\n// \u2500\u2500\u2500 MCP Event Tracking \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Lightweight event log for every MCP tool invocation.\n/// Written asynchronously \u2014 never blocks tool responses.\n/// Powers the standalone tracker dashboard at .toolpilot/tracker.html\nmodel McpEvent {\n id String @id @default(uuid())\n tool_name String\n query_id String?\n duration_ms Int\n status String // "ok" | "error"\n metadata Json? // tool-specific extra data (result summary, flags, etc.)\n created_at DateTime @default(now())\n\n @@index([tool_name, created_at])\n @@index([created_at])\n}\n\n// \u2500\u2500\u2500 Indexer Tracking \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Tracks the indexing state of each tool to enable incremental updates\nmodel IndexedTool {\n id String @id @default(uuid())\n github_url String @unique\n graph_node_id String? // Memgraph node ID once indexed\n last_indexed_at DateTime?\n index_status String @default("pending") // "pending" | "indexed" | "failed" | "skipped"\n error_message String?\n retry_count Int @default(0)\n created_at DateTime @default(now())\n updated_at DateTime @updatedAt\n\n @@index([index_status])\n @@index([last_indexed_at])\n}\n\n// \u2500\u2500\u2500 App Settings \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Global application settings and feature toggles\nmodel AppSettings {\n id String @id @default("global")\n reindex_scheduler_enabled Boolean @default(true)\n discovery_scheduler_enabled Boolean @default(false)\n discovery_topics String[] @default([])\n discovery_batch_size Int @default(20)\n discovery_interval_hours Int @default(24)\n discovery_min_stars Int @default(100)\n discovery_last_pushed_days Int @default(90)\n last_discovery_run DateTime?\n last_reindex_run DateTime?\n updated_at DateTime @updatedAt\n}\n',
5906
- "inlineSchemaHash": "d918dc12bdd8ab50f7f0facc43df9f2b5f53887e8a28ce8719a32bb00cda903f",
5966
+ "inlineSchema": '// ToolPilot \u2014 PostgreSQL Staging Layer\n// This database holds AI-generated nodes awaiting graduation to Memgraph,\n// search sessions for multi-turn guided discovery, and outcome feedback.\n\ngenerator client {\n provider = "prisma-client-js"\n}\n\ndatasource db {\n provider = "postgresql"\n url = env("DATABASE_URL")\n}\n\n// \u2500\u2500\u2500 Staging Layer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// AI-generated graph nodes awaiting review and graduation to Memgraph\nmodel StagedNode {\n id String @id @default(uuid())\n node_type String // "Tool" | "UseCase" | "Stack" | "Pattern" | "Requirement"\n node_data Json // Full node properties as JSON\n confidence Float // 0\u20131 confidence score from the AI generator\n source String // "ai_generated" | "indexer" | "user_report"\n supporting_queries String[] // query_ids that triggered this node proposal\n graduated Boolean @default(false)\n graduated_at DateTime?\n reviewed_by String?\n reviewed_at DateTime?\n rejection_reason String?\n created_at DateTime @default(now())\n updated_at DateTime @updatedAt\n\n @@index([node_type, graduated])\n @@index([confidence])\n}\n\n/// AI-generated graph edges awaiting review and graduation to Memgraph\nmodel StagedEdge {\n id String @id @default(uuid())\n edge_type String // "SOLVES" | "INTEGRATES_WITH" | "CONFLICTS_WITH" etc.\n source_node_id String // Memgraph node ID\n target_node_id String // Memgraph node ID\n edge_data Json // EdgeProperties as JSON\n confidence Float // 0\u20131\n source String // "ai_generated" | "github_signal" | "co_occurrence"\n supporting_queries String[]\n graduated Boolean @default(false)\n graduated_at DateTime?\n reviewed_by String?\n reviewed_at DateTime?\n rejection_reason String?\n created_at DateTime @default(now())\n updated_at DateTime @updatedAt\n\n @@index([edge_type, graduated])\n @@index([source_node_id, target_node_id])\n}\n\n// \u2500\u2500\u2500 Search Sessions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Multi-turn guided discovery session state\nmodel SearchSession {\n id String @id @default(uuid())\n query String // Original user query\n context Json? // Additional context (stack, constraints, etc.)\n /// Accumulated clarification Q&A: [{ question, options, answer }]\n clarification_history Json[] @default([])\n results Json? // Final results once search completes\n stage Int @default(1) // Current stage (1\u20134)\n status String @default("active") // "active" | "completed" | "abandoned"\n expires_at DateTime // 30 minutes from creation\n created_at DateTime @default(now())\n updated_at DateTime @updatedAt\n\n outcomes OutcomeReport[]\n\n @@index([status, expires_at])\n}\n\n// \u2500\u2500\u2500 Feedback Loop \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Outcome reports from report_outcome() MCP tool\n/// Used to update graph edge weights via async queue jobs\nmodel OutcomeReport {\n id String @id @default(uuid())\n query_id String\n chosen_tool String // Tool name that was selected\n reason String? // Why the user chose this tool\n outcome String? // "success" | "failure" | "replaced" | "pending"\n feedback String? // Free-form feedback from the agent/user\n processed Boolean @default(false)\n processed_at DateTime?\n created_at DateTime @default(now())\n\n session SearchSession? @relation(fields: [query_id], references: [id], onDelete: SetNull)\n\n @@index([processed])\n @@index([chosen_tool])\n}\n\n// \u2500\u2500\u2500 MCP Event Tracking \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Lightweight event log for every MCP tool invocation.\n/// Written asynchronously \u2014 never blocks tool responses.\n/// Powers the standalone tracker dashboard at .toolpilot/tracker.html\nmodel McpEvent {\n id String @id @default(uuid())\n tool_name String\n query_id String?\n duration_ms Int\n status String // "ok" | "error"\n metadata Json? // tool-specific extra data (result summary, flags, etc.)\n created_at DateTime @default(now())\n\n @@index([tool_name, created_at])\n @@index([created_at])\n}\n\n// \u2500\u2500\u2500 Indexer Tracking \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Tracks the indexing state of each tool to enable incremental updates\nmodel IndexedTool {\n id String @id @default(uuid())\n github_url String @unique\n graph_node_id String? // Memgraph node ID once indexed\n last_indexed_at DateTime?\n index_status String @default("pending") // "pending" | "indexed" | "failed" | "skipped"\n error_message String?\n retry_count Int @default(0)\n created_at DateTime @default(now())\n updated_at DateTime @updatedAt\n\n @@index([index_status])\n @@index([last_indexed_at])\n}\n\n// \u2500\u2500\u2500 Auth (Auth.js v5 Prisma Adapter) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Platform user accounts \u2014 created via email/password, Google, or GitHub\nmodel User {\n id String @id @default(uuid())\n name String?\n email String @unique\n emailVerified DateTime?\n image String?\n passwordHash String? // null for OAuth-only users\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n accounts Account[]\n sessions Session[]\n apiKeys ApiKey[]\n deviceCodes DeviceCode[]\n\n @@index([email])\n}\n\n/// OAuth and credentials accounts linked to a user\nmodel Account {\n id String @id @default(uuid())\n userId String\n type String // "oauth" | "credentials"\n provider String // "google" | "github" | "credentials"\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\n/// Database sessions (required by Auth.js Prisma adapter even with JWT strategy)\nmodel Session {\n id String @id @default(uuid())\n sessionToken String @unique\n userId String\n expires DateTime\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\n/// Email verification and password reset tokens\nmodel VerificationToken {\n identifier String\n token String @unique\n expires DateTime\n\n @@unique([identifier, token])\n}\n\n// \u2500\u2500\u2500 API Keys \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// API keys \u2014 both anonymous (legacy free-tier UUID) and user-linked (authenticated)\nmodel ApiKey {\n id String @id @default(uuid())\n key String @unique // UUID sent in X-ToolCairn-Key header\n userId String? // null = anonymous (backward-compatible free tier)\n label String? // user-assigned label e.g. "my laptop"\n tier String @default("free")\n rateLimit Int @default(60)\n lastUsed DateTime?\n createdAt DateTime @default(now())\n revokedAt DateTime?\n\n user User? @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([key])\n @@index([userId])\n}\n\n/// Device authorization codes for MCP CLI authentication flow (like gh auth login)\nmodel DeviceCode {\n id String @id @default(uuid())\n deviceCode String @unique\n userCode String @unique // Human-readable e.g. "ABCD-1234"\n userId String?\n status String @default("pending") // pending | approved | expired\n expiresAt DateTime\n createdAt DateTime @default(now())\n\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n\n @@index([deviceCode])\n @@index([userCode])\n}\n\n// \u2500\u2500\u2500 App Settings \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/// Global application settings and feature toggles\nmodel AppSettings {\n id String @id @default("global")\n reindex_scheduler_enabled Boolean @default(true)\n discovery_scheduler_enabled Boolean @default(false)\n discovery_topics String[] @default([])\n discovery_batch_size Int @default(20)\n discovery_interval_hours Int @default(24)\n discovery_min_stars Int @default(100)\n discovery_last_pushed_days Int @default(90)\n last_discovery_run DateTime?\n last_reindex_run DateTime?\n updated_at DateTime @updatedAt\n}\n',
5967
+ "inlineSchemaHash": "53f0b92dfc644f0045f3ceefcf5f1f8da8d8c67fc5df89ed2337cbe5d9fc7bf6",
5907
5968
  "copyEngine": true
5908
5969
  };
5909
5970
  var fs = __require("fs");
@@ -5919,7 +5980,7 @@ var require_client = __commonJS({
5919
5980
  config.dirname = path.join(process.cwd(), alternativePath);
5920
5981
  config.isBundled = true;
5921
5982
  }
5922
- config.runtimeDataModel = JSON.parse('{"models":{"StagedNode":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"node_type","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"node_data","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"confidence","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Float","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"source","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"supporting_queries","kind":"scalar","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"graduated","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":false,"isGenerated":false,"isUpdatedAt":false},{"name":"graduated_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reviewed_by","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reviewed_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"rejection_reason","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"AI-generated graph nodes awaiting review and graduation to Memgraph"},"StagedEdge":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"edge_type","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"source_node_id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"target_node_id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"edge_data","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"confidence","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Float","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"source","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"supporting_queries","kind":"scalar","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"graduated","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":false,"isGenerated":false,"isUpdatedAt":false},{"name":"graduated_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reviewed_by","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reviewed_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"rejection_reason","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"AI-generated graph edges awaiting review and graduation to Memgraph"},"SearchSession":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"query","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"context","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"clarification_history","kind":"scalar","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Json","nativeType":null,"default":[],"isGenerated":false,"isUpdatedAt":false,"documentation":"Accumulated clarification Q&A: [{ question, options, answer }]"},{"name":"results","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"stage","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":1,"isGenerated":false,"isUpdatedAt":false},{"name":"status","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":"active","isGenerated":false,"isUpdatedAt":false},{"name":"expires_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true},{"name":"outcomes","kind":"object","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"OutcomeReport","nativeType":null,"relationName":"OutcomeReportToSearchSession","relationFromFields":[],"relationToFields":[],"isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Multi-turn guided discovery session state"},"OutcomeReport":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"query_id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":true,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"chosen_tool","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reason","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"outcome","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"feedback","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"processed","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":false,"isGenerated":false,"isUpdatedAt":false},{"name":"processed_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"session","kind":"object","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"SearchSession","nativeType":null,"relationName":"OutcomeReportToSearchSession","relationFromFields":["query_id"],"relationToFields":["id"],"relationOnDelete":"SetNull","isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Outcome reports from report_outcome() MCP tool\\\\nUsed to update graph edge weights via async queue jobs"},"McpEvent":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"tool_name","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"query_id","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"duration_ms","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Int","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"status","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"metadata","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Lightweight event log for every MCP tool invocation.\\\\nWritten asynchronously \u2014 never blocks tool responses.\\\\nPowers the standalone tracker dashboard at .toolpilot/tracker.html"},"IndexedTool":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"github_url","kind":"scalar","isList":false,"isRequired":true,"isUnique":true,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"graph_node_id","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"last_indexed_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"index_status","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":"pending","isGenerated":false,"isUpdatedAt":false},{"name":"error_message","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"retry_count","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":0,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Tracks the indexing state of each tool to enable incremental updates"},"AppSettings":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":"global","isGenerated":false,"isUpdatedAt":false},{"name":"reindex_scheduler_enabled","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":true,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_scheduler_enabled","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":false,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_topics","kind":"scalar","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":[],"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_batch_size","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":20,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_interval_hours","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":24,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_min_stars","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":100,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_last_pushed_days","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":90,"isGenerated":false,"isUpdatedAt":false},{"name":"last_discovery_run","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"last_reindex_run","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Global application settings and feature toggles"}},"enums":{},"types":{}}');
5983
+ config.runtimeDataModel = JSON.parse('{"models":{"StagedNode":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"node_type","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"node_data","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"confidence","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Float","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"source","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"supporting_queries","kind":"scalar","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"graduated","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":false,"isGenerated":false,"isUpdatedAt":false},{"name":"graduated_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reviewed_by","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reviewed_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"rejection_reason","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"AI-generated graph nodes awaiting review and graduation to Memgraph"},"StagedEdge":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"edge_type","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"source_node_id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"target_node_id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"edge_data","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"confidence","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Float","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"source","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"supporting_queries","kind":"scalar","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"graduated","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":false,"isGenerated":false,"isUpdatedAt":false},{"name":"graduated_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reviewed_by","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reviewed_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"rejection_reason","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"AI-generated graph edges awaiting review and graduation to Memgraph"},"SearchSession":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"query","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"context","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"clarification_history","kind":"scalar","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Json","nativeType":null,"default":[],"isGenerated":false,"isUpdatedAt":false,"documentation":"Accumulated clarification Q&A: [{ question, options, answer }]"},{"name":"results","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"stage","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":1,"isGenerated":false,"isUpdatedAt":false},{"name":"status","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":"active","isGenerated":false,"isUpdatedAt":false},{"name":"expires_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true},{"name":"outcomes","kind":"object","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"OutcomeReport","nativeType":null,"relationName":"OutcomeReportToSearchSession","relationFromFields":[],"relationToFields":[],"isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Multi-turn guided discovery session state"},"OutcomeReport":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"query_id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":true,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"chosen_tool","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"reason","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"outcome","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"feedback","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"processed","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":false,"isGenerated":false,"isUpdatedAt":false},{"name":"processed_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"session","kind":"object","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"SearchSession","nativeType":null,"relationName":"OutcomeReportToSearchSession","relationFromFields":["query_id"],"relationToFields":["id"],"relationOnDelete":"SetNull","isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Outcome reports from report_outcome() MCP tool\\\\nUsed to update graph edge weights via async queue jobs"},"McpEvent":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"tool_name","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"query_id","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"duration_ms","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Int","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"status","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"metadata","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Json","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Lightweight event log for every MCP tool invocation.\\\\nWritten asynchronously \u2014 never blocks tool responses.\\\\nPowers the standalone tracker dashboard at .toolpilot/tracker.html"},"IndexedTool":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"github_url","kind":"scalar","isList":false,"isRequired":true,"isUnique":true,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"graph_node_id","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"last_indexed_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"index_status","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":"pending","isGenerated":false,"isUpdatedAt":false},{"name":"error_message","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"retry_count","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":0,"isGenerated":false,"isUpdatedAt":false},{"name":"created_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Tracks the indexing state of each tool to enable incremental updates"},"User":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"name","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"email","kind":"scalar","isList":false,"isRequired":true,"isUnique":true,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"emailVerified","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"image","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"passwordHash","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"createdAt","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"updatedAt","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true},{"name":"accounts","kind":"object","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Account","nativeType":null,"relationName":"AccountToUser","relationFromFields":[],"relationToFields":[],"isGenerated":false,"isUpdatedAt":false},{"name":"sessions","kind":"object","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Session","nativeType":null,"relationName":"SessionToUser","relationFromFields":[],"relationToFields":[],"isGenerated":false,"isUpdatedAt":false},{"name":"apiKeys","kind":"object","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"ApiKey","nativeType":null,"relationName":"ApiKeyToUser","relationFromFields":[],"relationToFields":[],"isGenerated":false,"isUpdatedAt":false},{"name":"deviceCodes","kind":"object","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DeviceCode","nativeType":null,"relationName":"DeviceCodeToUser","relationFromFields":[],"relationToFields":[],"isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Platform user accounts \u2014 created via email/password, Google, or GitHub"},"Account":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"userId","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":true,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"type","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"provider","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"providerAccountId","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"refresh_token","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"access_token","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"expires_at","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"Int","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"token_type","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"scope","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"id_token","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"session_state","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"user","kind":"object","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"User","nativeType":null,"relationName":"AccountToUser","relationFromFields":["userId"],"relationToFields":["id"],"relationOnDelete":"Cascade","isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[["provider","providerAccountId"]],"uniqueIndexes":[{"name":null,"fields":["provider","providerAccountId"]}],"isGenerated":false,"documentation":"OAuth and credentials accounts linked to a user"},"Session":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"sessionToken","kind":"scalar","isList":false,"isRequired":true,"isUnique":true,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"userId","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":true,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"expires","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"user","kind":"object","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"User","nativeType":null,"relationName":"SessionToUser","relationFromFields":["userId"],"relationToFields":["id"],"relationOnDelete":"Cascade","isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Database sessions (required by Auth.js Prisma adapter even with JWT strategy)"},"VerificationToken":{"dbName":null,"schema":null,"fields":[{"name":"identifier","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"token","kind":"scalar","isList":false,"isRequired":true,"isUnique":true,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"expires","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[["identifier","token"]],"uniqueIndexes":[{"name":null,"fields":["identifier","token"]}],"isGenerated":false,"documentation":"Email verification and password reset tokens"},"ApiKey":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"key","kind":"scalar","isList":false,"isRequired":true,"isUnique":true,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"userId","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":true,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"label","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"tier","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":"free","isGenerated":false,"isUpdatedAt":false},{"name":"rateLimit","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":60,"isGenerated":false,"isUpdatedAt":false},{"name":"lastUsed","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"createdAt","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"revokedAt","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"user","kind":"object","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"User","nativeType":null,"relationName":"ApiKeyToUser","relationFromFields":["userId"],"relationToFields":["id"],"relationOnDelete":"Cascade","isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"API keys \u2014 both anonymous (legacy free-tier UUID) and user-linked (authenticated)"},"DeviceCode":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":{"name":"uuid","args":[4]},"isGenerated":false,"isUpdatedAt":false},{"name":"deviceCode","kind":"scalar","isList":false,"isRequired":true,"isUnique":true,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"userCode","kind":"scalar","isList":false,"isRequired":true,"isUnique":true,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"userId","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":true,"hasDefaultValue":false,"type":"String","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"status","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":"pending","isGenerated":false,"isUpdatedAt":false},{"name":"expiresAt","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"createdAt","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"DateTime","nativeType":null,"default":{"name":"now","args":[]},"isGenerated":false,"isUpdatedAt":false},{"name":"user","kind":"object","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"User","nativeType":null,"relationName":"DeviceCodeToUser","relationFromFields":["userId"],"relationToFields":["id"],"relationOnDelete":"SetNull","isGenerated":false,"isUpdatedAt":false}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Device authorization codes for MCP CLI authentication flow (like gh auth login)"},"AppSettings":{"dbName":null,"schema":null,"fields":[{"name":"id","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":true,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":"global","isGenerated":false,"isUpdatedAt":false},{"name":"reindex_scheduler_enabled","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":true,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_scheduler_enabled","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Boolean","nativeType":null,"default":false,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_topics","kind":"scalar","isList":true,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"String","nativeType":null,"default":[],"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_batch_size","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":20,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_interval_hours","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":24,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_min_stars","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":100,"isGenerated":false,"isUpdatedAt":false},{"name":"discovery_last_pushed_days","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":true,"type":"Int","nativeType":null,"default":90,"isGenerated":false,"isUpdatedAt":false},{"name":"last_discovery_run","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"last_reindex_run","kind":"scalar","isList":false,"isRequired":false,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":false},{"name":"updated_at","kind":"scalar","isList":false,"isRequired":true,"isUnique":false,"isId":false,"isReadOnly":false,"hasDefaultValue":false,"type":"DateTime","nativeType":null,"isGenerated":false,"isUpdatedAt":true}],"primaryKey":null,"uniqueFields":[],"uniqueIndexes":[],"isGenerated":false,"documentation":"Global application settings and feature toggles"}},"enums":{},"types":{}}');
5923
5984
  defineDmmfProperty2(exports.Prisma, config.runtimeDataModel);
5924
5985
  config.engineWasm = void 0;
5925
5986
  config.compilerWasm = void 0;
@@ -5963,11 +6024,17 @@ var require_dist = __commonJS({
5963
6024
  "../../packages/db/dist/index.js"(exports) {
5964
6025
  init_esm_shims();
5965
6026
  Object.defineProperty(exports, "__esModule", { value: true });
5966
- exports.PrismaClient = void 0;
6027
+ exports.prisma = exports.PrismaClient = void 0;
5967
6028
  var client_1 = require_default2();
5968
6029
  Object.defineProperty(exports, "PrismaClient", { enumerable: true, get: function() {
5969
6030
  return client_1.PrismaClient;
5970
6031
  } });
6032
+ var client_2 = require_default2();
6033
+ var globalForPrisma = globalThis;
6034
+ exports.prisma = globalForPrisma._prisma ?? new client_2.PrismaClient({ log: [] });
6035
+ if (process.env.NODE_ENV !== "production") {
6036
+ globalForPrisma._prisma = exports.prisma;
6037
+ }
5971
6038
  }
5972
6039
  });
5973
6040
  export default require_dist();
@@ -5986,4 +6053,4 @@ export default require_dist();
5986
6053
  *)
5987
6054
  *)
5988
6055
  */
5989
- //# sourceMappingURL=dist-2HK3ZGXE.js.map
6056
+ //# sourceMappingURL=dist-LZ2PMHGT.js.map