@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,95 @@
1
+ import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
2
+ import { BaseAction } from "@memberjunction/actions";
3
+ /**
4
+ * Action that retrieves comprehensive database schema information using MemberJunction's
5
+ * rich metadata layer instead of raw INFORMATION_SCHEMA queries.
6
+ *
7
+ * This action provides research agents with deep understanding of the data model including:
8
+ * - Business context (descriptions, display names)
9
+ * - Field metadata (types, defaults, value lists, related entities)
10
+ * - Semantic relationships (not just foreign keys)
11
+ * - Virtual entities (logical, not physical)
12
+ * - API permissions and settings
13
+ * - Audit configuration
14
+ * - UI display preferences
15
+ *
16
+ * Features:
17
+ * - Entity name pattern filtering with wildcards
18
+ * - Schema filtering (focus on specific schemas)
19
+ * - Optional field details with rich metadata
20
+ * - Optional relationship information with semantic meaning
21
+ * - Optional permission information
22
+ * - Virtual entity support
23
+ * - Scope-based filtering
24
+ * - Configurable output size limits
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Get all customer-related entities with full metadata
29
+ * await runAction({
30
+ * ActionName: 'Explore Database Schema',
31
+ * Params: [{
32
+ * Name: 'EntityPattern',
33
+ * Value: '%Customer%'
34
+ * }, {
35
+ * Name: 'IncludeFields',
36
+ * Value: true
37
+ * }, {
38
+ * Name: 'IncludeRelationships',
39
+ * Value: true
40
+ * }]
41
+ * });
42
+ * ```
43
+ */
44
+ export declare class ExploreDatabaseSchemaAction extends BaseAction {
45
+ protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
46
+ /**
47
+ * Filter entities based on parameters
48
+ */
49
+ private filterEntities;
50
+ /**
51
+ * Check if entity name matches pattern (supports % and * wildcards)
52
+ */
53
+ private matchesPattern;
54
+ /**
55
+ * Format EntityInfo into research-friendly structure
56
+ */
57
+ private formatEntityInfo;
58
+ /**
59
+ * Format EntityFieldInfo into research-friendly structure
60
+ */
61
+ private formatFieldInfo;
62
+ /**
63
+ * Format EntityRelationshipInfo into research-friendly structure
64
+ */
65
+ private formatRelationshipInfo;
66
+ /**
67
+ * Group entities by schema name
68
+ */
69
+ private groupBySchema;
70
+ /**
71
+ * Build detailed message with entity information for agent consumption
72
+ */
73
+ private buildDetailedMessage;
74
+ /**
75
+ * Calculate summary statistics
76
+ */
77
+ private calculateSummary;
78
+ /**
79
+ * Helper to get string parameter value
80
+ */
81
+ private getStringParam;
82
+ /**
83
+ * Helper to get numeric parameter value
84
+ */
85
+ private getNumericParam;
86
+ /**
87
+ * Helper to get boolean parameter value
88
+ */
89
+ private getBooleanParam;
90
+ }
91
+ /**
92
+ * Load function to ensure the class is registered and not tree-shaken
93
+ */
94
+ export declare function LoadExploreDatabaseSchemaAction(): void;
95
+ //# sourceMappingURL=explore-database-schema.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explore-database-schema.action.d.ts","sourceRoot":"","sources":["../../../src/custom/data/explore-database-schema.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBACa,2BAA4B,SAAQ,UAAU;cAEvC,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA8EvF;;OAEG;IACH,OAAO,CAAC,cAAc;IA2CtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgFxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwDvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,aAAa;IA+BrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+G5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;IACH,OAAO,CAAC,eAAe;CAY1B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,SAE9C"}
@@ -0,0 +1,499 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LoadExploreDatabaseSchemaAction = exports.ExploreDatabaseSchemaAction = void 0;
10
+ const global_1 = require("@memberjunction/global");
11
+ const actions_1 = require("@memberjunction/actions");
12
+ const global_2 = require("@memberjunction/global");
13
+ const core_1 = require("@memberjunction/core");
14
+ /**
15
+ * Action that retrieves comprehensive database schema information using MemberJunction's
16
+ * rich metadata layer instead of raw INFORMATION_SCHEMA queries.
17
+ *
18
+ * This action provides research agents with deep understanding of the data model including:
19
+ * - Business context (descriptions, display names)
20
+ * - Field metadata (types, defaults, value lists, related entities)
21
+ * - Semantic relationships (not just foreign keys)
22
+ * - Virtual entities (logical, not physical)
23
+ * - API permissions and settings
24
+ * - Audit configuration
25
+ * - UI display preferences
26
+ *
27
+ * Features:
28
+ * - Entity name pattern filtering with wildcards
29
+ * - Schema filtering (focus on specific schemas)
30
+ * - Optional field details with rich metadata
31
+ * - Optional relationship information with semantic meaning
32
+ * - Optional permission information
33
+ * - Virtual entity support
34
+ * - Scope-based filtering
35
+ * - Configurable output size limits
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // Get all customer-related entities with full metadata
40
+ * await runAction({
41
+ * ActionName: 'Explore Database Schema',
42
+ * Params: [{
43
+ * Name: 'EntityPattern',
44
+ * Value: '%Customer%'
45
+ * }, {
46
+ * Name: 'IncludeFields',
47
+ * Value: true
48
+ * }, {
49
+ * Name: 'IncludeRelationships',
50
+ * Value: true
51
+ * }]
52
+ * });
53
+ * ```
54
+ */
55
+ let ExploreDatabaseSchemaAction = class ExploreDatabaseSchemaAction extends actions_1.BaseAction {
56
+ async InternalRunAction(params) {
57
+ try {
58
+ // Extract parameters
59
+ const entityPattern = this.getStringParam(params, "entitypattern");
60
+ const schemaFilter = this.getStringParam(params, "schemafilter");
61
+ const includeFields = this.getBooleanParam(params, "includefields", true);
62
+ const includeRelationships = this.getBooleanParam(params, "includerelationships", true);
63
+ const includePermissions = this.getBooleanParam(params, "includepermissions", false);
64
+ const includeVirtualEntities = this.getBooleanParam(params, "includevirtualentities", true);
65
+ const maxEntities = this.getNumericParam(params, "maxentities", 100);
66
+ const scopeFilter = this.getStringParam(params, "scopefilter");
67
+ const startTime = Date.now();
68
+ // Get MJ metadata
69
+ const md = new core_1.Metadata();
70
+ let entities = md.Entities;
71
+ // Apply filters
72
+ entities = this.filterEntities(entities, {
73
+ entityPattern,
74
+ schemaFilter,
75
+ includeVirtualEntities,
76
+ scopeFilter,
77
+ maxEntities
78
+ });
79
+ if (entities.length === 0) {
80
+ return {
81
+ Success: false,
82
+ ResultCode: "NO_ENTITIES_FOUND",
83
+ Message: "No entities match the specified filter criteria"
84
+ };
85
+ }
86
+ // Build result objects
87
+ const formattedEntities = entities.map(entity => this.formatEntityInfo(entity, {
88
+ includeFields,
89
+ includeRelationships,
90
+ includePermissions
91
+ }));
92
+ // Group by schema
93
+ const schemas = this.groupBySchema(formattedEntities);
94
+ // Calculate summary
95
+ const summary = this.calculateSummary(formattedEntities);
96
+ const executionTimeMs = Date.now() - startTime;
97
+ // Build detailed result message with entity information
98
+ const message = this.buildDetailedMessage(formattedEntities, schemas, summary, {
99
+ includeFields,
100
+ includeRelationships
101
+ });
102
+ return {
103
+ Success: true,
104
+ ResultCode: "SUCCESS",
105
+ Message: message,
106
+ Entities: formattedEntities,
107
+ Schemas: schemas,
108
+ EntitySummary: summary,
109
+ ExecutionTimeMs: executionTimeMs
110
+ };
111
+ }
112
+ catch (error) {
113
+ const errorMessage = error instanceof Error ? error.message : String(error);
114
+ return {
115
+ Success: false,
116
+ ResultCode: "EXPLORATION_FAILED",
117
+ Message: `Schema exploration failed: ${errorMessage}`
118
+ };
119
+ }
120
+ }
121
+ /**
122
+ * Filter entities based on parameters
123
+ */
124
+ filterEntities(entities, filters) {
125
+ return entities.filter(entity => {
126
+ // Entity name pattern filter (supports wildcards % and *)
127
+ if (filters.entityPattern) {
128
+ if (!this.matchesPattern(entity.Name, filters.entityPattern)) {
129
+ return false;
130
+ }
131
+ }
132
+ // Schema filter (comma-separated list)
133
+ if (filters.schemaFilter) {
134
+ const schemas = filters.schemaFilter.split(',').map(s => s.trim().toLowerCase());
135
+ if (!schemas.includes(entity.SchemaName.toLowerCase())) {
136
+ return false;
137
+ }
138
+ }
139
+ // Virtual entity filter
140
+ if (!filters.includeVirtualEntities && entity.VirtualEntity) {
141
+ return false;
142
+ }
143
+ // Scope filter
144
+ if (filters.scopeFilter && entity.ScopeDefault) {
145
+ const scopes = entity.ScopeDefault.split(',').map(s => s.trim().toLowerCase());
146
+ if (!scopes.includes(filters.scopeFilter.toLowerCase()) && !scopes.includes('all')) {
147
+ return false;
148
+ }
149
+ }
150
+ return true;
151
+ }).slice(0, filters.maxEntities);
152
+ }
153
+ /**
154
+ * Check if entity name matches pattern (supports % and * wildcards)
155
+ */
156
+ matchesPattern(name, pattern) {
157
+ // Convert SQL-style % wildcards to regex-style .*
158
+ // Also support * as wildcard
159
+ const regexPattern = pattern
160
+ .replace(/[.+?^${}()|[\]\\]/g, '\\$&') // Escape special regex chars
161
+ .replace(/%/g, '.*') // Convert % to .*
162
+ .replace(/\*/g, '.*'); // Convert * to .*
163
+ const regex = new RegExp(`^${regexPattern}$`, 'i');
164
+ return regex.test(name);
165
+ }
166
+ /**
167
+ * Format EntityInfo into research-friendly structure
168
+ */
169
+ formatEntityInfo(entity, options) {
170
+ const result = {
171
+ ID: entity.ID,
172
+ Name: entity.Name,
173
+ DisplayName: entity.DisplayName || entity.Name,
174
+ Description: entity.Description,
175
+ SchemaName: entity.SchemaName,
176
+ BaseTable: entity.BaseTable,
177
+ BaseView: entity.BaseView,
178
+ IsVirtual: entity.VirtualEntity,
179
+ Icon: entity.Icon,
180
+ // API Settings
181
+ APISettings: {
182
+ IncludeInAPI: entity.IncludeInAPI,
183
+ AllowCreateAPI: entity.AllowCreateAPI,
184
+ AllowUpdateAPI: entity.AllowUpdateAPI,
185
+ AllowDeleteAPI: entity.AllowDeleteAPI,
186
+ AllowUserSearchAPI: entity.AllowUserSearchAPI,
187
+ AllowAllRowsAPI: entity.AllowAllRowsAPI,
188
+ CustomResolverAPI: entity.CustomResolverAPI
189
+ },
190
+ // Audit Settings
191
+ AuditSettings: {
192
+ TrackRecordChanges: entity.TrackRecordChanges,
193
+ AuditRecordAccess: entity.AuditRecordAccess,
194
+ AuditViewRuns: entity.AuditViewRuns
195
+ },
196
+ // Search Settings
197
+ SearchSettings: {
198
+ FullTextSearchEnabled: entity.FullTextSearchEnabled,
199
+ FullTextCatalog: entity.FullTextCatalog,
200
+ FullTextIndex: entity.FullTextIndex
201
+ },
202
+ // Other Settings
203
+ AllowRecordMerge: entity.AllowRecordMerge,
204
+ CascadeDeletes: entity.CascadeDeletes,
205
+ DeleteType: entity.DeleteType,
206
+ UserViewMaxRows: entity.UserViewMaxRows,
207
+ ScopeDefault: entity.ScopeDefault
208
+ };
209
+ // Include fields if requested
210
+ if (options.includeFields && entity.Fields) {
211
+ result.Fields = entity.Fields.map(field => this.formatFieldInfo(field));
212
+ result.FieldCount = result.Fields.length;
213
+ }
214
+ // Include relationships if requested
215
+ if (options.includeRelationships && entity.RelatedEntities) {
216
+ result.Relationships = entity.RelatedEntities.map(rel => this.formatRelationshipInfo(rel));
217
+ result.RelationshipCount = result.Relationships.length;
218
+ }
219
+ // Include permissions if requested
220
+ if (options.includePermissions && entity.Permissions) {
221
+ result.Permissions = entity.Permissions.map(perm => ({
222
+ Role: perm.Role,
223
+ RoleSQLName: perm.RoleSQLName,
224
+ CanCreate: perm.CanCreate,
225
+ CanRead: perm.CanRead,
226
+ CanUpdate: perm.CanUpdate,
227
+ CanDelete: perm.CanDelete
228
+ }));
229
+ result.PermissionCount = result.Permissions.length;
230
+ }
231
+ return result;
232
+ }
233
+ /**
234
+ * Format EntityFieldInfo into research-friendly structure
235
+ */
236
+ formatFieldInfo(field) {
237
+ const fieldInfo = {
238
+ Name: field.Name,
239
+ DisplayName: field.DisplayName || field.Name,
240
+ Description: field.Description,
241
+ Type: field.Type,
242
+ Length: field.Length,
243
+ Precision: field.Precision,
244
+ Scale: field.Scale,
245
+ AllowsNull: field.AllowsNull,
246
+ DefaultValue: field.DefaultValue,
247
+ IsPrimaryKey: field.IsPrimaryKey,
248
+ IsUnique: field.IsUnique,
249
+ IsNameField: field.IsNameField,
250
+ IsVirtual: field.IsVirtual,
251
+ AutoIncrement: field.AutoIncrement,
252
+ Category: field.Category,
253
+ // Related entity info (for foreign keys)
254
+ RelatedEntity: field.RelatedEntity,
255
+ RelatedEntityFieldName: field.RelatedEntityFieldName,
256
+ RelatedEntityDisplayType: field.RelatedEntityDisplayType,
257
+ // Value list (for dropdowns/validation)
258
+ ValueListType: field.ValueListType,
259
+ // API settings
260
+ AllowUpdateAPI: field.AllowUpdateAPI,
261
+ AllowUpdateInView: field.AllowUpdateInView,
262
+ IncludeInUserSearchAPI: field.IncludeInUserSearchAPI,
263
+ FullTextSearchEnabled: field.FullTextSearchEnabled,
264
+ // UI settings
265
+ DefaultInView: field.DefaultInView,
266
+ IncludeInGeneratedForm: field.IncludeInGeneratedForm,
267
+ GeneratedFormSection: field.GeneratedFormSection,
268
+ DefaultColumnWidth: field.DefaultColumnWidth,
269
+ // Scope
270
+ ScopeDefault: field.ScopeDefault,
271
+ Status: field.Status
272
+ };
273
+ // Include value list values if available
274
+ if (field.EntityFieldValues && field.EntityFieldValues.length > 0) {
275
+ fieldInfo.EntityFieldValues = field.EntityFieldValues.map(v => ({
276
+ Value: v.Value,
277
+ Code: v.Code,
278
+ Description: v.Description,
279
+ Sequence: v.Sequence
280
+ }));
281
+ }
282
+ return fieldInfo;
283
+ }
284
+ /**
285
+ * Format EntityRelationshipInfo into research-friendly structure
286
+ */
287
+ formatRelationshipInfo(rel) {
288
+ return {
289
+ ID: rel.ID,
290
+ Type: rel.Type,
291
+ RelatedEntity: rel.RelatedEntity,
292
+ RelatedEntityClassName: rel.RelatedEntityClassName,
293
+ EntityKeyField: rel.EntityKeyField,
294
+ RelatedEntityJoinField: rel.RelatedEntityJoinField,
295
+ DisplayName: rel.DisplayName,
296
+ DisplayInForm: rel.DisplayInForm,
297
+ DisplayLocation: rel.DisplayLocation,
298
+ BundleInAPI: rel.BundleInAPI,
299
+ IncludeInParentAllQuery: rel.IncludeInParentAllQuery,
300
+ Sequence: rel.Sequence
301
+ };
302
+ }
303
+ /**
304
+ * Group entities by schema name
305
+ */
306
+ groupBySchema(entities) {
307
+ const schemaMap = {};
308
+ for (const entity of entities) {
309
+ const schemaName = entity.SchemaName;
310
+ if (!schemaMap[schemaName]) {
311
+ schemaMap[schemaName] = {
312
+ SchemaName: schemaName,
313
+ Entities: [],
314
+ EntityCount: 0,
315
+ VirtualEntityCount: 0,
316
+ PhysicalEntityCount: 0
317
+ };
318
+ }
319
+ schemaMap[schemaName].Entities.push(entity);
320
+ schemaMap[schemaName].EntityCount++;
321
+ if (entity.IsVirtual) {
322
+ schemaMap[schemaName].VirtualEntityCount++;
323
+ }
324
+ else {
325
+ schemaMap[schemaName].PhysicalEntityCount++;
326
+ }
327
+ }
328
+ return Object.values(schemaMap).sort((a, b) => a.SchemaName.localeCompare(b.SchemaName));
329
+ }
330
+ /**
331
+ * Build detailed message with entity information for agent consumption
332
+ */
333
+ buildDetailedMessage(formattedEntities, schemas, summary, options) {
334
+ const lines = [];
335
+ // Summary header
336
+ lines.push(`# Database Schema Exploration Results`);
337
+ lines.push(`\nFound ${formattedEntities.length} entity(ies) across ${schemas.length} schema(s)`);
338
+ if (options.includeFields) {
339
+ lines.push(`Total Fields: ${summary.TotalFields}`);
340
+ }
341
+ if (options.includeRelationships) {
342
+ lines.push(`Total Relationships: ${summary.TotalRelationships}`);
343
+ }
344
+ lines.push(`\n---\n`);
345
+ // Entity details grouped by schema
346
+ for (const schema of schemas) {
347
+ lines.push(`\n## Schema: ${schema.SchemaName}`);
348
+ lines.push(`Entities: ${schema.EntityCount} (${schema.PhysicalEntityCount} physical, ${schema.VirtualEntityCount} virtual)\n`);
349
+ for (const entity of schema.Entities) {
350
+ lines.push(`\n### ${entity.DisplayName} (${entity.Name})`);
351
+ if (entity.Description) {
352
+ lines.push(`**Description:** ${entity.Description}`);
353
+ }
354
+ lines.push(`**Base Table:** ${entity.BaseTable || 'N/A'}`);
355
+ lines.push(`**Base View:** ${entity.BaseView || 'N/A'}`);
356
+ lines.push(`**Virtual:** ${entity.IsVirtual ? 'Yes' : 'No'}`);
357
+ lines.push(`**Schema:** ${entity.SchemaName}`);
358
+ // API Settings (condensed)
359
+ const apiFlags = [];
360
+ if (entity.APISettings.IncludeInAPI)
361
+ apiFlags.push('IncludeInAPI');
362
+ if (entity.APISettings.AllowCreateAPI)
363
+ apiFlags.push('Create');
364
+ if (entity.APISettings.AllowUpdateAPI)
365
+ apiFlags.push('Update');
366
+ if (entity.APISettings.AllowDeleteAPI)
367
+ apiFlags.push('Delete');
368
+ if (entity.APISettings.AllowUserSearchAPI)
369
+ apiFlags.push('Search');
370
+ if (apiFlags.length > 0) {
371
+ lines.push(`**API Support:** ${apiFlags.join(', ')}`);
372
+ }
373
+ // Fields
374
+ if (options.includeFields && entity.Fields && entity.Fields.length > 0) {
375
+ lines.push(`\n#### Fields (${entity.Fields.length})`);
376
+ for (const field of entity.Fields) {
377
+ const fieldLine = [];
378
+ fieldLine.push(`- **${field.DisplayName || field.Name}** (${field.Name})`);
379
+ fieldLine.push(`Type: ${field.Type}`);
380
+ if (field.Length)
381
+ fieldLine.push(`Length: ${field.Length}`);
382
+ if (field.IsPrimaryKey)
383
+ fieldLine.push('PRIMARY KEY');
384
+ if (field.IsUnique)
385
+ fieldLine.push('UNIQUE');
386
+ if (!field.AllowsNull)
387
+ fieldLine.push('NOT NULL');
388
+ if (field.DefaultValue)
389
+ fieldLine.push(`Default: ${field.DefaultValue}`);
390
+ // Related entity info
391
+ if (field.RelatedEntity) {
392
+ fieldLine.push(`→ Related to: ${field.RelatedEntity}.${field.RelatedEntityFieldName || 'ID'}`);
393
+ }
394
+ // Value list
395
+ if (field.EntityFieldValues && field.EntityFieldValues.length > 0) {
396
+ const values = field.EntityFieldValues.map((v) => v.Value).join(', ');
397
+ fieldLine.push(`Values: [${values}]`);
398
+ }
399
+ lines.push(` ${fieldLine.join(' | ')}`);
400
+ if (field.Description) {
401
+ lines.push(` *${field.Description}*`);
402
+ }
403
+ }
404
+ }
405
+ // Relationships
406
+ if (options.includeRelationships && entity.Relationships && entity.Relationships.length > 0) {
407
+ lines.push(`\n#### Relationships (${entity.Relationships.length})`);
408
+ for (const rel of entity.Relationships) {
409
+ const relLine = [];
410
+ relLine.push(`- **${rel.DisplayName || rel.RelatedEntity}**`);
411
+ relLine.push(`Type: ${rel.Type}`);
412
+ relLine.push(`Entity: ${rel.RelatedEntity}`);
413
+ relLine.push(`Join: ${entity.Name}.${rel.EntityKeyField} → ${rel.RelatedEntity}.${rel.RelatedEntityJoinField}`);
414
+ if (rel.BundleInAPI)
415
+ relLine.push('BundleInAPI');
416
+ if (rel.DisplayInForm)
417
+ relLine.push(`Display: ${rel.DisplayLocation}`);
418
+ lines.push(` ${relLine.join(' | ')}`);
419
+ }
420
+ }
421
+ lines.push(''); // Blank line between entities
422
+ }
423
+ }
424
+ return lines.join('\n');
425
+ }
426
+ /**
427
+ * Calculate summary statistics
428
+ */
429
+ calculateSummary(formattedEntities) {
430
+ const summary = {
431
+ TotalEntities: formattedEntities.length,
432
+ PhysicalEntities: formattedEntities.filter(e => !e.IsVirtual).length,
433
+ VirtualEntities: formattedEntities.filter(e => e.IsVirtual).length,
434
+ TotalFields: 0,
435
+ TotalRelationships: 0,
436
+ SchemaList: [...new Set(formattedEntities.map(e => e.SchemaName))].sort(),
437
+ EntitiesWithAPI: formattedEntities.filter(e => e.APISettings.IncludeInAPI).length,
438
+ EntitiesWithFullTextSearch: formattedEntities.filter(e => e.SearchSettings.FullTextSearchEnabled).length,
439
+ EntitiesWithAudit: formattedEntities.filter(e => e.AuditSettings.TrackRecordChanges).length
440
+ };
441
+ // Count fields and relationships if included
442
+ for (const entity of formattedEntities) {
443
+ if (entity.FieldCount != null) {
444
+ summary.TotalFields += entity.FieldCount;
445
+ }
446
+ if (entity.RelationshipCount != null) {
447
+ summary.TotalRelationships += entity.RelationshipCount;
448
+ }
449
+ }
450
+ return summary;
451
+ }
452
+ /**
453
+ * Helper to get string parameter value
454
+ */
455
+ getStringParam(params, paramName) {
456
+ const param = params.Params.find(p => p.Name.toLowerCase() === paramName.toLowerCase() &&
457
+ p.Type === 'Input');
458
+ return param?.Value ? String(param.Value) : undefined;
459
+ }
460
+ /**
461
+ * Helper to get numeric parameter value
462
+ */
463
+ getNumericParam(params, paramName, defaultValue) {
464
+ const param = params.Params.find(p => p.Name.toLowerCase() === paramName.toLowerCase() &&
465
+ p.Type === 'Input');
466
+ if (param?.Value != null) {
467
+ const num = Number(param.Value);
468
+ return isNaN(num) ? defaultValue : num;
469
+ }
470
+ return defaultValue;
471
+ }
472
+ /**
473
+ * Helper to get boolean parameter value
474
+ */
475
+ getBooleanParam(params, paramName, defaultValue) {
476
+ const param = params.Params.find(p => p.Name.toLowerCase() === paramName.toLowerCase() &&
477
+ p.Type === 'Input');
478
+ if (param?.Value != null) {
479
+ const val = String(param.Value).toLowerCase();
480
+ if (val === 'true' || val === '1' || val === 'yes')
481
+ return true;
482
+ if (val === 'false' || val === '0' || val === 'no')
483
+ return false;
484
+ }
485
+ return defaultValue;
486
+ }
487
+ };
488
+ exports.ExploreDatabaseSchemaAction = ExploreDatabaseSchemaAction;
489
+ exports.ExploreDatabaseSchemaAction = ExploreDatabaseSchemaAction = __decorate([
490
+ (0, global_1.RegisterClass)(actions_1.BaseAction, "Explore Database Schema")
491
+ ], ExploreDatabaseSchemaAction);
492
+ /**
493
+ * Load function to ensure the class is registered and not tree-shaken
494
+ */
495
+ function LoadExploreDatabaseSchemaAction() {
496
+ global_2.MJGlobal.Instance.ClassFactory.GetRegistration(actions_1.BaseAction, "Explore Database Schema");
497
+ }
498
+ exports.LoadExploreDatabaseSchemaAction = LoadExploreDatabaseSchemaAction;
499
+ //# sourceMappingURL=explore-database-schema.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explore-database-schema.action.js","sourceRoot":"","sources":["../../../src/custom/data/explore-database-schema.action.ts"],"names":[],"mappings":"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"}