@memberjunction/core-actions 2.106.0 → 2.108.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.
Files changed (95) hide show
  1. package/dist/config.d.ts +112 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +34 -2
  4. package/dist/config.js.map +1 -1
  5. package/dist/custom/ai/find-best-agent.action.d.ts +53 -0
  6. package/dist/custom/ai/find-best-agent.action.d.ts.map +1 -0
  7. package/dist/custom/ai/find-best-agent.action.js +194 -0
  8. package/dist/custom/ai/find-best-agent.action.js.map +1 -0
  9. package/dist/custom/ai/summarize-content.action.d.ts +72 -0
  10. package/dist/custom/ai/summarize-content.action.d.ts.map +1 -0
  11. package/dist/custom/ai/summarize-content.action.js +296 -0
  12. package/dist/custom/ai/summarize-content.action.js.map +1 -0
  13. package/dist/custom/code-execution/execute-code.action.d.ts +61 -0
  14. package/dist/custom/code-execution/execute-code.action.d.ts.map +1 -0
  15. package/dist/custom/code-execution/execute-code.action.js +172 -0
  16. package/dist/custom/code-execution/execute-code.action.js.map +1 -0
  17. package/dist/custom/data/csv-parser.action.js +1 -1
  18. package/dist/custom/data/csv-parser.action.js.map +1 -1
  19. package/dist/custom/data/execute-research-query.action.d.ts +114 -0
  20. package/dist/custom/data/execute-research-query.action.d.ts.map +1 -0
  21. package/dist/custom/data/execute-research-query.action.js +520 -0
  22. package/dist/custom/data/execute-research-query.action.js.map +1 -0
  23. package/dist/custom/data/explore-database-schema.action.d.ts +95 -0
  24. package/dist/custom/data/explore-database-schema.action.d.ts.map +1 -0
  25. package/dist/custom/data/explore-database-schema.action.js +499 -0
  26. package/dist/custom/data/explore-database-schema.action.js.map +1 -0
  27. package/dist/custom/data/get-entity-details.action.d.ts +63 -0
  28. package/dist/custom/data/get-entity-details.action.d.ts.map +1 -0
  29. package/dist/custom/data/get-entity-details.action.js +284 -0
  30. package/dist/custom/data/get-entity-details.action.js.map +1 -0
  31. package/dist/custom/data/get-entity-list.action.d.ts +57 -0
  32. package/dist/custom/data/get-entity-list.action.d.ts.map +1 -0
  33. package/dist/custom/data/get-entity-list.action.js +177 -0
  34. package/dist/custom/data/get-entity-list.action.js.map +1 -0
  35. package/dist/custom/files/index.d.ts +2 -0
  36. package/dist/custom/files/index.d.ts.map +1 -1
  37. package/dist/custom/files/index.js +5 -1
  38. package/dist/custom/files/index.js.map +1 -1
  39. package/dist/custom/files/list-storage-providers.action.d.ts +52 -0
  40. package/dist/custom/files/list-storage-providers.action.d.ts.map +1 -0
  41. package/dist/custom/files/list-storage-providers.action.js +175 -0
  42. package/dist/custom/files/list-storage-providers.action.js.map +1 -0
  43. package/dist/custom/files/search-storage-files.action.d.ts +61 -0
  44. package/dist/custom/files/search-storage-files.action.d.ts.map +1 -0
  45. package/dist/custom/files/search-storage-files.action.js +183 -0
  46. package/dist/custom/files/search-storage-files.action.js.map +1 -0
  47. package/dist/custom/visualization/create-svg-chart.action.d.ts +97 -0
  48. package/dist/custom/visualization/create-svg-chart.action.d.ts.map +1 -0
  49. package/dist/custom/visualization/create-svg-chart.action.js +290 -0
  50. package/dist/custom/visualization/create-svg-chart.action.js.map +1 -0
  51. package/dist/custom/visualization/create-svg-diagram.action.d.ts +151 -0
  52. package/dist/custom/visualization/create-svg-diagram.action.d.ts.map +1 -0
  53. package/dist/custom/visualization/create-svg-diagram.action.js +764 -0
  54. package/dist/custom/visualization/create-svg-diagram.action.js.map +1 -0
  55. package/dist/custom/visualization/create-svg-infographic.action.d.ts +72 -0
  56. package/dist/custom/visualization/create-svg-infographic.action.d.ts.map +1 -0
  57. package/dist/custom/visualization/create-svg-infographic.action.js +343 -0
  58. package/dist/custom/visualization/create-svg-infographic.action.js.map +1 -0
  59. package/dist/custom/visualization/create-svg-network.action.d.ts +106 -0
  60. package/dist/custom/visualization/create-svg-network.action.d.ts.map +1 -0
  61. package/dist/custom/visualization/create-svg-network.action.js +651 -0
  62. package/dist/custom/visualization/create-svg-network.action.js.map +1 -0
  63. package/dist/custom/visualization/create-svg-word-cloud.action.d.ts +94 -0
  64. package/dist/custom/visualization/create-svg-word-cloud.action.d.ts.map +1 -0
  65. package/dist/custom/visualization/create-svg-word-cloud.action.js +422 -0
  66. package/dist/custom/visualization/create-svg-word-cloud.action.js.map +1 -0
  67. package/dist/custom/visualization/shared/svg-theming.d.ts +91 -0
  68. package/dist/custom/visualization/shared/svg-theming.d.ts.map +1 -0
  69. package/dist/custom/visualization/shared/svg-theming.js +235 -0
  70. package/dist/custom/visualization/shared/svg-theming.js.map +1 -0
  71. package/dist/custom/visualization/shared/svg-types.d.ts +338 -0
  72. package/dist/custom/visualization/shared/svg-types.d.ts.map +1 -0
  73. package/dist/custom/visualization/shared/svg-types.js +11 -0
  74. package/dist/custom/visualization/shared/svg-types.js.map +1 -0
  75. package/dist/custom/visualization/shared/svg-utils.d.ts +129 -0
  76. package/dist/custom/visualization/shared/svg-utils.d.ts.map +1 -0
  77. package/dist/custom/visualization/shared/svg-utils.js +287 -0
  78. package/dist/custom/visualization/shared/svg-utils.js.map +1 -0
  79. package/dist/custom/web/google-custom-search.action.d.ts +60 -0
  80. package/dist/custom/web/google-custom-search.action.d.ts.map +1 -0
  81. package/dist/custom/web/google-custom-search.action.js +378 -0
  82. package/dist/custom/web/google-custom-search.action.js.map +1 -0
  83. package/dist/custom/web/web-page-content.action.d.ts +24 -0
  84. package/dist/custom/web/web-page-content.action.d.ts.map +1 -1
  85. package/dist/custom/web/web-page-content.action.js +90 -9
  86. package/dist/custom/web/web-page-content.action.js.map +1 -1
  87. package/dist/generated/action_subclasses.d.ts +51 -3
  88. package/dist/generated/action_subclasses.d.ts.map +1 -1
  89. package/dist/generated/action_subclasses.js +174 -90
  90. package/dist/generated/action_subclasses.js.map +1 -1
  91. package/dist/index.d.ts +14 -0
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +44 -0
  94. package/dist/index.js.map +1 -1
  95. package/package.json +30 -11
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.LoadCreateSVGChartAction = exports.CreateSVGChartAction = void 0;
33
+ const actions_1 = require("@memberjunction/actions");
34
+ const global_1 = require("@memberjunction/global");
35
+ const vega = __importStar(require("vega"));
36
+ const vegaLite = __importStar(require("vega-lite"));
37
+ /**
38
+ * Action that generates SVG charts from data using Vega-Lite.
39
+ * Supports various chart types including bar, line, pie, scatter, area, and more.
40
+ *
41
+ * This action is designed for AI agents and workflows to create publication-quality
42
+ * visualizations from structured data without writing visualization code.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * // Simple bar chart
47
+ * await runAction({
48
+ * ActionName: 'Create SVG Chart',
49
+ * Params: [
50
+ * { Name: 'ChartType', Value: 'bar' },
51
+ * { Name: 'Data', Value: JSON.stringify([
52
+ * { category: 'A', value: 28 },
53
+ * { category: 'B', value: 55 },
54
+ * { category: 'C', value: 43 }
55
+ * ]) },
56
+ * { Name: 'XField', Value: 'category' },
57
+ * { Name: 'YField', Value: 'value' },
58
+ * { Name: 'Title', Value: 'Sample Bar Chart' }
59
+ * ]
60
+ * });
61
+ *
62
+ * // Pie chart
63
+ * await runAction({
64
+ * ActionName: 'Create SVG Chart',
65
+ * Params: [
66
+ * { Name: 'ChartType', Value: 'pie' },
67
+ * { Name: 'Data', Value: JSON.stringify([
68
+ * { category: 'LLM', count: 67 },
69
+ * { category: 'Embeddings', count: 10 }
70
+ * ]) },
71
+ * { Name: 'ThetaField', Value: 'count' },
72
+ * { Name: 'ColorField', Value: 'category' },
73
+ * { Name: 'Width', Value: '400' },
74
+ * { Name: 'Height', Value: '300' }
75
+ * ]
76
+ * });
77
+ * ```
78
+ */
79
+ let CreateSVGChartAction = class CreateSVGChartAction extends actions_1.BaseAction {
80
+ /**
81
+ * Generates an SVG chart from the provided data and configuration
82
+ *
83
+ * @param params - The action parameters containing:
84
+ * - ChartType: Type of chart (bar, line, pie, scatter, area, etc.)
85
+ * - Data: JSON array of data objects
86
+ * - XField: Field name for X axis (for bar, line, scatter, area)
87
+ * - YField: Field name for Y axis (for bar, line, scatter, area)
88
+ * - ThetaField: Field name for pie slice size (for pie charts)
89
+ * - ColorField: Field name for color encoding (optional)
90
+ * - Title: Chart title (optional)
91
+ * - Width: Chart width in pixels (optional, default: 400)
92
+ * - Height: Chart height in pixels (optional, default: 300)
93
+ * - VegaLiteSpec: Full Vega-Lite JSON spec (optional, overrides other params)
94
+ *
95
+ * @returns A promise resolving to an ActionResultSimple with:
96
+ * - Success: true if chart was generated successfully
97
+ * - ResultCode: "SUCCESS" or error code
98
+ * - Message: The SVG string or error message
99
+ */
100
+ async InternalRunAction(params) {
101
+ try {
102
+ // Check if a full Vega-Lite spec was provided
103
+ const specParam = this.getParamValue(params, 'VegaLiteSpec');
104
+ let vlSpec;
105
+ if (specParam) {
106
+ // Use the provided spec directly
107
+ vlSpec = this.parseJSON(specParam, 'VegaLiteSpec');
108
+ }
109
+ else {
110
+ // Build spec from individual parameters
111
+ const chartType = this.getParamValue(params, 'ChartType');
112
+ const dataParam = this.getParamValue(params, 'Data');
113
+ if (!chartType) {
114
+ return {
115
+ Success: false,
116
+ Message: "ChartType parameter is required (or provide VegaLiteSpec)",
117
+ ResultCode: "MISSING_PARAMETERS"
118
+ };
119
+ }
120
+ if (!dataParam) {
121
+ return {
122
+ Success: false,
123
+ Message: "Data parameter is required (or provide VegaLiteSpec)",
124
+ ResultCode: "MISSING_PARAMETERS"
125
+ };
126
+ }
127
+ const data = this.parseJSON(dataParam, 'Data');
128
+ if (!Array.isArray(data)) {
129
+ return {
130
+ Success: false,
131
+ Message: "Data parameter must be a JSON array",
132
+ ResultCode: "INVALID_DATA"
133
+ };
134
+ }
135
+ // Build the Vega-Lite spec
136
+ vlSpec = this.buildVegaLiteSpec(params, chartType.toLowerCase(), data);
137
+ }
138
+ // Compile Vega-Lite to Vega
139
+ const vegaSpec = vegaLite.compile(vlSpec).spec;
140
+ // Create a headless view and render to SVG
141
+ const view = new vega.View(vega.parse(vegaSpec), { renderer: 'none' });
142
+ const svg = await view.toSVG();
143
+ return {
144
+ Success: true,
145
+ ResultCode: "SUCCESS",
146
+ Message: svg
147
+ };
148
+ }
149
+ catch (error) {
150
+ return {
151
+ Success: false,
152
+ Message: `Failed to generate chart: ${error instanceof Error ? error.message : String(error)}`,
153
+ ResultCode: "CHART_GENERATION_FAILED"
154
+ };
155
+ }
156
+ }
157
+ /**
158
+ * Builds a Vega-Lite specification from action parameters
159
+ */
160
+ buildVegaLiteSpec(params, chartType, data) {
161
+ const title = this.getParamValue(params, 'Title');
162
+ const width = parseInt(this.getParamValue(params, 'Width') || '400');
163
+ const height = parseInt(this.getParamValue(params, 'Height') || '300');
164
+ const baseSpec = {
165
+ $schema: "https://vega.github.io/schema/vega-lite/v5.json",
166
+ width,
167
+ height,
168
+ data: { values: data }
169
+ };
170
+ if (title) {
171
+ baseSpec.title = title;
172
+ }
173
+ // Build encoding based on chart type
174
+ switch (chartType) {
175
+ case 'bar':
176
+ case 'line':
177
+ case 'area':
178
+ case 'point':
179
+ case 'scatter':
180
+ baseSpec.mark = chartType === 'scatter' ? 'point' : chartType;
181
+ baseSpec.encoding = this.buildCartesianEncoding(params);
182
+ break;
183
+ case 'pie':
184
+ case 'arc':
185
+ baseSpec.mark = 'arc';
186
+ baseSpec.encoding = this.buildPieEncoding(params);
187
+ break;
188
+ default:
189
+ throw new Error(`Unsupported chart type: ${chartType}. Supported types: bar, line, area, point, scatter, pie`);
190
+ }
191
+ return baseSpec;
192
+ }
193
+ /**
194
+ * Builds encoding for Cartesian charts (bar, line, scatter, area)
195
+ */
196
+ buildCartesianEncoding(params) {
197
+ const xField = this.getParamValue(params, 'XField');
198
+ const yField = this.getParamValue(params, 'YField');
199
+ const colorField = this.getParamValue(params, 'ColorField');
200
+ if (!xField || !yField) {
201
+ throw new Error("XField and YField are required for this chart type");
202
+ }
203
+ const encoding = {
204
+ x: { field: xField, type: this.inferFieldType(xField) },
205
+ y: { field: yField, type: 'quantitative' }
206
+ };
207
+ if (colorField) {
208
+ encoding.color = { field: colorField, type: 'nominal' };
209
+ }
210
+ return encoding;
211
+ }
212
+ /**
213
+ * Builds encoding for pie/arc charts
214
+ */
215
+ buildPieEncoding(params) {
216
+ const thetaField = this.getParamValue(params, 'ThetaField');
217
+ const colorField = this.getParamValue(params, 'ColorField');
218
+ if (!thetaField) {
219
+ throw new Error("ThetaField is required for pie charts");
220
+ }
221
+ const encoding = {
222
+ theta: { field: thetaField, type: 'quantitative' }
223
+ };
224
+ if (colorField) {
225
+ encoding.color = { field: colorField, type: 'nominal' };
226
+ }
227
+ return encoding;
228
+ }
229
+ /**
230
+ * Infers the Vega-Lite field type from field name
231
+ */
232
+ inferFieldType(fieldName) {
233
+ const lowerName = fieldName.toLowerCase();
234
+ // Temporal hints
235
+ if (lowerName.includes('date') || lowerName.includes('time') || lowerName.includes('year') || lowerName.includes('month')) {
236
+ return 'temporal';
237
+ }
238
+ // Quantitative hints
239
+ if (lowerName.includes('count') || lowerName.includes('value') || lowerName.includes('amount') || lowerName.includes('total')) {
240
+ return 'quantitative';
241
+ }
242
+ // Default to nominal for categorical data
243
+ return 'nominal';
244
+ }
245
+ /**
246
+ * Helper to safely parse JSON that might already be an object
247
+ */
248
+ parseJSON(value, paramName) {
249
+ // If it's already an object/array, return it
250
+ if (typeof value === 'object' && value !== null) {
251
+ return value;
252
+ }
253
+ // If it's a string, parse it
254
+ if (typeof value === 'string') {
255
+ try {
256
+ return JSON.parse(value);
257
+ }
258
+ catch (error) {
259
+ throw new Error(`Parameter '${paramName}' contains invalid JSON: ${error instanceof Error ? error.message : String(error)}`);
260
+ }
261
+ }
262
+ // For other types, error
263
+ throw new Error(`Parameter '${paramName}' must be a JSON string or object. Received ${typeof value}.`);
264
+ }
265
+ /**
266
+ * Helper to get parameter value by name (case-insensitive)
267
+ */
268
+ getParamValue(params, paramName) {
269
+ const param = params.Params.find(p => p.Name.trim().toLowerCase() === paramName.toLowerCase());
270
+ if (param?.Value && typeof param.Value === 'string') {
271
+ return param?.Value?.trim() || null;
272
+ }
273
+ else {
274
+ return param?.Value || null;
275
+ }
276
+ }
277
+ };
278
+ exports.CreateSVGChartAction = CreateSVGChartAction;
279
+ exports.CreateSVGChartAction = CreateSVGChartAction = __decorate([
280
+ (0, global_1.RegisterClass)(actions_1.BaseAction, "__CreateSVGChart")
281
+ ], CreateSVGChartAction);
282
+ /**
283
+ * Loader function to ensure the CreateSVGChartAction class is included in the bundle.
284
+ * This prevents tree-shaking from removing the class during the build process.
285
+ */
286
+ function LoadCreateSVGChartAction() {
287
+ // this function is a stub that is used to force the bundler to include the above class in the final bundle and not tree shake them out
288
+ }
289
+ exports.LoadCreateSVGChartAction = LoadCreateSVGChartAction;
290
+ //# sourceMappingURL=create-svg-chart.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-svg-chart.action.js","sourceRoot":"","sources":["../../../src/custom/visualization/create-svg-chart.action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ import { RunActionParams } from '@memberjunction/actions-base';
2
+ import { BaseAction } from '@memberjunction/actions';
3
+ import { SVGActionResult } from './shared/svg-types';
4
+ /**
5
+ * Action that generates SVG diagrams including flowcharts, org charts, and ER diagrams.
6
+ *
7
+ * This action provides server-side SVG generation for structured diagrams, designed for
8
+ * AI agents and workflows to create publication-quality visualizations from structured data.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * // Flowchart example
13
+ * await runAction({
14
+ * ActionName: 'Create SVG Diagram',
15
+ * Params: [
16
+ * { Name: 'DiagramType', Value: 'flow' },
17
+ * { Name: 'Nodes', Value: JSON.stringify([
18
+ * { id: '1', kind: 'start', label: 'Start' },
19
+ * { id: '2', kind: 'process', label: 'Process Data' },
20
+ * { id: '3', kind: 'end', label: 'End' }
21
+ * ]) },
22
+ * { Name: 'Edges', Value: JSON.stringify([
23
+ * { from: '1', to: '2', label: 'Begin' },
24
+ * { from: '2', to: '3' }
25
+ * ]) },
26
+ * { Name: 'Direction', Value: 'TB' },
27
+ * { Name: 'Width', Value: '800' },
28
+ * { Name: 'Height', Value: '600' }
29
+ * ]
30
+ * });
31
+ *
32
+ * // Org chart example
33
+ * await runAction({
34
+ * ActionName: 'Create SVG Diagram',
35
+ * Params: [
36
+ * { Name: 'DiagramType', Value: 'org' },
37
+ * { Name: 'Nodes', Value: JSON.stringify({
38
+ * id: '1',
39
+ * label: 'CEO',
40
+ * role: 'Chief Executive Officer',
41
+ * children: [
42
+ * { id: '2', label: 'CTO', role: 'Technology' },
43
+ * { id: '3', label: 'CFO', role: 'Finance' }
44
+ * ]
45
+ * }) }
46
+ * ]
47
+ * });
48
+ * ```
49
+ */
50
+ export declare class CreateSVGDiagramAction extends BaseAction {
51
+ /**
52
+ * Generates an SVG diagram from the provided data and configuration
53
+ *
54
+ * @param params - The action parameters containing:
55
+ * - DiagramType: Type of diagram ('flow' | 'org' | 'er')
56
+ * - Nodes: JSON array or object of nodes
57
+ * - Edges: JSON array of edges (for flow and ER diagrams)
58
+ * - Direction: Layout direction ('TB' | 'LR' | 'RL' | 'BT') for flow diagrams
59
+ * - Width: Diagram width in pixels (optional, default: 800)
60
+ * - Height: Diagram height in pixels (optional, default: 600)
61
+ * - Title: Diagram title (optional)
62
+ * - Palette: Color palette ('mjDefault' | 'gray' | 'pastel' | 'highContrast')
63
+ * - Seed: Random seed for deterministic layouts (optional)
64
+ *
65
+ * @returns A promise resolving to an SVGActionResult with:
66
+ * - Success: true if diagram was generated successfully
67
+ * - ResultCode: "SUCCESS" or error code
68
+ * - Message: The SVG string or error message
69
+ * - svg: The SVG XML string
70
+ * - width: Diagram width in pixels
71
+ * - height: Diagram height in pixels
72
+ */
73
+ protected InternalRunAction(params: RunActionParams): Promise<SVGActionResult>;
74
+ /**
75
+ * Renders a flowchart using dagre layout
76
+ */
77
+ private renderFlowDiagram;
78
+ /**
79
+ * Gets dimensions for flow node based on kind
80
+ */
81
+ private getNodeDimensions;
82
+ /**
83
+ * Renders a single flow node
84
+ */
85
+ private renderFlowNode;
86
+ /**
87
+ * Gets color index for node kind
88
+ */
89
+ private getNodeColorIndex;
90
+ /**
91
+ * Renders an ellipse shape
92
+ */
93
+ private renderEllipse;
94
+ /**
95
+ * Renders a diamond shape
96
+ */
97
+ private renderDiamond;
98
+ /**
99
+ * Renders a rounded rectangle
100
+ */
101
+ private renderRoundedRect;
102
+ /**
103
+ * Renders a flow edge
104
+ */
105
+ private renderFlowEdge;
106
+ /**
107
+ * Renders an org chart using d3-hierarchy
108
+ */
109
+ private renderOrgChart;
110
+ /**
111
+ * Renders an org chart link
112
+ */
113
+ private renderOrgLink;
114
+ /**
115
+ * Renders an org chart node
116
+ */
117
+ private renderOrgNode;
118
+ /**
119
+ * Renders an ER diagram using dagre layout
120
+ */
121
+ private renderERDiagram;
122
+ /**
123
+ * Renders an ER table
124
+ */
125
+ private renderERTable;
126
+ /**
127
+ * Renders an ER relation
128
+ */
129
+ private renderERRelation;
130
+ /**
131
+ * Adds a title to the SVG
132
+ */
133
+ private addTitle;
134
+ /**
135
+ * Helper to safely parse JSON that might already be an object
136
+ */
137
+ private parseJSON;
138
+ /**
139
+ * Helper to ensure a parameter value is a string, with type conversion and validation
140
+ */
141
+ private ensureString;
142
+ /**
143
+ * Helper to get parameter value by name (case-insensitive)
144
+ */
145
+ private getParamValue;
146
+ }
147
+ /**
148
+ * Loader function to ensure the CreateSVGDiagramAction class is included in the bundle.
149
+ */
150
+ export declare function LoadCreateSVGDiagramAction(): void;
151
+ //# sourceMappingURL=create-svg-diagram.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-svg-diagram.action.d.ts","sourceRoot":"","sources":["../../../src/custom/visualization/create-svg-diagram.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAKrD,OAAO,EAOH,eAAe,EAIlB,MAAM,oBAAoB,CAAC;AAI5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBACa,sBAAuB,SAAQ,UAAU;IAClD;;;;;;;;;;;;;;;;;;;;;OAqBG;cACa,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAsEpF;;OAEG;YACW,iBAAiB;IA0F/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgDtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuCtB;;OAEG;YACW,cAAc;IA+D5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuErB;;OAEG;YACW,eAAe;IA2F7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAgFrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAahB;;OAEG;IACH,OAAO,CAAC,SAAS;IAuBjB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,aAAa;CAQxB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,SAEzC"}