yamchart 0.8.8 → 0.9.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/dist/{advisor-IJBW56F5.js → advisor-Z7TKPPBR.js} +10 -10
- package/dist/{agent-2DFNL2UB.js → agent-KWKPAYT2.js} +2 -2
- package/dist/{chunk-34ZVFILD.js → chunk-AMHCOB4D.js} +4 -4
- package/dist/{chunk-5N3FYFBV.js → chunk-CWAWATL4.js} +34 -7
- package/dist/chunk-CWAWATL4.js.map +1 -0
- package/dist/{chunk-D3ELUYYE.js → chunk-E2QN2M7S.js} +52 -5
- package/dist/chunk-E2QN2M7S.js.map +1 -0
- package/dist/{chunk-B5ZLCKNF.js → chunk-FZFBBB7K.js} +2 -2
- package/dist/{chunk-232AMQ5T.js → chunk-G57J2WQM.js} +4 -4
- package/dist/{chunk-77U26A7F.js → chunk-ZA6AOQVZ.js} +4 -4
- package/dist/chunk-ZA6AOQVZ.js.map +1 -0
- package/dist/{connection-utils-ZLSV5OLQ.js → connection-utils-CTPN7PV3.js} +4 -4
- package/dist/{describe-VO4CEYL2.js → describe-4NME6RCB.js} +5 -5
- package/dist/{dev-JUA73B6D.js → dev-6QGAB4ZH.js} +316 -29
- package/dist/dev-6QGAB4ZH.js.map +1 -0
- package/dist/{dist-PINRLZVT.js → dist-4GUE24QV.js} +2 -2
- package/dist/{dist-GVNWQXFR.js → dist-7CRX2GIR.js} +2 -2
- package/dist/{dist-E2PVGIPT.js → dist-VNX77VV5.js} +4 -2
- package/dist/index.js +21 -21
- package/dist/public/assets/{EventManagement-DQY1Sic0.js → EventManagement-MMsAkJKj.js} +2 -2
- package/dist/public/assets/{ExplorePage-C9M-fQ3Y.js → ExplorePage-BSkSNgLT.js} +1 -1
- package/dist/public/assets/{LoginPage-XYLwfbfw.js → LoginPage-vaI1dnyL.js} +1 -1
- package/dist/public/assets/PublicViewer-B-OKj2cg.js +1 -0
- package/dist/public/assets/{SetupWizard-fle7FC4b.js → SetupWizard-DvlVX2O6.js} +1 -1
- package/dist/public/assets/{ShareManagement-b3j4jzn3.js → ShareManagement-ulvPrOAQ.js} +1 -1
- package/dist/public/assets/{UserManagement-DwZ-AaqI.js → UserManagement-CvmpNy3o.js} +1 -1
- package/dist/public/assets/{index-CRcgti3B.css → index-CfyF2Wf-.css} +1 -1
- package/dist/public/assets/index-DD59fsOk.js +195 -0
- package/dist/public/assets/{index.es-Bd2YVqtj.js → index.es-BeTaRWIv.js} +1 -1
- package/dist/public/assets/{jspdf.es.min-CpRfbJ_H.js → jspdf.es.min-9haD1GSE.js} +3 -3
- package/dist/public/index.html +2 -2
- package/dist/{query-PXJMSDKR.js → query-Z75RKTHV.js} +4 -4
- package/dist/{sample-M24H3M73.js → sample-OIJNXQNC.js} +4 -4
- package/dist/{search-UCJS7X5D.js → search-YDCPIDZX.js} +5 -5
- package/dist/{source-resolver-RXNB7A64.js → source-resolver-4SUWXUGW.js} +5 -5
- package/dist/{sync-warehouse-S75DWVTG.js → sync-warehouse-NZFDS6WK.js} +4 -4
- package/dist/{tables-W3M3JDJO.js → tables-WJS2VI4L.js} +5 -5
- package/dist/templates/default/CLAUDE.md +1 -1
- package/dist/templates/default/docs/yamchart-reference.md +108 -2
- package/dist/{test-67AXD5PI.js → test-I4XOF7TZ.js} +5 -17
- package/dist/test-I4XOF7TZ.js.map +1 -0
- package/package.json +3 -3
- package/dist/chunk-5N3FYFBV.js.map +0 -1
- package/dist/chunk-77U26A7F.js.map +0 -1
- package/dist/chunk-D3ELUYYE.js.map +0 -1
- package/dist/dev-JUA73B6D.js.map +0 -1
- package/dist/public/assets/PublicViewer-CZJYS0wF.js +0 -1
- package/dist/public/assets/index-m_Jm3sB1.js +0 -188
- package/dist/test-67AXD5PI.js.map +0 -1
- /package/dist/{advisor-IJBW56F5.js.map → advisor-Z7TKPPBR.js.map} +0 -0
- /package/dist/{agent-2DFNL2UB.js.map → agent-KWKPAYT2.js.map} +0 -0
- /package/dist/{chunk-34ZVFILD.js.map → chunk-AMHCOB4D.js.map} +0 -0
- /package/dist/{chunk-B5ZLCKNF.js.map → chunk-FZFBBB7K.js.map} +0 -0
- /package/dist/{chunk-232AMQ5T.js.map → chunk-G57J2WQM.js.map} +0 -0
- /package/dist/{connection-utils-ZLSV5OLQ.js.map → connection-utils-CTPN7PV3.js.map} +0 -0
- /package/dist/{describe-VO4CEYL2.js.map → describe-4NME6RCB.js.map} +0 -0
- /package/dist/{dist-E2PVGIPT.js.map → dist-4GUE24QV.js.map} +0 -0
- /package/dist/{dist-GVNWQXFR.js.map → dist-7CRX2GIR.js.map} +0 -0
- /package/dist/{dist-PINRLZVT.js.map → dist-VNX77VV5.js.map} +0 -0
- /package/dist/{query-PXJMSDKR.js.map → query-Z75RKTHV.js.map} +0 -0
- /package/dist/{sample-M24H3M73.js.map → sample-OIJNXQNC.js.map} +0 -0
- /package/dist/{search-UCJS7X5D.js.map → search-YDCPIDZX.js.map} +0 -0
- /package/dist/{source-resolver-RXNB7A64.js.map → source-resolver-4SUWXUGW.js.map} +0 -0
- /package/dist/{sync-warehouse-S75DWVTG.js.map → sync-warehouse-NZFDS6WK.js.map} +0 -0
- /package/dist/{tables-W3M3JDJO.js.map → tables-WJS2VI4L.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/schema/src/connection.ts","../../../packages/schema/src/chart.ts","../../../packages/schema/src/project.ts","../../../packages/schema/src/semantic.ts","../../../packages/schema/src/model.ts","../../../packages/schema/src/dashboard.ts","../../../packages/schema/src/schedule.ts","../../../packages/schema/src/events.ts","../../../packages/schema/src/agent.ts","../../../packages/schema/src/index.ts"],"sourcesContent":["import { z } from 'zod';\n\n// Auth configuration for connections\nconst EnvAuthSchema = z.object({\n type: z.literal('env'),\n user_var: z.string(),\n password_var: z.string(),\n});\n\nconst KeyPairAuthSchema = z.object({\n type: z.literal('key_pair'),\n user_var: z.string(),\n private_key_path: z.string(),\n});\n\nconst SecretManagerAuthSchema = z.object({\n type: z.literal('secret_manager'),\n provider: z.enum(['aws_secrets_manager', 'gcp_secret_manager', 'vault']),\n secret_id: z.string(),\n});\n\nconst ExternalBrowserAuthSchema = z.object({\n type: z.literal('externalbrowser'),\n user_var: z.string(),\n cache_token: z.boolean().optional(),\n});\n\nconst AuthSchema = z.discriminatedUnion('type', [\n EnvAuthSchema,\n KeyPairAuthSchema,\n SecretManagerAuthSchema,\n ExternalBrowserAuthSchema,\n]);\n\n// Connection pool configuration\nconst PoolConfigSchema = z.object({\n min_connections: z.number().int().positive().optional(),\n max_connections: z.number().int().positive().optional(),\n idle_timeout: z.number().int().positive().optional(),\n});\n\n// Query settings\nconst QueryConfigSchema = z.object({\n timeout: z.number().int().positive().optional(),\n max_rows: z.number().int().positive().optional(),\n});\n\n// DuckDB-specific config\nconst DuckDBConfigSchema = z.object({\n path: z.string(), // file path or :memory:\n});\n\n// Postgres-specific config\nconst PostgresConfigSchema = z.object({\n host: z.string(),\n port: z.number().int().positive().default(5432),\n database: z.string(),\n schema: z.string().optional(),\n ssl: z.boolean().optional(),\n});\n\n// Snowflake-specific config\nconst SnowflakeConfigSchema = z.object({\n account: z.string(),\n warehouse: z.string(),\n database: z.string(),\n schema: z.string().optional(),\n role: z.string().optional(),\n});\n\n// MySQL-specific config\nconst MySQLConfigSchema = z.object({\n host: z.string(),\n port: z.number().int().positive().default(3306),\n database: z.string(),\n ssl: z.boolean().optional(),\n});\n\n// SQLite-specific config\nconst SQLiteConfigSchema = z.object({\n path: z.string(), // file path or :memory:\n});\n\n// Base connection schema\nconst BaseConnectionSchema = z.object({\n name: z.string().min(1),\n description: z.string().optional(),\n pool: PoolConfigSchema.optional(),\n query: QueryConfigSchema.optional(),\n});\n\n// Type-specific connection schemas\nconst DuckDBConnectionSchema = BaseConnectionSchema.extend({\n type: z.literal('duckdb'),\n config: DuckDBConfigSchema,\n auth: z.undefined().optional(),\n});\n\nconst PostgresConnectionSchema = BaseConnectionSchema.extend({\n type: z.literal('postgres'),\n config: PostgresConfigSchema,\n auth: AuthSchema.optional(),\n});\n\nconst SnowflakeConnectionSchema = BaseConnectionSchema.extend({\n type: z.literal('snowflake'),\n config: SnowflakeConfigSchema,\n auth: AuthSchema,\n});\n\nconst MySQLConnectionSchema = BaseConnectionSchema.extend({\n type: z.literal('mysql'),\n config: MySQLConfigSchema,\n auth: AuthSchema.optional(),\n});\n\nconst SQLiteConnectionSchema = BaseConnectionSchema.extend({\n type: z.literal('sqlite'),\n config: SQLiteConfigSchema,\n auth: z.undefined().optional(),\n});\n\n// Union of all connection types\nexport const ConnectionSchema = z.discriminatedUnion('type', [\n DuckDBConnectionSchema,\n PostgresConnectionSchema,\n SnowflakeConnectionSchema,\n MySQLConnectionSchema,\n SQLiteConnectionSchema,\n]);\n\nexport type Connection = z.infer<typeof ConnectionSchema>;\nexport type DuckDBConnection = z.infer<typeof DuckDBConnectionSchema>;\nexport type PostgresConnection = z.infer<typeof PostgresConnectionSchema>;\nexport type SnowflakeConnection = z.infer<typeof SnowflakeConnectionSchema>;\nexport type MySQLConnection = z.infer<typeof MySQLConnectionSchema>;\nexport type SQLiteConnection = z.infer<typeof SQLiteConnectionSchema>;\n","import { z } from 'zod';\n\n// Axis types\nconst AxisTypeSchema = z.enum(['temporal', 'quantitative', 'ordinal', 'nominal']);\n\n// Axis configuration\nconst AxisSchema = z.object({\n field: z.string().min(1),\n type: AxisTypeSchema,\n format: z.string().optional(),\n label: z.string().optional(),\n scale: z.enum(['linear', 'log']).optional(),\n});\n\n// Chart types supported (scatter has its own dedicated schema)\nconst ChartTypeSchema = z.enum([\n 'line',\n 'bar',\n 'area',\n 'pie',\n 'donut',\n 'table',\n 'metric',\n 'map',\n 'heatmap',\n 'funnel',\n 'sankey',\n 'treemap',\n 'waterfall',\n 'gauge',\n]);\n\n// Gradient configuration - boolean shorthand or explicit from/to\nconst GradientSchema = z.union([\n z.boolean(),\n z.object({\n from: z.string(),\n to: z.string(),\n }),\n]);\n\n// Long format series: group by a field in the data (one row per series value)\nconst LongFormatSeriesSchema = z.object({\n field: z.string().min(1),\n colors: z.record(z.string(), z.string()).optional(),\n});\n\n// Series transform: compute derived values client-side\nconst SeriesTransformSchema = z.object({\n type: z.enum(['rolling_average']),\n window: z.number().int().positive(),\n});\n\n// Wide format column: each column becomes a separate series\nconst WideFormatColumnSchema = z.object({\n field: z.string().min(1),\n name: z.string().optional(),\n type: z.enum(['line', 'bar', 'area']).optional(),\n axis: z.enum(['left', 'right']).optional(),\n color: z.string().optional(),\n style: z.enum(['solid', 'dashed', 'dotted']).optional(),\n opacity: z.number().min(0).max(1).optional(),\n gradient: GradientSchema.optional(),\n transform: SeriesTransformSchema.optional(),\n band: z.string().optional(), // Pair with another column to render as shaded range band\n});\n\n// Wide format series: explicit list of columns\nconst WideFormatSeriesSchema = z.object({\n columns: z.array(WideFormatColumnSchema).min(1),\n});\n\n// Series config is either long format (group by field) or wide format (explicit columns)\nconst SeriesConfigSchema = z.union([\n LongFormatSeriesSchema,\n WideFormatSeriesSchema,\n]);\n\n// Color condition for conditional coloring\nconst ColorConditionSchema = z.object({\n when: z.string(),\n color: z.string(),\n});\n\n// Conditional color configuration\nconst ConditionalColorSchema = z.object({\n conditions: z.array(ColorConditionSchema).min(1),\n default: z.string().optional(),\n});\n\n// Color - either a simple string or conditional config\nconst ColorSchema = z.union([\n z.string(),\n ConditionalColorSchema,\n]);\n\n// Legend configuration\nconst LegendSchema = z.object({\n show: z.boolean().optional(),\n position: z.enum(['top', 'bottom', 'left', 'right']).optional(),\n});\n\n// Annotation configuration\nconst LineAnnotationSchema = z.object({\n type: z.literal('line'),\n value: z.number(),\n label: z.string().optional(),\n color: z.string().optional(),\n style: z.enum(['solid', 'dashed', 'dotted']).optional(),\n});\n\nconst BandAnnotationSchema = z.object({\n type: z.literal('band'),\n from: z.number(),\n to: z.number(),\n label: z.string().optional(),\n color: z.string().optional(),\n});\n\nconst XLineAnnotationSchema = z.object({\n type: z.literal('x_line'),\n x: z.string(), // x-axis value (date string or category)\n label: z.string().optional(),\n color: z.string().optional(),\n style: z.enum(['solid', 'dashed', 'dotted']).optional(),\n});\n\nconst AnnotationSchema = z.discriminatedUnion('type', [\n LineAnnotationSchema,\n BandAnnotationSchema,\n XLineAnnotationSchema,\n]);\n\n// Goal zone configuration (tolerance band around target)\nconst GoalZoneSchema = z.object({\n tolerance: z.number().min(0).max(1),\n});\n\n// Goal line style\nconst GoalStyleSchema = z.enum(['solid', 'dashed', 'dotted']);\n\n// Fixed goal — constant horizontal target line\nconst FixedGoalSchema = z.object({\n type: z.literal('fixed'),\n value: z.number(),\n label: z.string().optional(),\n color: z.string().optional(),\n style: GoalStyleSchema.optional(),\n zone: GoalZoneSchema.optional(),\n});\n\n// Cumulative goal — target value to reach by a deadline\nconst CumulativeGoalSchema = z.object({\n type: z.literal('cumulative'),\n value: z.number(),\n by: z.string().min(1),\n from: z.string().optional(),\n label: z.string().optional(),\n color: z.string().optional(),\n style: GoalStyleSchema.optional(),\n zone: GoalZoneSchema.optional(),\n});\n\n// Source for model-driven goals\nconst GoalSourceSchema = z.object({\n model: z.string().min(1),\n value_field: z.string().min(1),\n date_field: z.string().optional(),\n});\n\n// Model-driven goal — target values from a SQL model\nconst ModelGoalSchema = z.object({\n type: z.literal('model'),\n source: GoalSourceSchema,\n label: z.string().optional(),\n color: z.string().optional(),\n style: GoalStyleSchema.optional(),\n zone: GoalZoneSchema.optional(),\n});\n\n// Goal discriminated union (for line/bar/area/combo charts)\nconst GoalSchema = z.discriminatedUnion('type', [\n FixedGoalSchema,\n CumulativeGoalSchema,\n ModelGoalSchema,\n]);\n\n// KPI/Gauge goal — simple target value with optional progress display\nconst KpiGoalSchema = z.object({\n value: z.number(),\n label: z.string().optional(),\n show_progress: z.boolean().optional(),\n color: z.string().optional(),\n});\n\n// Interactivity options\nconst InteractionsSchema = z.object({\n tooltip: z.boolean().default(true),\n zoom: z.boolean().default(false),\n brush: z.boolean().default(false),\n});\n\n// KPI format types\nconst KpiFormatSchema = z.object({\n type: z.enum(['number', 'currency', 'percent']),\n currency: z.string().optional(), // e.g., 'USD', 'EUR'\n decimals: z.number().optional(),\n});\n\n// KPI comparison configuration\nconst KpiComparisonSchema = z.object({\n enabled: z.boolean(),\n field: z.string().min(1).optional(),\n period: z.enum(['previous']).optional(),\n label: z.string().optional(),\n type: z.enum(['percent_change', 'absolute']),\n}).refine(\n (data) => !(data.field && data.period),\n { message: 'Cannot set both field and period — use one or the other' }\n).refine(\n (data) => data.field || data.period,\n { message: 'Must set either field or period for comparison' }\n);\n\n// KPI value configuration\nconst KpiValueSchema = z.object({\n field: z.string().min(1),\n});\n\n// KPI-specific config\nconst KpiConfigSchema = z.object({\n type: z.literal('kpi'),\n value: KpiValueSchema,\n format: KpiFormatSchema,\n comparison: KpiComparisonSchema.optional(),\n unit: z.string().optional(), // e.g., 'min', 'sessions', 'users'\n goal: KpiGoalSchema.optional(),\n});\n\n// Center value for donut charts\nconst CenterValueSchema = z.object({\n field: z.string().optional(), // 'total' for sum, or specific field\n label: z.string().optional(),\n format: z.string().optional(),\n});\n\n// Period comparison overlay\nconst CompareSchema = z.object({\n period: z.string(), // previous_week, previous_month, previous_year, or a preset name\n label: z.string().optional(),\n style: z.enum(['solid', 'dashed', 'dotted']).optional(),\n opacity: z.number().min(0).max(1).optional(),\n color: z.string().optional(),\n});\n\n// Standard chart config (existing)\nconst StandardChartConfigSchema = z.object({\n type: ChartTypeSchema,\n x: AxisSchema,\n y: AxisSchema.optional(),\n series: SeriesConfigSchema.optional(),\n stacking: z.enum(['stacked', 'percent']).optional(),\n orientation: z.enum(['vertical', 'horizontal']).optional(),\n color: ColorSchema.optional(),\n gradient: GradientSchema.optional(),\n legend: LegendSchema.optional(),\n annotations: z.array(AnnotationSchema).optional(),\n compare: z.array(CompareSchema).optional(),\n interactions: InteractionsSchema.optional(),\n centerValue: CenterValueSchema.optional(), // For donut charts\n goals: z.array(GoalSchema).optional(),\n});\n\n// Dual axes for combo charts\nconst DualAxesSchema = z.object({\n left: AxisSchema.optional(),\n right: AxisSchema.optional(),\n});\n\n// Combo chart config - requires dual axes\nconst ComboChartConfigSchema = z.object({\n type: z.literal('combo'),\n x: AxisSchema,\n series: WideFormatSeriesSchema,\n axes: DualAxesSchema,\n legend: LegendSchema.optional(),\n interactions: InteractionsSchema.optional(),\n gradient: GradientSchema.optional(),\n goals: z.array(GoalSchema).optional(),\n});\n\n// Scatter chart size encoding\nconst ScatterSizeSchema = z.object({\n field: z.string().min(1),\n min: z.number().optional(),\n max: z.number().optional(),\n label: z.string().optional(),\n});\n\n// Scatter chart grouping\nconst ScatterGroupSchema = z.object({\n field: z.string().min(1),\n});\n\n// Regression line configuration\nconst RegressionSchema = z.object({\n type: z.literal('linear'),\n show_equation: z.boolean().optional(),\n show_r_squared: z.boolean().optional(),\n});\n\n// Scatter/bubble chart config\nconst ScatterChartConfigSchema = z.object({\n type: z.literal('scatter'),\n x: AxisSchema,\n y: AxisSchema,\n size: ScatterSizeSchema.optional(),\n group: ScatterGroupSchema.optional(),\n regression: RegressionSchema.optional(),\n color: ColorSchema.optional(),\n legend: LegendSchema.optional(),\n interactions: InteractionsSchema.optional(),\n});\n\n// Heatmap chart config\nconst HeatmapChartConfigSchema = z.object({\n type: z.literal('heatmap'),\n x: AxisSchema,\n y: AxisSchema,\n value: z.object({\n field: z.string().min(1),\n label: z.string().optional(),\n }),\n color_range: z.object({\n min: z.string().optional(),\n max: z.string().optional(),\n }).optional(),\n show_values: z.boolean().optional(),\n});\n\n// Funnel chart config\nconst FunnelChartConfigSchema = z.object({\n type: z.literal('funnel'),\n stage: z.object({ field: z.string().min(1) }),\n value: z.object({ field: z.string().min(1) }),\n show_conversion: z.boolean().optional(),\n color: ColorSchema.optional(),\n});\n\n// Waterfall chart config\nconst WaterfallChartConfigSchema = z.object({\n type: z.literal('waterfall'),\n category: z.object({ field: z.string().min(1) }),\n value: z.object({ field: z.string().min(1) }),\n total_field: z.string().optional(),\n colors: z.object({\n increase: z.string().optional(),\n decrease: z.string().optional(),\n total: z.string().optional(),\n }).optional(),\n});\n\n// Sankey chart config\nconst SankeyChartConfigSchema = z.object({\n type: z.literal('sankey'),\n source: z.object({ field: z.string().min(1) }),\n target: z.object({ field: z.string().min(1) }),\n value: z.object({ field: z.string().min(1) }),\n levels: z.array(z.array(z.string())).optional(),\n orient: z.enum(['horizontal', 'vertical']).optional(),\n node_width: z.number().positive().optional(),\n node_gap: z.number().nonnegative().optional(),\n label_position: z.enum(['left', 'right', 'top', 'bottom', 'inside']).optional(),\n});\nexport type SankeyChartConfig = z.infer<typeof SankeyChartConfigSchema>;\n\n// Gauge chart config\nconst GaugeThresholdSchema = z.object({\n value: z.number(),\n color: z.string(),\n});\n\nconst GaugeChartConfigSchema = z.object({\n type: z.literal('gauge'),\n value: z.object({ field: z.string().min(1) }),\n min: z.number().optional(),\n max: z.number().optional(),\n thresholds: z.array(GaugeThresholdSchema).optional(),\n format: z.string().optional(),\n goal: KpiGoalSchema.optional(),\n});\n\nconst TableColumnSummarySchema = z.enum(['sum', 'avg', 'min', 'max', 'count']);\n\nconst PivotAggregateSchema = z.enum(['sum', 'avg', 'min', 'max', 'count']);\n\nconst PivotValueSchema = z.object({\n field: z.string().min(1),\n aggregate: PivotAggregateSchema.default('sum'),\n format: z.string().optional(),\n heatmap: z.boolean().optional(),\n});\n\nconst PivotHeatmapSchema = z.object({\n color: z.string().optional(),\n scope: z.enum(['column', 'global']).optional(),\n});\n\nconst PivotConfigSchema = z.object({\n rows: z.array(z.string().min(1)).min(1),\n columns: z.string().min(1),\n values: z.array(PivotValueSchema).min(1),\n subtotals: z.boolean().optional(),\n grandTotals: z.boolean().optional(),\n heatmap: PivotHeatmapSchema.optional(),\n});\n\nconst TableChartConfigSchema = z.object({\n type: z.literal('table'),\n columns: z.array(z.object({\n field: z.string().min(1),\n label: z.string().optional(),\n format: z.string().optional(),\n sticky: z.boolean().optional(),\n summary: TableColumnSummarySchema.optional(),\n overflow: z.enum(['ellipsis', 'wrap', 'hidden']).optional(),\n font: z.enum(['mono']).optional(),\n })).optional(),\n summary: z.object({\n label: z.string().optional(),\n }).optional(),\n sort: z.object({\n field: z.string().min(1),\n direction: z.enum(['asc', 'desc']).optional(),\n }).optional(),\n pagination: z.object({\n enabled: z.boolean().optional(),\n page_size: z.number().int().positive().optional(),\n mode: z.enum(['paginated', 'infinite_scroll']).optional(),\n server_side: z.boolean().optional(),\n }).optional(),\n max_rows: z.number().int().positive().optional(),\n export: z.object({\n enabled: z.boolean().optional(),\n max_rows: z.number().int().positive().optional(),\n }).optional(),\n pivot: PivotConfigSchema.optional(),\n});\n\n// Chart visualization config - standard, KPI, combo, scatter, heatmap, funnel, waterfall, gauge, or table\nconst ChartConfigSchema = z.union([\n ScatterChartConfigSchema,\n ComboChartConfigSchema,\n HeatmapChartConfigSchema,\n FunnelChartConfigSchema,\n WaterfallChartConfigSchema,\n GaugeChartConfigSchema,\n SankeyChartConfigSchema,\n TableChartConfigSchema,\n StandardChartConfigSchema,\n KpiConfigSchema,\n]);\n\n// Parameter types\nconst ParameterTypeSchema = z.enum([\n 'date_range',\n 'select',\n 'multi_select',\n 'dynamic_select',\n 'text',\n 'number',\n 'boolean',\n]);\n\n// Parameter option\nconst ParameterOptionSchema = z.union([\n z.string(),\n z.object({\n value: z.string(),\n label: z.string(),\n }),\n]);\n\n// Parameter source (for dynamic options)\nconst ParameterSourceSchema = z.object({\n model: z.string(),\n value_field: z.string(),\n label_field: z.string(),\n});\n\n// Parameter definition\nconst ParameterSchema = z.object({\n name: z.string().min(1),\n type: ParameterTypeSchema,\n label: z.string().optional(),\n description: z.string().optional(),\n default: z.union([z.string(), z.number(), z.array(z.string())]).optional(),\n options: z.array(ParameterOptionSchema).optional(),\n source: ParameterSourceSchema.optional(),\n});\n\n// Data source - either model reference or inline SQL\nconst SourceSchema = z.object({\n model: z.string().optional(),\n sql: z.string().optional(),\n}).refine(\n (data) => data.model !== undefined || data.sql !== undefined,\n { message: 'Source must specify either model or sql' }\n).refine(\n (data) => !(data.model !== undefined && data.sql !== undefined),\n { message: 'Source cannot specify both model and sql' }\n);\n\n// Refresh/cache configuration\nconst RefreshSchema = z.object({\n schedule: z.string().optional(), // cron expression\n timezone: z.string().optional(),\n cache_ttl: z.string().optional(), // e.g., \"1h\", \"30m\"\n});\n\n// Drill-down column config for data table display\nconst DrillDownColumnSchema = z.object({\n field: z.string().min(1),\n label: z.string().optional(),\n format: z.string().optional(),\n});\n\n// Drill-down configuration\nconst DrillDownConfigSchema = z.object({\n chart: z.string().optional(), // target chart name (source side)\n model: z.string().optional(), // model name for row-level detail data\n field: z.string().optional(), // field to pass as filter, defaults to x-axis field (backward compat)\n fields: z.union([z.string(), z.array(z.string())]).optional(), // dimension field(s) for filtering\n columns: z.array(DrillDownColumnSchema).optional(), // data table columns (target side)\n}).refine(data => data.chart || data.model || data.columns, {\n message: \"drillDown requires 'chart', 'model', or 'columns'\",\n});\n\n// Main chart schema\nexport const ChartSchema = z.object({\n // Identity\n name: z.string().min(1),\n title: z.string().min(1),\n description: z.string().optional(),\n\n // Metadata\n owner: z.string().optional(),\n tags: z.array(z.string()).optional(),\n created: z.string().optional(),\n updated: z.string().optional(),\n\n // Data\n source: SourceSchema,\n parameters: z.array(ParameterSchema).optional(),\n\n // Visualization\n chart: ChartConfigSchema,\n\n // Caching\n refresh: RefreshSchema.optional(),\n\n // Drill-down navigation\n drillDown: DrillDownConfigSchema.optional(),\n});\n\nexport type Chart = z.infer<typeof ChartSchema>;\nexport type ChartConfig = z.infer<typeof ChartConfigSchema>;\nexport type ChartType = z.infer<typeof ChartTypeSchema>;\nexport type Parameter = z.infer<typeof ParameterSchema>;\nexport type Axis = z.infer<typeof AxisSchema>;\nexport type SeriesConfig = z.infer<typeof SeriesConfigSchema>;\nexport type LongFormatSeries = z.infer<typeof LongFormatSeriesSchema>;\nexport type WideFormatSeries = z.infer<typeof WideFormatSeriesSchema>;\nexport type WideFormatColumn = z.infer<typeof WideFormatColumnSchema>;\nexport type ColorConfig = z.infer<typeof ColorSchema>;\nexport type ConditionalColor = z.infer<typeof ConditionalColorSchema>;\nexport type ColorCondition = z.infer<typeof ColorConditionSchema>;\nexport type GradientConfig = z.infer<typeof GradientSchema>;\nexport type LegendConfig = z.infer<typeof LegendSchema>;\nexport type ComboChartConfig = z.infer<typeof ComboChartConfigSchema>;\nexport type DualAxes = z.infer<typeof DualAxesSchema>;\nexport type ScatterChartConfig = z.infer<typeof ScatterChartConfigSchema>;\nexport type ScatterSize = z.infer<typeof ScatterSizeSchema>;\nexport type ScatterGroup = z.infer<typeof ScatterGroupSchema>;\nexport type RegressionConfig = z.infer<typeof RegressionSchema>;\nexport type DrillDownConfig = z.infer<typeof DrillDownConfigSchema>;\nexport type DrillDownColumn = z.infer<typeof DrillDownColumnSchema>;\nexport type HeatmapChartConfig = z.infer<typeof HeatmapChartConfigSchema>;\nexport type FunnelChartConfig = z.infer<typeof FunnelChartConfigSchema>;\nexport type WaterfallChartConfig = z.infer<typeof WaterfallChartConfigSchema>;\nexport type GaugeChartConfig = z.infer<typeof GaugeChartConfigSchema>;\nexport type TableChartConfig = z.infer<typeof TableChartConfigSchema>;\nexport type PivotConfig = z.infer<typeof PivotConfigSchema>;\nexport type PivotValueConfig = z.infer<typeof PivotValueSchema>;\nexport type PivotHeatmapConfig = z.infer<typeof PivotHeatmapSchema>;\nexport type GoalConfig = z.infer<typeof GoalSchema>;\nexport type FixedGoal = z.infer<typeof FixedGoalSchema>;\nexport type CumulativeGoal = z.infer<typeof CumulativeGoalSchema>;\nexport type ModelGoal = z.infer<typeof ModelGoalSchema>;\nexport type KpiGoal = z.infer<typeof KpiGoalSchema>;\nexport type GoalZone = z.infer<typeof GoalZoneSchema>;\n\nexport { ParameterSchema };\n","import { z } from 'zod';\nimport { SemanticConfigSchema } from './semantic.js';\n\n// Default settings\nconst DefaultsSchema = z.object({\n connection: z.string().optional(),\n theme: z.string().optional(),\n timezone: z.string().optional(),\n cache_ttl: z.string().optional(),\n base_url: z.string().url().optional(),\n week_start: z.enum(['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']).optional(),\n table: z.object({\n max_display_rows: z.number().int().positive().optional(),\n max_export_rows: z.number().int().positive().optional(),\n }).optional(),\n});\n\n// Git integration settings\nconst GitSchema = z.object({\n provider: z.enum(['github', 'gitlab', 'bitbucket']).optional(),\n repo: z.string().optional(),\n branch: z.string().optional(),\n preview_branches: z.boolean().optional(),\n});\n\n// SSO provider configuration\nconst SSOProviderSchema = z.object({\n client_id: z.string(),\n client_secret: z.string(),\n tenant: z.string().optional(),\n issuer: z.string().optional(),\n display_name: z.string().optional(),\n});\n\n// Authentication settings (built-in local auth)\nconst AuthSchema = z.object({\n enabled: z.boolean(),\n db_path: z.string().optional(),\n session_ttl: z.string().optional(),\n providers: z.object({\n google: SSOProviderSchema.optional(),\n microsoft: SSOProviderSchema.optional(),\n oidc: SSOProviderSchema.optional(),\n }).optional(),\n});\n\n// Feature flags\nconst FeaturesSchema = z.object({\n enable_sql_editor: z.boolean().optional(),\n enable_csv_export: z.boolean().optional(),\n enable_scheduling: z.boolean().optional(),\n chat: z.boolean().optional(),\n});\n\n// Sidebar link for external navigation\nconst SidebarLinkSchema = z.object({\n label: z.string(),\n url: z.string(),\n icon: z.string().optional(),\n});\n\n// Sidebar configuration\nconst SidebarConfigSchema = z.object({\n show: z.boolean().optional(),\n collapsed: z.boolean().optional(),\n links: z.array(SidebarLinkSchema).optional(),\n sections: z.object({\n dashboards: z.boolean().optional(),\n charts: z.boolean().optional(),\n }).optional(),\n});\n\n// Color configuration\nconst ColorsSchema = z.object({\n primary: z.string().optional(),\n background: z.string().optional(),\n surface: z.string().optional(),\n sidebar: z.string().optional(),\n text: z.string().optional(),\n});\n\n// Font configuration\nconst FontsSchema = z.object({\n heading: z.string().optional(),\n body: z.string().optional(),\n mono: z.string().optional(),\n size: z.enum(['compact', 'default', 'comfortable']).optional(),\n});\n\n// Logo can be a string path or light/dark object\nconst LogoSchema = z.union([\n z.string(),\n z.object({\n light: z.string(),\n dark: z.string(),\n }),\n]);\n\n// Theme configuration\nconst ThemeSchema = z.object({\n mode: z.enum(['light', 'dark', 'auto']).optional(),\n base: z.enum(['modern', 'executive', 'minimal']).optional(),\n logo: LogoSchema.optional(),\n favicon: z.string().optional(),\n title: z.string().optional(),\n colors: ColorsSchema.optional(),\n palette: z.array(z.string()).optional(),\n gradient: z.boolean().default(false),\n opacity: z.number().min(0).max(1).default(1.0),\n fonts: FontsSchema.optional(),\n sidebar: SidebarConfigSchema.optional(),\n customCss: z.string().optional(),\n});\n\n// Environment-specific overrides — same shape as ProjectSchema minus identity fields\nconst EnvironmentOverrideSchema = z.object({\n defaults: DefaultsSchema.optional(),\n git: GitSchema.optional(),\n auth: AuthSchema.optional(),\n features: FeaturesSchema.optional(),\n theme: ThemeSchema.optional(),\n semantic: SemanticConfigSchema.optional(),\n}).passthrough();\n\n/**\n * Deep-merge two plain objects. Objects merge recursively;\n * arrays and scalars in override replace the base value entirely.\n */\nexport function deepMerge<T extends Record<string, unknown>>(\n base: T,\n override: Record<string, unknown> | undefined,\n): T {\n if (!override) return { ...base };\n\n const result = { ...base } as Record<string, unknown>;\n for (const [key, value] of Object.entries(override)) {\n if (\n value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n typeof result[key] === 'object' &&\n result[key] !== null &&\n !Array.isArray(result[key])\n ) {\n result[key] = deepMerge(\n result[key] as Record<string, unknown>,\n value as Record<string, unknown>,\n );\n } else {\n result[key] = value;\n }\n }\n return result as T;\n}\n\n/**\n * Resolve a raw yamchart.yaml object for a given environment.\n * Extracts and merges the matching environments block, then strips\n * the environments key. Does NOT validate — caller runs Zod after\n * optionally merging yamchart.local.yaml on top.\n */\nexport function resolveProjectConfig(\n raw: Record<string, unknown>,\n env?: string,\n): Record<string, unknown> {\n const { environments, ...base } = raw;\n const envBlocks = environments as Record<string, Record<string, unknown>> | undefined;\n const envOverride = env ? envBlocks?.[env] : undefined;\n return deepMerge(base as Record<string, unknown>, envOverride);\n}\n\n// Catalog filter configuration\nconst CatalogIncludeSchema = z.object({\n schemas: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n});\n\nconst CatalogConfigSchema = z.object({\n include: CatalogIncludeSchema.optional(),\n});\n\nexport type CatalogConfig = z.infer<typeof CatalogConfigSchema>;\n\n// Main project schema\nexport const ProjectSchema = z.object({\n version: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n\n defaults: DefaultsSchema.optional(),\n\n environments: z.record(z.string(), EnvironmentOverrideSchema).optional(),\n\n git: GitSchema.optional(),\n auth: AuthSchema.optional(),\n features: FeaturesSchema.optional(),\n theme: ThemeSchema.optional(),\n semantic: SemanticConfigSchema,\n catalog: CatalogConfigSchema.optional(),\n});\n\nexport type Project = z.infer<typeof ProjectSchema>;\nexport type Auth = z.infer<typeof AuthSchema>;\nexport type Defaults = z.infer<typeof DefaultsSchema>;\nexport type EnvironmentOverride = z.infer<typeof EnvironmentOverrideSchema>;\nexport type Theme = z.infer<typeof ThemeSchema>;\nexport type SidebarConfig = z.infer<typeof SidebarConfigSchema>;\nexport type FontsConfig = z.infer<typeof FontsSchema>;\nexport type ColorsConfig = z.infer<typeof ColorsSchema>;\n","import { z } from 'zod';\n\n// --- Semantic Model ---\n\nexport const MeasureTypeSchema = z.enum(['sum', 'count', 'avg', 'min', 'max', 'count_distinct']);\n\nexport const DimensionTypeSchema = z.enum(['string', 'number', 'time', 'boolean']);\n\nexport const MeasureSchema = z.object({\n name: z.string(),\n type: MeasureTypeSchema,\n description: z.string().optional(),\n format: z.string().optional(),\n});\n\nexport const DimensionSchema = z.object({\n name: z.string(),\n type: DimensionTypeSchema,\n description: z.string().optional(),\n});\n\nexport const SemanticEntitySchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n source: z.enum(['catalog', 'model']),\n source_table: z.string(),\n measures: z.array(MeasureSchema),\n dimensions: z.array(DimensionSchema),\n parameters: z.array(z.object({\n name: z.string(),\n type: z.string(),\n default: z.union([z.string(), z.number()]).optional(),\n options: z.array(z.string()).optional(),\n })).optional(),\n});\n\nexport const RelationshipSchema = z.object({\n from: z.object({ entity: z.string(), field: z.string() }),\n to: z.object({ entity: z.string(), field: z.string() }),\n type: z.enum(['many_to_one', 'one_to_many', 'one_to_one']),\n});\n\nexport const SemanticModelSchema = z.object({\n entities: z.array(SemanticEntitySchema),\n relationships: z.array(RelationshipSchema),\n generated_at: z.string(),\n});\n\n// --- Structured Query ---\n\nexport const SemanticFilterOperatorSchema = z.enum([\n 'equals', 'not_equals', 'contains', 'gt', 'gte', 'lt', 'lte', 'in', 'not_in',\n]);\n\nexport const SemanticFilterSchema = z.object({\n dimension: z.string(),\n operator: SemanticFilterOperatorSchema,\n value: z.union([z.string(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number()]))]),\n});\n\nexport const SemanticQuerySchema = z.object({\n model: z.string(),\n measures: z.array(z.string()).min(1),\n dimensions: z.array(z.string()).optional().default([]),\n parameters: z.record(z.union([z.string(), z.number()])).optional(),\n filters: z.array(SemanticFilterSchema).optional().default([]),\n order_by: z.object({\n field: z.string(),\n direction: z.enum(['asc', 'desc']).default('asc'),\n }).optional(),\n limit: z.number().int().positive().max(10000).optional().default(1000),\n});\n\n// --- Semantic Config (for yamchart.yaml) ---\n\nexport const SemanticConfigSchema = z.object({\n include: z.object({\n paths: z.array(z.string()).default(['gold/', 'marts/', 'core/']),\n prefixes: z.array(z.string()).default(['dim_', 'fct_', 'fact_']),\n }).optional().default({\n paths: ['gold/', 'marts/', 'core/'],\n prefixes: ['dim_', 'fct_', 'fact_'],\n }),\n}).optional();\n\n// --- Inferred types ---\n\nexport type Measure = z.infer<typeof MeasureSchema>;\nexport type MeasureType = z.infer<typeof MeasureTypeSchema>;\nexport type Dimension = z.infer<typeof DimensionSchema>;\nexport type DimensionType = z.infer<typeof DimensionTypeSchema>;\nexport type SemanticEntity = z.infer<typeof SemanticEntitySchema>;\nexport type Relationship = z.infer<typeof RelationshipSchema>;\nexport type SemanticModel = z.infer<typeof SemanticModelSchema>;\nexport type SemanticFilter = z.infer<typeof SemanticFilterSchema>;\nexport type SemanticQuery = z.infer<typeof SemanticQuerySchema>;\nexport type SemanticConfig = z.infer<typeof SemanticConfigSchema>;\n","import { z } from 'zod';\n\n// Parameter type\nconst ParamTypeSchema = z.enum(['string', 'number', 'date', 'boolean', 'string[]', 'number[]']);\n\n// Model parameter\nconst ModelParamSchema = z.object({\n name: z.string().min(1),\n type: ParamTypeSchema,\n default: z.string().optional(),\n options: z.array(z.string()).optional(), // For enum-like params\n description: z.string().optional(),\n});\n\n// Return column definition\nconst ReturnColumnSchema = z.object({\n name: z.string().min(1),\n type: z.string(),\n description: z.string().optional(),\n});\n\n// Model metadata (extracted from SQL comments)\nexport const ModelMetadataSchema = z.object({\n name: z.string().min(1),\n description: z.string().optional(),\n owner: z.string().optional(),\n tags: z.array(z.string()).optional(),\n\n params: z.array(ModelParamSchema).optional(),\n returns: z.array(ReturnColumnSchema).optional(),\n tests: z.array(z.string()).optional(), // SQL assertions\n});\n\n// Full model (metadata + SQL)\nexport const ModelSchema = z.object({\n metadata: ModelMetadataSchema,\n sql: z.string().min(1),\n filePath: z.string().optional(),\n});\n\nexport type ModelMetadata = z.infer<typeof ModelMetadataSchema>;\nexport type ModelParam = z.infer<typeof ModelParamSchema>;\nexport type ReturnColumn = z.infer<typeof ReturnColumnSchema>;\nexport type Model = z.infer<typeof ModelSchema>;\n","import { z } from 'zod';\nimport { ParameterSchema } from './chart.js';\n\n// Widget types\nconst ChartWidgetSchema = z.object({\n type: z.literal('chart'),\n ref: z.string().min(1),\n cols: z.number().min(1).max(12),\n height: z.number().min(38).optional(),\n x: z.number().min(0).max(11).optional(),\n y: z.number().min(0).optional(),\n});\n\nconst TextWidgetSchema = z.object({\n type: z.literal('text'),\n content: z.string(),\n cols: z.number().min(1).max(12),\n height: z.number().min(38).optional(),\n x: z.number().min(0).max(11).optional(),\n y: z.number().min(0).optional(),\n});\n\nconst WidgetSchema = z.discriminatedUnion('type', [\n ChartWidgetSchema,\n TextWidgetSchema,\n]);\n\n// Row configuration\nconst RowSchema = z.object({\n height: z.number().min(38),\n widgets: z.array(WidgetSchema).min(1),\n});\n\n// Layout configuration\nconst LayoutSchema = z.object({\n gap: z.number().min(0).default(16),\n rows: z.array(RowSchema).min(1),\n});\n\n// Tab configuration\nconst TabSchema = z.object({\n name: z.string().min(1),\n label: z.string().min(1),\n filters: z.array(ParameterSchema).optional(),\n layout: LayoutSchema,\n});\n\n// Main dashboard schema\nexport const DashboardSchema = z.object({\n // Identity\n name: z.string().min(1),\n title: z.string().min(1),\n description: z.string().optional(),\n\n // Filters inherited by all widgets (shared across tabs)\n filters: z.array(ParameterSchema).optional(),\n\n // Layout definition (mutually exclusive with tabs)\n layout: LayoutSchema.optional(),\n\n // Tabbed layout\n tabs: z.array(TabSchema).min(1).optional(),\n}).superRefine((data, ctx) => {\n if (data.layout && data.tabs) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Dashboard must have either \"layout\" or \"tabs\", not both',\n path: ['tabs'],\n });\n }\n if (!data.layout && !data.tabs) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Dashboard must have either \"layout\" or \"tabs\"',\n path: [],\n });\n }\n});\n\nexport type Dashboard = z.infer<typeof DashboardSchema>;\nexport type DashboardTab = z.infer<typeof TabSchema>;\nexport type DashboardLayout = z.infer<typeof LayoutSchema>;\nexport type DashboardRow = z.infer<typeof RowSchema>;\nexport type DashboardWidget = z.infer<typeof WidgetSchema>;\nexport type ChartWidget = z.infer<typeof ChartWidgetSchema>;\nexport type TextWidget = z.infer<typeof TextWidgetSchema>;\n","import { z } from 'zod';\n\nconst SlackChannelSchema = z.object({\n webhook_url: z.string().min(1),\n channel: z.string().optional(),\n});\n\nconst ChannelSchema = z.object({\n slack: SlackChannelSchema,\n});\n\nconst ConditionOperatorSchema = z.enum(['lt', 'gt', 'lte', 'gte', 'eq']);\n\nconst ConditionSchema = z.object({\n field: z.string().min(1),\n operator: ConditionOperatorSchema,\n value: z.number(),\n});\n\nconst ReportScheduleSchema = z.object({\n name: z.string().min(1),\n type: z.literal('report'),\n schedule: z.string().min(1),\n timezone: z.string().optional(),\n channel: ChannelSchema,\n charts: z.array(z.string().min(1)).min(1),\n params: z.record(z.unknown()).optional(),\n message: z.string().optional(),\n notify_on_error: z.boolean().optional(),\n});\n\nconst AlertScheduleSchema = z.object({\n name: z.string().min(1),\n type: z.literal('alert'),\n schedule: z.string().min(1),\n timezone: z.string().optional(),\n channel: ChannelSchema,\n chart: z.string().min(1),\n params: z.record(z.unknown()).optional(),\n condition: ConditionSchema,\n cooldown: z.string().optional(),\n message: z.string().optional(),\n notify_on_error: z.boolean().optional(),\n});\n\nexport const ScheduleSchema = z.discriminatedUnion('type', [\n ReportScheduleSchema,\n AlertScheduleSchema,\n]);\n\nexport type Schedule = z.infer<typeof ScheduleSchema>;\nexport type ReportSchedule = z.infer<typeof ReportScheduleSchema>;\nexport type AlertSchedule = z.infer<typeof AlertScheduleSchema>;\nexport type Condition = z.infer<typeof ConditionSchema>;\nexport type ConditionOperator = z.infer<typeof ConditionOperatorSchema>;\n","import { z } from 'zod';\n\nexport const EventSchema = z.object({\n date: z.string(),\n endDate: z.string().optional(),\n label: z.string(),\n description: z.string().optional(),\n color: z.string().optional(),\n charts: z.array(z.string()).optional(),\n});\n\nexport const EventsFileSchema = z.object({\n events: z.array(EventSchema).default([]),\n});\n\nexport type ChartEvent = z.infer<typeof EventSchema>;\nexport type EventsFile = z.infer<typeof EventsFileSchema>;\n","import { z } from 'zod';\n\n/**\n * Zod schema for validating agent YAML files (agents/*.yaml).\n * system_prompt is treated as a plain string — Jinja rendering happens at load time in packages/chat.\n */\nexport const AgentDefinitionSchema = z.object({\n name: z.string(),\n title: z.string().optional(),\n description: z.string(),\n system_prompt: z.string(),\n tools: z.array(z.string()).default([]),\n model: z.string().optional(),\n models: z.array(z.string()).optional(),\n});\n\nexport type AgentDefinition = z.infer<typeof AgentDefinitionSchema>;\n","// Yamchart Schema - Zod schemas and TypeScript types\nexport const VERSION = '0.1.0';\n\nexport * from './connection.js';\nexport * from './chart.js';\nexport * from './project.js';\nexport * from './model.js';\nexport * from './dashboard.js';\nexport * from './schedule.js';\nexport * from './events.js';\nexport * from './semantic.js';\nexport { AgentDefinitionSchema, type AgentDefinition } from './agent.js';\n"],"mappings":"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","names":["z","z","z","z","AuthSchema","z","z","z","z","z","z"]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
createConnector,
|
|
11
11
|
resolveConnection
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-AMHCOB4D.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/source-resolver.ts
|
|
15
15
|
import { readFile as readFile2, access as access2 } from "fs/promises";
|
|
@@ -359,4 +359,4 @@ export {
|
|
|
359
359
|
resolveTablesSource,
|
|
360
360
|
resolveSearchSource
|
|
361
361
|
};
|
|
362
|
-
//# sourceMappingURL=chunk-
|
|
362
|
+
//# sourceMappingURL=chunk-FZFBBB7K.js.map
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
DashboardSchema,
|
|
5
5
|
ProjectSchema,
|
|
6
6
|
ScheduleSchema
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-E2QN2M7S.js";
|
|
8
8
|
import {
|
|
9
9
|
parseModelMetadata
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-CWAWATL4.js";
|
|
11
11
|
|
|
12
12
|
// src/commands/validate.ts
|
|
13
13
|
import { readFile, readdir, access } from "fs/promises";
|
|
@@ -277,7 +277,7 @@ function levenshtein(a, b) {
|
|
|
277
277
|
return matrix[b.length][a.length];
|
|
278
278
|
}
|
|
279
279
|
async function dryRunValidation(projectDir, config, connectionName, errors) {
|
|
280
|
-
const { DuckDBConnector } = await import("./dist-
|
|
280
|
+
const { DuckDBConnector } = await import("./dist-VNX77VV5.js");
|
|
281
281
|
let passed = 0;
|
|
282
282
|
let failed = 0;
|
|
283
283
|
const connName = connectionName || config.project?.defaults?.connection;
|
|
@@ -360,4 +360,4 @@ export {
|
|
|
360
360
|
findProjectRoot,
|
|
361
361
|
loadEnvFile
|
|
362
362
|
};
|
|
363
|
-
//# sourceMappingURL=chunk-
|
|
363
|
+
//# sourceMappingURL=chunk-G57J2WQM.js.map
|
|
@@ -176,7 +176,7 @@ var CHAT_TOOL_DEFINITIONS = [
|
|
|
176
176
|
name: { type: "string", description: "Chart name (alphanumeric, hyphens, underscores)" },
|
|
177
177
|
title: { type: "string", description: "Display title" },
|
|
178
178
|
model: { type: "string", description: "Source model name" },
|
|
179
|
-
chart_type: { type: "string", description: "Chart type (line, bar, pie, kpi,
|
|
179
|
+
chart_type: { type: "string", description: "Chart type (line, bar, area, pie, donut, scatter, kpi, combo, heatmap, funnel, waterfall, gauge, sankey, table)" },
|
|
180
180
|
config: { type: "object", description: "Chart-type-specific configuration (x, y, series, etc.)" }
|
|
181
181
|
},
|
|
182
182
|
required: ["name", "title", "model", "chart_type", "config"]
|
|
@@ -495,7 +495,7 @@ async function executeChatTool(toolName, args, ctx) {
|
|
|
495
495
|
} else {
|
|
496
496
|
rows.push({ height: 150, widgets: [{ type: "chart", ref: chartName, cols: 3 }] });
|
|
497
497
|
}
|
|
498
|
-
} else if (chartType === "line" || chartType === "area" || chartType === "combo") {
|
|
498
|
+
} else if (chartType === "line" || chartType === "area" || chartType === "combo" || chartType === "sankey") {
|
|
499
499
|
flushPair();
|
|
500
500
|
rows.push({ height: 300, widgets: [{ type: "chart", ref: chartName, cols: 12 }] });
|
|
501
501
|
} else {
|
|
@@ -537,7 +537,7 @@ async function executeChatTool(toolName, args, ctx) {
|
|
|
537
537
|
if (!apiKey) {
|
|
538
538
|
return "Error: ANTHROPIC_API_KEY not set.";
|
|
539
539
|
}
|
|
540
|
-
const { StreamingChatAgent: Agent } = await import("./agent-
|
|
540
|
+
const { StreamingChatAgent: Agent } = await import("./agent-KWKPAYT2.js");
|
|
541
541
|
const filteredConfig = {
|
|
542
542
|
...agentConfig,
|
|
543
543
|
tools: agentConfig.tools.filter((t) => t !== "call_agent")
|
|
@@ -674,4 +674,4 @@ export {
|
|
|
674
674
|
filterCatalogEntries,
|
|
675
675
|
StreamingChatAgent
|
|
676
676
|
};
|
|
677
|
-
//# sourceMappingURL=chunk-
|
|
677
|
+
//# sourceMappingURL=chunk-ZA6AOQVZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/chat/src/agent.ts","../../../packages/chat/src/tools.ts","../../../packages/chat/src/catalog-filter.ts"],"sourcesContent":["import Anthropic from '@anthropic-ai/sdk';\nimport { CHAT_TOOL_DEFINITIONS, executeChatTool, type ChatToolDefinition } from './tools.js';\nimport type { AgentConfig, ChatMessage, SSEEvent, ToolContext, ToolCallEvent } from './types.js';\n\nconst MAX_TOOL_ROUNDS = 10;\nconst DEFAULT_MODEL = 'claude-sonnet-4-5-20250929';\nconst MAX_TOKENS = 4096;\n\nexport class StreamingChatAgent {\n private client: Anthropic;\n private config: AgentConfig;\n private toolDefs: ChatToolDefinition[];\n\n constructor(config: AgentConfig, apiKey: string) {\n this.client = new Anthropic({ apiKey });\n this.config = config;\n this.toolDefs = this.buildToolDefs();\n }\n\n private buildToolDefs(): ChatToolDefinition[] {\n if (this.config.tools.length === 0) return [];\n return CHAT_TOOL_DEFINITIONS.filter(t => this.config.tools.includes(t.name));\n }\n\n getToolDefinitions(): ChatToolDefinition[] {\n return this.toolDefs;\n }\n\n async run(\n systemPrompt: string,\n messages: Array<{ role: 'user' | 'assistant'; content: string | Array<{ type: string; [key: string]: unknown }> }>,\n toolContext: ToolContext,\n emitEvent: (event: SSEEvent) => void,\n ): Promise<{ content: string; toolCalls: ToolCallEvent[] }> {\n const model = this.config.model ?? DEFAULT_MODEL;\n const allToolCalls: ToolCallEvent[] = [];\n let finalContent = '';\n\n const anthropicTools = this.toolDefs.map(t => ({\n name: t.name,\n description: t.description,\n input_schema: t.parameters as Anthropic.Tool['input_schema'],\n }));\n\n let currentMessages = [...messages];\n\n for (let round = 0; round < MAX_TOOL_ROUNDS; round++) {\n const stream = this.client.messages.stream({\n model,\n max_tokens: MAX_TOKENS,\n system: systemPrompt,\n messages: currentMessages as Anthropic.MessageParam[],\n tools: anthropicTools.length > 0 ? anthropicTools : undefined,\n });\n\n let roundText = '';\n const roundToolUses: Array<{ id: string; name: string; input: Record<string, unknown> }> = [];\n\n for await (const event of stream) {\n if (event.type === 'content_block_delta') {\n const delta = event.delta as { type: string; text?: string; partial_json?: string };\n if (delta.type === 'text_delta' && delta.text) {\n roundText += delta.text;\n emitEvent({ type: 'text_delta', data: { text: delta.text } });\n }\n } else if (event.type === 'content_block_start') {\n const block = event.content_block as { type: string; id?: string; name?: string };\n if (block.type === 'tool_use' && block.id && block.name) {\n roundToolUses.push({ id: block.id, name: block.name, input: {} });\n }\n }\n }\n\n const finalMessage = await stream.finalMessage();\n for (const block of finalMessage.content) {\n if (block.type === 'tool_use') {\n const existing = roundToolUses.find(t => t.id === block.id);\n if (existing) {\n existing.input = block.input as Record<string, unknown>;\n }\n }\n }\n\n finalContent += roundText;\n\n if (roundToolUses.length === 0 || finalMessage.stop_reason !== 'tool_use') {\n emitEvent({\n type: 'done',\n data: { usage: { inputTokens: finalMessage.usage.input_tokens, outputTokens: finalMessage.usage.output_tokens } },\n });\n break;\n }\n\n const toolResults: Array<{ type: 'tool_result'; tool_use_id: string; content: string }> = [];\n\n for (const toolUse of roundToolUses) {\n const toolCall: ToolCallEvent = { id: toolUse.id, name: toolUse.name, args: toolUse.input, status: 'running' };\n\n emitEvent({ type: 'tool_start', data: { id: toolUse.id, name: toolUse.name, args: toolUse.input } });\n\n const startTime = Date.now();\n try {\n const result = await executeChatTool(toolUse.name, toolUse.input, toolContext);\n toolCall.status = 'completed';\n toolCall.result = result;\n toolCall.durationMs = Date.now() - startTime;\n toolResults.push({ type: 'tool_result', tool_use_id: toolUse.id, content: result });\n } catch (err) {\n toolCall.status = 'error';\n toolCall.result = err instanceof Error ? err.message : String(err);\n toolCall.durationMs = Date.now() - startTime;\n toolResults.push({ type: 'tool_result', tool_use_id: toolUse.id, content: `Error: ${toolCall.result}` });\n }\n\n emitEvent({ type: 'tool_end', data: { id: toolUse.id, name: toolUse.name, result: toolCall.result ?? '', durationMs: toolCall.durationMs ?? 0 } });\n allToolCalls.push(toolCall);\n }\n\n currentMessages = [\n ...currentMessages,\n { role: 'assistant' as const, content: finalMessage.content as unknown as Array<{ type: string; [key: string]: unknown }> },\n { role: 'user' as const, content: toolResults as unknown as string },\n ];\n }\n\n return { content: finalContent, toolCalls: allToolCalls };\n }\n}\n","import yaml from 'yaml';\nimport type { ToolContext } from './types.js';\nimport { filterCatalogEntries } from './catalog-filter.js';\n\nexport interface ChatToolDefinition {\n name: string;\n description: string;\n parameters: {\n type: 'object';\n properties: Record<string, unknown>;\n required?: string[];\n };\n}\n\nexport const CHAT_TOOL_DEFINITIONS: ChatToolDefinition[] = [\n {\n name: 'query_model',\n description: 'Execute a chart or SQL model by name with optional parameters. Returns rows and columns. Accepts either a chart name (e.g. \"social-traffic\") or a model name (e.g. \"revenue_over_time\").',\n parameters: {\n type: 'object',\n properties: {\n model: { type: 'string', description: 'Chart name or model name (e.g. \"social-traffic\" or \"revenue_over_time\")' },\n params: { type: 'object', description: 'Optional parameters to pass to the model' },\n limit: { type: 'number', description: 'Max rows to return (default: 100)' },\n },\n required: ['model'],\n },\n },\n {\n name: 'get_chart_config',\n description: 'Get the full YAML configuration of a chart by name.',\n parameters: {\n type: 'object',\n properties: { name: { type: 'string', description: 'Chart name' } },\n required: ['name'],\n },\n },\n {\n name: 'get_dashboard_summary',\n description: 'Get a summary of a dashboard: all charts, their types, and cached KPI values.',\n parameters: {\n type: 'object',\n properties: { name: { type: 'string', description: 'Dashboard name' } },\n required: ['name'],\n },\n },\n {\n name: 'apply_filter',\n description: 'Apply a filter to the dashboard the user is viewing. Updates UI in real-time.',\n parameters: {\n type: 'object',\n properties: {\n name: { type: 'string', description: 'Filter/parameter name' },\n value: { description: 'Filter value' },\n },\n required: ['name', 'value'],\n },\n },\n {\n name: 'run_sql',\n description: 'Execute an ad-hoc SQL query against the connected database.',\n parameters: {\n type: 'object',\n properties: {\n sql: { type: 'string', description: 'SQL query to execute' },\n limit: { type: 'number', description: 'Max rows (default: 50)' },\n },\n required: ['sql'],\n },\n },\n {\n name: 'compare_periods',\n description: 'Run a model with two different date ranges and return both result sets for comparison.',\n parameters: {\n type: 'object',\n properties: {\n model: { type: 'string', description: 'Model name' },\n current: { type: 'object', properties: { start_date: { type: 'string' }, end_date: { type: 'string' } }, required: ['start_date', 'end_date'] },\n previous: { type: 'object', properties: { start_date: { type: 'string' }, end_date: { type: 'string' } }, required: ['start_date', 'end_date'] },\n params: { type: 'object', description: 'Additional parameters' },\n },\n required: ['model', 'current', 'previous'],\n },\n },\n {\n name: 'get_catalog_tables',\n description: 'Search the warehouse catalog for tables matching a keyword. Returns table names, columns, and sample rows.',\n parameters: {\n type: 'object',\n properties: {\n query: { type: 'string', description: 'Keyword to search for in table/column names' },\n limit: { type: 'number', description: 'Max tables to return (default: 5)' },\n },\n required: ['query'],\n },\n },\n {\n name: 'suggest_actions',\n description: 'Show the user clickable suggested follow-up actions. Use after answering a question when there are natural next steps.',\n parameters: {\n type: 'object',\n properties: {\n suggestions: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n label: { type: 'string', description: 'Button text' },\n message: { type: 'string', description: 'Message to send when clicked' },\n type: { type: 'string', enum: ['explore', 'save'], description: 'explore for follow-up questions, save for creating artifacts' },\n },\n required: ['label', 'message', 'type'],\n },\n },\n },\n required: ['suggestions'],\n },\n },\n {\n name: 'save_model',\n description: 'Create a new SQL model file in the project. Writes to models/<name>.sql with metadata headers.',\n parameters: {\n type: 'object',\n properties: {\n name: { type: 'string', description: 'Model name (alphanumeric + underscores)' },\n sql: { type: 'string', description: 'SQL query body' },\n description: { type: 'string', description: 'Model description' },\n params: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n type: { type: 'string' },\n default: { type: 'string' },\n },\n required: ['name', 'type'],\n },\n description: 'Model parameters',\n },\n },\n required: ['name', 'sql'],\n },\n },\n {\n name: 'save_chart',\n description: 'Create a new chart YAML file in the project. Writes to charts/<name>.yaml.',\n parameters: {\n type: 'object',\n properties: {\n name: { type: 'string', description: 'Chart name (alphanumeric, hyphens, underscores)' },\n title: { type: 'string', description: 'Display title' },\n model: { type: 'string', description: 'Source model name' },\n chart_type: { type: 'string', description: 'Chart type (line, bar, area, pie, donut, scatter, kpi, combo, heatmap, funnel, waterfall, gauge, sankey, table)' },\n config: { type: 'object', description: 'Chart-type-specific configuration (x, y, series, etc.)' },\n },\n required: ['name', 'title', 'model', 'chart_type', 'config'],\n },\n },\n {\n name: 'add_to_dashboard',\n description: 'Add a chart widget to an existing dashboard layout.',\n parameters: {\n type: 'object',\n properties: {\n dashboard: { type: 'string', description: 'Dashboard name' },\n chart: { type: 'string', description: 'Chart name to add' },\n cols: { type: 'number', description: 'Column span (1-12, default: 6)' },\n height: { type: 'number', description: 'Row height in pixels (default: 300)' },\n tab: { type: 'string', description: 'Tab name to add to (if dashboard uses tabs)' },\n },\n required: ['dashboard', 'chart'],\n },\n },\n {\n name: 'create_dashboard',\n description: 'Create a new dashboard YAML file with layout referencing saved charts.',\n parameters: {\n type: 'object',\n properties: {\n name: { type: 'string', description: 'Dashboard name (kebab-case, e.g. \"sales-overview\")' },\n title: { type: 'string', description: 'Display title' },\n description: { type: 'string', description: 'Optional dashboard description' },\n charts: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of chart names to include in the dashboard layout',\n },\n layout: {\n type: 'string',\n enum: ['auto'],\n description: 'Layout mode (only \"auto\" supported for now)',\n },\n },\n required: ['name', 'title', 'charts'],\n },\n },\n {\n name: 'call_agent',\n description: 'Delegate a question to a specialized agent. Use when the question is better handled by a domain-specific agent.',\n parameters: {\n type: 'object',\n properties: {\n agent: { type: 'string', description: 'Agent name to delegate to' },\n question: { type: 'string', description: 'Question to ask the agent' },\n },\n required: ['agent', 'question'],\n },\n },\n];\n\nexport async function executeChatTool(\n toolName: string,\n args: Record<string, unknown>,\n ctx: ToolContext,\n): Promise<string> {\n switch (toolName) {\n case 'query_model': {\n const modelName = args.model as string;\n // Validate name is a safe identifier (allow hyphens for chart names)\n if (!/^[a-zA-Z_][a-zA-Z0-9_.\\-]*$/.test(modelName)) {\n return `Error: Invalid model name \"${modelName}\"`;\n }\n const charts = ctx.configLoader.getCharts() as Array<{ name: string; source?: { model?: string }; [key: string]: unknown }>;\n // Try: chart name → model name → raw SQL\n const chart = charts.find(c => c.name === modelName)\n ?? charts.find(c => c.source?.model === modelName);\n if (!chart) {\n try {\n const result = await ctx.queryService.executeRawSql(\n `SELECT * FROM ${modelName} LIMIT ${(args.limit as number) ?? 100}`\n );\n return JSON.stringify({ columns: result.columns, rows: result.rows.slice(0, (args.limit as number) ?? 100) });\n } catch (err) {\n return `Error: Model \"${modelName}\" not found as a chart source and raw query failed: ${err instanceof Error ? err.message : String(err)}`;\n }\n }\n const params = (args.params as Record<string, unknown>) ?? {};\n const result = await ctx.queryService.executeChart(chart, params, ctx.userContext);\n const limit = (args.limit as number) ?? 100;\n return JSON.stringify({ columns: result.columns, rows: result.rows.slice(0, limit) });\n }\n\n case 'get_chart_config': {\n const chart = ctx.configLoader.getChartByName(args.name as string);\n if (!chart) return `Error: Chart \"${args.name}\" not found`;\n return JSON.stringify(chart);\n }\n\n case 'get_dashboard_summary': {\n const dashName = (args.name as string) ?? ctx.chatContext?.name;\n if (!dashName) return 'Error: No dashboard name provided and no dashboard context available';\n type DashLayout = { rows?: Array<{ widgets?: Array<{ type?: string; ref?: string }> }> };\n type DashType = { name: string; title?: string; layout?: DashLayout; tabs?: Array<{ name: string; label?: string; layout?: DashLayout }> };\n let dashboard = ctx.configLoader.getDashboardByName(dashName) as DashType | undefined;\n // Fallback: try matching by title (case-insensitive)\n if (!dashboard) {\n const all = ctx.configLoader.getDashboards() as DashType[];\n dashboard = all.find(d => d.title?.toLowerCase() === dashName.toLowerCase()\n || d.name.toLowerCase() === dashName.toLowerCase().replace(/\\s+/g, '-'));\n }\n if (!dashboard) return `Error: Dashboard \"${dashName}\" not found`;\n\n const chartRefs: string[] = [];\n const extractRefs = (layout: { rows?: Array<{ widgets?: Array<{ type?: string; ref?: string }> }> }) => {\n for (const row of layout.rows ?? []) {\n for (const widget of row.widgets ?? []) {\n if (widget.type === 'chart' && widget.ref) chartRefs.push(widget.ref);\n }\n }\n };\n if (dashboard.layout) extractRefs(dashboard.layout);\n if (dashboard.tabs) {\n for (const tab of dashboard.tabs) { if (tab.layout) extractRefs(tab.layout); }\n }\n\n const chartSummaries: string[] = [];\n for (const ref of chartRefs) {\n const chart = ctx.configLoader.getChartByName(ref) as { title?: string; chart?: { type?: string }; source?: { model?: string } } | undefined;\n if (!chart) continue;\n const model = chart.source?.model ? ` [model: ${chart.source.model}]` : '';\n chartSummaries.push(`- ${ref} (${chart.chart?.type ?? 'unknown'}): ${chart.title ?? ref}${model}`);\n }\n\n return [`Dashboard: ${dashboard.title ?? dashboard.name}`, `Charts (${chartRefs.length}):`, ...chartSummaries].join('\\n');\n }\n\n case 'apply_filter': {\n const filterName = args.name as string;\n const filterValue = args.value;\n ctx.emitEvent({ type: 'filter_update', data: { filters: { [filterName]: filterValue } } });\n return `Filter applied: ${filterName} = ${JSON.stringify(filterValue)}`;\n }\n\n case 'run_sql': {\n const sql = args.sql as string;\n // Block destructive SQL statements\n const destructivePattern = /^\\s*(INSERT|UPDATE|DELETE|DROP|ALTER|TRUNCATE|CREATE)\\b/i;\n if (destructivePattern.test(sql)) {\n return 'Error: Destructive SQL statements are not allowed through the chat interface.';\n }\n const limit = (args.limit as number) ?? 50;\n const limitedSql = sql.toLowerCase().includes('limit') ? sql : `${sql.replace(/;\\s*$/, '')} LIMIT ${limit}`;\n const result = await ctx.queryService.executeRawSql(limitedSql);\n return JSON.stringify({ columns: result.columns, rows: result.rows });\n }\n\n case 'compare_periods': {\n const modelName = args.model as string;\n const current = args.current as { start_date: string; end_date: string };\n const previous = args.previous as { start_date: string; end_date: string };\n const extraParams = (args.params as Record<string, unknown>) ?? {};\n\n const charts = ctx.configLoader.getCharts() as Array<{ name: string; source?: { model?: string }; [key: string]: unknown }>;\n const chart = charts.find(c => c.source?.model === modelName);\n if (!chart) return `Error: No chart found using model \"${modelName}\"`;\n\n const [currentResult, previousResult] = await Promise.all([\n ctx.queryService.executeChart(chart, { ...extraParams, start_date: current.start_date, end_date: current.end_date }, ctx.userContext),\n ctx.queryService.executeChart(chart, { ...extraParams, start_date: previous.start_date, end_date: previous.end_date }, ctx.userContext),\n ]);\n\n return JSON.stringify({\n current: { period: current, rows: currentResult.rows, columns: currentResult.columns },\n previous: { period: previous, rows: previousResult.rows, columns: previousResult.columns },\n });\n }\n\n case 'get_catalog_tables': {\n if (!ctx.catalogPath) {\n return 'Error: No catalog available. Run `yamchart sync-warehouse` to sync warehouse metadata.';\n }\n try {\n const fs = await import('fs/promises');\n const raw = await fs.readFile(ctx.catalogPath, 'utf-8');\n const catalog = JSON.parse(raw) as { models?: Array<{ name: string; table?: string; tags?: string[]; columns?: Array<{ name: string; [key: string]: unknown }>; sampleRows?: unknown[]; [key: string]: unknown }> };\n const allEntries = catalog.models ?? [];\n const entries = ctx.catalogFilter\n ? filterCatalogEntries(allEntries, ctx.catalogFilter)\n : allEntries;\n\n if (entries.length === 0) {\n if (allEntries.length > 0 && ctx.catalogFilter) {\n return 'No tables match your catalog filter configuration. Check catalog.include in yamchart.yaml to adjust which schemas/tags are included.';\n }\n return 'No catalog data available. Run `yamchart sync-warehouse` to populate the catalog.';\n }\n\n const query = (args.query as string).toLowerCase();\n const limit = (args.limit as number) ?? 5;\n const matches = entries.filter(t =>\n t.name.toLowerCase().includes(query)\n || (t.columns ?? []).some(c => c.name.toLowerCase().includes(query)),\n );\n return JSON.stringify(matches.slice(0, limit));\n } catch (err) {\n return `Error reading catalog: ${err instanceof Error ? err.message : String(err)}`;\n }\n }\n\n case 'suggest_actions': {\n const suggestions = args.suggestions as Array<{ label: string; message: string; type: string }>;\n ctx.emitEvent({ type: 'suggestions', data: { suggestions: suggestions as Array<{ label: string; message: string; type: 'explore' | 'save' }> } });\n return `Suggested ${suggestions.length} follow-up actions.`;\n }\n\n case 'save_model': {\n const name = args.name as string;\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name)) {\n return `Error: Invalid model name \"${name}\". Use only letters, numbers, and underscores.`;\n }\n const sql = args.sql as string;\n const description = args.description as string | undefined;\n const params = args.params as Array<{ name: string; type: string; default?: string }> | undefined;\n\n const lines: string[] = [];\n lines.push(`-- @name: ${name}`);\n if (description) lines.push(`-- @description: ${description}`);\n if (params) {\n for (const p of params) {\n const def = p.default ? ` = ${p.default}` : '';\n lines.push(`-- @param ${p.name}: ${p.type}${def}`);\n }\n }\n lines.push('');\n lines.push(sql);\n\n const fs = await import('fs/promises');\n const path = await import('path');\n const modelsDir = path.join(ctx.projectDir, 'models');\n await fs.mkdir(modelsDir, { recursive: true });\n const filePath = path.join(modelsDir, `${name}.sql`);\n await fs.writeFile(filePath, lines.join('\\n'), 'utf-8');\n await ctx.configLoader.load();\n return `Model \"${name}\" saved to models/${name}.sql`;\n }\n\n case 'save_chart': {\n const name = args.name as string;\n if (!/^[a-zA-Z_][a-zA-Z0-9_\\-]*$/.test(name)) {\n return `Error: Invalid chart name \"${name}\". Use only letters, numbers, hyphens, and underscores.`;\n }\n const title = args.title as string;\n const model = args.model as string;\n const chartType = args.chart_type as string;\n const config = (args.config as Record<string, unknown>) ?? {};\n\n const chartObj = {\n name,\n title,\n source: { model },\n chart: { type: chartType, ...config },\n };\n\n const fs = await import('fs/promises');\n const path = await import('path');\n const chartsDir = path.join(ctx.projectDir, 'charts');\n await fs.mkdir(chartsDir, { recursive: true });\n const filePath = path.join(chartsDir, `${name}.yaml`);\n await fs.writeFile(filePath, yaml.stringify(chartObj), 'utf-8');\n await ctx.configLoader.load();\n ctx.emitEvent({ type: 'chart_saved', data: { name } });\n return `Chart \"${name}\" saved to charts/${name}.yaml`;\n }\n\n case 'add_to_dashboard': {\n const dashboardName = args.dashboard as string;\n const chartName = args.chart as string;\n const cols = (args.cols as number) ?? 6;\n const height = (args.height as number) ?? 300;\n const tabName = args.tab as string | undefined;\n\n const fs = await import('fs/promises');\n const path = await import('path');\n const dashDir = path.join(ctx.projectDir, 'dashboards');\n\n // Find the dashboard file\n let filePath: string | undefined;\n try {\n const files = await fs.readdir(dashDir);\n const match = files.find(f => {\n const base = f.replace(/\\.ya?ml$/, '');\n return base === dashboardName;\n });\n if (match) filePath = path.join(dashDir, match);\n } catch {\n return `Error: Dashboard directory not found at ${dashDir}`;\n }\n\n if (!filePath) return `Error: Dashboard file \"${dashboardName}\" not found in dashboards/`;\n\n const raw = await fs.readFile(filePath, 'utf-8');\n const doc = yaml.parse(raw) as {\n layout?: { rows?: Array<{ height?: number; widgets?: Array<{ type: string; ref?: string; cols?: number }> }> };\n tabs?: Array<{ name: string; layout?: { rows?: Array<{ height?: number; widgets?: Array<{ type: string; ref?: string; cols?: number }> }> } }>;\n [key: string]: unknown;\n };\n\n const newRow = { height, widgets: [{ type: 'chart' as const, ref: chartName, cols }] };\n\n if (tabName && doc.tabs) {\n const tab = doc.tabs.find(t => t.name === tabName);\n if (!tab) return `Error: Tab \"${tabName}\" not found in dashboard \"${dashboardName}\"`;\n if (!tab.layout) tab.layout = { rows: [] };\n if (!tab.layout.rows) tab.layout.rows = [];\n tab.layout.rows.push(newRow);\n } else {\n if (!doc.layout) doc.layout = { rows: [] };\n if (!doc.layout.rows) doc.layout.rows = [];\n doc.layout.rows.push(newRow);\n }\n\n await fs.writeFile(filePath, yaml.stringify(doc), 'utf-8');\n await ctx.configLoader.load();\n return `Added chart \"${chartName}\" to dashboard \"${dashboardName}\"${tabName ? ` (tab: ${tabName})` : ''}`;\n }\n\n case 'create_dashboard': {\n const name = args.name as string;\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n return `Error: Invalid dashboard name \"${name}\". Use kebab-case (e.g. \"sales-overview\").`;\n }\n const title = args.title as string;\n const description = args.description as string | undefined;\n const chartNames = args.charts as string[];\n\n // Validate all chart names exist\n for (const chartName of chartNames) {\n const chart = ctx.configLoader.getChartByName(chartName);\n if (!chart) return `Error: Chart \"${chartName}\" not found. Save the chart first using save_chart.`;\n }\n\n // Build auto-layout: KPIs get cols 3, line/area/combo get cols 12, others get cols 6 in pairs\n const rows: Array<{ height: number; widgets: Array<{ type: string; ref: string; cols: number }> }> = [];\n let currentPairWidgets: Array<{ type: string; ref: string; cols: number }> = [];\n\n const flushPair = () => {\n if (currentPairWidgets.length > 0) {\n rows.push({ height: 300, widgets: currentPairWidgets });\n currentPairWidgets = [];\n }\n };\n\n for (const chartName of chartNames) {\n const chart = ctx.configLoader.getChartByName(chartName) as { chart?: { type?: string } } | undefined;\n const chartType = chart?.chart?.type ?? '';\n\n if (chartType === 'kpi') {\n flushPair();\n // Group KPIs into a single row of cols 3 each\n const lastRow = rows[rows.length - 1];\n if (lastRow && lastRow.widgets.every(w => w.cols === 3)) {\n lastRow.widgets.push({ type: 'chart', ref: chartName, cols: 3 });\n } else {\n rows.push({ height: 150, widgets: [{ type: 'chart', ref: chartName, cols: 3 }] });\n }\n } else if (chartType === 'line' || chartType === 'area' || chartType === 'combo' || chartType === 'sankey') {\n flushPair();\n rows.push({ height: 300, widgets: [{ type: 'chart', ref: chartName, cols: 12 }] });\n } else {\n // Pair up: cols 6 each, two per row\n currentPairWidgets.push({ type: 'chart', ref: chartName, cols: 6 });\n if (currentPairWidgets.length === 2) {\n rows.push({ height: 300, widgets: currentPairWidgets });\n currentPairWidgets = [];\n }\n }\n }\n flushPair();\n\n const dashObj: Record<string, unknown> = { name, title };\n if (description) dashObj.description = description;\n dashObj.layout = { rows };\n\n const fs = await import('fs/promises');\n const path = await import('path');\n const yamlLib = await import('yaml');\n const dashDir = path.join(ctx.projectDir, 'dashboards');\n await fs.mkdir(dashDir, { recursive: true });\n const filePath = path.join(dashDir, `${name}.yaml`);\n await fs.writeFile(filePath, yamlLib.stringify(dashObj), 'utf-8');\n await ctx.configLoader.load();\n ctx.emitEvent({ type: 'navigate', data: { target: 'dashboard', name, edit: true } });\n return `Dashboard \"${name}\" created at dashboards/${name}.yaml with ${chartNames.length} chart(s).`;\n }\n\n case 'call_agent': {\n const agentName = args.agent as string;\n const question = args.question as string;\n\n if (!ctx.agentRegistry) {\n return 'Error: Agent registry not available.';\n }\n\n const agentConfig = ctx.agentRegistry.getAgent(agentName);\n if (!agentConfig) {\n const available = ctx.agentRegistry.listAgents().map(a => a.name).join(', ');\n return `Error: Agent \"${agentName}\" not found. Available agents: ${available}`;\n }\n\n const apiKey = process.env.ANTHROPIC_API_KEY;\n if (!apiKey) {\n return 'Error: ANTHROPIC_API_KEY not set.';\n }\n\n const { StreamingChatAgent: Agent } = await import('./agent.js');\n\n // Depth-1 recursion prevention: remove call_agent from sub-agent tools\n const filteredConfig = {\n ...agentConfig,\n tools: agentConfig.tools.filter(t => t !== 'call_agent'),\n };\n\n const subAgent = new Agent(filteredConfig, apiKey);\n\n // Wrap emitEvent to add parentToolId\n const parentToolId = `call_agent_${agentName}_${Date.now()}`;\n const subEmitEvent = (event: Parameters<typeof ctx.emitEvent>[0]) => {\n if (event.type === 'tool_start') {\n ctx.emitEvent({ type: 'tool_start', data: { ...event.data, parentToolId } });\n } else if (event.type === 'tool_end') {\n ctx.emitEvent({ type: 'tool_end', data: { ...event.data, parentToolId } });\n } else if (event.type !== 'done') {\n ctx.emitEvent(event);\n }\n };\n\n try {\n const result = await Promise.race([\n subAgent.run(\n agentConfig.systemPrompt,\n [{ role: 'user' as const, content: question }],\n ctx,\n subEmitEvent,\n ),\n new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error('Sub-agent timed out after 30s')), 30_000),\n ),\n ]);\n return result.content || 'Agent completed with no text response.';\n } catch (err) {\n return `Error from agent \"${agentName}\": ${err instanceof Error ? err.message : String(err)}`;\n }\n }\n\n default:\n return `Unknown tool: ${toolName}`;\n }\n}\n","export interface CatalogFilterConfig {\n schemas?: string[];\n tags?: string[];\n}\n\ninterface CatalogEntry {\n name: string;\n table?: string;\n tags?: string[];\n [key: string]: unknown;\n}\n\nfunction extractSchema(table: string): string | null {\n const parts = table.split('.');\n if (parts.length >= 3) return parts[parts.length - 2] ?? null; // DB.SCHEMA.TABLE → SCHEMA\n if (parts.length === 2) return parts[0] ?? null; // SCHEMA.TABLE → SCHEMA\n return null;\n}\n\nexport function filterCatalogEntries<T extends CatalogEntry>(\n entries: T[],\n filterConfig?: CatalogFilterConfig,\n): T[] {\n if (!filterConfig) return [];\n\n const schemas = filterConfig.schemas ?? [];\n const tags = filterConfig.tags ?? [];\n\n if (schemas.length === 0 && tags.length === 0) return [];\n\n const schemasLower = schemas.map(s => s.toLowerCase());\n const tagsLower = tags.map(t => t.toLowerCase());\n\n return entries.filter(entry => {\n // Schema match\n if (schemasLower.length > 0 && entry.table) {\n const schema = extractSchema(entry.table);\n if (schema && schemasLower.includes(schema.toLowerCase())) return true;\n }\n\n // Tag match\n if (tagsLower.length > 0 && entry.tags?.length) {\n if (entry.tags.some(t => tagsLower.includes(t.toLowerCase()))) return true;\n }\n\n return false;\n });\n}\n"],"mappings":"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","names":["result"]}
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
formatTable,
|
|
5
5
|
loadProjectConfig,
|
|
6
6
|
resolveConnection
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-AMHCOB4D.js";
|
|
8
|
+
import "./chunk-E2QN2M7S.js";
|
|
9
|
+
import "./chunk-CWAWATL4.js";
|
|
10
10
|
import "./chunk-UND73EOB.js";
|
|
11
11
|
import "./chunk-DGUM43GV.js";
|
|
12
12
|
export {
|
|
@@ -16,4 +16,4 @@ export {
|
|
|
16
16
|
loadProjectConfig,
|
|
17
17
|
resolveConnection
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=connection-utils-
|
|
19
|
+
//# sourceMappingURL=connection-utils-CTPN7PV3.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveDescribeSource
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FZFBBB7K.js";
|
|
4
4
|
import "./chunk-VJC24RKT.js";
|
|
5
5
|
import "./chunk-EHM6AMMA.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-AMHCOB4D.js";
|
|
7
|
+
import "./chunk-E2QN2M7S.js";
|
|
8
|
+
import "./chunk-CWAWATL4.js";
|
|
9
9
|
import "./chunk-UND73EOB.js";
|
|
10
10
|
import "./chunk-DGUM43GV.js";
|
|
11
11
|
|
|
@@ -26,4 +26,4 @@ async function describeTable(projectDir, table, options) {
|
|
|
26
26
|
export {
|
|
27
27
|
describeTable
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=describe-
|
|
29
|
+
//# sourceMappingURL=describe-4NME6RCB.js.map
|