@enfyra/mcp-server 0.1.69 → 0.1.71

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 (248) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/config-local-adapters.d.ts +18 -0
  3. package/dist/lib/config-local-adapters.js +271 -0
  4. package/dist/lib/config-local-adapters.js.map +1 -0
  5. package/dist/lib/config-local-contracts.d.ts +28 -0
  6. package/dist/lib/config-local-contracts.js +200 -0
  7. package/dist/lib/config-local-contracts.js.map +1 -0
  8. package/dist/lib/config-local-prompts.d.ts +10 -0
  9. package/dist/lib/config-local-prompts.js +185 -0
  10. package/dist/lib/config-local-prompts.js.map +1 -0
  11. package/dist/lib/config-local-types.d.ts +23 -0
  12. package/dist/lib/config-local-types.js +2 -0
  13. package/dist/lib/config-local-types.js.map +1 -0
  14. package/dist/lib/config-local.js +3 -649
  15. package/dist/lib/config-local.js.map +1 -1
  16. package/dist/lib/discovery-tools.d.ts +4 -0
  17. package/dist/lib/discovery-tools.js +546 -0
  18. package/dist/lib/discovery-tools.js.map +1 -0
  19. package/dist/lib/dynamic-repository-builder.d.ts +1 -1
  20. package/dist/lib/dynamic-script-context-contract.d.ts +100 -0
  21. package/dist/lib/dynamic-script-context-contract.js +163 -0
  22. package/dist/lib/dynamic-script-context-contract.js.map +1 -0
  23. package/dist/lib/enfyra-mcp-server.d.ts +3 -0
  24. package/dist/lib/enfyra-mcp-server.js +79 -0
  25. package/dist/lib/enfyra-mcp-server.js.map +1 -0
  26. package/dist/lib/enfyra-tool-logic.d.ts +7 -0
  27. package/dist/lib/enfyra-tool-logic.js +8 -0
  28. package/dist/lib/enfyra-tool-logic.js.map +1 -0
  29. package/dist/lib/enfyra-tool-types.d.ts +27 -0
  30. package/dist/lib/enfyra-tool-types.js +2 -0
  31. package/dist/lib/enfyra-tool-types.js.map +1 -0
  32. package/dist/lib/extension-api-builders.d.ts +17 -0
  33. package/dist/lib/extension-api-builders.js +235 -0
  34. package/dist/lib/extension-api-builders.js.map +1 -0
  35. package/dist/lib/extension-component-builders.d.ts +87 -0
  36. package/dist/lib/extension-component-builders.js +623 -0
  37. package/dist/lib/extension-component-builders.js.map +1 -0
  38. package/dist/lib/extension-contract-review.d.ts +26 -0
  39. package/dist/lib/extension-contract-review.js +187 -0
  40. package/dist/lib/extension-contract-review.js.map +1 -0
  41. package/dist/lib/extension-theme-contract.d.ts +63 -0
  42. package/dist/lib/extension-theme-contract.js +417 -0
  43. package/dist/lib/extension-theme-contract.js.map +1 -0
  44. package/dist/lib/identity-tools.d.ts +4 -0
  45. package/dist/lib/identity-tools.js +46 -0
  46. package/dist/lib/identity-tools.js.map +1 -0
  47. package/dist/lib/log-tools.d.ts +4 -0
  48. package/dist/lib/log-tools.js +65 -0
  49. package/dist/lib/log-tools.js.map +1 -0
  50. package/dist/lib/mcp-example-connect.d.ts +9 -0
  51. package/dist/lib/mcp-example-connect.js +442 -0
  52. package/dist/lib/mcp-example-connect.js.map +1 -0
  53. package/dist/lib/mcp-example-extensions.d.ts +9 -0
  54. package/dist/lib/mcp-example-extensions.js +729 -0
  55. package/dist/lib/mcp-example-extensions.js.map +1 -0
  56. package/dist/lib/mcp-example-files.d.ts +9 -0
  57. package/dist/lib/mcp-example-files.js +51 -0
  58. package/dist/lib/mcp-example-files.js.map +1 -0
  59. package/dist/lib/mcp-example-flows.d.ts +9 -0
  60. package/dist/lib/mcp-example-flows.js +76 -0
  61. package/dist/lib/mcp-example-flows.js.map +1 -0
  62. package/dist/lib/mcp-example-graphql.d.ts +9 -0
  63. package/dist/lib/mcp-example-graphql.js +57 -0
  64. package/dist/lib/mcp-example-graphql.js.map +1 -0
  65. package/dist/lib/mcp-example-handlers-hooks.d.ts +9 -0
  66. package/dist/lib/mcp-example-handlers-hooks.js +328 -0
  67. package/dist/lib/mcp-example-handlers-hooks.js.map +1 -0
  68. package/dist/lib/mcp-example-oauth-setup.d.ts +9 -0
  69. package/dist/lib/mcp-example-oauth-setup.js +41 -0
  70. package/dist/lib/mcp-example-oauth-setup.js.map +1 -0
  71. package/dist/lib/mcp-example-permissions-rls.d.ts +9 -0
  72. package/dist/lib/mcp-example-permissions-rls.js +210 -0
  73. package/dist/lib/mcp-example-permissions-rls.js.map +1 -0
  74. package/dist/lib/mcp-example-queries-deep.d.ts +9 -0
  75. package/dist/lib/mcp-example-queries-deep.js +220 -0
  76. package/dist/lib/mcp-example-queries-deep.js.map +1 -0
  77. package/dist/lib/mcp-example-schema-relations.d.ts +9 -0
  78. package/dist/lib/mcp-example-schema-relations.js +148 -0
  79. package/dist/lib/mcp-example-schema-relations.js.map +1 -0
  80. package/dist/lib/mcp-example-websocket.d.ts +9 -0
  81. package/dist/lib/mcp-example-websocket.js +103 -0
  82. package/dist/lib/mcp-example-websocket.js.map +1 -0
  83. package/dist/lib/mcp-examples.d.ts +5 -5
  84. package/dist/lib/mcp-examples.js +22 -2394
  85. package/dist/lib/mcp-examples.js.map +1 -1
  86. package/dist/lib/method-tools.d.ts +4 -0
  87. package/dist/lib/method-tools.js +217 -0
  88. package/dist/lib/method-tools.js.map +1 -0
  89. package/dist/lib/package-tools.d.ts +4 -0
  90. package/dist/lib/package-tools.js +98 -0
  91. package/dist/lib/package-tools.js.map +1 -0
  92. package/dist/lib/platform-data-operations.d.ts +24 -0
  93. package/dist/lib/platform-data-operations.js +71 -0
  94. package/dist/lib/platform-data-operations.js.map +1 -0
  95. package/dist/lib/platform-endpoint-workflow.d.ts +42 -0
  96. package/dist/lib/platform-endpoint-workflow.js +382 -0
  97. package/dist/lib/platform-endpoint-workflow.js.map +1 -0
  98. package/dist/lib/platform-extension-source.d.ts +487 -0
  99. package/dist/lib/platform-extension-source.js +524 -0
  100. package/dist/lib/platform-extension-source.js.map +1 -0
  101. package/dist/lib/platform-extension-tools.d.ts +1 -0
  102. package/dist/lib/platform-extension-tools.js +416 -0
  103. package/dist/lib/platform-extension-tools.js.map +1 -0
  104. package/dist/lib/platform-extension-ui.d.ts +4 -0
  105. package/dist/lib/platform-extension-ui.js +5 -0
  106. package/dist/lib/platform-extension-ui.js.map +1 -0
  107. package/dist/lib/platform-extension-workflow.d.ts +54 -0
  108. package/dist/lib/platform-extension-workflow.js +194 -0
  109. package/dist/lib/platform-extension-workflow.js.map +1 -0
  110. package/dist/lib/platform-flow-operations.d.ts +554 -0
  111. package/dist/lib/platform-flow-operations.js +317 -0
  112. package/dist/lib/platform-flow-operations.js.map +1 -0
  113. package/dist/lib/platform-flow-tools.d.ts +1 -0
  114. package/dist/lib/platform-flow-tools.js +248 -0
  115. package/dist/lib/platform-flow-tools.js.map +1 -0
  116. package/dist/lib/platform-operation-logic.d.ts +10 -0
  117. package/dist/lib/platform-operation-logic.js +11 -0
  118. package/dist/lib/platform-operation-logic.js.map +1 -0
  119. package/dist/lib/platform-operation-tools.d.ts +1 -324
  120. package/dist/lib/platform-operation-tools.js +13 -4620
  121. package/dist/lib/platform-operation-tools.js.map +1 -1
  122. package/dist/lib/platform-operation-types.d.ts +46 -0
  123. package/dist/lib/platform-operation-types.js +2 -0
  124. package/dist/lib/platform-operation-types.js.map +1 -0
  125. package/dist/lib/platform-policy-tools.d.ts +1 -0
  126. package/dist/lib/platform-policy-tools.js +248 -0
  127. package/dist/lib/platform-policy-tools.js.map +1 -0
  128. package/dist/lib/platform-resource-operations.d.ts +124 -0
  129. package/dist/lib/platform-resource-operations.js +109 -0
  130. package/dist/lib/platform-resource-operations.js.map +1 -0
  131. package/dist/lib/platform-resource-tools.d.ts +1 -0
  132. package/dist/lib/platform-resource-tools.js +70 -0
  133. package/dist/lib/platform-resource-tools.js.map +1 -0
  134. package/dist/lib/platform-route-operations.d.ts +222 -0
  135. package/dist/lib/platform-route-operations.js +290 -0
  136. package/dist/lib/platform-route-operations.js.map +1 -0
  137. package/dist/lib/platform-route-tools.d.ts +1 -0
  138. package/dist/lib/platform-route-tools.js +307 -0
  139. package/dist/lib/platform-route-tools.js.map +1 -0
  140. package/dist/lib/platform-shared-operations.d.ts +7 -0
  141. package/dist/lib/platform-shared-operations.js +4 -0
  142. package/dist/lib/platform-shared-operations.js.map +1 -0
  143. package/dist/lib/platform-websocket-tools.d.ts +1 -0
  144. package/dist/lib/platform-websocket-tools.js +70 -0
  145. package/dist/lib/platform-websocket-tools.js.map +1 -0
  146. package/dist/lib/record-tools.d.ts +4 -0
  147. package/dist/lib/record-tools.js +418 -0
  148. package/dist/lib/record-tools.js.map +1 -0
  149. package/dist/lib/required-knowledge.d.ts +1 -1
  150. package/dist/lib/required-knowledge.js +3 -2
  151. package/dist/lib/required-knowledge.js.map +1 -1
  152. package/dist/lib/route-access-tools.d.ts +4 -0
  153. package/dist/lib/route-access-tools.js +172 -0
  154. package/dist/lib/route-access-tools.js.map +1 -0
  155. package/dist/lib/route-definition-tools.d.ts +4 -0
  156. package/dist/lib/route-definition-tools.js +285 -0
  157. package/dist/lib/route-definition-tools.js.map +1 -0
  158. package/dist/lib/route-inspection-tools.d.ts +4 -0
  159. package/dist/lib/route-inspection-tools.js +319 -0
  160. package/dist/lib/route-inspection-tools.js.map +1 -0
  161. package/dist/lib/route-tools.d.ts +1 -0
  162. package/dist/lib/route-tools.js +9 -0
  163. package/dist/lib/route-tools.js.map +1 -0
  164. package/dist/lib/runtime-zone-registry.d.ts +27 -0
  165. package/dist/lib/runtime-zone-registry.js +81 -0
  166. package/dist/lib/runtime-zone-registry.js.map +1 -0
  167. package/dist/lib/runtime-zone-search.d.ts +303 -0
  168. package/dist/lib/runtime-zone-search.js +596 -0
  169. package/dist/lib/runtime-zone-search.js.map +1 -0
  170. package/dist/lib/runtime-zone-tools.d.ts +2 -307
  171. package/dist/lib/runtime-zone-tools.js +2 -674
  172. package/dist/lib/runtime-zone-tools.js.map +1 -1
  173. package/dist/lib/schema-column-tools.d.ts +3 -0
  174. package/dist/lib/schema-column-tools.js +80 -0
  175. package/dist/lib/schema-column-tools.js.map +1 -0
  176. package/dist/lib/schema-mutation-coordinator.d.ts +28 -0
  177. package/dist/lib/schema-mutation-coordinator.js +154 -0
  178. package/dist/lib/schema-mutation-coordinator.js.map +1 -0
  179. package/dist/lib/schema-relation-contracts.d.ts +39 -0
  180. package/dist/lib/schema-relation-contracts.js +160 -0
  181. package/dist/lib/schema-relation-contracts.js.map +1 -0
  182. package/dist/lib/schema-relation-tools.d.ts +3 -0
  183. package/dist/lib/schema-relation-tools.js +61 -0
  184. package/dist/lib/schema-relation-tools.js.map +1 -0
  185. package/dist/lib/schema-table-contracts.d.ts +28 -0
  186. package/dist/lib/schema-table-contracts.js +263 -0
  187. package/dist/lib/schema-table-contracts.js.map +1 -0
  188. package/dist/lib/schema-table-tools.d.ts +3 -0
  189. package/dist/lib/schema-table-tools.js +297 -0
  190. package/dist/lib/schema-table-tools.js.map +1 -0
  191. package/dist/lib/schema-tool-operations.d.ts +150 -0
  192. package/dist/lib/schema-tool-operations.js +468 -0
  193. package/dist/lib/schema-tool-operations.js.map +1 -0
  194. package/dist/lib/schema-tool-types.d.ts +38 -0
  195. package/dist/lib/schema-tool-types.js +2 -0
  196. package/dist/lib/schema-tool-types.js.map +1 -0
  197. package/dist/lib/schema-verification.d.ts +14 -0
  198. package/dist/lib/schema-verification.js +105 -0
  199. package/dist/lib/schema-verification.js.map +1 -0
  200. package/dist/lib/script-tools.d.ts +4 -0
  201. package/dist/lib/script-tools.js +127 -0
  202. package/dist/lib/script-tools.js.map +1 -0
  203. package/dist/lib/system-tools.d.ts +4 -0
  204. package/dist/lib/system-tools.js +41 -0
  205. package/dist/lib/system-tools.js.map +1 -0
  206. package/dist/lib/table-tool-logic.d.ts +5 -0
  207. package/dist/lib/table-tool-logic.js +6 -0
  208. package/dist/lib/table-tool-logic.js.map +1 -0
  209. package/dist/lib/table-tools.d.ts +1 -84
  210. package/dist/lib/table-tools.js +7 -1522
  211. package/dist/lib/table-tools.js.map +1 -1
  212. package/dist/lib/tool-catalog.d.ts +2 -1
  213. package/dist/lib/tool-catalog.js +23 -2
  214. package/dist/lib/tool-catalog.js.map +1 -1
  215. package/dist/lib/tool-metadata-operations.d.ts +27 -0
  216. package/dist/lib/tool-metadata-operations.js +93 -0
  217. package/dist/lib/tool-metadata-operations.js.map +1 -0
  218. package/dist/lib/tool-permission-profile.d.ts +37 -0
  219. package/dist/lib/tool-permission-profile.js +106 -0
  220. package/dist/lib/tool-permission-profile.js.map +1 -0
  221. package/dist/lib/tool-record-operations.d.ts +102 -0
  222. package/dist/lib/tool-record-operations.js +260 -0
  223. package/dist/lib/tool-record-operations.js.map +1 -0
  224. package/dist/lib/tool-route-inspection.d.ts +47 -0
  225. package/dist/lib/tool-route-inspection.js +168 -0
  226. package/dist/lib/tool-route-inspection.js.map +1 -0
  227. package/dist/lib/tool-routing.d.ts +3 -417
  228. package/dist/lib/tool-routing.js +3 -1038
  229. package/dist/lib/tool-routing.js.map +1 -1
  230. package/dist/lib/tool-runtime-config.d.ts +33 -0
  231. package/dist/lib/tool-runtime-config.js +237 -0
  232. package/dist/lib/tool-runtime-config.js.map +1 -0
  233. package/dist/lib/tool-script-operations.d.ts +34 -0
  234. package/dist/lib/tool-script-operations.js +153 -0
  235. package/dist/lib/tool-script-operations.js.map +1 -0
  236. package/dist/lib/workflow-definitions.d.ts +366 -0
  237. package/dist/lib/workflow-definitions.js +703 -0
  238. package/dist/lib/workflow-definitions.js.map +1 -0
  239. package/dist/lib/workflow-planner.d.ts +45 -0
  240. package/dist/lib/workflow-planner.js +338 -0
  241. package/dist/lib/workflow-planner.js.map +1 -0
  242. package/dist/lib/workflow-types.d.ts +39 -0
  243. package/dist/lib/workflow-types.js +2 -0
  244. package/dist/lib/workflow-types.js.map +1 -0
  245. package/dist/mcp-server-entry.d.ts +0 -3
  246. package/dist/mcp-server-entry.js +2 -3249
  247. package/dist/mcp-server-entry.js.map +1 -1
  248. package/package.json +1 -1
@@ -0,0 +1,596 @@
1
+ import { z } from 'zod';
2
+ import { fetchAPI } from './fetch.js';
3
+ import { fetchMetadataTables, fetchTableCatalog, fetchTableMetadata, fetchTableMetadataByRef } from './metadata-client.js';
4
+ import { jsonContent } from './response-format.js';
5
+ import { writeSourceArtifact } from './source-artifacts.js';
6
+ import { inspectExtensionLocation, searchExtensions } from './extension-search-tools.js';
7
+ import { normalizeSnippetChars } from './tool-input-normalization.js';
8
+ import { paginateResults } from './pagination.js';
9
+ import { RUNTIME_ZONES, RUNTIME_ZONE_DESCRIPTIONS, ZONE_TABLES, buildRuntimeZoneCatalog, } from './runtime-zone-registry.js';
10
+ function getId(record) {
11
+ return record?.id ?? record?._id ?? null;
12
+ }
13
+ function unwrapData(result) {
14
+ if (Array.isArray(result?.data))
15
+ return result.data;
16
+ if (Array.isArray(result))
17
+ return result;
18
+ return [];
19
+ }
20
+ function normalizeText(value) {
21
+ return String(value ?? '')
22
+ .normalize('NFD')
23
+ .replace(/\p{Diacritic}/gu, '')
24
+ .replace(/\s+/g, ' ')
25
+ .toLowerCase();
26
+ }
27
+ function valueAt(record, path) {
28
+ return path.split('.').reduce((current, key) => {
29
+ if (current == null)
30
+ return undefined;
31
+ if (Array.isArray(current))
32
+ return current.map((item) => item?.[key]).filter((item) => item != null);
33
+ return current[key];
34
+ }, record);
35
+ }
36
+ function flattenValue(value) {
37
+ if (value == null)
38
+ return '';
39
+ if (typeof value === 'string')
40
+ return value;
41
+ if (typeof value === 'number' || typeof value === 'boolean')
42
+ return String(value);
43
+ return JSON.stringify(value);
44
+ }
45
+ function filterQuery(filter) {
46
+ return encodeURIComponent(JSON.stringify(filter));
47
+ }
48
+ function asArray(value) {
49
+ return Array.isArray(value) ? value : [];
50
+ }
51
+ function relatedTableName(relation) {
52
+ return relation?.targetTable?.name
53
+ ?? relation?.targetTable
54
+ ?? relation?.relatedTable?.name
55
+ ?? relation?.relatedTable
56
+ ?? relation?.table?.name
57
+ ?? relation?.table
58
+ ?? null;
59
+ }
60
+ async function resolveFieldExposurePath(apiUrl, rootTableName, fieldPath) {
61
+ const segments = String(fieldPath || '').split('.').map((item) => item.trim()).filter(Boolean);
62
+ const steps = [];
63
+ let current;
64
+ try {
65
+ current = await fetchTableMetadataByRef(apiUrl, rootTableName);
66
+ }
67
+ catch {
68
+ return { ok: false, reason: `Root table not found: ${rootTableName}`, steps, targetTable: null, targetField: null };
69
+ }
70
+ if (!segments.length) {
71
+ return { ok: false, reason: 'fieldPath is empty.', steps, targetTable: current, targetField: null };
72
+ }
73
+ for (let index = 0; index < segments.length - 1; index += 1) {
74
+ const propertyName = segments[index];
75
+ const relation = asArray(current?.relations).find((item) => item?.propertyName === propertyName);
76
+ if (!relation) {
77
+ return { ok: false, reason: `Relation "${propertyName}" was not found on ${current.name}.`, steps, targetTable: current, targetField: null };
78
+ }
79
+ const nextTableName = relatedTableName(relation);
80
+ steps.push({ type: 'relation', propertyName, fromTable: current.name, targetTable: nextTableName });
81
+ if (!nextTableName) {
82
+ return { ok: false, reason: `Target table for relation "${propertyName}" could not be resolved.`, steps, targetTable: null, targetField: null };
83
+ }
84
+ try {
85
+ current = await fetchTableMetadataByRef(apiUrl, nextTableName);
86
+ }
87
+ catch {
88
+ return { ok: false, reason: `Target table for relation "${propertyName}" could not be resolved.`, steps, targetTable: null, targetField: null };
89
+ }
90
+ }
91
+ const fieldName = segments[segments.length - 1];
92
+ const column = asArray(current?.columns).find((item) => item?.name === fieldName);
93
+ if (column) {
94
+ return { ok: true, reason: null, steps, targetTable: current, targetField: { kind: 'column', ...column } };
95
+ }
96
+ const relation = asArray(current?.relations).find((item) => item?.propertyName === fieldName);
97
+ if (relation) {
98
+ return { ok: true, reason: null, steps, targetTable: current, targetField: { kind: 'relation', ...relation } };
99
+ }
100
+ return { ok: false, reason: `Field "${fieldName}" was not found on ${current.name}.`, steps, targetTable: current, targetField: null };
101
+ }
102
+ function compactRows(value) {
103
+ const rows = Array.isArray(value?.data) ? value.data : Array.isArray(value) ? value : [];
104
+ return {
105
+ rowCount: rows.length,
106
+ firstRowKeys: rows[0] && typeof rows[0] === 'object' ? Object.keys(rows[0]).slice(0, 12) : [],
107
+ responseShape: value && typeof value === 'object' ? Object.keys(value).slice(0, 12) : [],
108
+ };
109
+ }
110
+ function sourceMatches(source, query, snippetChars) {
111
+ const normalizedQuery = normalizeText(query);
112
+ if (!source || !normalizedQuery)
113
+ return null;
114
+ const lines = source.split('\n');
115
+ for (let index = 0; index < lines.length; index += 1) {
116
+ const text = lines.slice(index, Math.min(index + 3, lines.length)).join(' ');
117
+ if (normalizeText(text).includes(normalizedQuery)) {
118
+ return {
119
+ line: index + 1,
120
+ snippet: text.replace(/\s+/g, ' ').trim().slice(0, snippetChars),
121
+ };
122
+ }
123
+ }
124
+ const normalizedSource = normalizeText(source);
125
+ const offset = normalizedSource.indexOf(normalizedQuery);
126
+ if (offset < 0)
127
+ return null;
128
+ return {
129
+ line: null,
130
+ snippet: source.slice(Math.max(0, offset - 60), offset + query.length + 120).replace(/\s+/g, ' ').trim().slice(0, snippetChars),
131
+ };
132
+ }
133
+ async function resolveZoneFields(apiUrl, table) {
134
+ const metadata = await fetchTableMetadata(apiUrl, table.tableName).catch(() => null);
135
+ if (!metadata)
136
+ return table.fields;
137
+ const available = new Set([
138
+ ...asArray(metadata.columns).map((column) => String(column?.name ?? '')).filter(Boolean),
139
+ ...asArray(metadata.relations).map((relation) => String(relation?.propertyName ?? '')).filter(Boolean),
140
+ ]);
141
+ const fields = table.fields.split(',').filter((field) => available.has(field.split('.')[0]));
142
+ return fields.length ? fields.join(',') : table.fields;
143
+ }
144
+ async function fetchZoneRecords(apiUrl, table) {
145
+ const fields = await resolveZoneFields(apiUrl, table);
146
+ const result = await fetchAPI(apiUrl, `/${table.tableName}?limit=0&fields=${encodeURIComponent(fields)}`).catch((error) => ({ error }));
147
+ if (result?.error)
148
+ return { records: [], error: result.error.message || String(result.error) };
149
+ return { records: unwrapData(result), error: null };
150
+ }
151
+ function matchGenericRecord(table, record, query, snippetChars) {
152
+ const matches = [];
153
+ const normalizedQuery = normalizeText(query);
154
+ for (const field of table.labelFields ?? []) {
155
+ const raw = flattenValue(valueAt(record, field));
156
+ if (!raw || !normalizeText(raw).includes(normalizedQuery))
157
+ continue;
158
+ matches.push({
159
+ field,
160
+ score: 70,
161
+ reason: 'metadata match',
162
+ snippet: raw.slice(0, snippetChars),
163
+ });
164
+ }
165
+ for (const field of table.sourceFields ?? []) {
166
+ const source = String(valueAt(record, field) ?? '');
167
+ const hit = sourceMatches(source, query, snippetChars);
168
+ if (!hit)
169
+ continue;
170
+ matches.push({
171
+ field,
172
+ line: hit.line,
173
+ score: 110,
174
+ reason: 'source match',
175
+ snippet: hit.snippet,
176
+ });
177
+ }
178
+ return matches;
179
+ }
180
+ function summarizeGenericRecord(zone, table, record, matches, includeSourceArtifact) {
181
+ const id = getId(record);
182
+ const sourceField = (table.sourceFields ?? []).find((field) => typeof valueAt(record, field) === 'string' && String(valueAt(record, field)).length > 0);
183
+ const source = sourceField ? String(valueAt(record, sourceField)) : '';
184
+ return {
185
+ zone,
186
+ tableName: table.tableName,
187
+ id,
188
+ label: (table.labelFields ?? []).map((field) => flattenValue(valueAt(record, field))).find(Boolean) || String(id),
189
+ routePath: flattenValue(valueAt(record, 'route.path')) || flattenValue(valueAt(record, 'gateway.path')) || null,
190
+ score: matches.reduce((sum, item) => sum + item.score, 0),
191
+ matches: matches.sort((a, b) => b.score - a.score).slice(0, 3),
192
+ source: source
193
+ ? includeSourceArtifact
194
+ ? (() => {
195
+ const artifact = writeSourceArtifact({ tableName: table.tableName, id: id ?? 'record', fieldName: sourceField, source });
196
+ return { resourceUri: artifact.resourceUri, tmpFile: artifact.tmpFile, length: artifact.length, sha256: artifact.sha256 };
197
+ })()
198
+ : { field: sourceField, length: source.length }
199
+ : null,
200
+ nextInspect: {
201
+ tool: 'search_runtime_zone',
202
+ input: { mode: 'inspect', zone, tableName: table.tableName, id },
203
+ },
204
+ };
205
+ }
206
+ async function searchSchemaZone(apiUrl, input) {
207
+ const query = String(input.query ?? '').trim();
208
+ const normalizedQuery = normalizeText(query);
209
+ const inventory = !normalizedQuery;
210
+ const maxResults = Math.min(Math.max(Number(input.maxResults ?? 8), 1), 25);
211
+ const catalog = await fetchTableCatalog(apiUrl);
212
+ const tables = await fetchMetadataTables(apiUrl, catalog);
213
+ const results = [];
214
+ for (const table of tables) {
215
+ if (inventory) {
216
+ results.push({
217
+ zone: 'schema_data',
218
+ tableName: table.name,
219
+ id: getId(table),
220
+ alias: table.alias,
221
+ score: 0,
222
+ matches: [],
223
+ nextInspect: { tool: 'search_runtime_zone', input: { mode: 'inspect', zone: 'schema_data', tableName: table.name } },
224
+ });
225
+ continue;
226
+ }
227
+ const tableMatches = [];
228
+ for (const field of ['name', 'alias', 'description']) {
229
+ const raw = flattenValue(table?.[field]);
230
+ if (raw && normalizeText(raw).includes(normalizedQuery)) {
231
+ tableMatches.push({ field, score: 80, reason: 'table metadata match', snippet: raw.slice(0, 180) });
232
+ }
233
+ }
234
+ for (const column of table?.columns ?? []) {
235
+ const raw = flattenValue({ name: column.name, type: column.type, description: column.description });
236
+ if (normalizeText(raw).includes(normalizedQuery)) {
237
+ tableMatches.push({ field: `column.${column.name}`, score: 70, reason: 'column match', snippet: raw.slice(0, 180) });
238
+ }
239
+ }
240
+ for (const relation of table?.relations ?? []) {
241
+ const raw = flattenValue({ propertyName: relation.propertyName, type: relation.type, targetTable: relation.targetTable?.name ?? relation.targetTable, description: relation.description });
242
+ if (normalizeText(raw).includes(normalizedQuery)) {
243
+ tableMatches.push({ field: `relation.${relation.propertyName}`, score: 70, reason: 'relation match', snippet: raw.slice(0, 180) });
244
+ }
245
+ }
246
+ if (!tableMatches.length)
247
+ continue;
248
+ results.push({
249
+ zone: 'schema_data',
250
+ tableName: table.name,
251
+ id: getId(table),
252
+ alias: table.alias,
253
+ score: tableMatches.reduce((sum, item) => sum + item.score, 0),
254
+ matches: tableMatches.sort((a, b) => b.score - a.score).slice(0, 4),
255
+ nextInspect: { tool: 'search_runtime_zone', input: { mode: 'inspect', zone: 'schema_data', tableName: table.name } },
256
+ });
257
+ }
258
+ results.sort((a, b) => b.score - a.score || String(a.tableName).localeCompare(String(b.tableName)));
259
+ const paginated = paginateResults(results, {
260
+ limit: maxResults,
261
+ cursor: input.cursor,
262
+ fingerprint: { zone: 'schema_data', query, maxResults },
263
+ });
264
+ return {
265
+ action: inventory ? 'runtime_zone_inventory' : 'runtime_zone_searched',
266
+ zone: 'schema_data',
267
+ zoneDescription: RUNTIME_ZONE_DESCRIPTIONS.schema_data,
268
+ query,
269
+ resultCount: results.length,
270
+ results: paginated.items,
271
+ page: paginated.page,
272
+ searched: { tables: tables.length },
273
+ };
274
+ }
275
+ export async function searchRuntimeZone(apiUrl, input) {
276
+ const zone = input.zone;
277
+ if (!zone)
278
+ return buildRuntimeZoneCatalog();
279
+ if ((input.mode ?? 'search') === 'inspect')
280
+ return inspectRuntimeZoneLocation(apiUrl, input);
281
+ if (!RUNTIME_ZONES.includes(zone))
282
+ throw new Error(`Unsupported runtime zone: ${zone}`);
283
+ if (zone === 'admin_ui') {
284
+ const exactLookup = input.id != null || Boolean(String(input.name ?? '').trim());
285
+ const inventory = !String(input.query ?? '').trim() && !String(input.path ?? '').trim() && !exactLookup;
286
+ const adminResult = await searchExtensions(apiUrl, {
287
+ query: input.query,
288
+ path: input.path,
289
+ id: input.id,
290
+ name: input.name,
291
+ type: input.extensionType,
292
+ includeDisabled: input.includeDisabled,
293
+ maxResults: input.maxResults,
294
+ snippetChars: input.snippetChars,
295
+ maxMatchesPerExtension: input.maxMatchesPerRecord,
296
+ includeSourceArtifact: inventory ? false : input.includeSourceArtifact,
297
+ allowInventory: inventory,
298
+ cursor: input.cursor,
299
+ });
300
+ return {
301
+ ...adminResult,
302
+ action: inventory ? 'runtime_zone_inventory' : 'runtime_zone_searched',
303
+ zone,
304
+ zoneDescription: RUNTIME_ZONE_DESCRIPTIONS.admin_ui,
305
+ results: (adminResult.results ?? []).map((item) => ({
306
+ ...item,
307
+ zone,
308
+ nextInspect: {
309
+ tool: 'search_runtime_zone',
310
+ input: { mode: 'inspect', zone, id: item.id, name: item.name },
311
+ },
312
+ })),
313
+ };
314
+ }
315
+ if (zone === 'schema_data')
316
+ return searchSchemaZone(apiUrl, input);
317
+ const query = String(input.query ?? input.path ?? '').trim();
318
+ const path = input.path ? String(input.path).trim() : '';
319
+ const inventory = !query && !path;
320
+ const maxResults = Math.min(Math.max(Number(input.maxResults ?? 8), 1), 25);
321
+ const snippetChars = normalizeSnippetChars(input.snippetChars);
322
+ const includeSourceArtifact = inventory ? false : Boolean(input.includeSourceArtifact);
323
+ const tables = ZONE_TABLES[zone];
324
+ const allResults = [];
325
+ const errors = [];
326
+ for (const table of tables) {
327
+ const { records, error } = await fetchZoneRecords(apiUrl, table);
328
+ if (error) {
329
+ errors.push({ tableName: table.tableName, error });
330
+ continue;
331
+ }
332
+ for (const record of records) {
333
+ if (inventory) {
334
+ allResults.push(summarizeGenericRecord(zone, table, record, [], false));
335
+ continue;
336
+ }
337
+ if (path) {
338
+ const pathHit = (table.pathFields ?? []).some((field) => flattenValue(valueAt(record, field)) === path);
339
+ if (!pathHit)
340
+ continue;
341
+ }
342
+ const matches = matchGenericRecord(table, record, query, snippetChars);
343
+ if (!matches.length && path) {
344
+ matches.push({ field: 'path', score: 120, reason: 'exact path match', snippet: path });
345
+ }
346
+ if (!matches.length)
347
+ continue;
348
+ allResults.push(summarizeGenericRecord(zone, table, record, matches, includeSourceArtifact));
349
+ }
350
+ }
351
+ allResults.sort((a, b) => b.score - a.score || String(a.tableName).localeCompare(String(b.tableName)));
352
+ const paginated = paginateResults(allResults, {
353
+ limit: maxResults,
354
+ cursor: input.cursor,
355
+ fingerprint: { zone, query, path, maxResults },
356
+ });
357
+ const results = paginated.items;
358
+ return {
359
+ action: inventory ? 'runtime_zone_inventory' : 'runtime_zone_searched',
360
+ zone,
361
+ zoneDescription: RUNTIME_ZONE_DESCRIPTIONS[zone],
362
+ query: query || null,
363
+ path: path || null,
364
+ resultCount: allResults.length,
365
+ page: paginated.page,
366
+ results,
367
+ readErrors: errors,
368
+ tokenBudget: {
369
+ estimatedOutputChars: JSON.stringify(results).length,
370
+ estimatedOutputTokens: Math.ceil(JSON.stringify(results).length / 4),
371
+ controls: { maxResults, snippetChars, includeSourceArtifact },
372
+ },
373
+ guidance: [
374
+ 'Use the returned nextInspect input on search_runtime_zone(mode=inspect) for the best candidate before editing.',
375
+ ...(inventory ? ['This is a bounded inventory. Add query or path when you need ranked matching.'] : []),
376
+ 'Use source artifacts only for the selected candidate when snippets are insufficient.',
377
+ 'Use zone-specific write tools after inspection instead of generic CRUD when a business operation tool exists.',
378
+ ],
379
+ };
380
+ }
381
+ export async function searchAdminExtensions(apiUrl, input) {
382
+ const mode = input.mode ?? 'search';
383
+ const result = await searchRuntimeZone(apiUrl, {
384
+ ...input,
385
+ mode,
386
+ zone: 'admin_ui',
387
+ extensionType: input.type ?? input.extensionType,
388
+ });
389
+ const results = Array.isArray(result?.results)
390
+ ? result.results.map((item) => ({
391
+ ...item,
392
+ nextInspect: item?.nextInspect?.input
393
+ ? {
394
+ tool: 'search_admin_extensions',
395
+ input: {
396
+ ...item.nextInspect.input,
397
+ zone: undefined,
398
+ type: item.nextInspect.input.extensionType,
399
+ extensionType: undefined,
400
+ },
401
+ }
402
+ : item?.nextInspect,
403
+ }))
404
+ : result?.results;
405
+ return {
406
+ ...result,
407
+ results,
408
+ action: mode === 'inspect' ? 'admin_extension_inspected' : 'admin_extensions_searched',
409
+ guidance: mode === 'inspect'
410
+ ? [
411
+ 'The editable source artifact is enfyra_extension.code, not sourceCode.',
412
+ 'For focused existing-code edits, prefer patch_extension_code with the inspected id/name.',
413
+ 'For page/menu wiring, use extension_workflow or ensure_*_extension.',
414
+ 'Use <UButton> and other auto-injected components directly in templates; do not use resolveComponent for them.',
415
+ ]
416
+ : [
417
+ 'Inspect one candidate before editing.',
418
+ 'Admin extension source lives in enfyra_extension.code; do not query sourceCode on enfyra_extension.',
419
+ 'If the target is an existing page/widget/global extension, use patch_extension_code for a focused edit.',
420
+ 'Do not fetch destination business lists solely to draw menu/account-panel chips; use notification signals and fetch on click.',
421
+ ],
422
+ };
423
+ }
424
+ export async function debugFieldExposure(apiUrl, input) {
425
+ const tableName = String(input.tableName ?? '').trim();
426
+ const fieldPath = String(input.fieldPath ?? '').trim();
427
+ if (!tableName)
428
+ throw new Error('tableName is required.');
429
+ if (!fieldPath)
430
+ throw new Error('fieldPath is required, for example "owner.secret_token" or "api_key".');
431
+ const resolved = await resolveFieldExposurePath(apiUrl, tableName, fieldPath);
432
+ const targetField = resolved.targetField;
433
+ const isPublished = targetField?.isPublished;
434
+ const routePath = String(input.routePath ?? `/${tableName}`).trim();
435
+ const fields = input.fields ? String(input.fields) : fieldPath;
436
+ const params = new URLSearchParams();
437
+ params.set('fields', fields);
438
+ params.set('limit', String(Math.min(Math.max(Number(input.limit ?? 1), 1), 10)));
439
+ if (input.deep)
440
+ params.set('deep', JSON.stringify(input.deep));
441
+ if (input.filter)
442
+ params.set('filter', JSON.stringify(input.filter));
443
+ const reproPath = `${routePath}?${params.toString()}`;
444
+ let repro = null;
445
+ if (input.runRepro) {
446
+ try {
447
+ repro = { ok: true, summary: compactRows(await fetchAPI(apiUrl, reproPath)) };
448
+ }
449
+ catch (error) {
450
+ repro = { ok: false, error: error?.message || String(error) };
451
+ }
452
+ }
453
+ const unpublishedLeak = resolved.ok && isPublished === false;
454
+ return {
455
+ action: 'field_exposure_debugged',
456
+ tableName,
457
+ fieldPath,
458
+ resolved,
459
+ metadataFinding: resolved.ok
460
+ ? {
461
+ targetTable: resolved.targetTable?.name ?? null,
462
+ fieldKind: targetField?.kind ?? null,
463
+ fieldName: targetField?.name ?? targetField?.propertyName ?? null,
464
+ isPublished,
465
+ isEncrypted: targetField?.isEncrypted ?? null,
466
+ }
467
+ : { error: resolved.reason },
468
+ reproRequest: { tool: 'test_rest_endpoint', input: { method: 'GET', path: reproPath } },
469
+ repro,
470
+ verdict: unpublishedLeak
471
+ ? 'If the repro returns this unpublished field through REST fields/deep, this is an Enfyra core field-exposure bug. Do not hide it with frontend code, route-local hooks, or field permissions.'
472
+ : 'No unpublished target field was resolved from metadata. Inspect the table/relation path before treating this as a core exposure bug.',
473
+ nextSteps: unpublishedLeak
474
+ ? [
475
+ 'Run the returned test_rest_endpoint repro if runRepro was false.',
476
+ 'If the response includes the unpublished field, report tableName, fieldPath, reproRequest.path, metadataFinding, and response shape to Enfyra core/support.',
477
+ 'Do not add route-local pre-hooks or frontend hiding as the real fix for a published-field contract breach.',
478
+ ]
479
+ : [
480
+ 'Use inspect_table on the root and related tables to verify the path.',
481
+ 'If the field is published, use field permissions/guards only for business access rules, not core isPublished enforcement.',
482
+ ],
483
+ };
484
+ }
485
+ export async function inspectRuntimeZoneLocation(apiUrl, input) {
486
+ const zone = input.zone;
487
+ if (!RUNTIME_ZONES.includes(zone))
488
+ throw new Error(`Unsupported runtime zone: ${zone}`);
489
+ if (zone === 'admin_ui') {
490
+ return { ...(await inspectExtensionLocation(apiUrl, input)), zone, zoneDescription: RUNTIME_ZONE_DESCRIPTIONS.admin_ui };
491
+ }
492
+ if (zone === 'schema_data') {
493
+ if (!input.tableName && !input.query)
494
+ throw new Error('tableName or query is required for schema_data inspection.');
495
+ return {
496
+ action: 'runtime_zone_location_inspected',
497
+ zone,
498
+ zoneDescription: RUNTIME_ZONE_DESCRIPTIONS.schema_data,
499
+ next: input.tableName
500
+ ? { tool: 'inspect_table', input: { tableName: input.tableName } }
501
+ : { tool: 'search_runtime_zone', input: { mode: 'search', zone, query: input.query, maxResults: 5 } },
502
+ };
503
+ }
504
+ const tableName = String(input.tableName ?? '');
505
+ if (!tableName)
506
+ throw new Error('tableName is required for non-admin runtime zone inspection. Use search_runtime_zone first and pass nextInspect.input.');
507
+ const table = ZONE_TABLES[zone]?.find((item) => item.tableName === tableName);
508
+ if (!table)
509
+ throw new Error(`Table ${tableName} does not belong to zone ${zone}.`);
510
+ const id = input.id;
511
+ const filter = id != null
512
+ ? { id: { _eq: id } }
513
+ : input.query
514
+ ? null
515
+ : null;
516
+ if (!filter)
517
+ throw new Error('id is required for direct inspection. Use search_runtime_zone for query-based discovery.');
518
+ const result = await fetchAPI(apiUrl, `/${table.tableName}?filter=${filterQuery(filter)}&limit=1&fields=${encodeURIComponent(table.fields)}`);
519
+ const record = unwrapData(result)[0];
520
+ if (!record)
521
+ throw new Error(`Record not found: ${table.tableName} ${id}`);
522
+ const sources = [];
523
+ for (const field of table.sourceFields ?? []) {
524
+ const source = String(valueAt(record, field) ?? '');
525
+ if (!source)
526
+ continue;
527
+ const artifact = writeSourceArtifact({ tableName: table.tableName, id: getId(record) ?? 'record', fieldName: field, source });
528
+ sources.push(artifact);
529
+ }
530
+ return {
531
+ action: 'runtime_zone_location_inspected',
532
+ zone,
533
+ zoneDescription: RUNTIME_ZONE_DESCRIPTIONS[zone],
534
+ tableName: table.tableName,
535
+ id: getId(record),
536
+ record,
537
+ sources,
538
+ nextSteps: [
539
+ 'Use zone-specific edit tools where available.',
540
+ 'When sources are returned, use those exact artifacts. Call get_script_source only with this concrete record id when a fresh source artifact is needed.',
541
+ 'Re-run search_runtime_zone or the specific inspector after mutation.',
542
+ ],
543
+ };
544
+ }
545
+ export function registerRuntimeZoneTools(server, ENFYRA_API_URL) {
546
+ server.tool('search_admin_extensions', [
547
+ 'Focused admin UI locator for menu/page/widget/global extensions, account panel rows, notification chips, labels, buttons, tabs, and visible blocks.',
548
+ 'This is a weak-agent friendly alias for search_runtime_zone(zone=admin_ui): search first, then inspect one candidate before patching.',
549
+ ].join(' '), {
550
+ mode: z.enum(['search', 'inspect']).optional().default('search').describe('search returns ranked admin UI matches. inspect opens one result using id/name/path/query.'),
551
+ query: z.string().optional().describe('Visible text, button label, menu label, component name, class, icon, source term, or UX phrase.'),
552
+ path: z.string().optional().describe('Menu/page path such as /cloud/hosts when known.'),
553
+ id: z.union([z.string(), z.number()]).optional().describe('Exact extension id for search verification, or the extension id for mode=inspect.'),
554
+ name: z.string().optional().describe('Exact extension name for search verification, or the extension name for mode=inspect.'),
555
+ type: z.enum(['page', 'widget', 'global']).optional().describe('Narrows extension type.'),
556
+ includeDisabled: z.boolean().optional().default(true),
557
+ maxResults: z.number().int().min(1).max(25).optional().default(8),
558
+ cursor: z.string().optional().describe('Opaque cursor from the previous search result. Reuse it only with the same query, path, type, filters, and maxResults.'),
559
+ snippetChars: z.number().int().optional().default(180).transform(normalizeSnippetChars).describe('Approximate snippet characters per match. Values outside 120-600 are clamped.'),
560
+ includeSourceArtifact: z.boolean().optional().default(false),
561
+ }, async (input) => jsonContent(await searchAdminExtensions(ENFYRA_API_URL, input)));
562
+ server.tool('debug_field_exposure', [
563
+ 'Diagnose whether a REST fields/deep projection exposes an isPublished=false field.',
564
+ 'Use this for suspected secret/private field leaks. It builds a minimal repro and tells the agent when this is a core bug rather than a hook/frontend fix.',
565
+ ].join(' '), {
566
+ tableName: z.string().describe('Root route-backed table name used by the REST request.'),
567
+ fieldPath: z.string().describe('Field path to test, for example "secret_token", "owner.api_key", or "children.owner.email". Relation segments must be propertyName values.'),
568
+ routePath: z.string().optional().describe('REST route path. Defaults to /<tableName>.'),
569
+ fields: z.string().optional().describe('Exact fields query to use. Defaults to fieldPath.'),
570
+ deep: z.record(z.any()).optional().describe('Optional deep object for the repro request.'),
571
+ filter: z.record(z.any()).optional().describe('Optional bounded filter for the repro request.'),
572
+ limit: z.number().int().min(1).max(10).optional().default(1),
573
+ runRepro: z.boolean().optional().default(false).describe('When true, run the GET repro and return only compact response shape.'),
574
+ }, async (input) => jsonContent(await debugFieldExposure(ENFYRA_API_URL, input)));
575
+ server.tool('search_runtime_zone', [
576
+ 'Single zone-scoped search/inspect tool for DB-backed Enfyra runtime artifacts.',
577
+ 'Use this before editing anything that lives in the database rather than repo files.',
578
+ 'Omit zone once when the correct zone is unclear; the tool returns a compact zone catalog. With a zone, omit query/path for bounded inventory or provide either value for ranked matching. Then call mode=inspect using nextInspect.input.',
579
+ ].join(' '), {
580
+ mode: z.enum(['search', 'inspect']).optional().default('search').describe('search returns a zone catalog, bounded inventory, or ranked matches. inspect opens one result using nextInspect.input.'),
581
+ zone: z.enum(RUNTIME_ZONES).optional().describe('DB-backed runtime zone. Omit only when the correct zone is unclear; the result returns the zone catalog. admin_ui=menu/extensions, api_runtime=routes/handlers/hooks/guards, flow_runtime=flows, websocket_runtime=socket gateways/events, graphql_runtime=GraphQL, schema_data=tables/fields/relations, package_runtime=packages, storage_file=storage/files, auth_security=access/auth.'),
582
+ query: z.string().optional().describe('Visible label, path, event name, flow step key, route path, source-code term, field name, package name, or config keyword. Omit with a selected zone for bounded inventory.'),
583
+ path: z.string().optional().describe('Exact route/gateway/menu/file path where the zone supports path lookup.'),
584
+ tableName: z.string().optional().describe('Required for mode=inspect on non-admin zones; use nextInspect.input from search results.'),
585
+ id: z.union([z.string(), z.number()]).optional().describe('Record id for mode=inspect; use nextInspect.input from search results.'),
586
+ name: z.string().optional().describe('Admin UI extension name for mode=inspect when zone=admin_ui.'),
587
+ extensionType: z.enum(['page', 'widget', 'global']).optional().describe('Only for admin_ui zone. Narrows extension type.'),
588
+ includeDisabled: z.boolean().optional().default(true).describe('Only for admin_ui zone. Include disabled extensions.'),
589
+ maxResults: z.number().int().min(1).max(25).optional().default(8).describe('Maximum ranked results.'),
590
+ cursor: z.string().optional().describe('Opaque cursor from the previous inventory/search page. Reuse it only with the same zone, query, path, filters, and maxResults.'),
591
+ snippetChars: z.number().int().optional().default(180).transform(normalizeSnippetChars).describe('Approximate snippet characters per match. Values outside 120-600 are clamped.'),
592
+ maxMatchesPerRecord: z.number().int().min(1).max(8).optional().default(2).describe('Only for admin_ui zone. Maximum source matches per extension.'),
593
+ includeSourceArtifact: z.boolean().optional().default(false).describe('Write matched source to /tmp and return compact source artifact metadata. Prefer false unless snippets are insufficient.'),
594
+ }, async (input) => jsonContent(await searchRuntimeZone(ENFYRA_API_URL, input)));
595
+ }
596
+ //# sourceMappingURL=runtime-zone-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-zone-search.js","sourceRoot":"","sources":["../../src/lib/runtime-zone-search.ts"],"names":[],"mappings":"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"}