drizzle-cube 0.4.23 → 0.4.25

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 (37) hide show
  1. package/dist/adapters/express/index.cjs +1 -1
  2. package/dist/adapters/express/index.js +1 -1
  3. package/dist/adapters/fastify/index.cjs +1 -1
  4. package/dist/adapters/fastify/index.js +1 -1
  5. package/dist/adapters/{handler-t7Qd1IYi.js → handler-BV2_dul8.js} +1 -1
  6. package/dist/adapters/{handler-C3hT7g2W.cjs → handler-LMRPeTNJ.cjs} +1 -1
  7. package/dist/adapters/hono/index.cjs +1 -1
  8. package/dist/adapters/hono/index.js +1 -1
  9. package/dist/{server/index-CFEJ62GJ.js → adapters/index-C3PskWTr.js} +209 -193
  10. package/dist/{server/index-BIMhF5KZ.cjs → adapters/index-ht4NPca9.cjs} +11 -11
  11. package/dist/adapters/nextjs/index.cjs +1 -1
  12. package/dist/adapters/nextjs/index.js +1 -1
  13. package/dist/adapters/{openai-mLo2MCat.cjs → openai-BvA6eLs8.cjs} +1 -1
  14. package/dist/adapters/{openai-CUSRuKTk.js → openai-mcE24du8.js} +1 -1
  15. package/dist/client/chunks/{analysis-builder-DVrv9Q4n.js → analysis-builder-CcV9kB-E.js} +1785 -1783
  16. package/dist/client/chunks/analysis-builder-CcV9kB-E.js.map +1 -0
  17. package/dist/client/chunks/{analysis-builder-shared-CrENEvEk.js → analysis-builder-shared-DVnM536Z.js} +18 -16
  18. package/dist/client/chunks/analysis-builder-shared-DVnM536Z.js.map +1 -0
  19. package/dist/client/chunks/{components-GzooQM5J.js → components-DAPlOpfn.js} +49 -49
  20. package/dist/client/chunks/{components-GzooQM5J.js.map → components-DAPlOpfn.js.map} +1 -1
  21. package/dist/client/components/AgenticNotebook/NotebookCanvas.d.ts +4 -1
  22. package/dist/client/components/AgenticNotebook/NotebookPortletBlock.d.ts +2 -0
  23. package/dist/client/components/AnalysisBuilder/types.d.ts +2 -0
  24. package/dist/client/components.js +3 -3
  25. package/dist/client/index.js +678 -672
  26. package/dist/client/index.js.map +1 -1
  27. package/dist/client/stores/analysisBuilderStore.d.ts +5 -1
  28. package/dist/client-bundle-stats.html +1 -1
  29. package/dist/{adapters/index-CFEJ62GJ.js → server/index-C3PskWTr.js} +209 -193
  30. package/dist/{adapters/index-BIMhF5KZ.cjs → server/index-ht4NPca9.cjs} +11 -11
  31. package/dist/server/index.cjs +1 -1
  32. package/dist/server/index.js +1 -1
  33. package/dist/server/{openai-mLo2MCat.cjs → openai-BvA6eLs8.cjs} +1 -1
  34. package/dist/server/{openai-CUSRuKTk.js → openai-mcE24du8.js} +1 -1
  35. package/package.json +1 -1
  36. package/dist/client/chunks/analysis-builder-DVrv9Q4n.js.map +0 -1
  37. package/dist/client/chunks/analysis-builder-shared-CrENEvEk.js.map +0 -1
@@ -757,7 +757,7 @@ ${JSON.stringify(T,null,2)}`,isError:!0};const l=!!(T.funnel||T.flow||T.retentio
757
757
  ${O.errors.join(`
758
758
  `)}`,isError:!0};S=u}const N=`portlet-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,I={id:N,title:E.title,query:E.query,chartType:A,chartConfig:S,displayConfig:E.displayConfig};return{result:`Portlet "${E.title}" added to notebook (id: ${N}, chart: ${A}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,sideEffect:{type:"add_portlet",data:I}}}),s.set("add_markdown",async E=>{const a=`markdown-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,A=E.content||E.text||E.markdown||"",T={id:a,title:E.title,content:A};return{result:`Markdown block added to notebook (id: ${a}). [Reminder: in your next response, start with a brief sentence about what you will do next BEFORE making any tool calls.]`,sideEffect:{type:"add_markdown",data:T}}}),s.set("save_as_dashboard",async E=>{try{const a=E.portlets;if(!a||a.length===0)return{result:"Dashboard must contain at least one portlet.",isError:!0};const A=[];for(const N of a){if(N.chartType==="markdown")continue;const u=N.query;if(!u){A.push(`Portlet "${N.title}": missing query`);continue}let O;try{O=JSON.parse(u)}catch{A.push(`Portlet "${N.title}": invalid JSON query`);continue}const c=e.validateQuery(O);c.isValid||A.push(`Portlet "${N.title}": ${c.errors.join(", ")}`)}if(A.length>0)return{result:`Dashboard has invalid portlets — fix these errors and retry:
759
759
  ${A.join(`
760
- `)}`,isError:!0};const T={portlets:a.map(N=>{const I=N.chartType,u=I==="markdown",O=u?"query":N.analysisType||"query",c=O==="funnel"?"funnel":O==="flow"?"flow":O==="retention"?"retention":"query",C=N.query||"{}";let p;try{p=JSON.parse(C)}catch{p={}}const f={version:1,analysisType:c,activeView:"chart",charts:{[c]:{chartType:I,chartConfig:N.chartConfig||{},displayConfig:N.displayConfig||{}}},query:u?{}:p};return{id:N.id,title:N.title,analysisConfig:f,dashboardFilterMapping:N.dashboardFilterMapping,w:N.w,h:N.h,x:N.x,y:N.y}}),filters:E.filters,colorPalette:E.colorPalette},R=E.title,l=T.portlets.length,S=T.filters?.length||0;return{result:`Dashboard "${R}" created with ${l} portlets and ${S} filters.`,sideEffect:{type:"dashboard_saved",data:{title:R,description:E.description,dashboardConfig:T}}}}catch(a){return{result:`Failed to save dashboard: ${a instanceof Error?a.message:"Unknown error"}`,isError:!0}}}),s}async function yT(i,e,t){switch(i){case"anthropic":{const{AnthropicProvider:s}=await Promise.resolve().then(()=>require("./anthropic-BTkjgFpT.cjs"));return new s(e)}case"openai":{const{OpenAIProvider:s}=await Promise.resolve().then(()=>require("./openai-mLo2MCat.cjs"));return new s(e,t)}case"google":{const{GoogleProvider:s}=await Promise.resolve().then(()=>require("./google-BAK9pnQf.cjs"));return new s(e)}default:throw new Error(`Unknown LLM provider: "${i}". Supported providers: anthropic, openai, google`)}}const gT={anthropic:"claude-sonnet-4-6",openai:"gpt-4.1-mini",google:"gemini-3-flash-preview"};async function*bT(i){const{message:e,history:t,semanticLayer:s,securityContext:n,agentConfig:r,apiKey:E}=i,a=i.sessionId||crypto.randomUUID(),A=r.observability,T=crypto.randomUUID(),R=Date.now(),l=i.providerOverride||r.provider||"anthropic",S=i.modelOverride||r.model||gT[l]||"claude-sonnet-4-6",N=i.baseURLOverride||r.baseURL,I=r.maxTurns||25,u=r.maxTokens||4096;let O;try{O=await yT(l,E,{baseURL:N})}catch(P){console.error(`[agent] Failed to create ${l} provider:`,P),yield{type:"error",data:{message:P instanceof Error?P.message:"Failed to initialize LLM provider"}};return}const c=js(),C=Zs({semanticLayer:s,securityContext:n}),p=s.getMetadata();let f=Qs(p);i.systemContext&&(f+=`
760
+ `)}`,isError:!0};const T={portlets:a.map(N=>{const I=N.chartType,u=I==="markdown",O=u?"query":N.analysisType||"query",c=O==="funnel"?"funnel":O==="flow"?"flow":O==="retention"?"retention":"query",C=N.query||"{}";let p;try{p=JSON.parse(C)}catch{p={}}const f={version:1,analysisType:c,activeView:"chart",charts:{[c]:{chartType:I,chartConfig:N.chartConfig||{},displayConfig:N.displayConfig||{}}},query:u?{}:p};return{id:N.id,title:N.title,analysisConfig:f,dashboardFilterMapping:N.dashboardFilterMapping,w:N.w,h:N.h,x:N.x,y:N.y}}),filters:E.filters,colorPalette:E.colorPalette},R=E.title,l=T.portlets.length,S=T.filters?.length||0;return{result:`Dashboard "${R}" created with ${l} portlets and ${S} filters.`,sideEffect:{type:"dashboard_saved",data:{title:R,description:E.description,dashboardConfig:T}}}}catch(a){return{result:`Failed to save dashboard: ${a instanceof Error?a.message:"Unknown error"}`,isError:!0}}}),s}async function yT(i,e,t){switch(i){case"anthropic":{const{AnthropicProvider:s}=await Promise.resolve().then(()=>require("./anthropic-BTkjgFpT.cjs"));return new s(e)}case"openai":{const{OpenAIProvider:s}=await Promise.resolve().then(()=>require("./openai-BvA6eLs8.cjs"));return new s(e,t)}case"google":{const{GoogleProvider:s}=await Promise.resolve().then(()=>require("./google-BAK9pnQf.cjs"));return new s(e)}default:throw new Error(`Unknown LLM provider: "${i}". Supported providers: anthropic, openai, google`)}}const gT={anthropic:"claude-sonnet-4-6",openai:"gpt-4.1-mini",google:"gemini-3-flash-preview"};async function*bT(i){const{message:e,history:t,semanticLayer:s,securityContext:n,agentConfig:r,apiKey:E}=i,a=i.sessionId||crypto.randomUUID(),A=r.observability,T=crypto.randomUUID(),R=Date.now(),l=i.providerOverride||r.provider||"anthropic",S=i.modelOverride||r.model||gT[l]||"claude-sonnet-4-6",N=i.baseURLOverride||r.baseURL,I=r.maxTurns||25,u=r.maxTokens||4096;let O;try{O=await yT(l,E,{baseURL:N})}catch(P){console.error(`[agent] Failed to create ${l} provider:`,P),yield{type:"error",data:{message:P instanceof Error?P.message:"Failed to initialize LLM provider"}};return}const c=js(),C=Zs({semanticLayer:s,securityContext:n}),p=s.getMetadata();let f=Qs(p);i.systemContext&&(f+=`
761
761
 
762
762
  ## User Context
763
763
 
@@ -33182,7 +33182,7 @@ async function WT(i, e, t) {
33182
33182
  return new s(e);
33183
33183
  }
33184
33184
  case "openai": {
33185
- const { OpenAIProvider: s } = await import("./openai-CUSRuKTk.js");
33185
+ const { OpenAIProvider: s } = await import("./openai-mcE24du8.js");
33186
33186
  return new s(e, t);
33187
33187
  }
33188
33188
  case "google": {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class c{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{const s=await Promise.resolve().then(()=>require("./index-BIMhF5KZ.cjs"));e=s.default||s.OpenAI||s}catch{throw new Error("openai is required for the OpenAI provider. Install it with: npm install openai")}const t={apiKey:this.apiKey};this.baseURL&&(t.baseURL=this.baseURL),this.client=new e(t),this.initialized=!0}async createStream(e){await this.ensureClient();const{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){const t=new Map;for await(const s of e){const n=s;n.usage&&(yield{type:"message_meta",inputTokens:n.usage.prompt_tokens,outputTokens:n.usage.completion_tokens,stopReason:""});const l=n.choices?.[0];if(!l)continue;const r=l.delta;if(r){if(r.content&&(yield{type:"text_delta",text:r.content}),r.tool_calls)for(const i of r.tool_calls){const a=i.index??0;if(i.id&&(t.set(a,{id:i.id,name:i.function?.name||"",arguments:""}),yield{type:"tool_use_start",id:i.id,name:i.function?.name||""}),i.function?.name&&t.has(a)){const o=t.get(a);o.name||(o.name=i.function.name)}if(i.function?.arguments){const o=t.get(a);o&&(o.arguments+=i.function.arguments,yield{type:"tool_input_delta",json:i.function.arguments})}}if(l.finish_reason){for(const[i,a]of t){let o={};try{a.arguments&&(o=JSON.parse(a.arguments))}catch{}yield{type:"tool_use_end",id:a.id,input:o},t.delete(i)}yield{type:"message_meta",stopReason:l.finish_reason}}}}}formatTools(e){return e.map(t=>({type:"function",function:{name:t.name,description:t.description,parameters:t.parameters}}))}formatMessages(e,t){const s=[{role:"system",content:t}];for(const n of e)if(n.role==="user")s.push({role:"user",content:typeof n.content=="string"?n.content:JSON.stringify(n.content)});else if(n.role==="assistant")if(typeof n.content=="string")s.push({role:"assistant",content:n.content});else{const l=n.content,r=l.filter(o=>o.type==="text").map(o=>o.text).join(""),i=l.filter(o=>o.type==="tool_use").map(o=>({id:o.id,type:"function",function:{name:o.name,arguments:JSON.stringify(o.input||{})}})),a={role:"assistant"};r&&(a.content=r),i.length>0&&(a.tool_calls=i),s.push(a)}else n.role==="tool"?s.push(n):n.role==="tool_result"&&s.push({role:"user",content:typeof n.content=="string"?n.content:JSON.stringify(n.content)});return{messages:s}}formatToolResults(e){return e.map(t=>({role:"tool",tool_call_id:t.toolUseId,content:t.content}))}shouldContinue(e){return e==="tool_calls"}formatError(e){if(!e||!(e instanceof Error))return"Something went wrong. Please try again.";const t=e.message||"",s=e;return s.status===429?"Too many requests. Please wait a moment and try again.":s.status===401?"Authentication failed. Please check your API key configuration.":s.status===503||s.status===502?"The AI service is temporarily unavailable. Please try again in a moment.":s.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=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class c{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{const s=await Promise.resolve().then(()=>require("./index-ht4NPca9.cjs"));e=s.default||s.OpenAI||s}catch{throw new Error("openai is required for the OpenAI provider. Install it with: npm install openai")}const t={apiKey:this.apiKey};this.baseURL&&(t.baseURL=this.baseURL),this.client=new e(t),this.initialized=!0}async createStream(e){await this.ensureClient();const{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){const t=new Map;for await(const s of e){const n=s;n.usage&&(yield{type:"message_meta",inputTokens:n.usage.prompt_tokens,outputTokens:n.usage.completion_tokens,stopReason:""});const l=n.choices?.[0];if(!l)continue;const r=l.delta;if(r){if(r.content&&(yield{type:"text_delta",text:r.content}),r.tool_calls)for(const i of r.tool_calls){const a=i.index??0;if(i.id&&(t.set(a,{id:i.id,name:i.function?.name||"",arguments:""}),yield{type:"tool_use_start",id:i.id,name:i.function?.name||""}),i.function?.name&&t.has(a)){const o=t.get(a);o.name||(o.name=i.function.name)}if(i.function?.arguments){const o=t.get(a);o&&(o.arguments+=i.function.arguments,yield{type:"tool_input_delta",json:i.function.arguments})}}if(l.finish_reason){for(const[i,a]of t){let o={};try{a.arguments&&(o=JSON.parse(a.arguments))}catch{}yield{type:"tool_use_end",id:a.id,input:o},t.delete(i)}yield{type:"message_meta",stopReason:l.finish_reason}}}}}formatTools(e){return e.map(t=>({type:"function",function:{name:t.name,description:t.description,parameters:t.parameters}}))}formatMessages(e,t){const s=[{role:"system",content:t}];for(const n of e)if(n.role==="user")s.push({role:"user",content:typeof n.content=="string"?n.content:JSON.stringify(n.content)});else if(n.role==="assistant")if(typeof n.content=="string")s.push({role:"assistant",content:n.content});else{const l=n.content,r=l.filter(o=>o.type==="text").map(o=>o.text).join(""),i=l.filter(o=>o.type==="tool_use").map(o=>({id:o.id,type:"function",function:{name:o.name,arguments:JSON.stringify(o.input||{})}})),a={role:"assistant"};r&&(a.content=r),i.length>0&&(a.tool_calls=i),s.push(a)}else n.role==="tool"?s.push(n):n.role==="tool_result"&&s.push({role:"user",content:typeof n.content=="string"?n.content:JSON.stringify(n.content)});return{messages:s}}formatToolResults(e){return e.map(t=>({role:"tool",tool_call_id:t.toolUseId,content:t.content}))}shouldContinue(e){return e==="tool_calls"}formatError(e){if(!e||!(e instanceof Error))return"Something went wrong. Please try again.";const t=e.message||"",s=e;return s.status===429?"Too many requests. Please wait a moment and try again.":s.status===401?"Authentication failed. Please check your API key configuration.":s.status===503||s.status===502?"The AI service is temporarily unavailable. Please try again in a moment.":s.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=c;
@@ -12,7 +12,7 @@ class u {
12
12
  try {
13
13
  const s = await import(
14
14
  /* webpackIgnore: true */
15
- "./index-CFEJ62GJ.js"
15
+ "./index-C3PskWTr.js"
16
16
  );
17
17
  e = s.default || s.OpenAI || s;
18
18
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-cube",
3
- "version": "0.4.23",
3
+ "version": "0.4.25",
4
4
  "description": "Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.",
5
5
  "main": "./dist/server/index.js",
6
6
  "types": "./dist/server/index.d.ts",