@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,222 @@
1
+ import { AnyRecord, MethodIdNameMap, MethodMap } from './platform-shared-operations.js';
2
+ export declare function unwrapData(result: any): any;
3
+ export declare function getId(record: any): any;
4
+ export declare function refId(value: any): any;
5
+ export declare function sameId(a: any, b: any): boolean;
6
+ export declare function firstDataRecord(result: any): any;
7
+ export declare function summarizeWorkflowOperation(operation: AnyRecord): {
8
+ routeReload?: {
9
+ attempted: boolean;
10
+ succeeded: boolean;
11
+ };
12
+ action: any;
13
+ result: {
14
+ record?: {
15
+ [k: string]: any;
16
+ };
17
+ statusCode: any;
18
+ message: any;
19
+ };
20
+ };
21
+ export declare function normalizeRestPath(path: any): any;
22
+ export declare function normalizeMethodName(method: any): string;
23
+ export declare function methodNamesFromRecords(records: any, methodIdNameMap: any): string[];
24
+ export declare function uniqueMethodNames(names: any): string[];
25
+ export declare function resolveMethodRefs(methodMap: MethodMap, names: any): Array<{
26
+ id: string | number;
27
+ }>;
28
+ export declare function fetchAll(apiUrl: any, path: any): Promise<any>;
29
+ export declare function getMethodContext(apiUrl: any): Promise<{
30
+ methods: any;
31
+ methodMap: MethodMap;
32
+ methodIdNameMap: MethodIdNameMap;
33
+ }>;
34
+ export declare function reloadRoutes(apiUrl: any): Promise<{
35
+ attempted: boolean;
36
+ succeeded: boolean;
37
+ result: any;
38
+ error?: undefined;
39
+ } | {
40
+ attempted: boolean;
41
+ succeeded: boolean;
42
+ error: any;
43
+ result?: undefined;
44
+ }>;
45
+ export declare function resolveRoute(apiUrl: any, { path, routeId }: {
46
+ path: any;
47
+ routeId: any;
48
+ }): Promise<{
49
+ route: any;
50
+ routes: any;
51
+ path: any;
52
+ }>;
53
+ export declare function updateRouteMethods(apiUrl: any, { path, routeId, methods, mode, isEnabled, globalRulesAckKey }: {
54
+ path: any;
55
+ routeId: any;
56
+ methods: any;
57
+ mode: any;
58
+ isEnabled: any;
59
+ globalRulesAckKey: any;
60
+ }): Promise<{
61
+ action: string;
62
+ route: {
63
+ id: any;
64
+ path: any;
65
+ };
66
+ before: {
67
+ availableMethods: string[];
68
+ publicMethods: string[];
69
+ };
70
+ after: {
71
+ availableMethods: string[];
72
+ publicMethods: string[];
73
+ };
74
+ result: any;
75
+ routeReload: {
76
+ attempted: boolean;
77
+ succeeded: boolean;
78
+ result: any;
79
+ error?: undefined;
80
+ } | {
81
+ attempted: boolean;
82
+ succeeded: boolean;
83
+ error: any;
84
+ result?: undefined;
85
+ };
86
+ }>;
87
+ export declare function updateRoutePublicMethods(apiUrl: any, { path, routeId, methods, mode, globalRulesAckKey }: {
88
+ path: any;
89
+ routeId: any;
90
+ methods: any;
91
+ mode: any;
92
+ globalRulesAckKey: any;
93
+ }): Promise<{
94
+ action: string;
95
+ route: {
96
+ id: any;
97
+ path: any;
98
+ };
99
+ availableMethods: string[];
100
+ publicMethodsBefore: string[];
101
+ publicMethodsAfter: string[];
102
+ publicAccess: string;
103
+ result: any;
104
+ routeReload: {
105
+ attempted: boolean;
106
+ succeeded: boolean;
107
+ result: any;
108
+ error?: undefined;
109
+ } | {
110
+ attempted: boolean;
111
+ succeeded: boolean;
112
+ error: any;
113
+ result?: undefined;
114
+ };
115
+ }>;
116
+ export declare function setRouteEnabled(apiUrl: any, { path, routeId, isEnabled, globalRulesAckKey }: {
117
+ path: any;
118
+ routeId: any;
119
+ isEnabled: any;
120
+ globalRulesAckKey: any;
121
+ }): Promise<{
122
+ action: string;
123
+ route: {
124
+ id: any;
125
+ path: any;
126
+ };
127
+ before: {
128
+ isEnabled: boolean;
129
+ };
130
+ after: {
131
+ isEnabled: any;
132
+ };
133
+ runtimeBehavior: string;
134
+ routeReload: {
135
+ attempted: boolean;
136
+ succeeded: boolean;
137
+ reason: string;
138
+ };
139
+ result?: undefined;
140
+ } | {
141
+ action: string;
142
+ route: {
143
+ id: any;
144
+ path: any;
145
+ };
146
+ before: {
147
+ isEnabled: boolean;
148
+ };
149
+ after: {
150
+ isEnabled: any;
151
+ };
152
+ runtimeBehavior: string;
153
+ result: any;
154
+ routeReload: {
155
+ attempted: boolean;
156
+ succeeded: boolean;
157
+ result: any;
158
+ error?: undefined;
159
+ } | {
160
+ attempted: boolean;
161
+ succeeded: boolean;
162
+ error: any;
163
+ result?: undefined;
164
+ };
165
+ }>;
166
+ export declare function deleteRoute(apiUrl: any, { path, routeId, expectedPath, confirm, globalRulesAckKey }: {
167
+ path: any;
168
+ routeId: any;
169
+ expectedPath: any;
170
+ confirm: any;
171
+ globalRulesAckKey: any;
172
+ }): Promise<{
173
+ next: string;
174
+ route: {
175
+ id: any;
176
+ path: any;
177
+ isEnabled: boolean;
178
+ };
179
+ dependencies: {
180
+ handlers: any;
181
+ permissions: any;
182
+ preHooks: any;
183
+ postHooks: any;
184
+ guards: any;
185
+ };
186
+ action: string;
187
+ } | {
188
+ deleted: {
189
+ handlers: any;
190
+ permissions: any;
191
+ preHooks: any;
192
+ postHooks: any;
193
+ guards: any;
194
+ route: any;
195
+ };
196
+ result: any;
197
+ routeReload: {
198
+ attempted: boolean;
199
+ succeeded: boolean;
200
+ result: any;
201
+ error?: undefined;
202
+ } | {
203
+ attempted: boolean;
204
+ succeeded: boolean;
205
+ error: any;
206
+ result?: undefined;
207
+ };
208
+ route: {
209
+ id: any;
210
+ path: any;
211
+ isEnabled: boolean;
212
+ };
213
+ dependencies: {
214
+ handlers: any;
215
+ permissions: any;
216
+ preHooks: any;
217
+ postHooks: any;
218
+ guards: any;
219
+ };
220
+ action: string;
221
+ }>;
222
+ export declare function findHandler(apiUrl: any, routeId: any, methodId: any): Promise<any>;
@@ -0,0 +1,290 @@
1
+ import { fetchAPI } from './fetch.js';
2
+ import { assertGlobalRulesAck, } from './required-knowledge.js';
3
+ import { filterQuery, } from './platform-extension-source.js';
4
+ export function unwrapData(result) {
5
+ return Array.isArray(result?.data) ? result.data : [];
6
+ }
7
+ export function getId(record) {
8
+ return record?.id ?? record?._id ?? null;
9
+ }
10
+ export function refId(value) {
11
+ return typeof value === 'object' && value !== null ? getId(value) : value;
12
+ }
13
+ export function sameId(a, b) {
14
+ if (a === null || a === undefined || b === null || b === undefined)
15
+ return false;
16
+ return String(a) === String(b);
17
+ }
18
+ export function firstDataRecord(result) {
19
+ return Array.isArray(result?.data) ? result.data[0] : result;
20
+ }
21
+ export function summarizeWorkflowOperation(operation) {
22
+ const record = firstDataRecord(operation?.result) || {};
23
+ const selectedRecord = Object.fromEntries(['id', '_id', 'name', 'key', 'path', 'label', 'title', 'state', 'severity', 'type', 'isEnabled', 'version', 'jobId', 'flowId']
24
+ .filter((key) => record?.[key] !== undefined)
25
+ .map((key) => [key, record[key]]));
26
+ return {
27
+ action: operation?.action || null,
28
+ result: {
29
+ statusCode: operation?.result?.statusCode ?? null,
30
+ message: operation?.result?.message ?? null,
31
+ ...(Object.keys(selectedRecord).length ? { record: selectedRecord } : {}),
32
+ },
33
+ ...(operation?.routeReload ? {
34
+ routeReload: {
35
+ attempted: Boolean(operation.routeReload.attempted),
36
+ succeeded: operation.routeReload.succeeded === true,
37
+ },
38
+ } : {}),
39
+ };
40
+ }
41
+ export function normalizeRestPath(path) {
42
+ if (!path)
43
+ return '/';
44
+ if (/^https?:\/\//i.test(path)) {
45
+ throw new Error('Only Enfyra API paths are allowed, not full external URLs.');
46
+ }
47
+ return path.startsWith('/') ? path : `/${path}`;
48
+ }
49
+ export function normalizeMethodName(method) {
50
+ const value = String(method || '').trim().toUpperCase();
51
+ if (!/^[A-Z][A-Z0-9_]*$/.test(value)) {
52
+ throw new Error(`Invalid method "${method}". Method names must start with A-Z and contain only A-Z, 0-9, or underscore.`);
53
+ }
54
+ return value;
55
+ }
56
+ export function methodNamesFromRecords(records, methodIdNameMap) {
57
+ return (records || [])
58
+ .map((method) => method?.name || methodIdNameMap[String(getId(method))] || null)
59
+ .filter(Boolean)
60
+ .map(normalizeMethodName);
61
+ }
62
+ export function uniqueMethodNames(names) {
63
+ return Array.from(new Set((names || []).map((name) => normalizeMethodName(name))));
64
+ }
65
+ export function resolveMethodRefs(methodMap, names) {
66
+ return uniqueMethodNames(names).map((name) => {
67
+ const id = methodMap[name];
68
+ if (!id)
69
+ throw new Error(`Unknown method "${name}". Valid methods: ${Object.keys(methodMap).sort().join(', ')}`);
70
+ return { id };
71
+ });
72
+ }
73
+ function mergeMethods(existing, requested, mode) {
74
+ const existingNames = uniqueMethodNames(existing);
75
+ const requestedNames = uniqueMethodNames(requested);
76
+ if (mode === 'replace')
77
+ return requestedNames;
78
+ if (mode === 'remove')
79
+ return existingNames.filter((method) => !requestedNames.includes(method));
80
+ return uniqueMethodNames([...existingNames, ...requestedNames]);
81
+ }
82
+ export async function fetchAll(apiUrl, path) {
83
+ return unwrapData(await fetchAPI(apiUrl, path));
84
+ }
85
+ export async function getMethodContext(apiUrl) {
86
+ const methods = await fetchAll(apiUrl, '/enfyra_method?limit=0&fields=id,_id,name');
87
+ const methodMap = {};
88
+ const methodIdNameMap = {};
89
+ for (const method of methods) {
90
+ if (!method?.name)
91
+ continue;
92
+ const name = normalizeMethodName(method.name);
93
+ const id = getId(method);
94
+ methodMap[name] = id;
95
+ methodIdNameMap[String(id)] = name;
96
+ }
97
+ return { methods, methodMap, methodIdNameMap };
98
+ }
99
+ export async function reloadRoutes(apiUrl) {
100
+ try {
101
+ const result = await fetchAPI(apiUrl, '/admin/reload/routes', { method: 'POST' });
102
+ return { attempted: true, succeeded: true, result };
103
+ }
104
+ catch (error) {
105
+ return { attempted: true, succeeded: false, error: error?.message || String(error) };
106
+ }
107
+ }
108
+ export async function resolveRoute(apiUrl, { path, routeId }) {
109
+ if (!path && !routeId)
110
+ throw new Error('Provide path or routeId.');
111
+ if (path && routeId)
112
+ throw new Error('Provide path or routeId, not both.');
113
+ const routes = await fetchAll(apiUrl, '/enfyra_route?limit=1000&fields=id,_id,path,isEnabled,availableMethods.*,publicMethods.*,mainTable.name');
114
+ const normalizedPath = path ? normalizeRestPath(path) : null;
115
+ const route = routes.find((item) => (routeId ? sameId(getId(item), routeId) : item.path === normalizedPath));
116
+ if (!route)
117
+ throw new Error(`Route not found: ${routeId || normalizedPath}`);
118
+ return { route, routes, path: route.path };
119
+ }
120
+ export async function updateRouteMethods(apiUrl, { path, routeId, methods, mode, isEnabled, globalRulesAckKey }) {
121
+ assertGlobalRulesAck(globalRulesAckKey);
122
+ const [{ route }, { methodMap, methodIdNameMap }] = await Promise.all([
123
+ resolveRoute(apiUrl, { path, routeId }),
124
+ getMethodContext(apiUrl),
125
+ ]);
126
+ const existingAvailable = methodNamesFromRecords(route.availableMethods, methodIdNameMap);
127
+ const existingPublic = methodNamesFromRecords(route.publicMethods, methodIdNameMap);
128
+ const finalAvailable = mergeMethods(existingAvailable, methods, mode);
129
+ const finalPublic = existingPublic.filter((method) => finalAvailable.includes(method));
130
+ const body = {
131
+ availableMethods: resolveMethodRefs(methodMap, finalAvailable),
132
+ publicMethods: resolveMethodRefs(methodMap, finalPublic),
133
+ };
134
+ if (isEnabled !== undefined)
135
+ body.isEnabled = isEnabled;
136
+ const result = await fetchAPI(apiUrl, `/enfyra_route/${encodeURIComponent(String(getId(route)))}`, {
137
+ method: 'PATCH',
138
+ body: JSON.stringify(body),
139
+ });
140
+ const routeReload = await reloadRoutes(apiUrl);
141
+ return {
142
+ action: 'route_methods_updated',
143
+ route: { id: getId(route), path: route.path },
144
+ before: { availableMethods: existingAvailable, publicMethods: existingPublic },
145
+ after: { availableMethods: finalAvailable, publicMethods: finalPublic },
146
+ result,
147
+ routeReload,
148
+ };
149
+ }
150
+ export async function updateRoutePublicMethods(apiUrl, { path, routeId, methods, mode, globalRulesAckKey }) {
151
+ assertGlobalRulesAck(globalRulesAckKey);
152
+ const [{ route }, { methodMap, methodIdNameMap }] = await Promise.all([
153
+ resolveRoute(apiUrl, { path, routeId }),
154
+ getMethodContext(apiUrl),
155
+ ]);
156
+ const availableMethods = methodNamesFromRecords(route.availableMethods, methodIdNameMap);
157
+ const existingPublic = methodNamesFromRecords(route.publicMethods, methodIdNameMap);
158
+ const requestedMethods = uniqueMethodNames(methods);
159
+ const unavailable = requestedMethods.filter((method) => !availableMethods.includes(method));
160
+ if (unavailable.length > 0) {
161
+ throw new Error(`Cannot make unavailable route method(s) public: ${unavailable.join(', ')}. First call add_route_methods to add them to availableMethods.`);
162
+ }
163
+ const finalPublic = mergeMethods(existingPublic, requestedMethods, mode);
164
+ const result = await fetchAPI(apiUrl, `/enfyra_route/${encodeURIComponent(String(getId(route)))}`, {
165
+ method: 'PATCH',
166
+ body: JSON.stringify({ publicMethods: resolveMethodRefs(methodMap, finalPublic) }),
167
+ });
168
+ const routeReload = await reloadRoutes(apiUrl);
169
+ return {
170
+ action: 'route_public_methods_updated',
171
+ route: { id: getId(route), path: route.path },
172
+ availableMethods,
173
+ publicMethodsBefore: existingPublic,
174
+ publicMethodsAfter: finalPublic,
175
+ publicAccess: finalPublic.length > 0 ? 'Methods listed in publicMethods bypass auth/RoleGuard.' : 'No public methods remain on this route.',
176
+ result,
177
+ routeReload,
178
+ };
179
+ }
180
+ export async function setRouteEnabled(apiUrl, { path, routeId, isEnabled, globalRulesAckKey }) {
181
+ assertGlobalRulesAck(globalRulesAckKey);
182
+ const { route } = await resolveRoute(apiUrl, { path, routeId });
183
+ const before = route?.isEnabled !== false;
184
+ if (before === isEnabled) {
185
+ return {
186
+ action: isEnabled ? 'route_already_enabled' : 'route_already_disabled',
187
+ route: { id: getId(route), path: route.path },
188
+ before: { isEnabled: before },
189
+ after: { isEnabled },
190
+ runtimeBehavior: isEnabled ? 'Enabled routes are registered at runtime.' : 'Disabled routes are not registered at runtime and return 404.',
191
+ routeReload: { attempted: false, succeeded: true, reason: 'No route lifecycle change was needed.' },
192
+ };
193
+ }
194
+ const result = await fetchAPI(apiUrl, `/enfyra_route/${encodeURIComponent(String(getId(route)))}`, {
195
+ method: 'PATCH',
196
+ body: JSON.stringify({ isEnabled }),
197
+ });
198
+ const routeReload = await reloadRoutes(apiUrl);
199
+ return {
200
+ action: isEnabled ? 'route_enabled' : 'route_disabled',
201
+ route: { id: getId(route), path: route.path },
202
+ before: { isEnabled: before },
203
+ after: { isEnabled },
204
+ runtimeBehavior: isEnabled ? 'The route should now be registered at runtime.' : 'The route should now return 404 because disabled routes are not registered at runtime.',
205
+ result,
206
+ routeReload,
207
+ };
208
+ }
209
+ async function fetchRouteDependencies(apiUrl, routeId) {
210
+ const routeFilter = filterQuery({ route: { id: { _eq: routeId } } });
211
+ const routeIdFilter = filterQuery({ routeId: { _eq: routeId } });
212
+ const [handlers, permissions, preHooks, postHooks, guards] = await Promise.all([
213
+ fetchAll(apiUrl, `/enfyra_route_handler?filter=${routeIdFilter}&fields=id,_id,routeId,method.name&limit=0`),
214
+ fetchAll(apiUrl, `/enfyra_route_permission?filter=${routeFilter}&fields=id,_id,route.id,role.name,isEnabled&limit=0`),
215
+ fetchAll(apiUrl, `/enfyra_pre_hook?filter=${routeFilter}&fields=id,_id,route.id,name,isEnabled&limit=0`),
216
+ fetchAll(apiUrl, `/enfyra_post_hook?filter=${routeFilter}&fields=id,_id,route.id,name,isEnabled&limit=0`),
217
+ fetchAll(apiUrl, `/enfyra_guard?filter=${routeFilter}&fields=id,_id,route.id,name,isEnabled&limit=0`),
218
+ ]);
219
+ return { handlers, permissions, preHooks, postHooks, guards };
220
+ }
221
+ function summarizeRouteDependencies(dependencies) {
222
+ return {
223
+ handlers: dependencies.handlers.map((item) => ({ id: getId(item), method: item?.method?.name || null })),
224
+ permissions: dependencies.permissions.map((item) => ({ id: getId(item), role: item?.role?.name || null, isEnabled: item?.isEnabled !== false })),
225
+ preHooks: dependencies.preHooks.map((item) => ({ id: getId(item), name: item?.name || null, isEnabled: item?.isEnabled !== false })),
226
+ postHooks: dependencies.postHooks.map((item) => ({ id: getId(item), name: item?.name || null, isEnabled: item?.isEnabled !== false })),
227
+ guards: dependencies.guards.map((item) => ({ id: getId(item), name: item?.name || null, isEnabled: item?.isEnabled !== false })),
228
+ };
229
+ }
230
+ async function deleteRows(apiUrl, tableName, rows) {
231
+ const deleted = [];
232
+ for (const row of rows) {
233
+ const id = getId(row);
234
+ if (id === null || id === undefined)
235
+ continue;
236
+ await fetchAPI(apiUrl, `/${tableName}/${encodeURIComponent(String(id))}`, { method: 'DELETE' });
237
+ deleted.push(id);
238
+ }
239
+ return deleted;
240
+ }
241
+ export async function deleteRoute(apiUrl, { path, routeId, expectedPath, confirm, globalRulesAckKey }) {
242
+ const { route } = await resolveRoute(apiUrl, { path, routeId });
243
+ if (expectedPath && route.path !== normalizeRestPath(expectedPath)) {
244
+ throw new Error(`Route path mismatch: resolved ${route.path}, expected ${normalizeRestPath(expectedPath)}.`);
245
+ }
246
+ const dependencies = await fetchRouteDependencies(apiUrl, getId(route));
247
+ const dependencySummary = summarizeRouteDependencies(dependencies);
248
+ const preview = {
249
+ route: { id: getId(route), path: route.path, isEnabled: route?.isEnabled !== false },
250
+ dependencies: dependencySummary,
251
+ };
252
+ if (!confirm) {
253
+ return {
254
+ action: 'delete_route_preview',
255
+ ...preview,
256
+ next: 'Call delete_route again with confirm=true and expectedPath set to this route path to delete the route and related handlers/hooks/permissions/guards.',
257
+ };
258
+ }
259
+ assertGlobalRulesAck(globalRulesAckKey);
260
+ await deleteRows(apiUrl, 'enfyra_route_handler', dependencies.handlers);
261
+ await deleteRows(apiUrl, 'enfyra_pre_hook', dependencies.preHooks);
262
+ await deleteRows(apiUrl, 'enfyra_post_hook', dependencies.postHooks);
263
+ await deleteRows(apiUrl, 'enfyra_guard', dependencies.guards);
264
+ await deleteRows(apiUrl, 'enfyra_route_permission', dependencies.permissions);
265
+ const result = await fetchAPI(apiUrl, `/enfyra_route/${encodeURIComponent(String(getId(route)))}`, { method: 'DELETE' });
266
+ const routeReload = await reloadRoutes(apiUrl);
267
+ return {
268
+ action: 'route_deleted',
269
+ ...preview,
270
+ deleted: {
271
+ handlers: dependencies.handlers.map(getId).filter((id) => id !== null && id !== undefined),
272
+ permissions: dependencies.permissions.map(getId).filter((id) => id !== null && id !== undefined),
273
+ preHooks: dependencies.preHooks.map(getId).filter((id) => id !== null && id !== undefined),
274
+ postHooks: dependencies.postHooks.map(getId).filter((id) => id !== null && id !== undefined),
275
+ guards: dependencies.guards.map(getId).filter((id) => id !== null && id !== undefined),
276
+ route: getId(route),
277
+ },
278
+ result,
279
+ routeReload,
280
+ };
281
+ }
282
+ export async function findHandler(apiUrl, routeId, methodId) {
283
+ const filter = encodeURIComponent(JSON.stringify({
284
+ route: { id: { _eq: routeId } },
285
+ method: { id: { _eq: methodId } },
286
+ }));
287
+ const result = await fetchAPI(apiUrl, `/enfyra_route_handler?filter=${filter}&limit=1&fields=id,_id,route.id,method.id,method.name,sourceCode,scriptLanguage,timeout`);
288
+ return unwrapData(result)[0] || null;
289
+ }
290
+ //# sourceMappingURL=platform-route-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-route-operations.js","sourceRoot":"","sources":["../../src/lib/platform-route-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function registerPlatformRouteTools(server: any, ENFYRA_API_URL: any): void;