drizzle-cube 0.4.43 → 0.4.44

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.
Files changed (36) hide show
  1. package/dist/adapters/compiler-CA6iopu7.cjs +198 -0
  2. package/dist/adapters/{mcp-transport-CC3hQOnb.js → compiler-O3T1u7jl.js} +1164 -1532
  3. package/dist/adapters/express/index.cjs +2 -2
  4. package/dist/adapters/express/index.js +27 -26
  5. package/dist/adapters/fastify/index.cjs +2 -2
  6. package/dist/adapters/fastify/index.js +26 -25
  7. package/dist/adapters/{google-Dgo9-Kb5.cjs → google-BOAwi9Ib.cjs} +1 -1
  8. package/dist/adapters/{google-CT4kgmBf.js → google-CBfBGU4F.js} +1 -1
  9. package/dist/adapters/{handler-BneUGY0k.cjs → handler-BO2nq6IS.cjs} +2 -2
  10. package/dist/adapters/{handler-CiQoQsnP.js → handler-CjVc3ytc.js} +4 -4
  11. package/dist/adapters/hono/index.cjs +2 -2
  12. package/dist/adapters/hono/index.js +27 -26
  13. package/dist/adapters/mcp-tools.cjs +1 -0
  14. package/dist/adapters/mcp-tools.d.ts +128 -0
  15. package/dist/adapters/mcp-tools.js +69 -0
  16. package/dist/adapters/mcp-transport--zhJJHJc.js +370 -0
  17. package/dist/adapters/mcp-transport-MOoCDu2M.cjs +58 -0
  18. package/dist/adapters/mcp-transport.d.ts +44 -0
  19. package/dist/adapters/nextjs/index.cjs +1 -1
  20. package/dist/adapters/nextjs/index.js +23 -22
  21. package/dist/adapters/{openai-DLfardui.cjs → openai-C4BD8xnN.cjs} +1 -1
  22. package/dist/adapters/{openai-DaxuhJLS.js → openai-CaSQEduB.js} +1 -1
  23. package/dist/adapters/{utils-_2o905Fi.js → utils-C7Nrw9Wb.js} +7 -3
  24. package/dist/adapters/{utils-2MwxiQ2o.cjs → utils-tNZ6Cvzw.cjs} +1 -1
  25. package/dist/adapters/utils.cjs +1 -1
  26. package/dist/adapters/utils.js +1 -1
  27. package/dist/server/index.cjs +1 -1
  28. package/dist/server/index.js +7 -3
  29. package/package.json +6 -1
  30. package/dist/adapters/mcp-transport-mmuPvjfR.cjs +0 -255
  31. /package/dist/adapters/{anthropic-BIva8k1r.cjs → anthropic-Cto4Jxqt.cjs} +0 -0
  32. /package/dist/adapters/{anthropic-B_rg0BhK.js → anthropic-DpEbCVvF.js} +0 -0
  33. /package/dist/adapters/{dist-Boc63-1q.cjs → dist-BnyV9wfA.cjs} +0 -0
  34. /package/dist/adapters/{dist-De5fzUEM.js → dist-DjVh2RFz.js} +0 -0
  35. /package/dist/adapters/{openai-CZ74gWd4.cjs → openai-4JP2B6pB.cjs} +0 -0
  36. /package/dist/adapters/{openai-CQfaz257.js → openai-BAnEZgKZ.js} +0 -0
@@ -0,0 +1,58 @@
1
+ const e=require(`./utils-tNZ6Cvzw.cjs`),t=require(`./mcp-prompts-DsAkafVn.cjs`);var n=[`2025-11-25`,`2025-06-18`,`2025-03-26`],r=`2025-11-25`;function i(e){let t=h(e[`mcp-protocol-version`])||`2025-11-25`;return{ok:n.includes(t),negotiated:n.includes(t)?t:null,supported:n}}function a(e){if(!e)return!1;let t=e.split(`,`).map(e=>e.trim().toLowerCase()),n=t.includes(`text/event-stream`),r=t.includes(`application/json`);return n&&!r}var o=`mcp-session-id`;function s(e){if(!e)return!1;let t=e.split(`,`).map(e=>e.trim().toLowerCase().split(`;`)[0]),n=t.some(e=>e===`application/json`),r=t.some(e=>e===`text/event-stream`);return n&&r}function c(e,t={}){let{allowMissingOrigin:n=!0,allowedOrigins:r}=t;if(!e)return n?{valid:!0}:{valid:!1,reason:`Origin header is required`};if(!r||r.length===0)return{valid:!0};let i;try{i=new URL(e)}catch{return{valid:!1,reason:`Invalid Origin header format`}}return r.map(e=>{try{return new URL(e).origin}catch{return e}}).includes(i.origin)?{valid:!0}:{valid:!1,reason:`Origin not in allowed list`}}function l(e,t,n){let r=[];return t&&r.push(`id: ${t}`),n&&n>0&&r.push(`retry: ${n}`),r.push(`event: message`),r.push(`data: ${JSON.stringify(e)}`),r.push(``),r.join(`
2
+ `)}function u(e,t,n,r){return{jsonrpc:`2.0`,id:e??null,error:{code:t,message:n,...r===void 0?{}:{data:r}}}}function d(e,t){return{jsonrpc:`2.0`,id:e??null,result:t}}function f(e){if(!e||typeof e!=`object`)return null;let t=e;return t.jsonrpc!==`2.0`||typeof t.method!=`string`?null:{jsonrpc:`2.0`,method:t.method,id:t.id,params:t.params}}async function p(t,i,a){let{semanticLayer:o,extractSecurityContext:s,rawRequest:c,rawResponse:l}=a,u=a.prompts??x,d=a.resources??S;switch(t){case`initialize`:{let e=i?.protocolVersion,t;return t=e&&n.includes(e)?e:r,{protocolVersion:t,capabilities:{tools:{listChanged:!1},resources:{listChanged:!1},prompts:{listChanged:!1},sampling:{}},sessionId:_(),serverInfo:{name:`drizzle-cube`,version:typeof process<`u`?process.env?.npm_package_version||`dev`:`worker`}}}case`list_tools`:case`tools/list`:return{tools:v(),nextCursor:``};case`call_tool`:case`tools/call`:return y(i,a);case`resources/list`:return{resources:d.map(({uri:e,name:t,description:n,mimeType:r})=>({uri:e,name:t,description:n,mimeType:r})),nextCursor:``};case`resources/templates/list`:return{resourceTemplates:[],nextCursor:``};case`resources/read`:{let e=i?.uri,t=d.find(t=>t.uri===e)||d[0];if(!t)throw m(-32602,`resource not found`);return{contents:[{uri:t.uri,mimeType:t.mimeType,text:t.text}]}}case`prompts/list`:return{prompts:u.map(({name:e,description:t})=>({name:e,description:t})),nextCursor:``};case`ping`:return{};case`notifications/initialized`:return{};case`prompts/get`:{let e=i?.name,t=u.find(t=>t.name===e)||u[0];if(!t)throw m(-32602,`prompt not found`);return{name:t.name,description:t.description,messages:t.messages}}case`discover`:return e.d(o,i||{});case`validate`:{let t=i||{};if(!t.query)throw m(-32602,`query is required`);return e.h(o,t)}case`load`:{let t=i||{};if(!t.query)throw m(-32602,`query is required`);return e.p(o,await s(c,l),t)}default:throw m(-32601,`Unknown MCP method: ${t}`)}}function m(e,t,n){let r=Error(t);return r.code=e,n!==void 0&&(r.data=n),r}function h(e){return e?Array.isArray(e)?e[0]||null:e:null}function g(e){return e.id===void 0||e.id===null}function _(){return`evt-${e.c()}`}function v(){return[{name:`discover`,description:`Find relevant cubes based on topic or intent. Call this FIRST to understand available data.
3
+
4
+ Returns cubes with:
5
+ - All measures and dimensions with their types
6
+ - Relationship information (joins) showing how cubes connect
7
+ - Metadata hints (eventStream for funnels, etc.)
8
+
9
+ IMPORTANT: The 'joins' property shows relationships between cubes. You can include dimensions from ANY related cube in your query - the system auto-joins them.
10
+
11
+ Example: If Productivity has a join to Employees, you can query:
12
+ { "measures": ["Productivity.totalPullRequests"], "dimensions": ["Employees.name"] }`,inputSchema:{type:`object`,properties:{topic:{type:`string`,description:`Keyword to search (e.g., "sales", "employees")`},intent:{type:`string`,description:`Natural language goal (e.g., "analyze productivity trends")`},limit:{type:`number`,description:`Max results (default: 10)`},minScore:{type:`number`,description:`Min relevance 0-1 (default: 0.1)`}}}},{name:`validate`,description:`Validate a query and get auto-corrections for issues.
13
+
14
+ Checks:
15
+ - Field existence (measures, dimensions exist in schema)
16
+ - Filter syntax and operators
17
+ - Cross-cube join validity
18
+
19
+ Returns corrected query if issues found.`,inputSchema:{type:`object`,required:[`query`],properties:{query:{type:`object`,description:`CubeQuery to validate`}}}},{name:`load`,description:`Execute a semantic query and return aggregated results.
20
+
21
+ QUERY CONSTRUCTION RULES:
22
+
23
+ 1. CROSS-CUBE JOINS (use dimensions from related cubes!)
24
+ Check 'joins' in discover results. Include dimensions from ANY related cube.
25
+ Example - get employee names with their productivity:
26
+ {
27
+ "measures": ["Productivity.totalPullRequests"],
28
+ "dimensions": ["Employees.name"],
29
+ "filters": [{ "member": "Productivity.date", "operator": "inDateRange", "values": ["last 3 months"] }]
30
+ }
31
+
32
+ 2. DATE FILTERING vs TIME GROUPING
33
+ For AGGREGATED TOTALS: use 'filters' with 'inDateRange' (NOT timeDimensions)
34
+ {
35
+ "measures": ["Productivity.totalPullRequests"],
36
+ "dimensions": ["Employees.name"],
37
+ "filters": [{ "member": "Productivity.date", "operator": "inDateRange", "values": ["last 3 months"] }],
38
+ "order": { "Productivity.totalPullRequests": "desc" },
39
+ "limit": 5
40
+ }
41
+
42
+ For TIME SERIES: use 'timeDimensions' WITH 'granularity'
43
+ {
44
+ "measures": ["Productivity.totalPullRequests"],
45
+ "timeDimensions": [{ "dimension": "Productivity.date", "dateRange": "last 3 months", "granularity": "month" }]
46
+ }
47
+
48
+ WARNING: timeDimensions WITHOUT granularity groups by day, returning many rows!
49
+
50
+ 3. TOP N PATTERN: filters + order + limit`,inputSchema:{type:`object`,required:[`query`],properties:{query:{type:`object`,description:`CubeQuery object with:
51
+ - measures: string[] - Aggregations (from any cube)
52
+ - dimensions: string[] - Grouping fields (can be from RELATED cubes via joins)
53
+ - filters: [{ member, operator, values }] - Use 'inDateRange' for date filtering
54
+ - timeDimensions: [{ dimension, granularity, dateRange }] - ONLY for time series
55
+ - order: { "Cube.field": "asc"|"desc" }
56
+ - limit: number`}}}}]}async function y(t,n){let{semanticLayer:r,extractSecurityContext:i,rawRequest:a,rawResponse:o}=n,s=t||{};if(!s.name)throw m(-32602,`name is required for tools/call`);let c=s.arguments;switch(s.name){case`discover`:return b(await e.d(r,c||{}));case`validate`:{let t=c||{};if(!t.query)throw m(-32602,`query is required`);return b(await e.h(r,t))}case`load`:{let t=c||{};if(!t.query)throw m(-32602,`query is required`);return b(await e.p(r,await i(a,o),t))}default:throw m(-32601,`Unknown tool: ${s.name}`)}}function b(e){return{content:[{type:`text`,text:typeof e==`string`?e:JSON.stringify(e)}],isError:!1}}var x=t.a(),S=[{uri:`drizzle-cube://quickstart`,name:`Drizzle Cube MCP Quickstart`,description:`Minimal guide for using discover/suggest/validate/load`,mimeType:`text/markdown`,text:[`# Drizzle Cube MCP Quickstart`,``,`Tools:`,`- discover: { topic?, intent?, limit?, minScore? } → cubes list`,`- suggest: { naturalLanguage, cube? } → draft query`,`- validate: { query } → corrected query + issues`,`- load: { query } → data + annotation`,``,`Recommended flow:`,`1) tools/list`,`2) tools/call name=discover intent="<goal>"`,`3) tools/call name=suggest naturalLanguage="<goal>"`,`4) tools/call name=validate query=<from suggest>`,`5) tools/call name=load query=<validated>`,``,`Query shapes supported:`,`- regular Cube.js-style query { measures, dimensions, filters, timeDimensions, order, limit, offset }`,`- funnel { bindingKey, timeDimension, steps[], includeTimeMetrics? }`,`- flow { bindingKey, eventDimension, steps?, window? }`,`- retention { bindingKey, timeDimension, periods, granularity, retentionType, breakdownDimensions }`,``,`Filter rules: flat arrays of { member, operator, values }; do not nest arrays.`].join(`
57
+ `)},{uri:`drizzle-cube://query-shapes`,name:`Query Shapes Reference`,description:`Detailed schema examples for regular, funnel, flow, and retention queries`,mimeType:`text/markdown`,text:[`# Query Shapes`,``,`## Regular query`,"```json",`{`,` "measures": ["Sales.count"],`,` "dimensions": ["Sales.channel"],`,` "filters": [ { "member": "Sales.status", "operator": "equals", "values": ["paid"] } ],`,` "timeDimensions": [ { "dimension": "Sales.createdAt", "dateRange": "last 30 days", "granularity": "day" } ],`,` "order": { "Sales.createdAt": "asc" },`,` "limit": 500`,`}`,"```",``,`## Funnel`,"```json",`{`,` "funnel": {`,` "bindingKey": "Events.userId",`,` "timeDimension": "Events.timestamp",`,` "steps": [`,` { "name": "Signup", "filter": [{ "member": "Events.eventType", "operator": "equals", "values": ["signup"] }] },`,` { "name": "Purchase", "filter": [{ "member": "Events.eventType", "operator": "equals", "values": ["purchase"] }] }`,` ],`,` "includeTimeMetrics": true`,` }`,`}`,"```",``,`## Flow`,"```json",`{`,` "flow": {`,` "bindingKey": "Events.sessionId",`,` "eventDimension": "Events.eventType",`,` "steps": ["view", "add_to_cart", "checkout"],`,` "window": { "unit": "minute", "value": 30 }`,` }`,`}`,"```",``,`## Retention`,"```json",`{`,` "retention": {`,` "bindingKey": "Users.id",`,` "timeDimension": "Events.timestamp",`,` "periods": 8,`,` "granularity": "week",`,` "retentionType": "rolling",`,` "breakdownDimensions": ["Events.country"]`,` }`,`}`,"```",``,`### Filter rules`,`- Always a flat array of filter objects: [{ member, operator, values }]`,`- For funnels, put time filter (inDateRange) only on step 0`,`- Operators: equals, notEquals, inDateRange, gt, gte, lt, lte, contains, notContains, set, notSet`,``,`### Time handling`,`- Relative ranges ("last 3 months") -> add ONLY an inDateRange filter on the time dimension (do NOT add timeDimensions unless grouping is requested).`,`- Grouping ("by month/week/day") -> add timeDimensions entry with granularity.`,`- Both can be combined: inDateRange filter + timeDimensions granularity.`].join(`
58
+ `)}];function C(){return S}function w(){return x}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return f}});
@@ -95,5 +95,49 @@ export declare function jsonRpcError(code: number, message: string, data?: unkno
95
95
  export declare function normalizeHeader(value: string | string[] | undefined): string | null;
96
96
  export declare function isNotification(request: JsonRpcRequest): boolean;
97
97
  export declare function primeEventId(): string;
98
+ export declare function buildToolList(): ({
99
+ name: string;
100
+ description: string;
101
+ inputSchema: {
102
+ type: string;
103
+ properties: {
104
+ topic: {
105
+ type: string;
106
+ description: string;
107
+ };
108
+ intent: {
109
+ type: string;
110
+ description: string;
111
+ };
112
+ limit: {
113
+ type: string;
114
+ description: string;
115
+ };
116
+ minScore: {
117
+ type: string;
118
+ description: string;
119
+ };
120
+ query?: undefined;
121
+ };
122
+ required?: undefined;
123
+ };
124
+ } | {
125
+ name: string;
126
+ description: string;
127
+ inputSchema: {
128
+ type: string;
129
+ required: string[];
130
+ properties: {
131
+ query: {
132
+ type: string;
133
+ description: string;
134
+ };
135
+ topic?: undefined;
136
+ intent?: undefined;
137
+ limit?: undefined;
138
+ minScore?: undefined;
139
+ };
140
+ };
141
+ })[];
98
142
  export declare function getDefaultResources(): MCPResource[];
99
143
  export declare function getDefaultPrompts(): MCPPrompt[];
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-2MwxiQ2o.cjs`),t=require(`../mcp-transport-mmuPvjfR.cjs`);let n=require(`next/server`);function r(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let c=new t.h({drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s});return n.forEach(e=>{c.registerCube(e)}),c}function i(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function a(e){return async function(t){let n=i(t,e);return new Response(null,{status:200,headers:n})}}function o(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let r=t.nextUrl.searchParams.get(`query`);if(!r)return n.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(r)}catch{return n.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return n.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await a(t,r),u=s.validateQuery(c);if(!u.isValid)return n.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await s.executeMultiCubeQuery(c,l,{skipCache:d}),p=e.r(c,f,s);return n.NextResponse.json(p,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function s(t){let{cors:a}=t,o=r(t);return async function(t,r){try{let r=e.a(o.getMetadata());return n.NextResponse.json(r,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function c(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let r=t.nextUrl.searchParams.get(`query`);if(!r)return n.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(r)}catch{return n.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return n.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await a(t,r),u=s.validateQuery(c);if(!u.isValid)return n.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=c.measures?.[0]||c.dimensions?.[0];if(!d)return n.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await s.generateSQL(f,c,l),m=e.o(c,p);return n.NextResponse.json(m,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function l(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return n.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{c=JSON.parse(e)}catch{return n.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return n.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let l=await a(t,r),u=await e.f(c,l,s);return n.NextResponse.json(u,{headers:o?i(t,o):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function u(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:c}=await t.json();if(!c||!Array.isArray(c))return n.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(c.length===0)return n.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(c,await a(t,r),s,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return n.NextResponse.json(l,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function d(e){let{extractSecurityContext:t,cors:a}=e,o=r(e);return async function(e,r){try{if(e.method!==`POST`)return n.NextResponse.json({error:`Method not allowed`},{status:405});let s=await e.json(),c=s.query||s,l=s.options||{},u=await t(e,r),d=o.validateQuery(c);if(!d.isValid)return n.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await o.explainQuery(c,u,l);return n.NextResponse.json(f,{headers:a?i(e,a):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function f(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await e.d(o,await t.json());return n.NextResponse.json(r,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function p(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await t.json();if(!r.naturalLanguage)return n.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let s=await e.m(o,r);return n.NextResponse.json(s,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function m(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await t.json();if(!r.query)return n.NextResponse.json(e.i(`query field is required`,400),{status:400});let s=await e.h(o,r);return n.NextResponse.json(s,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function h(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let c=await t.json();if(!c.query)return n.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.p(s,await a(t,r),c);return n.NextResponse.json(l,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function g(a){let{extractSecurityContext:o,cors:s,mcp:c={enabled:!0}}=a,l=r(a);return async function(r){if(r.method===`DELETE`)return n.NextResponse.json({error:`Session termination not supported`},{status:405});if(r.method===`GET`){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(t.d({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},a,15e3)))}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new n.NextResponse(o,{status:200,headers:c})}if(r.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=t.p(r.headers.get(`origin`),c.allowedOrigins?{allowedOrigins:c.allowedOrigins}:{});if(!a.valid)return n.NextResponse.json(t.n(null,-32600,a.reason),{status:403});let u=r.headers.get(`accept`);if(!t.f(u))return n.NextResponse.json(t.n(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let d=t.c(Object.fromEntries(r.headers.entries()));if(!d.ok)return n.NextResponse.json({error:`Unsupported MCP protocol version`,supported:d.supported},{status:426});let f;try{f=await r.json()}catch{f=null}let p=t.l(f);if(!p)return n.NextResponse.json(t.n(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let m=t.m(u),h=p.method===`initialize`,g=(e,t=200,a={})=>n.NextResponse.json(e,{status:t,headers:{...s?i(r,s):{},...a}});try{let e=await t.i(p.method,p.params,{semanticLayer:l,extractSecurityContext:e=>o(e),rawRequest:r,rawResponse:null});if(t.s(p))return new n.NextResponse(null,{status:202});let a=h&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,c={};a&&(c[t.t]=a);let u=t.r(p.id??null,e);if(m){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(`id: ${a}\n\n`)),n.enqueue(e.encode(t.d(u,a))),n.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...c});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>l.set(e,t))}return new n.NextResponse(o,{status:200,headers:l})}return g(u,200,c)}catch(e){if(t.s(p))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new n.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let a=e?.code??-32603,o=e?.data,c=e.message||`MCP request failed`,l=t.n(p.id??null,a,c,o);if(m){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(`id: ${a}\n\n`)),n.enqueue(e.encode(t.d(l,a))),n.close()}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new n.NextResponse(o,{status:200,headers:c})}return g(l,200)}}}function _(e){let{extractSecurityContext:t,cors:a,agent:o}=e;if(!o)throw Error(`agent config is required for createAgentChatHandler`);let s=r(e);return async function(e,r){try{if(e.method!==`POST`)return n.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:c}=await Promise.resolve().then(()=>require(`../handler-BneUGY0k.cjs`)),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return n.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(o.apiKey||``).trim();if(o.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return n.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=o.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=o.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=o.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,r),_=o.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=c({message:l,sessionId:u,history:d,semanticLayer:s,securityContext:g,agentConfig:o,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(a){let t=i(e,a);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function v(e){let{mcp:t={enabled:!0}}=e,n={load:o(e),meta:s(e),sql:c(e),dryRun:l(e),batch:u(e),explain:d(e)};return t.enabled!==!1&&(n.mcpRpc=g(e)),e.agent&&(n.agentChat=_(e)),n}exports.createAgentChatHandler=_,exports.createBatchHandler=u,exports.createCubeHandlers=v,exports.createDiscoverHandler=f,exports.createDryRunHandler=l,exports.createExplainHandler=d,exports.createLoadHandler=o,exports.createMcpLoadHandler=h,exports.createMcpRpcHandler=g,exports.createMetaHandler=s,exports.createOptionsHandler=a,exports.createSqlHandler=c,exports.createSuggestHandler=p,exports.createValidateHandler=m;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-tNZ6Cvzw.cjs`),t=require(`../compiler-CA6iopu7.cjs`),n=require(`../mcp-transport-MOoCDu2M.cjs`);let r=require(`next/server`);function i(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let c=new t.t({drizzle:r,schema:i,engineType:a,cache:o,rlsSetup:s});return n.forEach(e=>{c.registerCube(e)}),c}function a(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function o(e){return async function(t){let n=a(t,e);return new Response(null,{status:200,headers:n})}}function s(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=s.validateQuery(c);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await s.executeMultiCubeQuery(c,l,{skipCache:d}),p=e.r(c,f,s);return r.NextResponse.json(p,{headers:o?a(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function c(t){let{cors:n}=t,o=i(t);return async function(t,i){try{let i=e.a(o.getMetadata());return r.NextResponse.json(i,{headers:n?a(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function l(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let n=t.nextUrl.searchParams.get(`query`);if(!n)return r.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(n)}catch{return r.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return r.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await n(t,i),u=s.validateQuery(c);if(!u.isValid)return r.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=c.measures?.[0]||c.dimensions?.[0];if(!d)return r.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await s.generateSQL(f,c,l),m=e.o(c,p);return r.NextResponse.json(m,{headers:o?a(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function u(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return r.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{c=JSON.parse(e)}catch{return r.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return r.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let l=await n(t,i),u=await e.f(c,l,s);return r.NextResponse.json(u,{headers:o?a(t,o):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function d(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:c}=await t.json();if(!c||!Array.isArray(c))return r.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(c.length===0)return r.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(c,await n(t,i),s,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return r.NextResponse.json(l,{headers:o?a(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function f(e){let{extractSecurityContext:t,cors:n}=e,o=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed`},{status:405});let s=await e.json(),c=s.query||s,l=s.options||{},u=await t(e,i),d=o.validateQuery(c);if(!d.isValid)return r.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await o.explainQuery(c,u,l);return r.NextResponse.json(f,{headers:n?a(e,n):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function p(t){let{cors:n}=t,o=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await e.d(o,await t.json());return r.NextResponse.json(i,{headers:n?a(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function m(t){let{cors:n}=t,o=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.naturalLanguage)return r.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let s=await e.m(o,i);return r.NextResponse.json(s,{headers:n?a(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function h(t){let{cors:n}=t,o=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=await t.json();if(!i.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let s=await e.h(o,i);return r.NextResponse.json(s,{headers:n?a(t,n):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function g(t){let{extractSecurityContext:n,cors:o}=t,s=i(t);return async function(t,i){try{if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let c=await t.json();if(!c.query)return r.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.p(s,await n(t,i),c);return r.NextResponse.json(l,{headers:o?a(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),r.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function _(t){let{extractSecurityContext:o,cors:s,mcp:c={enabled:!0}}=t,l=i(t);return async function(t){if(t.method===`DELETE`)return r.NextResponse.json({error:`Session termination not supported`},{status:405});if(t.method===`GET`){let e=new TextEncoder,i=n.d(),o=new ReadableStream({start(t){t.enqueue(e.encode(n.f({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},i,15e3)))}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=a(t,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new r.NextResponse(o,{status:200,headers:c})}if(t.method!==`POST`)return r.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let i=n.m(t.headers.get(`origin`),c.allowedOrigins?{allowedOrigins:c.allowedOrigins}:{});if(!i.valid)return r.NextResponse.json(n.n(null,-32600,i.reason),{status:403});let u=t.headers.get(`accept`);if(!n.p(u))return r.NextResponse.json(n.n(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let d=n.l(Object.fromEntries(t.headers.entries()));if(!d.ok)return r.NextResponse.json({error:`Unsupported MCP protocol version`,supported:d.supported},{status:426});let f;try{f=await t.json()}catch{f=null}let p=n.u(f);if(!p)return r.NextResponse.json(n.n(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let m=n.h(u),h=p.method===`initialize`,g=(e,n=200,i={})=>r.NextResponse.json(e,{status:n,headers:{...s?a(t,s):{},...i}});try{let e=await n.a(p.method,p.params,{semanticLayer:l,extractSecurityContext:e=>o(e),rawRequest:t,rawResponse:null});if(n.c(p))return new r.NextResponse(null,{status:202});let i=h&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,c={};i&&(c[n.t]=i);let u=n.r(p.id??null,e);if(m){let e=new TextEncoder,i=n.d(),o=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.f(u,i))),t.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...c});if(s){let e=a(t,s);Object.entries(e).forEach(([e,t])=>l.set(e,t))}return new r.NextResponse(o,{status:200,headers:l})}return g(u,200,c)}catch(e){if(n.c(p))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new r.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let i=e?.code??-32603,o=e?.data,c=e.message||`MCP request failed`,l=n.n(p.id??null,i,c,o);if(m){let e=new TextEncoder,i=n.d(),o=new ReadableStream({start(t){t.enqueue(e.encode(`id: ${i}\n\n`)),t.enqueue(e.encode(n.f(l,i))),t.close()}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=a(t,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new r.NextResponse(o,{status:200,headers:c})}return g(l,200)}}}function v(e){let{extractSecurityContext:t,cors:n,agent:o}=e;if(!o)throw Error(`agent config is required for createAgentChatHandler`);let s=i(e);return async function(e,i){try{if(e.method!==`POST`)return r.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:c}=await Promise.resolve().then(()=>require(`../handler-BO2nq6IS.cjs`)),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return r.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(o.apiKey||``).trim();if(o.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return r.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=o.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=o.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=o.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,i),_=o.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=c({message:l,sessionId:u,history:d,semanticLayer:s,securityContext:g,agentConfig:o,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(n){let t=a(e,n);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),r.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function y(e){let{mcp:t={enabled:!0}}=e,n={load:s(e),meta:c(e),sql:l(e),dryRun:u(e),batch:d(e),explain:f(e)};return t.enabled!==!1&&(n.mcpRpc=_(e)),e.agent&&(n.agentChat=v(e)),n}exports.createAgentChatHandler=v,exports.createBatchHandler=d,exports.createCubeHandlers=y,exports.createDiscoverHandler=p,exports.createDryRunHandler=u,exports.createExplainHandler=f,exports.createLoadHandler=s,exports.createMcpLoadHandler=g,exports.createMcpRpcHandler=_,exports.createMetaHandler=c,exports.createOptionsHandler=o,exports.createSqlHandler=l,exports.createSuggestHandler=m,exports.createValidateHandler=h;
@@ -1,11 +1,12 @@
1
- import { a as e, d as t, f as n, h as r, i, m as a, o, p as s, r as c, u as l } from "../utils-_2o905Fi.js";
2
- import { c as u, d, f, h as p, i as m, l as h, m as g, n as _, p as v, r as y, s as b, t as x, u as S } from "../mcp-transport-CC3hQOnb.js";
1
+ import { a as e, d as t, f as n, h as r, i, m as a, o, p as s, r as c, u as l } from "../utils-C7Nrw9Wb.js";
2
+ import { t as u } from "../compiler-O3T1u7jl.js";
3
+ import { a as d, c as f, d as p, f as m, h, l as g, m as _, n as v, p as y, r as b, t as x, u as S } from "../mcp-transport--zhJJHJc.js";
3
4
  import { NextResponse as C } from "next/server";
4
5
  //#region src/adapters/nextjs/index.ts
5
6
  function w(e) {
6
7
  let { cubes: t, drizzle: n, schema: r, engineType: i, cache: a, rlsSetup: o } = e;
7
8
  if (!t || t.length === 0) throw Error("At least one cube must be provided in the cubes array");
8
- let s = new p({
9
+ let s = new u({
9
10
  drizzle: n,
10
11
  schema: r,
11
12
  engineType: i,
@@ -218,8 +219,8 @@ function L(e) {
218
219
  return async function(e) {
219
220
  if (e.method === "DELETE") return C.json({ error: "Session termination not supported" }, { status: 405 });
220
221
  if (e.method === "GET") {
221
- let t = new TextEncoder(), r = S(), i = new ReadableStream({ start(e) {
222
- e.enqueue(t.encode(d({
222
+ let t = new TextEncoder(), r = p(), i = new ReadableStream({ start(e) {
223
+ e.enqueue(t.encode(m({
223
224
  jsonrpc: "2.0",
224
225
  method: "mcp/ready",
225
226
  params: { protocol: "streamable-http" }
@@ -239,11 +240,11 @@ function L(e) {
239
240
  });
240
241
  }
241
242
  if (e.method !== "POST") return C.json(i("Method not allowed - use POST", 405), { status: 405 });
242
- let o = v(e.headers.get("origin"), r.allowedOrigins ? { allowedOrigins: r.allowedOrigins } : {});
243
- if (!o.valid) return C.json(_(null, -32600, o.reason), { status: 403 });
243
+ let o = _(e.headers.get("origin"), r.allowedOrigins ? { allowedOrigins: r.allowedOrigins } : {});
244
+ if (!o.valid) return C.json(v(null, -32600, o.reason), { status: 403 });
244
245
  let s = e.headers.get("accept");
245
- if (!f(s)) return C.json(_(null, -32600, "Accept header must include both application/json and text/event-stream"), { status: 400 });
246
- let c = u(Object.fromEntries(e.headers.entries()));
246
+ if (!y(s)) return C.json(v(null, -32600, "Accept header must include both application/json and text/event-stream"), { status: 400 });
247
+ let c = g(Object.fromEntries(e.headers.entries()));
247
248
  if (!c.ok) return C.json({
248
249
  error: "Unsupported MCP protocol version",
249
250
  supported: c.supported
@@ -254,9 +255,9 @@ function L(e) {
254
255
  } catch {
255
256
  l = null;
256
257
  }
257
- let p = h(l);
258
- if (!p) return C.json(_(null, -32600, "Invalid JSON-RPC 2.0 request"), { status: 400 });
259
- let w = g(s), E = p.method === "initialize", D = (t, r = 200, i = {}) => C.json(t, {
258
+ let u = S(l);
259
+ if (!u) return C.json(v(null, -32600, "Invalid JSON-RPC 2.0 request"), { status: 400 });
260
+ let w = h(s), E = u.method === "initialize", D = (t, r = 200, i = {}) => C.json(t, {
260
261
  status: r,
261
262
  headers: {
262
263
  ...n ? T(e, n) : {},
@@ -264,19 +265,19 @@ function L(e) {
264
265
  }
265
266
  });
266
267
  try {
267
- let r = await m(p.method, p.params, {
268
+ let r = await d(u.method, u.params, {
268
269
  semanticLayer: a,
269
270
  extractSecurityContext: (e) => t(e),
270
271
  rawRequest: e,
271
272
  rawResponse: null
272
273
  });
273
- if (b(p)) return new C(null, { status: 202 });
274
+ if (f(u)) return new C(null, { status: 202 });
274
275
  let i = E && r && typeof r == "object" && "sessionId" in r ? r.sessionId : void 0, o = {};
275
276
  i && (o[x] = i);
276
- let s = y(p.id ?? null, r);
277
+ let s = b(u.id ?? null, r);
277
278
  if (w) {
278
- let t = new TextEncoder(), r = S(), i = new ReadableStream({ start(e) {
279
- e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(d(s, r))), e.close();
279
+ let t = new TextEncoder(), r = p(), i = new ReadableStream({ start(e) {
280
+ e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(m(s, r))), e.close();
280
281
  } }), a = new Headers({
281
282
  "Content-Type": "text/event-stream",
282
283
  "Cache-Control": "no-cache",
@@ -294,12 +295,12 @@ function L(e) {
294
295
  }
295
296
  return D(s, 200, o);
296
297
  } catch (t) {
297
- if (b(p)) return process.env.NODE_ENV !== "test" && console.error("Next.js MCP notification processing error:", t), new C(null, { status: 202 });
298
+ if (f(u)) return process.env.NODE_ENV !== "test" && console.error("Next.js MCP notification processing error:", t), new C(null, { status: 202 });
298
299
  process.env.NODE_ENV !== "test" && console.error("Next.js MCP RPC handler error:", t);
299
- let r = t?.code ?? -32603, i = t?.data, a = t.message || "MCP request failed", o = _(p.id ?? null, r, a, i);
300
+ let r = t?.code ?? -32603, i = t?.data, a = t.message || "MCP request failed", o = v(u.id ?? null, r, a, i);
300
301
  if (w) {
301
- let t = new TextEncoder(), r = S(), i = new ReadableStream({ start(e) {
302
- e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(d(o, r))), e.close();
302
+ let t = new TextEncoder(), r = p(), i = new ReadableStream({ start(e) {
303
+ e.enqueue(t.encode(`id: ${r}\n\n`)), e.enqueue(t.encode(m(o, r))), e.close();
303
304
  } }), a = new Headers({
304
305
  "Content-Type": "text/event-stream",
305
306
  "Cache-Control": "no-cache",
@@ -325,7 +326,7 @@ function R(e) {
325
326
  return async function(e, a) {
326
327
  try {
327
328
  if (e.method !== "POST") return C.json({ error: "Method not allowed - use POST" }, { status: 405 });
328
- let { handleAgentChat: o } = await import("../handler-CiQoQsnP.js"), { message: s, sessionId: c, history: l } = await e.json();
329
+ let { handleAgentChat: o } = await import("../handler-CjVc3ytc.js"), { message: s, sessionId: c, history: l } = await e.json();
329
330
  if (!s || typeof s != "string") return C.json({ error: "message is required and must be a string" }, { status: 400 });
330
331
  let u = (r.apiKey || "").trim();
331
332
  if (r.allowClientApiKey) {
@@ -1 +1 @@
1
- var e=class{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{let t=await Promise.resolve().then(()=>require(`./openai-CZ74gWd4.cjs`));e=t.default||t.OpenAI||t}catch{throw Error(`openai is required for the OpenAI provider. Install it with: npm install openai`)}let t={apiKey:this.apiKey};this.baseURL&&(t.baseURL=this.baseURL),this.client=new e(t),this.initialized=!0}async createStream(e){await this.ensureClient();let{messages:t}=this.formatMessages(e.messages,e.system);return this.client.chat.completions.create({model:e.model,max_completion_tokens:e.maxTokens,tools:this.formatTools(e.tools),messages:t,stream:!0,stream_options:{include_usage:!0}})}async*parseStreamEvents(e){let t=new Map;for await(let n of e){let e=n;e.usage&&(yield{type:`message_meta`,inputTokens:e.usage.prompt_tokens,outputTokens:e.usage.completion_tokens,stopReason:``});let r=e.choices?.[0];if(!r)continue;let i=r.delta;if(i){if(i.content&&(yield{type:`text_delta`,text:i.content}),i.tool_calls)for(let e of i.tool_calls){let n=e.index??0;if(e.id&&(t.set(n,{id:e.id,name:e.function?.name||``,arguments:``}),yield{type:`tool_use_start`,id:e.id,name:e.function?.name||``}),e.function?.name&&t.has(n)){let r=t.get(n);r.name||=e.function.name}if(e.function?.arguments){let r=t.get(n);r&&(r.arguments+=e.function.arguments,yield{type:`tool_input_delta`,json:e.function.arguments})}}if(r.finish_reason){for(let[e,n]of t){let r={};try{n.arguments&&(r=JSON.parse(n.arguments))}catch{}yield{type:`tool_use_end`,id:n.id,input:r},t.delete(e)}yield{type:`message_meta`,stopReason:r.finish_reason}}}}}formatTools(e){return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters}}))}formatMessages(e,t){let n=[{role:`system`,content:t}];for(let t of e)if(t.role===`user`)n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});else if(t.role===`assistant`)if(typeof t.content==`string`)n.push({role:`assistant`,content:t.content});else{let e=t.content,r=e.filter(e=>e.type===`text`).map(e=>e.text).join(``),i=e.filter(e=>e.type===`tool_use`).map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input||{})}})),a={role:`assistant`};r&&(a.content=r),i.length>0&&(a.tool_calls=i),n.push(a)}else t.role===`tool`?n.push(t):t.role===`tool_result`&&n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});return{messages:n}}formatToolResults(e){return e.map(e=>({role:`tool`,tool_call_id:e.toolUseId,content:e.content}))}shouldContinue(e){return e===`tool_calls`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===502?`The AI service is temporarily unavailable. Please try again in a moment.`:n.status===400?`There was a problem with the request. Please try again.`:t.startsWith(`{`)||t.startsWith(`Error: {`)?`The AI service encountered an error. Please try again.`:t}};exports.OpenAIProvider=e;
1
+ var e=class{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{let t=await Promise.resolve().then(()=>require(`./openai-4JP2B6pB.cjs`));e=t.default||t.OpenAI||t}catch{throw Error(`openai is required for the OpenAI provider. Install it with: npm install openai`)}let t={apiKey:this.apiKey};this.baseURL&&(t.baseURL=this.baseURL),this.client=new e(t),this.initialized=!0}async createStream(e){await this.ensureClient();let{messages:t}=this.formatMessages(e.messages,e.system);return this.client.chat.completions.create({model:e.model,max_completion_tokens:e.maxTokens,tools:this.formatTools(e.tools),messages:t,stream:!0,stream_options:{include_usage:!0}})}async*parseStreamEvents(e){let t=new Map;for await(let n of e){let e=n;e.usage&&(yield{type:`message_meta`,inputTokens:e.usage.prompt_tokens,outputTokens:e.usage.completion_tokens,stopReason:``});let r=e.choices?.[0];if(!r)continue;let i=r.delta;if(i){if(i.content&&(yield{type:`text_delta`,text:i.content}),i.tool_calls)for(let e of i.tool_calls){let n=e.index??0;if(e.id&&(t.set(n,{id:e.id,name:e.function?.name||``,arguments:``}),yield{type:`tool_use_start`,id:e.id,name:e.function?.name||``}),e.function?.name&&t.has(n)){let r=t.get(n);r.name||=e.function.name}if(e.function?.arguments){let r=t.get(n);r&&(r.arguments+=e.function.arguments,yield{type:`tool_input_delta`,json:e.function.arguments})}}if(r.finish_reason){for(let[e,n]of t){let r={};try{n.arguments&&(r=JSON.parse(n.arguments))}catch{}yield{type:`tool_use_end`,id:n.id,input:r},t.delete(e)}yield{type:`message_meta`,stopReason:r.finish_reason}}}}}formatTools(e){return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters}}))}formatMessages(e,t){let n=[{role:`system`,content:t}];for(let t of e)if(t.role===`user`)n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});else if(t.role===`assistant`)if(typeof t.content==`string`)n.push({role:`assistant`,content:t.content});else{let e=t.content,r=e.filter(e=>e.type===`text`).map(e=>e.text).join(``),i=e.filter(e=>e.type===`tool_use`).map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input||{})}})),a={role:`assistant`};r&&(a.content=r),i.length>0&&(a.tool_calls=i),n.push(a)}else t.role===`tool`?n.push(t):t.role===`tool_result`&&n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});return{messages:n}}formatToolResults(e){return e.map(e=>({role:`tool`,tool_call_id:e.toolUseId,content:e.content}))}shouldContinue(e){return e===`tool_calls`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===502?`The AI service is temporarily unavailable. Please try again in a moment.`:n.status===400?`There was a problem with the request. Please try again.`:t.startsWith(`{`)||t.startsWith(`Error: {`)?`The AI service encountered an error. Please try again.`:t}};exports.OpenAIProvider=e;
@@ -13,7 +13,7 @@ var e = class {
13
13
  try {
14
14
  let t = await import(
15
15
  /* webpackIgnore: true */
16
- "./openai-CQfaz257.js"
16
+ "./openai-BAnEZgKZ.js"
17
17
  );
18
18
  e = t.default || t.OpenAI || t;
19
19
  } catch {
@@ -1320,7 +1320,7 @@ var Ln = /* @__PURE__ */ "ABS.ACOS.ACOSD.ACOSH.ASIN.ASIND.ASINH.ATAN.ATAN2.ATAN2
1320
1320
  }],
1321
1321
  identChars: { rest: "$" },
1322
1322
  paramTypes: { numbered: ["$"] },
1323
- operators: /* @__PURE__ */ "%.^.|/.||/.@.:=.&.|.#.~.<<.>>.~>~.~<~.~>=~.~<=~.@-@.@@.##.<->.&&.&<.&>.<<|.&<|.|>>.|&>.<^.^>.?#.?-.?|.?-|.?||.@>.<@.~=.?.@?.?&.->.->>.#>.#>>.#-.=>.>>=.<<=.~~.~~*.!~~.!~~*.~.~*.!~.!~*.-|-.||.@@@.!!.^@.<%.%>.<<%.%>>.<<->.<->>.<<<->.<->>>.::.:.<#>.<=>.<+>.<~>.<%>".split("."),
1323
+ operators: /* @__PURE__ */ "%.^.|/.||/.@.:=.&.|.#.~.<<.>>.~>~.~<~.~>=~.~<=~.@-@.@@.##.<->.&&.&<.&>.<<|.&<|.|>>.|&>.<^.>^.?#.?-.?|.?-|.?||.@>.<@.<@>.~=.?.@?.?&.->.->>.#>.#>>.#-.=>.>>=.<<=.~~.~~*.!~~.!~~*.~.~*.!~.!~*.-|-.||.@@@.!!.^@.<%.%>.<<%.%>>.<<->.<->>.<<<->.<->>>.~>.#=.::.:.<#>.<=>.<+>.<~>.<%>.&&&.|=|".split("."),
1324
1324
  operatorKeyword: !0
1325
1325
  },
1326
1326
  formatOptions: {
@@ -1741,7 +1741,11 @@ var yr = /* @__PURE__ */ "ABS.CHANGES.CHAR.COALESCE.FORMAT.GLOB.HEX.IFNULL.IIF.I
1741
1741
  "{INNER | CROSS} JOIN",
1742
1742
  "NATURAL [INNER] JOIN",
1743
1743
  "NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"
1744
- ]), Yr = d(["{ROWS | RANGE | GROUPS} BETWEEN", "IS [NOT] DISTINCT FROM"]), Xr = d([]), Zr = {
1744
+ ]), Yr = d([
1745
+ "{ROWS | RANGE | GROUPS} BETWEEN",
1746
+ "IS [NOT] DISTINCT FROM",
1747
+ "[TIMESTAMP | TIME] {WITH | WITHOUT} TIME ZONE"
1748
+ ]), Xr = d([]), Zr = {
1745
1749
  name: "trino",
1746
1750
  tokenizerOptions: {
1747
1751
  reservedSelect: Wr,
@@ -1783,7 +1787,7 @@ var yr = /* @__PURE__ */ "ABS.CHANGES.CHAR.COALESCE.FORMAT.GLOB.HEX.IFNULL.IIF.I
1783
1787
  onelineClauses: [...Kr, ...E],
1784
1788
  tabularOnelineClauses: E
1785
1789
  }
1786
- }, Qr = /* @__PURE__ */ "APPROX_COUNT_DISTINCT.AVG.CHECKSUM_AGG.COUNT.COUNT_BIG.GROUPING.GROUPING_ID.MAX.MIN.STDEV.STDEVP.SUM.VAR.VARP.CUME_DIST.FIRST_VALUE.LAG.LAST_VALUE.LEAD.PERCENTILE_CONT.PERCENTILE_DISC.PERCENT_RANK.Collation - COLLATIONPROPERTY.Collation - TERTIARY_WEIGHTS.@@DBTS.@@LANGID.@@LANGUAGE.@@LOCK_TIMEOUT.@@MAX_CONNECTIONS.@@MAX_PRECISION.@@NESTLEVEL.@@OPTIONS.@@REMSERVER.@@SERVERNAME.@@SERVICENAME.@@SPID.@@TEXTSIZE.@@VERSION.CAST.CONVERT.PARSE.TRY_CAST.TRY_CONVERT.TRY_PARSE.ASYMKEY_ID.ASYMKEYPROPERTY.CERTPROPERTY.CERT_ID.CRYPT_GEN_RANDOM.DECRYPTBYASYMKEY.DECRYPTBYCERT.DECRYPTBYKEY.DECRYPTBYKEYAUTOASYMKEY.DECRYPTBYKEYAUTOCERT.DECRYPTBYPASSPHRASE.ENCRYPTBYASYMKEY.ENCRYPTBYCERT.ENCRYPTBYKEY.ENCRYPTBYPASSPHRASE.HASHBYTES.IS_OBJECTSIGNED.KEY_GUID.KEY_ID.KEY_NAME.SIGNBYASYMKEY.SIGNBYCERT.SYMKEYPROPERTY.VERIFYSIGNEDBYCERT.VERIFYSIGNEDBYASYMKEY.@@CURSOR_ROWS.@@FETCH_STATUS.CURSOR_STATUS.DATALENGTH.IDENT_CURRENT.IDENT_INCR.IDENT_SEED.IDENTITY.SQL_VARIANT_PROPERTY.@@DATEFIRST.CURRENT_TIMESTAMP.CURRENT_TIMEZONE.CURRENT_TIMEZONE_ID.DATEADD.DATEDIFF.DATEDIFF_BIG.DATEFROMPARTS.DATENAME.DATEPART.DATETIME2FROMPARTS.DATETIMEFROMPARTS.DATETIMEOFFSETFROMPARTS.DAY.EOMONTH.GETDATE.GETUTCDATE.ISDATE.MONTH.SMALLDATETIMEFROMPARTS.SWITCHOFFSET.SYSDATETIME.SYSDATETIMEOFFSET.SYSUTCDATETIME.TIMEFROMPARTS.TODATETIMEOFFSET.YEAR.JSON.ISJSON.JSON_VALUE.JSON_QUERY.JSON_MODIFY.ABS.ACOS.ASIN.ATAN.ATN2.CEILING.COS.COT.DEGREES.EXP.FLOOR.LOG.LOG10.PI.POWER.RADIANS.RAND.ROUND.SIGN.SIN.SQRT.SQUARE.TAN.CHOOSE.GREATEST.IIF.LEAST.@@PROCID.APP_NAME.APPLOCK_MODE.APPLOCK_TEST.ASSEMBLYPROPERTY.COL_LENGTH.COL_NAME.COLUMNPROPERTY.DATABASEPROPERTYEX.DB_ID.DB_NAME.FILE_ID.FILE_IDEX.FILE_NAME.FILEGROUP_ID.FILEGROUP_NAME.FILEGROUPPROPERTY.FILEPROPERTY.FILEPROPERTYEX.FULLTEXTCATALOGPROPERTY.FULLTEXTSERVICEPROPERTY.INDEX_COL.INDEXKEY_PROPERTY.INDEXPROPERTY.NEXT VALUE FOR.OBJECT_DEFINITION.OBJECT_ID.OBJECT_NAME.OBJECT_SCHEMA_NAME.OBJECTPROPERTY.OBJECTPROPERTYEX.ORIGINAL_DB_NAME.PARSENAME.SCHEMA_ID.SCHEMA_NAME.SCOPE_IDENTITY.SERVERPROPERTY.STATS_DATE.TYPE_ID.TYPE_NAME.TYPEPROPERTY.DENSE_RANK.NTILE.RANK.ROW_NUMBER.PUBLISHINGSERVERNAME.CERTENCODED.CERTPRIVATEKEY.CURRENT_USER.DATABASE_PRINCIPAL_ID.HAS_DBACCESS.HAS_PERMS_BY_NAME.IS_MEMBER.IS_ROLEMEMBER.IS_SRVROLEMEMBER.LOGINPROPERTY.ORIGINAL_LOGIN.PERMISSIONS.PWDENCRYPT.PWDCOMPARE.SESSION_USER.SESSIONPROPERTY.SUSER_ID.SUSER_NAME.SUSER_SID.SUSER_SNAME.SYSTEM_USER.USER.USER_ID.USER_NAME.ASCII.CHARINDEX.CONCAT.CONCAT_WS.DIFFERENCE.FORMAT.LEFT.LEN.LOWER.LTRIM.PATINDEX.QUOTENAME.REPLACE.REPLICATE.REVERSE.RIGHT.RTRIM.SOUNDEX.SPACE.STR.STRING_AGG.STRING_ESCAPE.STUFF.SUBSTRING.TRANSLATE.TRIM.UNICODE.UPPER.$PARTITION.@@ERROR.@@IDENTITY.@@PACK_RECEIVED.@@ROWCOUNT.@@TRANCOUNT.BINARY_CHECKSUM.CHECKSUM.COMPRESS.CONNECTIONPROPERTY.CONTEXT_INFO.CURRENT_REQUEST_ID.CURRENT_TRANSACTION_ID.DECOMPRESS.ERROR_LINE.ERROR_MESSAGE.ERROR_NUMBER.ERROR_PROCEDURE.ERROR_SEVERITY.ERROR_STATE.FORMATMESSAGE.GET_FILESTREAM_TRANSACTION_CONTEXT.GETANSINULL.HOST_ID.HOST_NAME.ISNULL.ISNUMERIC.MIN_ACTIVE_ROWVERSION.NEWID.NEWSEQUENTIALID.ROWCOUNT_BIG.SESSION_CONTEXT.XACT_STATE.@@CONNECTIONS.@@CPU_BUSY.@@IDLE.@@IO_BUSY.@@PACK_SENT.@@PACKET_ERRORS.@@TIMETICKS.@@TOTAL_ERRORS.@@TOTAL_READ.@@TOTAL_WRITE.TEXTPTR.TEXTVALID.COLUMNS_UPDATED.EVENTDATA.TRIGGER_NESTLEVEL.UPDATE.COALESCE.NULLIF".split("."), $r = /* @__PURE__ */ "ADD.ALL.ALTER.AND.ANY.AS.ASC.AUTHORIZATION.BACKUP.BEGIN.BETWEEN.BREAK.BROWSE.BULK.BY.CASCADE.CHECK.CHECKPOINT.CLOSE.CLUSTERED.COALESCE.COLLATE.COLUMN.COMMIT.COMPUTE.CONSTRAINT.CONTAINS.CONTAINSTABLE.CONTINUE.CONVERT.CREATE.CROSS.CURRENT.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DBCC.DEALLOCATE.DECLARE.DEFAULT.DELETE.DENY.DESC.DISK.DISTINCT.DISTRIBUTED.DROP.DUMP.ERRLVL.ESCAPE.EXEC.EXECUTE.EXISTS.EXIT.EXTERNAL.FETCH.FILE.FILLFACTOR.FOR.FOREIGN.FREETEXT.FREETEXTTABLE.FROM.FULL.FUNCTION.GOTO.GRANT.GROUP.HAVING.HOLDLOCK.IDENTITY.IDENTITYCOL.IDENTITY_INSERT.IF.IN.INDEX.INNER.INSERT.INTERSECT.INTO.IS.JOIN.KEY.KILL.LEFT.LIKE.LINENO.LOAD.MERGE.NOCHECK.NONCLUSTERED.NOT.NULL.NULLIF.OF.OFF.OFFSETS.ON.OPEN.OPENDATASOURCE.OPENQUERY.OPENROWSET.OPENXML.OPTION.OR.ORDER.OUTER.OVER.PERCENT.PIVOT.PLAN.PRIMARY.PRINT.PROC.PROCEDURE.PUBLIC.RAISERROR.READ.READTEXT.RECONFIGURE.REFERENCES.REPLICATION.RESTORE.RESTRICT.RETURN.REVERT.REVOKE.RIGHT.ROLLBACK.ROWCOUNT.ROWGUIDCOL.RULE.SAVE.SCHEMA.SECURITYAUDIT.SELECT.SEMANTICKEYPHRASETABLE.SEMANTICSIMILARITYDETAILSTABLE.SEMANTICSIMILARITYTABLE.SESSION_USER.SET.SETUSER.SHUTDOWN.SOME.STATISTICS.SYSTEM_USER.TABLE.TABLESAMPLE.TEXTSIZE.THEN.TO.TOP.TRAN.TRANSACTION.TRIGGER.TRUNCATE.TRY_CONVERT.TSEQUAL.UNION.UNIQUE.UNPIVOT.UPDATE.UPDATETEXT.USE.USER.VALUES.VIEW.WAITFOR.WHERE.WHILE.WITH.WITHIN GROUP.WRITETEXT.$ACTION".split("."), ei = [
1790
+ }, Qr = /* @__PURE__ */ "APPROX_COUNT_DISTINCT.AVG.CHECKSUM_AGG.COUNT.COUNT_BIG.GROUPING.GROUPING_ID.MAX.MIN.STDEV.STDEVP.SUM.VAR.VARP.CUME_DIST.FIRST_VALUE.LAG.LAST_VALUE.LEAD.PERCENTILE_CONT.PERCENTILE_DISC.PERCENT_RANK.Collation - COLLATIONPROPERTY.Collation - TERTIARY_WEIGHTS.@@DBTS.@@LANGID.@@LANGUAGE.@@LOCK_TIMEOUT.@@MAX_CONNECTIONS.@@MAX_PRECISION.@@NESTLEVEL.@@OPTIONS.@@REMSERVER.@@SERVERNAME.@@SERVICENAME.@@SPID.@@TEXTSIZE.@@VERSION.CAST.CONVERT.PARSE.TRY_CAST.TRY_CONVERT.TRY_PARSE.ASYMKEY_ID.ASYMKEYPROPERTY.CERTPROPERTY.CERT_ID.CRYPT_GEN_RANDOM.DECRYPTBYASYMKEY.DECRYPTBYCERT.DECRYPTBYKEY.DECRYPTBYKEYAUTOASYMKEY.DECRYPTBYKEYAUTOCERT.DECRYPTBYPASSPHRASE.ENCRYPTBYASYMKEY.ENCRYPTBYCERT.ENCRYPTBYKEY.ENCRYPTBYPASSPHRASE.HASHBYTES.IS_OBJECTSIGNED.KEY_GUID.KEY_ID.KEY_NAME.SIGNBYASYMKEY.SIGNBYCERT.SYMKEYPROPERTY.VERIFYSIGNEDBYCERT.VERIFYSIGNEDBYASYMKEY.@@CURSOR_ROWS.@@FETCH_STATUS.CURSOR_STATUS.DATALENGTH.IDENT_CURRENT.IDENT_INCR.IDENT_SEED.IDENTITY.SQL_VARIANT_PROPERTY.@@DATEFIRST.CURRENT_TIMESTAMP.CURRENT_TIMEZONE.CURRENT_TIMEZONE_ID.DATEADD.DATEDIFF.DATEDIFF_BIG.DATEFROMPARTS.DATENAME.DATEPART.DATETIME2FROMPARTS.DATETIMEFROMPARTS.DATETIMEOFFSETFROMPARTS.DAY.EOMONTH.GETDATE.GETUTCDATE.ISDATE.MONTH.SMALLDATETIMEFROMPARTS.SWITCHOFFSET.SYSDATETIME.SYSDATETIMEOFFSET.SYSUTCDATETIME.TIMEFROMPARTS.TODATETIMEOFFSET.YEAR.JSON.ISJSON.OPENJSON.JSON_VALUE.JSON_QUERY.JSON_MODIFY.ABS.ACOS.ASIN.ATAN.ATN2.CEILING.COS.COT.DEGREES.EXP.FLOOR.LOG.LOG10.PI.POWER.RADIANS.RAND.ROUND.SIGN.SIN.SQRT.SQUARE.TAN.CHOOSE.GREATEST.IIF.LEAST.@@PROCID.APP_NAME.APPLOCK_MODE.APPLOCK_TEST.ASSEMBLYPROPERTY.COL_LENGTH.COL_NAME.COLUMNPROPERTY.DATABASEPROPERTYEX.DB_ID.DB_NAME.FILE_ID.FILE_IDEX.FILE_NAME.FILEGROUP_ID.FILEGROUP_NAME.FILEGROUPPROPERTY.FILEPROPERTY.FILEPROPERTYEX.FULLTEXTCATALOGPROPERTY.FULLTEXTSERVICEPROPERTY.INDEX_COL.INDEXKEY_PROPERTY.INDEXPROPERTY.NEXT VALUE FOR.OBJECT_DEFINITION.OBJECT_ID.OBJECT_NAME.OBJECT_SCHEMA_NAME.OBJECTPROPERTY.OBJECTPROPERTYEX.ORIGINAL_DB_NAME.PARSENAME.SCHEMA_ID.SCHEMA_NAME.SCOPE_IDENTITY.SERVERPROPERTY.STATS_DATE.TYPE_ID.TYPE_NAME.TYPEPROPERTY.DENSE_RANK.NTILE.RANK.ROW_NUMBER.PUBLISHINGSERVERNAME.CERTENCODED.CERTPRIVATEKEY.CURRENT_USER.DATABASE_PRINCIPAL_ID.HAS_DBACCESS.HAS_PERMS_BY_NAME.IS_MEMBER.IS_ROLEMEMBER.IS_SRVROLEMEMBER.LOGINPROPERTY.ORIGINAL_LOGIN.PERMISSIONS.PWDENCRYPT.PWDCOMPARE.SESSION_USER.SESSIONPROPERTY.SUSER_ID.SUSER_NAME.SUSER_SID.SUSER_SNAME.SYSTEM_USER.USER.USER_ID.USER_NAME.ASCII.CHARINDEX.CONCAT.CONCAT_WS.DIFFERENCE.FORMAT.LEFT.LEN.LOWER.LTRIM.PATINDEX.QUOTENAME.REPLACE.REPLICATE.REVERSE.RIGHT.RTRIM.SOUNDEX.SPACE.STR.STRING_AGG.STRING_ESCAPE.STUFF.SUBSTRING.TRANSLATE.TRIM.UNICODE.UPPER.$PARTITION.@@ERROR.@@IDENTITY.@@PACK_RECEIVED.@@ROWCOUNT.@@TRANCOUNT.BINARY_CHECKSUM.CHECKSUM.COMPRESS.CONNECTIONPROPERTY.CONTEXT_INFO.CURRENT_REQUEST_ID.CURRENT_TRANSACTION_ID.DECOMPRESS.ERROR_LINE.ERROR_MESSAGE.ERROR_NUMBER.ERROR_PROCEDURE.ERROR_SEVERITY.ERROR_STATE.FORMATMESSAGE.GET_FILESTREAM_TRANSACTION_CONTEXT.GETANSINULL.HOST_ID.HOST_NAME.ISNULL.ISNUMERIC.MIN_ACTIVE_ROWVERSION.NEWID.NEWSEQUENTIALID.ROWCOUNT_BIG.SESSION_CONTEXT.XACT_STATE.@@CONNECTIONS.@@CPU_BUSY.@@IDLE.@@IO_BUSY.@@PACK_SENT.@@PACKET_ERRORS.@@TIMETICKS.@@TOTAL_ERRORS.@@TOTAL_READ.@@TOTAL_WRITE.TEXTPTR.TEXTVALID.COLUMNS_UPDATED.EVENTDATA.TRIGGER_NESTLEVEL.UPDATE.COALESCE.NULLIF".split("."), $r = /* @__PURE__ */ "ADD.ALL.ALTER.AND.ANY.AS.ASC.AUTHORIZATION.BACKUP.BEGIN.BETWEEN.BREAK.BROWSE.BULK.BY.CASCADE.CHECK.CHECKPOINT.CLOSE.CLUSTERED.COALESCE.COLLATE.COLUMN.COMMIT.COMPUTE.CONSTRAINT.CONTAINS.CONTAINSTABLE.CONTINUE.CONVERT.CREATE.CROSS.CURRENT.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DBCC.DEALLOCATE.DECLARE.DEFAULT.DELETE.DENY.DESC.DISK.DISTINCT.DISTRIBUTED.DROP.DUMP.ERRLVL.ESCAPE.EXEC.EXECUTE.EXISTS.EXIT.EXTERNAL.FETCH.FILE.FILLFACTOR.FOR.FOREIGN.FREETEXT.FREETEXTTABLE.FROM.FULL.FUNCTION.GOTO.GRANT.GROUP.HAVING.HOLDLOCK.IDENTITY.IDENTITYCOL.IDENTITY_INSERT.IF.IN.INDEX.INNER.INSERT.INTERSECT.INTO.IS.JOIN.KEY.KILL.LEFT.LIKE.LINENO.LOAD.MERGE.NOCHECK.NONCLUSTERED.NOT.NULL.NULLIF.OF.OFF.OFFSETS.ON.OPEN.OPENDATASOURCE.OPENQUERY.OPENROWSET.OPENXML.OPTION.OR.ORDER.OUTER.OVER.PERCENT.PIVOT.PLAN.PRIMARY.PRINT.PROC.PROCEDURE.PUBLIC.RAISERROR.READ.READTEXT.RECONFIGURE.REFERENCES.REPLICATION.RESTORE.RESTRICT.RETURN.REVERT.REVOKE.RIGHT.ROLLBACK.ROWCOUNT.ROWGUIDCOL.RULE.SAVE.SCHEMA.SECURITYAUDIT.SELECT.SEMANTICKEYPHRASETABLE.SEMANTICSIMILARITYDETAILSTABLE.SEMANTICSIMILARITYTABLE.SESSION_USER.SET.SETUSER.SHUTDOWN.SOME.STATISTICS.SYSTEM_USER.TABLE.TABLESAMPLE.TEXTSIZE.THEN.TO.TOP.TRAN.TRANSACTION.TRIGGER.TRUNCATE.TRY_CONVERT.TSEQUAL.UNION.UNIQUE.UNPIVOT.UPDATE.UPDATETEXT.USE.USER.VALUES.VIEW.WAITFOR.WHERE.WHILE.WITH.WITHIN GROUP.WRITETEXT.$ACTION".split("."), ei = [
1787
1791
  "BINARY",
1788
1792
  "BIT",
1789
1793
  "CHAR",