@dbx-tools/appkit-mastra 0.6.14 → 0.6.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -210,11 +210,39 @@ Every `agents.createAgent()` gets a default Mastra `Workspace` from
210
210
  current OBO user's `WorkspaceClient`, so Mastra can discover Assistant-style
211
211
  `SKILL.md` files at request time.
212
212
 
213
+ Locations are a named map (`skillFolders`), so an app refers to a tree by name
214
+ rather than repeating a path. Each name mounts at `/<name>` in the workspace
215
+ namespace (override with `mount`) and carries its own policy: `readable`
216
+ (scanned for `SKILL.md`, default `true`) and `writable` (default `false`).
217
+ `DEFAULT_SKILL_FOLDERS` supplies these:
218
+
219
+ | Name | Location | Readable | Writable |
220
+ | -------------------- | ---------------------------------- | -------- | -------- |
221
+ | `workspace-team` | `/Workspace/.assistant/skills` | yes | no |
222
+ | `workspace-team-app` | `/Users/<email>/.assistant/skills` | yes | yes |
223
+
224
+ A consuming library merges over that map: a matching name overrides the
225
+ default, `false` disables it, and any other name adds a location. A folder
226
+ points at a Databricks `path` (a literal, or a function resolving one per
227
+ request) or supplies a ready `filesystem` for anything the OBO client cannot
228
+ reach.
229
+
213
230
  ```ts
214
231
  const agent = agents.createAgent({
215
232
  instructions: "Use mounted workspace skills when relevant.",
216
233
  workspace: workspaces.createWorkspace({
217
- assistantSkills: true,
234
+ skillFolders: {
235
+ // Point an existing name somewhere else.
236
+ "workspace-team": { path: "/Workspace/Shared/team-skills" },
237
+ // Drop a default entirely.
238
+ "workspace-team-app": false,
239
+ // Add an app-owned tree the agent may write back to.
240
+ runbooks: { path: "/Workspace/Shared/runbooks/skills", writable: true },
241
+ // Mount for file tools without adding it to skill discovery.
242
+ templates: { path: "/Workspace/Shared/templates", readable: false },
243
+ // Any Mastra filesystem works, including per-request ones.
244
+ volume: { filesystem: ({ requestContext }) => volumeFor(requestContext) },
245
+ },
218
246
  mounts: [
219
247
  async () => ({
220
248
  mounts: { "/reference": myFilesystem },
@@ -225,9 +253,12 @@ const agent = agents.createAgent({
225
253
  });
226
254
  ```
227
255
 
228
- Production workspace mounts require a forwarded token with `workspace`,
229
- `workspace.workspace`, or `all-apis` scope. Development mode skips that gate for
230
- local iteration.
256
+ A folder whose location resolves to `undefined` is skipped for that request,
257
+ which is how `workspace-team-app` drops out when no user email is stamped.
258
+ `assistantSkills: false` starts from an empty map, leaving only the
259
+ `skillFolders` given. Production workspace mounts require a forwarded token
260
+ with `workspace`, `workspace.workspace`, or `all-apis` scope. Development mode
261
+ skips that gate for local iteration.
231
262
 
232
263
  ## Remote Skills
233
264
 
@@ -409,6 +440,41 @@ Agents can return `[chart:<id>]` and `[data:<statement_id>]` markers in prose.
409
440
  The embed route resolves them later, which avoids forcing the language model to
410
441
  inline large tables or wait for chart planning before continuing its answer.
411
442
 
443
+ ### Chart Types And Hand-Written Charts
444
+
445
+ The planner does not emit a raw Echarts option. It fills a small plan (chart
446
+ type, categories, series) that `planToEchartsOption` expands, so tooltip,
447
+ legend, grid, and brand defaults stay consistent and a fast model has few ways
448
+ to go wrong. The vocabulary is `bar`, `horizontalBar`, `line`, `area`, `combo`,
449
+ `waterfall`, `scatter`, `heatmap`, `radar`, `pie`, `funnel`, `treemap`.
450
+
451
+ Some of those are Echarts series types and some are not. `heatmap`, `radar`,
452
+ `pie`, `funnel`, `treemap`, and `scatter` map to native series. `area` compiles
453
+ to a line with an `areaStyle`, `horizontalBar` to a bar with swapped axes,
454
+ `combo` to per-series types, and `waterfall` to the stacked transparent-helper
455
+ bars Echarts documents, since it has no waterfall series.
456
+
457
+ For a chart the plan cannot express at all - sankey, boxplot, candlestick,
458
+ sunburst, gauge, network graph, calendar, parallel coordinates, a `custom`
459
+ series - the planner picks `custom` and hand-writes the entire Echarts option
460
+ into the plan's `option` field. That option is passed through as-is: no axes,
461
+ tooltip, or legend are grafted on, and only a centered title is filled in when
462
+ the object omits one. A configured `brand` theme still applies underneath, so
463
+ anything the option sets wins over it.
464
+
465
+ `option` is a JSON object encoded in a **string**, not a nested object, and
466
+ that is deliberate. The plan is the planner's provider-enforced structured
467
+ output, so a free-form object would become an unconstrained
468
+ `additionalProperties` schema, which strict OpenAI and Gemini serving endpoints
469
+ reject outright. That would break every chart rather than one. A string is
470
+ universally representable, and a malformed one fails only its own chart. Values
471
+ must be plain JSON: a string-valued Echarts formatter is treated as a template,
472
+ and nothing in the option is ever evaluated as code.
473
+
474
+ Prefer a listed type whenever one fits. `custom` trades the shared defaults for
475
+ reach, so it is the answer for an unsupported chart shape, not a way to restyle
476
+ a supported one.
477
+
412
478
  ### Brand The Charts
413
479
 
414
480
  Pass a `brand` to the plugin to theme every generated chart with your brand's
@@ -424,9 +490,17 @@ plugin.mastra({ agents, storage: true, brand: brand.defaultBrandContext });
424
490
  libraries, so charts, email, and the chat UI theme from one source. The chart
425
491
  planner derives an Echarts theme from it: a series color cycle seeded from
426
492
  `colors.primary` / `colors.accent` (plus a colorblind-friendly spread so
427
- many-series charts stay legible) and a base text style from `typography.sans` /
428
- `colors.foreground`. Charts render to canvas, so this is applied server-side on
429
- the Echarts option rather than through the browser `[data-brand]` CSS bridge.
493
+ many-series charts stay legible) and the `typography.sans` font stack. Charts
494
+ render to canvas, so this is applied server-side on the Echarts option rather
495
+ than through the browser `[data-brand]` CSS bridge.
496
+
497
+ What the planner does **not** set is any text color. A spec is planned here and
498
+ read later in a browser whose light/dark theme the server cannot know, so the
499
+ brand's single (light) foreground would produce near-black labels on a dark chat
500
+ surface. The renderer resolves tick labels, axis names, grid lines, and the
501
+ tooltip from AppKit's live CSS tokens instead - see
502
+ [`@dbx-tools/ui-mastra`](../../ui/mastra)'s chart theming. Brand identity is the
503
+ same in either mode; chrome is not.
430
504
 
431
505
  ## Model Selection
432
506
 
@@ -484,7 +558,10 @@ operations aligned around the same conversation id.
484
558
  `observability.buildObservability()` wires Mastra tracing when OTLP export is
485
559
  configured. `mlflow.resolveFeedbackEnabled()` turns MLflow feedback on when both
486
560
  trace export and an MLflow experiment are configured, unless the plugin config
487
- forces a value.
561
+ forces a value. The plugin also stamps each chat turn's request/response onto
562
+ the HTTP root span via `traceIo.attachChatTurnTraceIo()` so MLflow's UC
563
+ `*_trace_unified` view can show them (Mastra's own `mastra.agent_run.*`
564
+ attributes sit on a child span that view never reads).
488
565
 
489
566
  ```ts
490
567
  plugin.mastra({
@@ -497,6 +574,65 @@ plugin.mastra({
497
574
  The response header name and request/response schemas live in
498
575
  [`@dbx-tools/shared-mastra`](../../shared/mastra).
499
576
 
577
+ ### Databricks Apps -> Unity Catalog (the supported path)
578
+
579
+ Managed MLflow has **no** OTLP ingest endpoint. Do not set
580
+ `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` to the workspace host - probes of
581
+ `/api/2.0/mlflow/v1/traces`, `/otlp/v1/traces`, and similar paths 404. The
582
+ mechanism that works is Databricks Apps telemetry: declare
583
+ `telemetry_export_destinations` on the app resource so the platform injects a
584
+ local OTLP sidecar (`OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4314`,
585
+ `OTEL_EXPORTER_OTLP_PROTOCOL=grpc`) and persists spans to Unity Catalog. Point
586
+ the three tables at the MLflow experiment's existing UC trace location (do not
587
+ invent a parallel table set):
588
+
589
+ ```yaml
590
+ variables:
591
+ telemetry_schema:
592
+ default: my_catalog.my-traces-schema
593
+ mlflow_experiment_id:
594
+ default: "123456789"
595
+
596
+ resources:
597
+ apps:
598
+ my_app:
599
+ # ...
600
+ config:
601
+ env:
602
+ - name: MLFLOW_EXPERIMENT_ID
603
+ value: ${var.mlflow_experiment_id}
604
+ # Apps ingress stamps traceparent on every request. Without this,
605
+ # every HTTP span is a child of a platform span that never lands in
606
+ # the UC tables, so `*_trace_unified` (root = empty parent_span_id)
607
+ # discards every chat turn.
608
+ - name: OTEL_PROPAGATORS
609
+ value: none
610
+ telemetry_export_destinations:
611
+ - unity_catalog:
612
+ traces_table: ${var.telemetry_schema}.${bundle.target}_otel_spans
613
+ logs_table: ${var.telemetry_schema}.${bundle.target}_otel_logs
614
+ metrics_table: ${var.telemetry_schema}.${bundle.target}_otel_metrics
615
+ ```
616
+
617
+ All three table fields are required. The app service principal needs
618
+ `USE_CATALOG` / `USE_SCHEMA` / `SELECT` / `MODIFY` on that catalog.schema (the
619
+ Apps API also tries to grant access and fails with 403 if you lack `MANAGE` on
620
+ the catalog). Reject `mlflow-tracing` TypeScript SDK for this path: it claims
621
+ the global provider AppKit already owns and writes to a different store.
622
+
623
+ Success in the boot log looks like:
624
+
625
+ ```
626
+ [observability] Mastra observability wired through OTel bridge {
627
+ otelBase: 'http://localhost:4314', feedback: true, observability: 'mlflow'
628
+ }
629
+ ```
630
+
631
+ Verify with SQL against the UC `*_trace_unified` view (the REST
632
+ `traces/search` API only covers the experiment store, not UC-backed traces).
633
+ Schema names with hyphens need backticks; `attributes` is a `VARIANT`, so use
634
+ `attributes:['key']::string` rather than `map_keys()`.
635
+
500
636
  ## MCP Exposure
501
637
 
502
638
  `mcp.buildMcpServer()` exposes registered agents as MCP tools by default. The
@@ -580,13 +716,14 @@ Every value can also be set through plugin config, which wins. These are the
580
716
  fallbacks, so a deployment that already follows AppKit's Databricks env naming
581
717
  needs no extra wiring.
582
718
 
583
- | Variable | Effect |
584
- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
585
- | `DATABRICKS_SERVING_ENDPOINT_NAME` | Model used when neither the agent nor `defaultModel` names one. |
586
- | `DATABRICKS_GENIE_SPACE_ID` | Genie space registered under the `default` alias. |
587
- | `MASTRA_GENIE_IDENTITY` | `user` (default, OBO) or `service-principal` for the agents' Databricks calls. |
588
- | `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Presence of either turns Mastra tracing on when `observability` is unset. |
589
- | `MLFLOW_EXPERIMENT_ID`, `MLFLOW_EXPERIMENT_NAME` | With an OTLP endpoint, turns MLflow feedback on when `feedback` is unset. |
719
+ | Variable | Effect |
720
+ | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
721
+ | `DATABRICKS_SERVING_ENDPOINT_NAME` | Model used when neither the agent nor `defaultModel` names one. |
722
+ | `DATABRICKS_GENIE_SPACE_ID` | Genie space registered under the `default` alias. |
723
+ | `MASTRA_GENIE_IDENTITY` | `user` (default, OBO) or `service-principal` for the agents' Databricks calls. |
724
+ | `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Presence of either turns Mastra tracing on when `observability` is unset. On Apps, the telemetry sidecar injects these. |
725
+ | `OTEL_PROPAGATORS` | Set to `none` on Databricks Apps so ingress `traceparent` does not hide every chat trace from UC `*_trace_unified`. |
726
+ | `MLFLOW_EXPERIMENT_ID`, `MLFLOW_EXPERIMENT_NAME` | With an OTLP endpoint, turns MLflow feedback on when `feedback` is unset. |
590
727
 
591
728
  ## Configuration Reference
592
729
 
@@ -653,10 +790,12 @@ client that talks to these routes.
653
790
  - `defaults` - cache / retry / timeout settings for the plugin's own outbound
654
791
  calls, one constant per call site with its reasoning.
655
792
  - `memory` / `storageSchema` - Lakebase-backed Mastra store/vector setup.
656
- - `workspaces` / `filesystems` - Mastra workspace creation; `filesystems(fs)`
657
- wraps any `@dbx-tools/shared-fs` `FileSystem` (including
658
- `@dbx-tools/databricks` / `@dbx-tools/fs`) as a Mastra mount, with
659
- `scratchFilesystem` (fresh `tmpFS` + random id) when no other mount resolves.
793
+ - `workspaces` / `filesystems` - Mastra workspace creation with named
794
+ `skillFolders` (defaults `workspace-team` / `workspace-team-app`, overridable
795
+ by consumers); `filesystems(fs)` wraps any `@dbx-tools/shared-fs`
796
+ `FileSystem` (including `@dbx-tools/databricks` / `@dbx-tools/fs`) as a
797
+ Mastra mount, with `scratchFilesystem` (fresh `tmpFS` + random id) when no
798
+ other mount resolves.
660
799
  - `remote-skills` - startup provisioning of remote `SKILL.md` sources into the
661
800
  Databricks Assistant skills tree (or a local temp dir): the `"aitools"`
662
801
  constant reads Databricks' own skill repo directly, and any other source goes
@@ -664,7 +803,8 @@ client that talks to these routes.
664
803
  `.metadata.json` so a source is re-downloaded at most once a day
665
804
  (`refreshTtlMs`).
666
805
  - `mcp` - MCP server construction.
667
- - `observability` / `mlflow` - tracing and feedback.
806
+ - `observability` / `mlflow` / `traceIo` - tracing, feedback, and stamping chat
807
+ turn I/O onto the HTTP root span for MLflow's UC `*_trace_unified` view.
668
808
  - `server` / `rest` / `processors` - Express dispatch, Databricks REST helpers,
669
809
  stream/result processors.
670
810
 
package/index.ts CHANGED
@@ -23,17 +23,19 @@ export * as rest from "./src/rest.ts";
23
23
  export * as server from "./src/server.ts";
24
24
  export * as serving from "./src/serving.ts";
25
25
  export * as servingSanitize from "./src/serving-sanitize.ts";
26
+ export * as skillPaths from "./src/skill-paths.ts";
26
27
  export * as statement from "./src/statement.ts";
27
28
  export * as storageSchema from "./src/storage-schema.ts";
28
29
  export * as summarize from "./src/summarize.ts";
29
30
  export * as threads from "./src/threads.ts";
31
+ export * as traceIo from "./src/trace-io.ts";
30
32
  export * as validation from "./src/validation.ts";
31
33
  export * as workspaces from "./src/workspaces.ts";
32
34
  export * as writer from "./src/writer.ts";
33
35
  export { FALLBACK_AGENT_ID, DEFAULT_AGENT_MAX_STEPS, DEFAULT_STYLE_INSTRUCTIONS } from "./src/agents.ts";
34
36
  export type { MastraTools, AppKitToolOptions, ToolkitOptions, MastraPluginToolkitProvider, MastraPlugins, MastraToolsFn, MastraAgentWorkspaceResolver, MastraAgentDefinition, MastraStorageConfigOverride, MastraMemoryConfigOverride, BuiltAgents } from "./src/agents.ts";
35
- export { chartPlanSchema, chartPlannerRequestSchema } from "./src/chart.ts";
36
- export type { ChartPlannerRequest, PrepareChartOptions, FetchChartOptions } from "./src/chart.ts";
37
+ export { chartPlanSchema, chartPlannerRequestSchema, chartToolOutputSchema } from "./src/chart.ts";
38
+ export type { ChartPlannerRequest, ChartToolOutput, PrepareChartOptions, FetchChartOptions } from "./src/chart.ts";
37
39
  export { MASTRA_USER_KEY, MASTRA_USER_NAME_KEY, MASTRA_USER_EMAIL_KEY, MASTRA_REQUEST_ID_KEY, MASTRA_SCOPES_KEY, TRACE_REQUEST_CONTEXT_KEYS, MASTRA_CONFIG_SCHEMA } from "./src/config.ts";
38
40
  export type { User, MastraMemoryConfig, MastraMcpConfig, MastraPluginConfig } from "./src/config.ts";
39
41
  export { modelCatalogueDefaults, genieSuggestionDefaults, statementDataDefaults, chartFetchDefaults, feedbackWriteDefaults } from "./src/defaults.ts";
@@ -60,9 +62,12 @@ export type { AttributedIdentity, MastraApiGateOptions } from "./src/server.ts";
60
62
  export { MASTRA_MODEL_OVERRIDE_KEY } from "./src/serving.ts";
61
63
  export type { ModelOverrideRequest } from "./src/serving.ts";
62
64
  export type { ServingChatMessage } from "./src/serving-sanitize.ts";
65
+ export { ASSISTANT_SHARED_SKILLS_PATH } from "./src/skill-paths.ts";
63
66
  export { STATEMENT_ROW_CAP } from "./src/statement.ts";
64
67
  export { TITLE_INSTRUCTIONS } from "./src/summarize.ts";
65
68
  export type { SummarizeOptions } from "./src/summarize.ts";
66
69
  export type { ListThreadsOptions, DeleteThreadOptions, RenameThreadOptions, ThreadsRouteOptions } from "./src/threads.ts";
70
+ export { TRACE_IO_LIMIT, MLFLOW_SPAN_INPUTS_ATTR, MLFLOW_SPAN_OUTPUTS_ATTR } from "./src/trace-io.ts";
67
71
  export type { SchemaIssues } from "./src/validation.ts";
68
- export type { CreateWorkspaceOptions } from "./src/workspaces.ts";
72
+ export { DEFAULT_SKILL_FOLDERS } from "./src/workspaces.ts";
73
+ export type { WorkspaceMountContext, SkillFolderValue, SkillFolderOptions, WorkspaceMountContribution, WorkspaceMountResolver, DefaultSkillFolderName, CreateWorkspaceOptions } from "./src/workspaces.ts";
package/lib/index.d.ts CHANGED
@@ -19,17 +19,19 @@ export * as rest from "./src/rest.ts";
19
19
  export * as server from "./src/server.ts";
20
20
  export * as serving from "./src/serving.ts";
21
21
  export * as servingSanitize from "./src/serving-sanitize.ts";
22
+ export * as skillPaths from "./src/skill-paths.ts";
22
23
  export * as statement from "./src/statement.ts";
23
24
  export * as storageSchema from "./src/storage-schema.ts";
24
25
  export * as summarize from "./src/summarize.ts";
25
26
  export * as threads from "./src/threads.ts";
27
+ export * as traceIo from "./src/trace-io.ts";
26
28
  export * as validation from "./src/validation.ts";
27
29
  export * as workspaces from "./src/workspaces.ts";
28
30
  export * as writer from "./src/writer.ts";
29
31
  export { FALLBACK_AGENT_ID, DEFAULT_AGENT_MAX_STEPS, DEFAULT_STYLE_INSTRUCTIONS } from "./src/agents.ts";
30
32
  export type { MastraTools, AppKitToolOptions, ToolkitOptions, MastraPluginToolkitProvider, MastraPlugins, MastraToolsFn, MastraAgentWorkspaceResolver, MastraAgentDefinition, MastraStorageConfigOverride, MastraMemoryConfigOverride, BuiltAgents } from "./src/agents.ts";
31
- export { chartPlanSchema, chartPlannerRequestSchema } from "./src/chart.ts";
32
- export type { ChartPlannerRequest, PrepareChartOptions, FetchChartOptions } from "./src/chart.ts";
33
+ export { chartPlanSchema, chartPlannerRequestSchema, chartToolOutputSchema } from "./src/chart.ts";
34
+ export type { ChartPlannerRequest, ChartToolOutput, PrepareChartOptions, FetchChartOptions } from "./src/chart.ts";
33
35
  export { MASTRA_USER_KEY, MASTRA_USER_NAME_KEY, MASTRA_USER_EMAIL_KEY, MASTRA_REQUEST_ID_KEY, MASTRA_SCOPES_KEY, TRACE_REQUEST_CONTEXT_KEYS, MASTRA_CONFIG_SCHEMA } from "./src/config.ts";
34
36
  export type { User, MastraMemoryConfig, MastraMcpConfig, MastraPluginConfig } from "./src/config.ts";
35
37
  export { modelCatalogueDefaults, genieSuggestionDefaults, statementDataDefaults, chartFetchDefaults, feedbackWriteDefaults } from "./src/defaults.ts";
@@ -56,9 +58,12 @@ export type { AttributedIdentity, MastraApiGateOptions } from "./src/server.ts";
56
58
  export { MASTRA_MODEL_OVERRIDE_KEY } from "./src/serving.ts";
57
59
  export type { ModelOverrideRequest } from "./src/serving.ts";
58
60
  export type { ServingChatMessage } from "./src/serving-sanitize.ts";
61
+ export { ASSISTANT_SHARED_SKILLS_PATH } from "./src/skill-paths.ts";
59
62
  export { STATEMENT_ROW_CAP } from "./src/statement.ts";
60
63
  export { TITLE_INSTRUCTIONS } from "./src/summarize.ts";
61
64
  export type { SummarizeOptions } from "./src/summarize.ts";
62
65
  export type { ListThreadsOptions, DeleteThreadOptions, RenameThreadOptions, ThreadsRouteOptions } from "./src/threads.ts";
66
+ export { TRACE_IO_LIMIT, MLFLOW_SPAN_INPUTS_ATTR, MLFLOW_SPAN_OUTPUTS_ATTR } from "./src/trace-io.ts";
63
67
  export type { SchemaIssues } from "./src/validation.ts";
64
- export type { CreateWorkspaceOptions } from "./src/workspaces.ts";
68
+ export { DEFAULT_SKILL_FOLDERS } from "./src/workspaces.ts";
69
+ export type { WorkspaceMountContext, SkillFolderValue, SkillFolderOptions, WorkspaceMountContribution, WorkspaceMountResolver, DefaultSkillFolderName, CreateWorkspaceOptions } from "./src/workspaces.ts";
package/lib/index.js CHANGED
@@ -22,15 +22,17 @@ export * as rest from "./src/rest.js";
22
22
  export * as server from "./src/server.js";
23
23
  export * as serving from "./src/serving.js";
24
24
  export * as servingSanitize from "./src/serving-sanitize.js";
25
+ export * as skillPaths from "./src/skill-paths.js";
25
26
  export * as statement from "./src/statement.js";
26
27
  export * as storageSchema from "./src/storage-schema.js";
27
28
  export * as summarize from "./src/summarize.js";
28
29
  export * as threads from "./src/threads.js";
30
+ export * as traceIo from "./src/trace-io.js";
29
31
  export * as validation from "./src/validation.js";
30
32
  export * as workspaces from "./src/workspaces.js";
31
33
  export * as writer from "./src/writer.js";
32
34
  export { FALLBACK_AGENT_ID, DEFAULT_AGENT_MAX_STEPS, DEFAULT_STYLE_INSTRUCTIONS } from "./src/agents.js";
33
- export { chartPlanSchema, chartPlannerRequestSchema } from "./src/chart.js";
35
+ export { chartPlanSchema, chartPlannerRequestSchema, chartToolOutputSchema } from "./src/chart.js";
34
36
  export { MASTRA_USER_KEY, MASTRA_USER_NAME_KEY, MASTRA_USER_EMAIL_KEY, MASTRA_REQUEST_ID_KEY, MASTRA_SCOPES_KEY, TRACE_REQUEST_CONTEXT_KEYS, MASTRA_CONFIG_SCHEMA } from "./src/config.js";
35
37
  export { modelCatalogueDefaults, genieSuggestionDefaults, statementDataDefaults, chartFetchDefaults, feedbackWriteDefaults } from "./src/defaults.js";
36
38
  export { MastraFileSystemAdapter } from "./src/filesystems.js";
@@ -42,6 +44,9 @@ export { stripStaleChartsProcessor, ResultProcessor } from "./src/processors.js"
42
44
  export { AITOOLS_SOURCE } from "./src/remote-skills.js";
43
45
  export { MastraServer } from "./src/server.js";
44
46
  export { MASTRA_MODEL_OVERRIDE_KEY } from "./src/serving.js";
47
+ export { ASSISTANT_SHARED_SKILLS_PATH } from "./src/skill-paths.js";
45
48
  export { STATEMENT_ROW_CAP } from "./src/statement.js";
46
49
  export { TITLE_INSTRUCTIONS } from "./src/summarize.js";
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxXQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssZUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekcsT0FBTyxFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzTCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0SixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCAqIGFzIGFnZW50cyBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgKiBhcyBjaGFydCBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCAqIGFzIGZpbGVzeXN0ZW1zIGZyb20gXCIuL3NyYy9maWxlc3lzdGVtcy50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWUgZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgKiBhcyBoaXN0b3J5IGZyb20gXCIuL3NyYy9oaXN0b3J5LnRzXCI7XG5leHBvcnQgKiBhcyBpZGVudGl0eSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCAqIGFzIG1jcCBmcm9tIFwiLi9zcmMvbWNwLnRzXCI7XG5leHBvcnQgKiBhcyBtZW1vcnkgZnJvbSBcIi4vc3JjL21lbW9yeS50c1wiO1xuZXhwb3J0ICogYXMgbWxmbG93IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsIGZyb20gXCIuL3NyYy9tb2RlbC50c1wiO1xuZXhwb3J0ICogYXMgb2JzZXJ2YWJpbGl0eSBmcm9tIFwiLi9zcmMvb2JzZXJ2YWJpbGl0eS50c1wiO1xuZXhwb3J0ICogYXMgcGFnaW5hdGlvbiBmcm9tIFwiLi9zcmMvcGFnaW5hdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgcGx1Z2luIGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCAqIGFzIHByb2Nlc3NvcnMgZnJvbSBcIi4vc3JjL3Byb2Nlc3NvcnMudHNcIjtcbmV4cG9ydCAqIGFzIHJlbW90ZVNraWxscyBmcm9tIFwiLi9zcmMvcmVtb3RlLXNraWxscy50c1wiO1xuZXhwb3J0ICogYXMgcmVzdCBmcm9tIFwiLi9zcmMvcmVzdC50c1wiO1xuZXhwb3J0ICogYXMgc2VydmVyIGZyb20gXCIuL3NyYy9zZXJ2ZXIudHNcIjtcbmV4cG9ydCAqIGFzIHNlcnZpbmcgZnJvbSBcIi4vc3JjL3NlcnZpbmcudHNcIjtcbmV4cG9ydCAqIGFzIHNlcnZpbmdTYW5pdGl6ZSBmcm9tIFwiLi9zcmMvc2VydmluZy1zYW5pdGl6ZS50c1wiO1xuZXhwb3J0ICogYXMgc3RhdGVtZW50IGZyb20gXCIuL3NyYy9zdGF0ZW1lbnQudHNcIjtcbmV4cG9ydCAqIGFzIHN0b3JhZ2VTY2hlbWEgZnJvbSBcIi4vc3JjL3N0b3JhZ2Utc2NoZW1hLnRzXCI7XG5leHBvcnQgKiBhcyBzdW1tYXJpemUgZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0ICogYXMgdGhyZWFkcyBmcm9tIFwiLi9zcmMvdGhyZWFkcy50c1wiO1xuZXhwb3J0ICogYXMgdmFsaWRhdGlvbiBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgd29ya3NwYWNlcyBmcm9tIFwiLi9zcmMvd29ya3NwYWNlcy50c1wiO1xuZXhwb3J0ICogYXMgd3JpdGVyIGZyb20gXCIuL3NyYy93cml0ZXIudHNcIjtcbmV4cG9ydCB7IEZBTExCQUNLX0FHRU5UX0lELCBERUZBVUxUX0FHRU5UX01BWF9TVEVQUywgREVGQVVMVF9TVFlMRV9JTlNUUlVDVElPTlMgfSBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYVRvb2xzLCBBcHBLaXRUb29sT3B0aW9ucywgVG9vbGtpdE9wdGlvbnMsIE1hc3RyYVBsdWdpblRvb2xraXRQcm92aWRlciwgTWFzdHJhUGx1Z2lucywgTWFzdHJhVG9vbHNGbiwgTWFzdHJhQWdlbnRXb3Jrc3BhY2VSZXNvbHZlciwgTWFzdHJhQWdlbnREZWZpbml0aW9uLCBNYXN0cmFTdG9yYWdlQ29uZmlnT3ZlcnJpZGUsIE1hc3RyYU1lbW9yeUNvbmZpZ092ZXJyaWRlLCBCdWlsdEFnZW50cyB9IGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCB7IGNoYXJ0UGxhblNjaGVtYSwgY2hhcnRQbGFubmVyUmVxdWVzdFNjaGVtYSB9IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDaGFydFBsYW5uZXJSZXF1ZXN0LCBQcmVwYXJlQ2hhcnRPcHRpb25zLCBGZXRjaENoYXJ0T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0IHsgTUFTVFJBX1VTRVJfS0VZLCBNQVNUUkFfVVNFUl9OQU1FX0tFWSwgTUFTVFJBX1VTRVJfRU1BSUxfS0VZLCBNQVNUUkFfUkVRVUVTVF9JRF9LRVksIE1BU1RSQV9TQ09QRVNfS0VZLCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUywgTUFTVFJBX0NPTkZJR19TQ0hFTUEgfSBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgdHlwZSB7IFVzZXIsIE1hc3RyYU1lbW9yeUNvbmZpZywgTWFzdHJhTWNwQ29uZmlnLCBNYXN0cmFQbHVnaW5Db25maWcgfSBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgeyBtb2RlbENhdGFsb2d1ZURlZmF1bHRzLCBnZW5pZVN1Z2dlc3Rpb25EZWZhdWx0cywgc3RhdGVtZW50RGF0YURlZmF1bHRzLCBjaGFydEZldGNoRGVmYXVsdHMsIGZlZWRiYWNrV3JpdGVEZWZhdWx0cyB9IGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0IHsgTWFzdHJhRmlsZVN5c3RlbUFkYXB0ZXIgfSBmcm9tIFwiLi9zcmMvZmlsZXN5c3RlbXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhRmlsZVN5c3RlbUFkYXB0ZXJPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0dFTklFX0FMSUFTLCBHRU5JRV9JTlNUUlVDVElPTlMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVTcGFjZUNvbmZpZywgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgTG9hZEhpc3RvcnlPcHRpb25zLCBDbGVhckhpc3RvcnlPcHRpb25zLCBIaXN0b3J5Um91dGVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2hpc3RvcnkudHNcIjtcbmV4cG9ydCB7IElERU5USVRZX0VOViwgSURFTlRJVFlfTU9ERVMsIERFRkFVTFRfSURFTlRJVFlfTU9ERSwgVVNFUl9JRF9IRUFERVIsIFVTRVJfRU1BSUxfSEVBREVSIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUlkZW50aXR5TW9kZSB9IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0IHR5cGUgeyBSZXNvbHZlZE1jcCB9IGZyb20gXCIuL3NyYy9tY3AudHNcIjtcbmV4cG9ydCB7IE1lbW9yeUJ1aWxkZXIgfSBmcm9tIFwiLi9zcmMvbWVtb3J5LnRzXCI7XG5leHBvcnQgdHlwZSB7IExvZ0ZlZWRiYWNrUGFyYW1zIH0gZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCdWlsZE1vZGVsT3ZlcnJpZGVzIH0gZnJvbSBcIi4vc3JjL21vZGVsLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1aWxkT2JzZXJ2YWJpbGl0eU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvb2JzZXJ2YWJpbGl0eS50c1wiO1xuZXhwb3J0IHR5cGUgeyBQZXJQYWdlQm91bmRzIH0gZnJvbSBcIi4vc3JjL3BhZ2luYXRpb24udHNcIjtcbmV4cG9ydCB7IE1hc3RyYVBsdWdpbiwgbWFzdHJhIH0gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0IHsgc3RyaXBTdGFsZUNoYXJ0c1Byb2Nlc3NvciwgUmVzdWx0UHJvY2Vzc29yIH0gZnJvbSBcIi4vc3JjL3Byb2Nlc3NvcnMudHNcIjtcbmV4cG9ydCB7IEFJVE9PTFNfU09VUkNFIH0gZnJvbSBcIi4vc3JjL3JlbW90ZS1za2lsbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQWlUb29sc1NvdXJjZSwgUmVtb3RlU2tpbGxTb3VyY2VPcHRpb25zLCBSZW1vdGVTa2lsbFNvdXJjZSwgUmVtb3RlU2tpbGxzT3B0aW9uLCBQcm92aXNpb25SZW1vdGVTa2lsbHNPcHRpb25zLCBQcm92aXNpb25lZFJlbW90ZVNraWxscywgUmVtb3RlU2tpbGxDYWNoZUVudHJ5LCBSZW1vdGVTa2lsbHNNZXRhZGF0YSB9IGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NGZXRjaEluaXQgfSBmcm9tIFwiLi9zcmMvcmVzdC50c1wiO1xuZXhwb3J0IHsgTWFzdHJhU2VydmVyIH0gZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0IHR5cGUgeyBBdHRyaWJ1dGVkSWRlbnRpdHksIE1hc3RyYUFwaUdhdGVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0IHsgTUFTVFJBX01PREVMX09WRVJSSURFX0tFWSB9IGZyb20gXCIuL3NyYy9zZXJ2aW5nLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsT3ZlcnJpZGVSZXF1ZXN0IH0gZnJvbSBcIi4vc3JjL3NlcnZpbmcudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2VydmluZ0NoYXRNZXNzYWdlIH0gZnJvbSBcIi4vc3JjL3NlcnZpbmctc2FuaXRpemUudHNcIjtcbmV4cG9ydCB7IFNUQVRFTUVOVF9ST1dfQ0FQIH0gZnJvbSBcIi4vc3JjL3N0YXRlbWVudC50c1wiO1xuZXhwb3J0IHsgVElUTEVfSU5TVFJVQ1RJT05TIH0gZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBTdW1tYXJpemVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBMaXN0VGhyZWFkc09wdGlvbnMsIERlbGV0ZVRocmVhZE9wdGlvbnMsIFJlbmFtZVRocmVhZE9wdGlvbnMsIFRocmVhZHNSb3V0ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvdGhyZWFkcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFJc3N1ZXMgfSBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBDcmVhdGVXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbiJdfQ==
50
+ export { TRACE_IO_LIMIT, MLFLOW_SPAN_INPUTS_ATTR, MLFLOW_SPAN_OUTPUTS_ATTR } from "./src/trace-io.js";
51
+ export { DEFAULT_SKILL_FOLDERS } from "./src/workspaces.js";
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxXQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssVUFBVSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssZUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssYUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpHLE9BQU8sRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0wsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEosT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHM0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHN0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0ICogYXMgYWdlbnRzIGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCAqIGFzIGNoYXJ0IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0ICogYXMgY29uZmlnIGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0ICogYXMgZmlsZXN5c3RlbXMgZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCAqIGFzIGhpc3RvcnkgZnJvbSBcIi4vc3JjL2hpc3RvcnkudHNcIjtcbmV4cG9ydCAqIGFzIGlkZW50aXR5IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0ICogYXMgbWNwIGZyb20gXCIuL3NyYy9tY3AudHNcIjtcbmV4cG9ydCAqIGFzIG1lbW9yeSBmcm9tIFwiLi9zcmMvbWVtb3J5LnRzXCI7XG5leHBvcnQgKiBhcyBtbGZsb3cgZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0ICogYXMgbW9kZWwgZnJvbSBcIi4vc3JjL21vZGVsLnRzXCI7XG5leHBvcnQgKiBhcyBvYnNlcnZhYmlsaXR5IGZyb20gXCIuL3NyYy9vYnNlcnZhYmlsaXR5LnRzXCI7XG5leHBvcnQgKiBhcyBwYWdpbmF0aW9uIGZyb20gXCIuL3NyYy9wYWdpbmF0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgcHJvY2Vzc29ycyBmcm9tIFwiLi9zcmMvcHJvY2Vzc29ycy50c1wiO1xuZXhwb3J0ICogYXMgcmVtb3RlU2tpbGxzIGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgKiBhcyByZXN0IGZyb20gXCIuL3NyYy9yZXN0LnRzXCI7XG5leHBvcnQgKiBhcyBzZXJ2ZXIgZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0ICogYXMgc2VydmluZyBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0ICogYXMgc2VydmluZ1Nhbml0aXplIGZyb20gXCIuL3NyYy9zZXJ2aW5nLXNhbml0aXplLnRzXCI7XG5leHBvcnQgKiBhcyBza2lsbFBhdGhzIGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0ICogYXMgc3RhdGVtZW50IGZyb20gXCIuL3NyYy9zdGF0ZW1lbnQudHNcIjtcbmV4cG9ydCAqIGFzIHN0b3JhZ2VTY2hlbWEgZnJvbSBcIi4vc3JjL3N0b3JhZ2Utc2NoZW1hLnRzXCI7XG5leHBvcnQgKiBhcyBzdW1tYXJpemUgZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0ICogYXMgdGhyZWFkcyBmcm9tIFwiLi9zcmMvdGhyZWFkcy50c1wiO1xuZXhwb3J0ICogYXMgdHJhY2VJbyBmcm9tIFwiLi9zcmMvdHJhY2UtaW8udHNcIjtcbmV4cG9ydCAqIGFzIHZhbGlkYXRpb24gZnJvbSBcIi4vc3JjL3ZhbGlkYXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIHdvcmtzcGFjZXMgZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbmV4cG9ydCAqIGFzIHdyaXRlciBmcm9tIFwiLi9zcmMvd3JpdGVyLnRzXCI7XG5leHBvcnQgeyBGQUxMQkFDS19BR0VOVF9JRCwgREVGQVVMVF9BR0VOVF9NQVhfU1RFUFMsIERFRkFVTFRfU1RZTEVfSU5TVFJVQ1RJT05TIH0gZnJvbSBcIi4vc3JjL2FnZW50cy50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFUb29scywgQXBwS2l0VG9vbE9wdGlvbnMsIFRvb2xraXRPcHRpb25zLCBNYXN0cmFQbHVnaW5Ub29sa2l0UHJvdmlkZXIsIE1hc3RyYVBsdWdpbnMsIE1hc3RyYVRvb2xzRm4sIE1hc3RyYUFnZW50V29ya3NwYWNlUmVzb2x2ZXIsIE1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhU3RvcmFnZUNvbmZpZ092ZXJyaWRlLCBNYXN0cmFNZW1vcnlDb25maWdPdmVycmlkZSwgQnVpbHRBZ2VudHMgfSBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgeyBjaGFydFBsYW5TY2hlbWEsIGNoYXJ0UGxhbm5lclJlcXVlc3RTY2hlbWEsIGNoYXJ0VG9vbE91dHB1dFNjaGVtYSB9IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDaGFydFBsYW5uZXJSZXF1ZXN0LCBDaGFydFRvb2xPdXRwdXQsIFByZXBhcmVDaGFydE9wdGlvbnMsIEZldGNoQ2hhcnRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2NoYXJ0LnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfVVNFUl9LRVksIE1BU1RSQV9VU0VSX05BTUVfS0VZLCBNQVNUUkFfVVNFUl9FTUFJTF9LRVksIE1BU1RSQV9SRVFVRVNUX0lEX0tFWSwgTUFTVFJBX1NDT1BFU19LRVksIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTLCBNQVNUUkFfQ09ORklHX1NDSEVNQSB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB0eXBlIHsgVXNlciwgTWFzdHJhTWVtb3J5Q29uZmlnLCBNYXN0cmFNY3BDb25maWcsIE1hc3RyYVBsdWdpbkNvbmZpZyB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB7IG1vZGVsQ2F0YWxvZ3VlRGVmYXVsdHMsIGdlbmllU3VnZ2VzdGlvbkRlZmF1bHRzLCBzdGF0ZW1lbnREYXRhRGVmYXVsdHMsIGNoYXJ0RmV0Y2hEZWZhdWx0cywgZmVlZGJhY2tXcml0ZURlZmF1bHRzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgeyBNYXN0cmFGaWxlU3lzdGVtQWRhcHRlciB9IGZyb20gXCIuL3NyYy9maWxlc3lzdGVtcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFGaWxlU3lzdGVtQWRhcHRlck9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZmlsZXN5c3RlbXMudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfR0VOSUVfQUxJQVMsIEdFTklFX0lOU1RSVUNUSU9OUyB9IGZyb20gXCIuL3NyYy9nZW5pZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZVNwYWNlQ29uZmlnLCBHZW5pZVNwYWNlc0NvbmZpZyB9IGZyb20gXCIuL3NyYy9nZW5pZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBMb2FkSGlzdG9yeU9wdGlvbnMsIENsZWFySGlzdG9yeU9wdGlvbnMsIEhpc3RvcnlSb3V0ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvaGlzdG9yeS50c1wiO1xuZXhwb3J0IHsgSURFTlRJVFlfRU5WLCBJREVOVElUWV9NT0RFUywgREVGQVVMVF9JREVOVElUWV9NT0RFLCBVU0VSX0lEX0hFQURFUiwgVVNFUl9FTUFJTF9IRUFERVIgfSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhSWRlbnRpdHlNb2RlIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlc29sdmVkTWNwIH0gZnJvbSBcIi4vc3JjL21jcC50c1wiO1xuZXhwb3J0IHsgTWVtb3J5QnVpbGRlciB9IGZyb20gXCIuL3NyYy9tZW1vcnkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTG9nRmVlZGJhY2tQYXJhbXMgfSBmcm9tIFwiLi9zcmMvbWxmbG93LnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1aWxkTW9kZWxPdmVycmlkZXMgfSBmcm9tIFwiLi9zcmMvbW9kZWwudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnVpbGRPYnNlcnZhYmlsaXR5T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9vYnNlcnZhYmlsaXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IFBlclBhZ2VCb3VuZHMgfSBmcm9tIFwiLi9zcmMvcGFnaW5hdGlvbi50c1wiO1xuZXhwb3J0IHsgTWFzdHJhUGx1Z2luLCBtYXN0cmEgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgeyBzdHJpcFN0YWxlQ2hhcnRzUHJvY2Vzc29yLCBSZXN1bHRQcm9jZXNzb3IgfSBmcm9tIFwiLi9zcmMvcHJvY2Vzc29ycy50c1wiO1xuZXhwb3J0IHsgQUlUT09MU19TT1VSQ0UgfSBmcm9tIFwiLi9zcmMvcmVtb3RlLXNraWxscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBaVRvb2xzU291cmNlLCBSZW1vdGVTa2lsbFNvdXJjZU9wdGlvbnMsIFJlbW90ZVNraWxsU291cmNlLCBSZW1vdGVTa2lsbHNPcHRpb24sIFByb3Zpc2lvblJlbW90ZVNraWxsc09wdGlvbnMsIFByb3Zpc2lvbmVkUmVtb3RlU2tpbGxzLCBSZW1vdGVTa2lsbENhY2hlRW50cnksIFJlbW90ZVNraWxsc01ldGFkYXRhIH0gZnJvbSBcIi4vc3JjL3JlbW90ZS1za2lsbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc0ZldGNoSW5pdCB9IGZyb20gXCIuL3NyYy9yZXN0LnRzXCI7XG5leHBvcnQgeyBNYXN0cmFTZXJ2ZXIgfSBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF0dHJpYnV0ZWRJZGVudGl0eSwgTWFzdHJhQXBpR2F0ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZIH0gZnJvbSBcIi4vc3JjL3NlcnZpbmcudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxPdmVycmlkZVJlcXVlc3QgfSBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBTZXJ2aW5nQ2hhdE1lc3NhZ2UgfSBmcm9tIFwiLi9zcmMvc2VydmluZy1zYW5pdGl6ZS50c1wiO1xuZXhwb3J0IHsgQVNTSVNUQU5UX1NIQVJFRF9TS0lMTFNfUEFUSCB9IGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0IHsgU1RBVEVNRU5UX1JPV19DQVAgfSBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgeyBUSVRMRV9JTlNUUlVDVElPTlMgfSBmcm9tIFwiLi9zcmMvc3VtbWFyaXplLnRzXCI7XG5leHBvcnQgdHlwZSB7IFN1bW1hcml6ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc3VtbWFyaXplLnRzXCI7XG5leHBvcnQgdHlwZSB7IExpc3RUaHJlYWRzT3B0aW9ucywgRGVsZXRlVGhyZWFkT3B0aW9ucywgUmVuYW1lVGhyZWFkT3B0aW9ucywgVGhyZWFkc1JvdXRlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90aHJlYWRzLnRzXCI7XG5leHBvcnQgeyBUUkFDRV9JT19MSU1JVCwgTUxGTE9XX1NQQU5fSU5QVVRTX0FUVFIsIE1MRkxPV19TUEFOX09VVFBVVFNfQVRUUiB9IGZyb20gXCIuL3NyYy90cmFjZS1pby50c1wiO1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFJc3N1ZXMgfSBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9TS0lMTF9GT0xERVJTIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgV29ya3NwYWNlTW91bnRDb250ZXh0LCBTa2lsbEZvbGRlclZhbHVlLCBTa2lsbEZvbGRlck9wdGlvbnMsIFdvcmtzcGFjZU1vdW50Q29udHJpYnV0aW9uLCBXb3Jrc3BhY2VNb3VudFJlc29sdmVyLCBEZWZhdWx0U2tpbGxGb2xkZXJOYW1lLCBDcmVhdGVXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbiJdfQ==
@@ -26,6 +26,7 @@
26
26
  *
27
27
  * @module
28
28
  */
29
+ import { type BrandContext } from "@dbx-tools/shared-core";
29
30
  import { type Chart } from "@dbx-tools/shared-mastra";
30
31
  import type { RequestContext } from "@mastra/core/request-context";
31
32
  import { z } from "zod";
@@ -41,13 +42,16 @@ import { type MastraPluginConfig } from "./config.ts";
41
42
  * across charts.
42
43
  */
43
44
  export declare const chartPlanSchema: z.ZodObject<{
44
- chartType: z.ZodUnion<readonly [z.ZodLiteral<"bar">, z.ZodLiteral<"line">, z.ZodLiteral<"area">, z.ZodLiteral<"scatter">, z.ZodLiteral<"pie">]>;
45
+ chartType: z.ZodUnion<readonly [z.ZodLiteral<"bar">, z.ZodLiteral<"horizontalBar">, z.ZodLiteral<"line">, z.ZodLiteral<"area">, z.ZodLiteral<"combo">, z.ZodLiteral<"waterfall">, z.ZodLiteral<"scatter">, z.ZodLiteral<"heatmap">, z.ZodLiteral<"radar">, z.ZodLiteral<"pie">, z.ZodLiteral<"funnel">, z.ZodLiteral<"treemap">, z.ZodLiteral<"custom">]>;
45
46
  title: z.ZodOptional<z.ZodString>;
46
47
  xAxisLabel: z.ZodOptional<z.ZodString>;
47
48
  yAxisLabel: z.ZodOptional<z.ZodString>;
48
49
  categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
49
- series: z.ZodArray<z.ZodObject<{
50
+ yCategories: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
+ series: z.ZodDefault<z.ZodArray<z.ZodObject<{
50
52
  name: z.ZodString;
53
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"bar">, z.ZodLiteral<"line">, z.ZodLiteral<"area">]>>;
54
+ yAxisIndex: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>]>>;
51
55
  data: z.ZodArray<z.ZodCatch<z.ZodPipe<z.ZodTransform<number | number[] | {
52
56
  name: string;
53
57
  value: number;
@@ -55,8 +59,10 @@ export declare const chartPlanSchema: z.ZodObject<{
55
59
  name: z.ZodString;
56
60
  value: z.ZodNumber;
57
61
  }, z.core.$strip>]>>>>;
58
- }, z.core.$strip>>;
62
+ }, z.core.$strip>>>;
63
+ option: z.ZodOptional<z.ZodString>;
59
64
  }, z.core.$strip>;
65
+ type ChartPlan = z.infer<typeof chartPlanSchema>;
60
66
  /**
61
67
  * Canonical planner input shape. Tools that source rows from an
62
68
  * inline dataset (`render_data`) use it as their `inputSchema`
@@ -72,6 +78,19 @@ export declare const chartPlannerRequestSchema: z.ZodObject<{
72
78
  data: z.ZodReadonly<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
73
79
  }, z.core.$strip>;
74
80
  export type ChartPlannerRequest = z.infer<typeof chartPlannerRequestSchema>;
81
+ /**
82
+ * Agent-facing result of either chart-producing tool.
83
+ *
84
+ * `marker` is deliberately redundant with `chartId`: the host still keys the
85
+ * cache by id, while the model gets the exact opaque token to copy into prose
86
+ * and has no reason to invent or retype a UUID.
87
+ */
88
+ export declare const chartToolOutputSchema: z.ZodObject<{
89
+ chartId: z.ZodString;
90
+ marker: z.ZodString;
91
+ }, z.core.$strip>;
92
+ /** Result returned synchronously while chart planning continues in the background. */
93
+ export type ChartToolOutput = z.infer<typeof chartToolOutputSchema>;
75
94
  /** Inputs to {@link prepareChart}. */
76
95
  export interface PrepareChartOptions {
77
96
  /** Plugin config; resolves the planner agent's model. */
@@ -124,9 +143,7 @@ export interface PrepareChartOptions {
124
143
  * - on planner success: `{ chartId, result }`
125
144
  * - on data / planner failure: `{ chartId, error }`
126
145
  */
127
- export declare function prepareChart(opts: PrepareChartOptions): Promise<{
128
- chartId: string;
129
- }>;
146
+ export declare function prepareChart(opts: PrepareChartOptions): Promise<ChartToolOutput>;
130
147
  /** Inputs to {@link fetchChart}. */
131
148
  export interface FetchChartOptions {
132
149
  /**
@@ -166,6 +183,18 @@ export interface FetchChartOptions {
166
183
  * so the helper returns immediately.
167
184
  */
168
185
  export declare function fetchChart(chartId: string, options: FetchChartOptions): Promise<Chart | undefined>;
186
+ /**
187
+ * Expand a {@link ChartPlan} into a full Echarts `EChartsOption`
188
+ * JSON. Centralized here so the planner agent only fills in the
189
+ * compact plan shape; tooltip / animation / color / grid defaults
190
+ * stay consistent across charts and are easy to tune without
191
+ * retraining model behaviour.
192
+ *
193
+ * When `brand` is set, the resolved spec is themed with the brand's series
194
+ * color cycle and base text style (see {@link brandChartTheme}); otherwise
195
+ * Echarts' defaults apply.
196
+ */
197
+ export declare function planToEchartsOption(plan: ChartPlan, fallbackTitle: string, brand?: BrandContext): Record<string, unknown>;
169
198
  /**
170
199
  * Build the `render_data` Mastra tool bound to the given plugin
171
200
  * config. Auto-wired as a system tool on every agent (see
@@ -175,9 +204,8 @@ export declare function fetchChart(chartId: string, options: FetchChartOptions):
175
204
  * Thin wrapper over {@link prepareChart} for callers that already
176
205
  * have a dataset in hand. Mints a `chartId` synchronously, caches
177
206
  * an empty placeholder, and kicks off the chart-planner in the
178
- * background. Returns just the `chartId`; the host UI resolves
179
- * `[chart:<chartId>]` markers by hitting the plugin's
180
- * `/embed/chart/:id` route.
207
+ * background. Returns the `chartId` plus its ready-to-copy `marker`; the host
208
+ * UI resolves that marker through the plugin's `/embed/chart/:id` route.
181
209
  *
182
210
  * For Genie statement results, prefer the Genie agent's
183
211
  * `prepare_chart` tool, which accepts a `statement_id` and
@@ -189,4 +217,6 @@ export declare function buildRenderDataTool(config: MastraPluginConfig): import(
189
217
  description?: string | undefined;
190
218
  }, {
191
219
  chartId: string;
220
+ marker: string;
192
221
  }, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "render_data", unknown>;
222
+ export {};