unreal-engine-mcp-server 0.5.21 → 0.5.30

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 (382) hide show
  1. package/CHANGELOG.md +247 -4
  2. package/README.md +140 -85
  3. package/dist/automation/bridge.d.ts +8 -0
  4. package/dist/automation/bridge.d.ts.map +1 -1
  5. package/dist/automation/bridge.js +94 -14
  6. package/dist/automation/bridge.js.map +1 -1
  7. package/dist/automation/connection-manager.d.ts.map +1 -1
  8. package/dist/automation/connection-manager.js +13 -5
  9. package/dist/automation/connection-manager.js.map +1 -1
  10. package/dist/automation/handshake.d.ts.map +1 -1
  11. package/dist/automation/handshake.js +40 -27
  12. package/dist/automation/handshake.js.map +1 -1
  13. package/dist/automation/index.d.ts +1 -1
  14. package/dist/automation/index.d.ts.map +1 -1
  15. package/dist/automation/index.js +0 -1
  16. package/dist/automation/index.js.map +1 -1
  17. package/dist/automation/message-handler.d.ts.map +1 -1
  18. package/dist/automation/message-handler.js +13 -9
  19. package/dist/automation/message-handler.js.map +1 -1
  20. package/dist/automation/message-schema.d.ts.map +1 -1
  21. package/dist/automation/message-schema.js +19 -18
  22. package/dist/automation/message-schema.js.map +1 -1
  23. package/dist/automation/request-tracker.d.ts +1 -0
  24. package/dist/automation/request-tracker.d.ts.map +1 -1
  25. package/dist/automation/request-tracker.js +30 -31
  26. package/dist/automation/request-tracker.js.map +1 -1
  27. package/dist/automation/types.d.ts +38 -32
  28. package/dist/automation/types.d.ts.map +1 -1
  29. package/dist/cli.js +14 -16
  30. package/dist/cli.js.map +1 -1
  31. package/dist/config/class-aliases.d.ts.map +1 -1
  32. package/dist/config/class-aliases.js +10 -2
  33. package/dist/config/class-aliases.js.map +1 -1
  34. package/dist/config.d.ts +9 -8
  35. package/dist/config.d.ts.map +1 -1
  36. package/dist/config.js +58 -32
  37. package/dist/config.js.map +1 -1
  38. package/dist/handlers/resource-handlers.d.ts +15 -2
  39. package/dist/handlers/resource-handlers.d.ts.map +1 -1
  40. package/dist/handlers/resource-handlers.js +46 -63
  41. package/dist/handlers/resource-handlers.js.map +1 -1
  42. package/dist/index.d.ts +0 -2
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +42 -48
  45. package/dist/index.js.map +1 -1
  46. package/dist/resources/assets.d.ts.map +1 -1
  47. package/dist/resources/assets.js +34 -9
  48. package/dist/resources/assets.js.map +1 -1
  49. package/dist/resources/levels.d.ts +3 -0
  50. package/dist/resources/levels.d.ts.map +1 -1
  51. package/dist/resources/levels.js +33 -17
  52. package/dist/resources/levels.js.map +1 -1
  53. package/dist/server/resource-registry.d.ts +15 -2
  54. package/dist/server/resource-registry.d.ts.map +1 -1
  55. package/dist/server/resource-registry.js +9 -8
  56. package/dist/server/resource-registry.js.map +1 -1
  57. package/dist/server/tool-registry.d.ts +0 -1
  58. package/dist/server/tool-registry.d.ts.map +1 -1
  59. package/dist/server/tool-registry.js +91 -101
  60. package/dist/server/tool-registry.js.map +1 -1
  61. package/dist/server-setup.d.ts +5 -2
  62. package/dist/server-setup.d.ts.map +1 -1
  63. package/dist/server-setup.js +15 -19
  64. package/dist/server-setup.js.map +1 -1
  65. package/dist/services/health-monitor.d.ts +3 -0
  66. package/dist/services/health-monitor.d.ts.map +1 -1
  67. package/dist/services/health-monitor.js +30 -11
  68. package/dist/services/health-monitor.js.map +1 -1
  69. package/dist/services/metrics-server.d.ts +1 -1
  70. package/dist/services/metrics-server.d.ts.map +1 -1
  71. package/dist/services/metrics-server.js +65 -3
  72. package/dist/services/metrics-server.js.map +1 -1
  73. package/dist/tools/base-tool.d.ts.map +1 -1
  74. package/dist/tools/base-tool.js +14 -16
  75. package/dist/tools/base-tool.js.map +1 -1
  76. package/dist/tools/consolidated-tool-definitions.d.ts +16 -1
  77. package/dist/tools/consolidated-tool-definitions.d.ts.map +1 -1
  78. package/dist/tools/consolidated-tool-definitions.js +1479 -2538
  79. package/dist/tools/consolidated-tool-definitions.js.map +1 -1
  80. package/dist/tools/consolidated-tool-handlers.d.ts.map +1 -1
  81. package/dist/tools/consolidated-tool-handlers.js +195 -217
  82. package/dist/tools/consolidated-tool-handlers.js.map +1 -1
  83. package/dist/tools/dynamic-handler-registry.d.ts +1 -0
  84. package/dist/tools/dynamic-handler-registry.d.ts.map +1 -1
  85. package/dist/tools/dynamic-handler-registry.js +15 -7
  86. package/dist/tools/dynamic-handler-registry.js.map +1 -1
  87. package/dist/tools/dynamic-tool-manager.d.ts +1 -1
  88. package/dist/tools/dynamic-tool-manager.d.ts.map +1 -1
  89. package/dist/tools/dynamic-tool-manager.js +30 -18
  90. package/dist/tools/dynamic-tool-manager.js.map +1 -1
  91. package/dist/tools/editor.d.ts +2 -2
  92. package/dist/tools/editor.d.ts.map +1 -1
  93. package/dist/tools/editor.js +4 -4
  94. package/dist/tools/editor.js.map +1 -1
  95. package/dist/tools/handlers/actor-handlers.d.ts.map +1 -1
  96. package/dist/tools/handlers/actor-handlers.js +66 -7
  97. package/dist/tools/handlers/actor-handlers.js.map +1 -1
  98. package/dist/tools/handlers/ai-handlers.d.ts.map +1 -1
  99. package/dist/tools/handlers/ai-handlers.js +24 -13
  100. package/dist/tools/handlers/ai-handlers.js.map +1 -1
  101. package/dist/tools/handlers/animation-authoring-handlers.d.ts.map +1 -1
  102. package/dist/tools/handlers/animation-authoring-handlers.js +285 -218
  103. package/dist/tools/handlers/animation-authoring-handlers.js.map +1 -1
  104. package/dist/tools/handlers/animation-handlers.d.ts.map +1 -1
  105. package/dist/tools/handlers/animation-handlers.js +69 -21
  106. package/dist/tools/handlers/animation-handlers.js.map +1 -1
  107. package/dist/tools/handlers/asset-handlers.d.ts.map +1 -1
  108. package/dist/tools/handlers/asset-handlers.js +75 -16
  109. package/dist/tools/handlers/asset-handlers.js.map +1 -1
  110. package/dist/tools/handlers/audio-authoring-handlers.d.ts.map +1 -1
  111. package/dist/tools/handlers/audio-authoring-handlers.js +102 -9
  112. package/dist/tools/handlers/audio-authoring-handlers.js.map +1 -1
  113. package/dist/tools/handlers/audio-handlers.d.ts.map +1 -1
  114. package/dist/tools/handlers/audio-handlers.js +48 -13
  115. package/dist/tools/handlers/audio-handlers.js.map +1 -1
  116. package/dist/tools/handlers/blueprint-handlers.d.ts.map +1 -1
  117. package/dist/tools/handlers/blueprint-handlers.js +28 -48
  118. package/dist/tools/handlers/blueprint-handlers.js.map +1 -1
  119. package/dist/tools/handlers/character-handlers.d.ts.map +1 -1
  120. package/dist/tools/handlers/character-handlers.js +13 -12
  121. package/dist/tools/handlers/character-handlers.js.map +1 -1
  122. package/dist/tools/handlers/combat-handlers.d.ts.map +1 -1
  123. package/dist/tools/handlers/combat-handlers.js +12 -12
  124. package/dist/tools/handlers/combat-handlers.js.map +1 -1
  125. package/dist/tools/handlers/common-handlers.d.ts +14 -0
  126. package/dist/tools/handlers/common-handlers.d.ts.map +1 -1
  127. package/dist/tools/handlers/common-handlers.js +117 -9
  128. package/dist/tools/handlers/common-handlers.js.map +1 -1
  129. package/dist/tools/handlers/editor-handlers.d.ts.map +1 -1
  130. package/dist/tools/handlers/editor-handlers.js +139 -67
  131. package/dist/tools/handlers/editor-handlers.js.map +1 -1
  132. package/dist/tools/handlers/effect-handlers.d.ts.map +1 -1
  133. package/dist/tools/handlers/effect-handlers.js +324 -36
  134. package/dist/tools/handlers/effect-handlers.js.map +1 -1
  135. package/dist/tools/handlers/environment-handlers.d.ts.map +1 -1
  136. package/dist/tools/handlers/environment-handlers.js +186 -21
  137. package/dist/tools/handlers/environment-handlers.js.map +1 -1
  138. package/dist/tools/handlers/game-framework-handlers.d.ts.map +1 -1
  139. package/dist/tools/handlers/game-framework-handlers.js +10 -12
  140. package/dist/tools/handlers/game-framework-handlers.js.map +1 -1
  141. package/dist/tools/handlers/gas-handlers.d.ts.map +1 -1
  142. package/dist/tools/handlers/gas-handlers.js +136 -20
  143. package/dist/tools/handlers/gas-handlers.js.map +1 -1
  144. package/dist/tools/handlers/geometry-handlers.d.ts.map +1 -1
  145. package/dist/tools/handlers/geometry-handlers.js +130 -7
  146. package/dist/tools/handlers/geometry-handlers.js.map +1 -1
  147. package/dist/tools/handlers/graph-handlers.d.ts.map +1 -1
  148. package/dist/tools/handlers/graph-handlers.js +46 -11
  149. package/dist/tools/handlers/graph-handlers.js.map +1 -1
  150. package/dist/tools/handlers/input-handlers.d.ts.map +1 -1
  151. package/dist/tools/handlers/input-handlers.js +33 -75
  152. package/dist/tools/handlers/input-handlers.js.map +1 -1
  153. package/dist/tools/handlers/inspect-handlers.d.ts.map +1 -1
  154. package/dist/tools/handlers/inspect-handlers.js +136 -39
  155. package/dist/tools/handlers/inspect-handlers.js.map +1 -1
  156. package/dist/tools/handlers/interaction-handlers.d.ts.map +1 -1
  157. package/dist/tools/handlers/interaction-handlers.js +14 -12
  158. package/dist/tools/handlers/interaction-handlers.js.map +1 -1
  159. package/dist/tools/handlers/inventory-handlers.d.ts.map +1 -1
  160. package/dist/tools/handlers/inventory-handlers.js +19 -12
  161. package/dist/tools/handlers/inventory-handlers.js.map +1 -1
  162. package/dist/tools/handlers/level-handlers.d.ts.map +1 -1
  163. package/dist/tools/handlers/level-handlers.js +166 -149
  164. package/dist/tools/handlers/level-handlers.js.map +1 -1
  165. package/dist/tools/handlers/level-structure-handlers.d.ts.map +1 -1
  166. package/dist/tools/handlers/level-structure-handlers.js +18 -34
  167. package/dist/tools/handlers/level-structure-handlers.js.map +1 -1
  168. package/dist/tools/handlers/manage-tools-handlers.js +3 -3
  169. package/dist/tools/handlers/manage-tools-handlers.js.map +1 -1
  170. package/dist/tools/handlers/material-authoring-handlers.d.ts.map +1 -1
  171. package/dist/tools/handlers/material-authoring-handlers.js +382 -41
  172. package/dist/tools/handlers/material-authoring-handlers.js.map +1 -1
  173. package/dist/tools/handlers/navigation-handlers.d.ts.map +1 -1
  174. package/dist/tools/handlers/navigation-handlers.js +11 -36
  175. package/dist/tools/handlers/navigation-handlers.js.map +1 -1
  176. package/dist/tools/handlers/networking-handlers.d.ts.map +1 -1
  177. package/dist/tools/handlers/networking-handlers.js +17 -15
  178. package/dist/tools/handlers/networking-handlers.js.map +1 -1
  179. package/dist/tools/handlers/niagara-authoring-handlers.d.ts.map +1 -1
  180. package/dist/tools/handlers/niagara-authoring-handlers.js +24 -23
  181. package/dist/tools/handlers/niagara-authoring-handlers.js.map +1 -1
  182. package/dist/tools/handlers/pcg-handlers.d.ts +4 -0
  183. package/dist/tools/handlers/pcg-handlers.d.ts.map +1 -0
  184. package/dist/tools/handlers/pcg-handlers.js +77 -0
  185. package/dist/tools/handlers/pcg-handlers.js.map +1 -0
  186. package/dist/tools/handlers/performance-handlers.d.ts.map +1 -1
  187. package/dist/tools/handlers/performance-handlers.js +35 -42
  188. package/dist/tools/handlers/performance-handlers.js.map +1 -1
  189. package/dist/tools/handlers/pipeline-handlers.d.ts.map +1 -1
  190. package/dist/tools/handlers/pipeline-handlers.js +157 -39
  191. package/dist/tools/handlers/pipeline-handlers.js.map +1 -1
  192. package/dist/tools/handlers/sequence-handlers.d.ts.map +1 -1
  193. package/dist/tools/handlers/sequence-handlers.js +6 -4
  194. package/dist/tools/handlers/sequence-handlers.js.map +1 -1
  195. package/dist/tools/handlers/sessions-handlers.d.ts.map +1 -1
  196. package/dist/tools/handlers/sessions-handlers.js +7 -15
  197. package/dist/tools/handlers/sessions-handlers.js.map +1 -1
  198. package/dist/tools/handlers/spline-handlers.d.ts.map +1 -1
  199. package/dist/tools/handlers/spline-handlers.js +8 -35
  200. package/dist/tools/handlers/spline-handlers.js.map +1 -1
  201. package/dist/tools/handlers/system-handlers.d.ts.map +1 -1
  202. package/dist/tools/handlers/system-handlers.js +100 -26
  203. package/dist/tools/handlers/system-handlers.js.map +1 -1
  204. package/dist/tools/handlers/texture-handlers.d.ts.map +1 -1
  205. package/dist/tools/handlers/texture-handlers.js +14 -0
  206. package/dist/tools/handlers/texture-handlers.js.map +1 -1
  207. package/dist/tools/handlers/volume-handlers.d.ts.map +1 -1
  208. package/dist/tools/handlers/volume-handlers.js +6 -33
  209. package/dist/tools/handlers/volume-handlers.js.map +1 -1
  210. package/dist/tools/handlers/widget-authoring-handlers.d.ts.map +1 -1
  211. package/dist/tools/handlers/widget-authoring-handlers.js +26 -20
  212. package/dist/tools/handlers/widget-authoring-handlers.js.map +1 -1
  213. package/dist/tools/level.d.ts +2 -2
  214. package/dist/tools/level.d.ts.map +1 -1
  215. package/dist/tools/level.js +2 -1
  216. package/dist/tools/level.js.map +1 -1
  217. package/dist/tools/property-dictionary.js +1 -1
  218. package/dist/tools/property-dictionary.js.map +1 -1
  219. package/dist/tools/schemas/core-tools.d.ts +1 -1
  220. package/dist/tools/schemas/core-tools.d.ts.map +1 -1
  221. package/dist/tools/schemas/core-tools.js +94 -57
  222. package/dist/tools/schemas/core-tools.js.map +1 -1
  223. package/dist/tools/tool-definition-utils.d.ts +8 -0
  224. package/dist/tools/tool-definition-utils.d.ts.map +1 -1
  225. package/dist/tools/tool-definition-utils.js +20 -0
  226. package/dist/tools/tool-definition-utils.js.map +1 -1
  227. package/dist/types/automation-responses.d.ts +26 -33
  228. package/dist/types/automation-responses.d.ts.map +1 -1
  229. package/dist/types/env.d.ts.map +1 -1
  230. package/dist/types/env.js +7 -6
  231. package/dist/types/env.js.map +1 -1
  232. package/dist/types/handler-types.d.ts +41 -20
  233. package/dist/types/handler-types.d.ts.map +1 -1
  234. package/dist/types/index.d.ts +2 -2
  235. package/dist/types/index.d.ts.map +1 -1
  236. package/dist/types/index.js.map +1 -1
  237. package/dist/types/tool-interfaces.d.ts +5 -873
  238. package/dist/types/tool-interfaces.d.ts.map +1 -1
  239. package/dist/types/tool-types.d.ts +35 -1
  240. package/dist/types/tool-types.d.ts.map +1 -1
  241. package/dist/unreal-bridge.d.ts.map +1 -1
  242. package/dist/unreal-bridge.js +16 -6
  243. package/dist/unreal-bridge.js.map +1 -1
  244. package/dist/utils/action-constants.d.ts +4 -1
  245. package/dist/utils/action-constants.d.ts.map +1 -1
  246. package/dist/utils/action-constants.js +4 -1
  247. package/dist/utils/action-constants.js.map +1 -1
  248. package/dist/utils/command-validator.d.ts.map +1 -1
  249. package/dist/utils/command-validator.js +5 -4
  250. package/dist/utils/command-validator.js.map +1 -1
  251. package/dist/utils/elicitation.d.ts +5 -2
  252. package/dist/utils/elicitation.d.ts.map +1 -1
  253. package/dist/utils/elicitation.js +38 -21
  254. package/dist/utils/elicitation.js.map +1 -1
  255. package/dist/utils/environment-snapshot.d.ts +17 -0
  256. package/dist/utils/environment-snapshot.d.ts.map +1 -0
  257. package/dist/utils/environment-snapshot.js +242 -0
  258. package/dist/utils/environment-snapshot.js.map +1 -0
  259. package/dist/utils/error-handler.d.ts +1 -11
  260. package/dist/utils/error-handler.d.ts.map +1 -1
  261. package/dist/utils/error-handler.js +41 -25
  262. package/dist/utils/error-handler.js.map +1 -1
  263. package/dist/utils/index.d.ts +2 -1
  264. package/dist/utils/index.d.ts.map +1 -1
  265. package/dist/utils/index.js +2 -1
  266. package/dist/utils/index.js.map +1 -1
  267. package/dist/utils/ini-reader.js +4 -4
  268. package/dist/utils/ini-reader.js.map +1 -1
  269. package/dist/utils/log-reader.d.ts +29 -0
  270. package/dist/utils/log-reader.d.ts.map +1 -0
  271. package/dist/utils/log-reader.js +229 -0
  272. package/dist/utils/log-reader.js.map +1 -0
  273. package/dist/utils/log-redaction.d.ts +4 -0
  274. package/dist/utils/log-redaction.d.ts.map +1 -0
  275. package/dist/utils/log-redaction.js +27 -0
  276. package/dist/utils/log-redaction.js.map +1 -0
  277. package/dist/utils/logger.d.ts +1 -0
  278. package/dist/utils/logger.d.ts.map +1 -1
  279. package/dist/utils/logger.js +20 -7
  280. package/dist/utils/logger.js.map +1 -1
  281. package/dist/utils/normalize.d.ts.map +1 -1
  282. package/dist/utils/normalize.js +31 -30
  283. package/dist/utils/normalize.js.map +1 -1
  284. package/dist/utils/path-security.d.ts.map +1 -1
  285. package/dist/utils/path-security.js +20 -11
  286. package/dist/utils/path-security.js.map +1 -1
  287. package/dist/utils/response-factory.d.ts +1 -1
  288. package/dist/utils/response-factory.d.ts.map +1 -1
  289. package/dist/utils/response-factory.js +17 -3
  290. package/dist/utils/response-factory.js.map +1 -1
  291. package/dist/utils/response-validator.d.ts.map +1 -1
  292. package/dist/utils/response-validator.js +114 -47
  293. package/dist/utils/response-validator.js.map +1 -1
  294. package/dist/utils/safe-json.d.ts.map +1 -1
  295. package/dist/utils/safe-json.js +24 -18
  296. package/dist/utils/safe-json.js.map +1 -1
  297. package/dist/utils/type-coercion.d.ts +2 -3
  298. package/dist/utils/type-coercion.d.ts.map +1 -1
  299. package/dist/utils/type-coercion.js +42 -14
  300. package/dist/utils/type-coercion.js.map +1 -1
  301. package/dist/utils/type-guards.d.ts +2 -0
  302. package/dist/utils/type-guards.d.ts.map +1 -0
  303. package/dist/utils/type-guards.js +4 -0
  304. package/dist/utils/type-guards.js.map +1 -0
  305. package/dist/utils/unreal-command-queue.d.ts +2 -0
  306. package/dist/utils/unreal-command-queue.d.ts.map +1 -1
  307. package/dist/utils/unreal-command-queue.js +80 -54
  308. package/dist/utils/unreal-command-queue.js.map +1 -1
  309. package/dist/utils/validation.d.ts +2 -1
  310. package/dist/utils/validation.d.ts.map +1 -1
  311. package/dist/utils/validation.js +44 -34
  312. package/dist/utils/validation.js.map +1 -1
  313. package/package.json +4 -6
  314. package/server.json +3 -3
  315. package/dist/graphql/loaders.d.ts +0 -64
  316. package/dist/graphql/loaders.d.ts.map +0 -1
  317. package/dist/graphql/loaders.js +0 -117
  318. package/dist/graphql/loaders.js.map +0 -1
  319. package/dist/graphql/resolvers.d.ts +0 -373
  320. package/dist/graphql/resolvers.d.ts.map +0 -1
  321. package/dist/graphql/resolvers.js +0 -776
  322. package/dist/graphql/resolvers.js.map +0 -1
  323. package/dist/graphql/schema.d.ts +0 -5
  324. package/dist/graphql/schema.d.ts.map +0 -1
  325. package/dist/graphql/schema.js +0 -437
  326. package/dist/graphql/schema.js.map +0 -1
  327. package/dist/graphql/server.d.ts +0 -25
  328. package/dist/graphql/server.d.ts.map +0 -1
  329. package/dist/graphql/server.js +0 -119
  330. package/dist/graphql/server.js.map +0 -1
  331. package/dist/graphql/types.d.ts +0 -9
  332. package/dist/graphql/types.d.ts.map +0 -1
  333. package/dist/graphql/types.js +0 -2
  334. package/dist/graphql/types.js.map +0 -1
  335. package/dist/tools/actors.d.ts +0 -212
  336. package/dist/tools/actors.d.ts.map +0 -1
  337. package/dist/tools/actors.js +0 -456
  338. package/dist/tools/actors.js.map +0 -1
  339. package/dist/tools/animation.d.ts +0 -274
  340. package/dist/tools/animation.d.ts.map +0 -1
  341. package/dist/tools/animation.js +0 -773
  342. package/dist/tools/animation.js.map +0 -1
  343. package/dist/tools/assets.d.ts +0 -82
  344. package/dist/tools/assets.d.ts.map +0 -1
  345. package/dist/tools/assets.js +0 -383
  346. package/dist/tools/assets.js.map +0 -1
  347. package/dist/tools/blueprint.d.ts +0 -271
  348. package/dist/tools/blueprint.d.ts.map +0 -1
  349. package/dist/tools/blueprint.js +0 -828
  350. package/dist/tools/blueprint.js.map +0 -1
  351. package/dist/tools/environment.d.ts +0 -37
  352. package/dist/tools/environment.d.ts.map +0 -1
  353. package/dist/tools/environment.js +0 -338
  354. package/dist/tools/environment.js.map +0 -1
  355. package/dist/tools/foliage.d.ts +0 -140
  356. package/dist/tools/foliage.d.ts.map +0 -1
  357. package/dist/tools/foliage.js +0 -405
  358. package/dist/tools/foliage.js.map +0 -1
  359. package/dist/tools/landscape.d.ts +0 -120
  360. package/dist/tools/landscape.d.ts.map +0 -1
  361. package/dist/tools/landscape.js +0 -454
  362. package/dist/tools/landscape.js.map +0 -1
  363. package/dist/tools/lighting.d.ts +0 -240
  364. package/dist/tools/lighting.d.ts.map +0 -1
  365. package/dist/tools/lighting.js +0 -856
  366. package/dist/tools/lighting.js.map +0 -1
  367. package/dist/tools/logs.d.ts +0 -45
  368. package/dist/tools/logs.d.ts.map +0 -1
  369. package/dist/tools/logs.js +0 -235
  370. package/dist/tools/logs.js.map +0 -1
  371. package/dist/tools/niagara.d.ts +0 -277
  372. package/dist/tools/niagara.d.ts.map +0 -1
  373. package/dist/tools/niagara.js +0 -325
  374. package/dist/tools/niagara.js.map +0 -1
  375. package/dist/tools/physics.d.ts +0 -191
  376. package/dist/tools/physics.d.ts.map +0 -1
  377. package/dist/tools/physics.js +0 -492
  378. package/dist/tools/physics.js.map +0 -1
  379. package/dist/tools/sequence.d.ts +0 -139
  380. package/dist/tools/sequence.d.ts.map +0 -1
  381. package/dist/tools/sequence.js +0 -261
  382. package/dist/tools/sequence.js.map +0 -1
@@ -1,12 +1,21 @@
1
+ import { isRecord } from './type-guards.js';
2
+ function parsePositiveIntegerEnv(raw) {
3
+ const trimmed = raw.trim();
4
+ if (!/^\d+$/.test(trimmed))
5
+ return undefined;
6
+ const parsed = Number(trimmed);
7
+ return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;
8
+ }
1
9
  export function createElicitationHelper(server, log) {
2
10
  let supported = true;
3
11
  const MIN_TIMEOUT_MS = 30_000;
4
12
  const MAX_TIMEOUT_MS = 10 * 60 * 1000;
5
13
  const DEFAULT_TIMEOUT_MS = 3 * 60 * 1000;
14
+ const clampTimeoutMs = (timeoutMs) => Math.min(Math.max(timeoutMs, MIN_TIMEOUT_MS), MAX_TIMEOUT_MS);
6
15
  const timeoutEnvRaw = process.env.MCP_ELICITATION_TIMEOUT_MS ?? process.env.ELICITATION_TIMEOUT_MS ?? '';
7
- const parsedEnvTimeout = Number.parseInt(timeoutEnvRaw, 10);
8
- const defaultTimeoutMs = Number.isFinite(parsedEnvTimeout) && parsedEnvTimeout > 0
9
- ? Math.min(Math.max(parsedEnvTimeout, MIN_TIMEOUT_MS), MAX_TIMEOUT_MS)
16
+ const parsedEnvTimeout = parsePositiveIntegerEnv(timeoutEnvRaw);
17
+ const defaultTimeoutMs = parsedEnvTimeout !== undefined
18
+ ? clampTimeoutMs(parsedEnvTimeout)
10
19
  : DEFAULT_TIMEOUT_MS;
11
20
  if (timeoutEnvRaw) {
12
21
  log.debug('Configured elicitation timeout override detected', {
@@ -15,9 +24,10 @@ export function createElicitationHelper(server, log) {
15
24
  });
16
25
  }
17
26
  function isSafeSchema(schema) {
18
- if (!schema || schema.type !== 'object' || typeof schema.properties !== 'object')
27
+ if (!isRecord(schema) || schema.type !== 'object' || !isRecord(schema.properties))
19
28
  return false;
20
- const propertyEntries = Object.entries(schema.properties ?? {});
29
+ const properties = schema.properties;
30
+ const propertyEntries = Object.entries(properties);
21
31
  const propertyKeys = propertyEntries.map(([key]) => key);
22
32
  if (schema.required) {
23
33
  if (!Array.isArray(schema.required))
@@ -27,23 +37,22 @@ export function createElicitationHelper(server, log) {
27
37
  return false;
28
38
  }
29
39
  return propertyEntries.every(([, rawSchema]) => {
30
- if (!rawSchema || typeof rawSchema !== 'object')
40
+ if (!isRecord(rawSchema))
31
41
  return false;
32
- const primitive = rawSchema;
33
- if ('properties' in primitive || 'items' in primitive)
42
+ if ('properties' in rawSchema || 'items' in rawSchema)
34
43
  return false;
35
- if (Array.isArray(primitive.enum)) {
36
- const enumValues = primitive.enum;
44
+ if (Array.isArray(rawSchema.enum)) {
45
+ const enumValues = rawSchema.enum;
37
46
  const allStrings = enumValues.every((value) => typeof value === 'string');
38
47
  if (!allStrings)
39
48
  return false;
40
- return !('type' in primitive) || primitive.type === 'string';
49
+ return !('type' in rawSchema) || rawSchema.type === 'string';
41
50
  }
42
- if (primitive.type === 'string')
51
+ if (rawSchema.type === 'string')
43
52
  return true;
44
- if (primitive.type === 'number' || primitive.type === 'integer')
53
+ if (rawSchema.type === 'number' || rawSchema.type === 'integer')
45
54
  return true;
46
- if (primitive.type === 'boolean')
55
+ if (rawSchema.type === 'boolean')
47
56
  return true;
48
57
  return false;
49
58
  });
@@ -56,14 +65,21 @@ export function createElicitationHelper(server, log) {
56
65
  }
57
66
  const params = { message, requestedSchema };
58
67
  try {
59
- const elicitMethod = server?.elicitInput;
68
+ const elicitMethod = server.elicitInput;
60
69
  if (typeof elicitMethod !== 'function') {
61
70
  supported = false;
62
71
  throw new Error('elicitInput-not-available');
63
72
  }
64
- const requestedTimeout = opts.timeoutMs;
65
- const timeoutMs = Math.max(MIN_TIMEOUT_MS, requestedTimeout ?? defaultTimeoutMs);
73
+ const requestedTimeout = typeof opts.timeoutMs === 'number' && Number.isFinite(opts.timeoutMs)
74
+ ? opts.timeoutMs
75
+ : undefined;
76
+ const timeoutMs = requestedTimeout !== undefined ? clampTimeoutMs(requestedTimeout) : defaultTimeoutMs;
66
77
  const res = await elicitMethod.call(server, params, { timeout: timeoutMs });
78
+ if (!isRecord(res)) {
79
+ if (opts.alternate)
80
+ return opts.alternate();
81
+ return { ok: false, error: 'unexpected-response' };
82
+ }
67
83
  const action = res?.action;
68
84
  const content = res?.content;
69
85
  if (action === 'accept')
@@ -78,19 +94,20 @@ export function createElicitationHelper(server, log) {
78
94
  return { ok: false, error: 'unexpected-response' };
79
95
  }
80
96
  catch (e) {
81
- const errObj = e;
97
+ const errObj = isRecord(e) ? e : null;
82
98
  const msg = String(errObj?.message || e);
83
- const code = errObj?.code ?? errObj?.error?.code;
99
+ const nestedError = isRecord(errObj?.error) ? errObj.error : null;
100
+ const code = errObj?.code ?? nestedError?.code;
84
101
  if (msg.includes('Method not found') ||
85
102
  msg.includes('elicitInput-not-available') ||
86
103
  msg.includes('request-not-available') ||
87
104
  String(code) === '-32601') {
88
105
  supported = false;
89
106
  }
90
- log.debug('Elicitation failed; using alternate handler', { error: msg, code });
107
+ log.debug('Elicitation failed', { error: msg, code, usingAlternate: Boolean(opts.alternate) });
91
108
  if (opts.alternate)
92
109
  return opts.alternate();
93
- return { ok: false, error: msg.includes('timeout') ? 'timeout' : 'rpc-failed' };
110
+ return { ok: false, error: msg.toLowerCase().includes('timeout') ? 'timeout' : 'rpc-failed' };
94
111
  }
95
112
  }
96
113
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../../src/utils/elicitation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../../src/utils/elicitation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { StandardActionResponse } from '../types/tool-interfaces.js';
2
+ export declare function validateSnapshotPath(inputPath: unknown): {
3
+ isValid: false;
4
+ error: string;
5
+ } | {
6
+ isValid: true;
7
+ safePath: string;
8
+ };
9
+ export declare function exportEnvironmentSnapshot(params: {
10
+ path?: unknown;
11
+ filename?: unknown;
12
+ }): Promise<StandardActionResponse>;
13
+ export declare function importEnvironmentSnapshot(params: {
14
+ path?: unknown;
15
+ filename?: unknown;
16
+ }): Promise<StandardActionResponse>;
17
+ //# sourceMappingURL=environment-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-snapshot.d.ts","sourceRoot":"","sources":["../../src/utils/environment-snapshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAyF1E,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA2EhI;AAyCD,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA8B/H;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAoC/H"}
@@ -0,0 +1,242 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { DEFAULT_SKYLIGHT_INTENSITY, DEFAULT_SUN_INTENSITY, DEFAULT_TIME_OF_DAY } from '../constants.js';
4
+ function isPathWithinDirectory(candidate, directory) {
5
+ const relative = path.relative(directory, candidate);
6
+ return relative === '' || (relative.length > 0 && !relative.startsWith('..') && !path.isAbsolute(relative));
7
+ }
8
+ function getErrorCode(error) {
9
+ if (typeof error !== 'object' || error === null || !('code' in error)) {
10
+ return undefined;
11
+ }
12
+ const code = error.code;
13
+ return typeof code === 'string' ? code : undefined;
14
+ }
15
+ function isJsonObject(value) {
16
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
17
+ }
18
+ function parseSnapshotObject(contents) {
19
+ try {
20
+ const parsed = JSON.parse(contents);
21
+ return isJsonObject(parsed) ? parsed : undefined;
22
+ }
23
+ catch {
24
+ return undefined;
25
+ }
26
+ }
27
+ async function validateSnapshotFilesystemTarget(targetPath) {
28
+ const cwd = path.resolve(process.cwd());
29
+ let realCwd;
30
+ try {
31
+ realCwd = await fs.realpath(cwd);
32
+ }
33
+ catch (error) {
34
+ const message = error instanceof Error ? error.message : String(error);
35
+ return { success: false, error: `Failed to inspect project directory: ${message}` };
36
+ }
37
+ const absoluteTarget = path.resolve(targetPath);
38
+ const relativeTarget = path.relative(cwd, absoluteTarget);
39
+ if (relativeTarget === '' || relativeTarget.startsWith('..') || path.isAbsolute(relativeTarget)) {
40
+ return { success: false, error: 'SECURITY_VIOLATION: Snapshot path must be within the project directory' };
41
+ }
42
+ let current = cwd;
43
+ const segments = relativeTarget.split(path.sep).filter(segment => segment.length > 0);
44
+ for (const segment of segments) {
45
+ current = path.join(current, segment);
46
+ try {
47
+ const currentStat = await fs.lstat(current);
48
+ if (currentStat.isSymbolicLink()) {
49
+ return { success: false, error: 'SECURITY_VIOLATION: Snapshot path cannot contain symbolic link components' };
50
+ }
51
+ const realCurrent = await fs.realpath(current);
52
+ if (!isPathWithinDirectory(realCurrent, realCwd)) {
53
+ return { success: false, error: 'SECURITY_VIOLATION: Snapshot path must resolve within the project directory' };
54
+ }
55
+ }
56
+ catch (error) {
57
+ const code = getErrorCode(error);
58
+ if (code === 'ENOENT' || code === 'ENOTDIR') {
59
+ return { success: true };
60
+ }
61
+ const message = error instanceof Error ? error.message : String(error);
62
+ return { success: false, error: `Failed to inspect snapshot path: ${message}` };
63
+ }
64
+ }
65
+ return { success: true };
66
+ }
67
+ function validateSnapshotFilename(filename) {
68
+ if (filename.includes('\0')) {
69
+ return { success: false, error: 'SECURITY_VIOLATION: Filename cannot contain null bytes' };
70
+ }
71
+ if (filename.includes('..') || filename.includes('/') || filename.includes('\\')) {
72
+ return { success: false, error: 'SECURITY_VIOLATION: Filename cannot contain path separators or traversal' };
73
+ }
74
+ if (filename.includes(':')) {
75
+ return { success: false, error: 'SECURITY_VIOLATION: Filename cannot contain drive or stream separators' };
76
+ }
77
+ return { success: true };
78
+ }
79
+ export function validateSnapshotPath(inputPath) {
80
+ if (!inputPath || typeof inputPath !== 'string') {
81
+ return { isValid: false, error: 'Path is required' };
82
+ }
83
+ const trimmed = inputPath.trim();
84
+ if (trimmed.length === 0) {
85
+ return { isValid: false, error: 'Path cannot be empty' };
86
+ }
87
+ if (trimmed.includes('\0')) {
88
+ return { isValid: false, error: 'SECURITY_VIOLATION: Path cannot contain null bytes' };
89
+ }
90
+ if (/^[a-zA-Z]:[/\\]/.test(trimmed) || trimmed.includes(':')) {
91
+ return { isValid: false, error: 'SECURITY_VIOLATION: Absolute paths with drive letters are not allowed' };
92
+ }
93
+ const slashNormalized = trimmed.replace(/\\/g, '/');
94
+ const rawSegments = slashNormalized.split('/').filter(segment => segment.length > 0);
95
+ if (rawSegments.includes('..')) {
96
+ return { isValid: false, error: 'SECURITY_VIOLATION: Path traversal (..) is not allowed' };
97
+ }
98
+ const cwd = process.cwd();
99
+ if (slashNormalized.startsWith('/')) {
100
+ const systemPathPrefixes = ['/etc/', '/var/', '/usr/', '/bin/', '/sbin/', '/root/', '/home/', '/opt/', '/proc/', '/sys/', '/dev/', '/tmp/'];
101
+ for (const prefix of systemPathPrefixes) {
102
+ if (slashNormalized.toLowerCase().startsWith(prefix.toLowerCase())) {
103
+ return { isValid: false, error: `SECURITY_VIOLATION: System directory paths (${prefix}) are not allowed` };
104
+ }
105
+ }
106
+ const exactSystemPaths = ['/etc', '/var', '/usr', '/bin', '/sbin', '/root', '/home', '/opt', '/proc', '/sys', '/dev', '/tmp'];
107
+ if (exactSystemPaths.some(sp => slashNormalized.toLowerCase() === sp.toLowerCase())) {
108
+ return { isValid: false, error: 'SECURITY_VIOLATION: System directory paths are not allowed' };
109
+ }
110
+ const allowedUePaths = ['/Temp/', '/Saved/', '/Game/'];
111
+ const isAllowedUePath = allowedUePaths.some(uePath => slashNormalized.toLowerCase().startsWith(uePath.toLowerCase()) ||
112
+ slashNormalized.toLowerCase() === uePath.slice(0, -1).toLowerCase());
113
+ if (!isAllowedUePath) {
114
+ return { isValid: false, error: 'SECURITY_VIOLATION: Only UE project-relative paths (/Temp, /Saved, /Game) are allowed' };
115
+ }
116
+ let mappedPath;
117
+ if (slashNormalized.toLowerCase().startsWith('/temp')) {
118
+ mappedPath = path.join(cwd, 'temp', slashNormalized.slice(6));
119
+ }
120
+ else if (slashNormalized.toLowerCase().startsWith('/saved')) {
121
+ mappedPath = path.join(cwd, 'Saved', slashNormalized.slice(7));
122
+ }
123
+ else if (slashNormalized.toLowerCase().startsWith('/game')) {
124
+ mappedPath = path.join(cwd, 'Content', slashNormalized.slice(6));
125
+ }
126
+ else {
127
+ return { isValid: false, error: 'SECURITY_VIOLATION: Unrecognized UE path' };
128
+ }
129
+ const finalPath = path.normalize(mappedPath);
130
+ const cwdWithSep = cwd.endsWith(path.sep) ? cwd : cwd + path.sep;
131
+ if (finalPath !== cwd && !finalPath.startsWith(cwdWithSep)) {
132
+ return { isValid: false, error: 'SECURITY_VIOLATION: Path must be within the project directory' };
133
+ }
134
+ return { isValid: true, safePath: finalPath };
135
+ }
136
+ const resolvedPath = path.resolve(cwd, path.normalize(slashNormalized));
137
+ const cwdWithSep = cwd.endsWith(path.sep) ? cwd : cwd + path.sep;
138
+ if (resolvedPath !== cwd && !resolvedPath.startsWith(cwdWithSep)) {
139
+ return { isValid: false, error: 'SECURITY_VIOLATION: Path must be within the project directory' };
140
+ }
141
+ return { isValid: true, safePath: resolvedPath };
142
+ }
143
+ function envNumber(name, fallback, allowNegative = true) {
144
+ const raw = process.env[name];
145
+ if (raw !== undefined) {
146
+ const parsed = Number(raw);
147
+ if (Number.isFinite(parsed) && (allowNegative || parsed >= 0)) {
148
+ return parsed;
149
+ }
150
+ }
151
+ return fallback;
152
+ }
153
+ function getSnapshotTarget(params) {
154
+ const rawPath = typeof params?.path === 'string' && params.path.trim().length > 0
155
+ ? params.path.trim()
156
+ : './tmp/unreal-mcp/env_snapshot.json';
157
+ const rawFilename = typeof params?.filename === 'string' && params.filename.trim().length > 0
158
+ ? params.filename.trim()
159
+ : undefined;
160
+ const basePathValidation = validateSnapshotPath(rawPath);
161
+ if (!basePathValidation.isValid) {
162
+ return { success: false, error: basePathValidation.error };
163
+ }
164
+ if (rawFilename) {
165
+ const filenameValidation = validateSnapshotFilename(rawFilename);
166
+ if (!filenameValidation.success) {
167
+ return filenameValidation;
168
+ }
169
+ return { success: true, targetPath: path.join(basePathValidation.safePath, rawFilename) };
170
+ }
171
+ const hasExt = /\.[a-z0-9]+$/i.test(rawPath);
172
+ return {
173
+ success: true,
174
+ targetPath: hasExt ? basePathValidation.safePath : path.join(basePathValidation.safePath, 'env_snapshot.json')
175
+ };
176
+ }
177
+ export async function exportEnvironmentSnapshot(params) {
178
+ try {
179
+ const target = getSnapshotTarget(params);
180
+ if (!target.success) {
181
+ return target;
182
+ }
183
+ const filesystemTarget = await validateSnapshotFilesystemTarget(target.targetPath);
184
+ if (!filesystemTarget.success) {
185
+ return filesystemTarget;
186
+ }
187
+ await fs.mkdir(path.dirname(target.targetPath), { recursive: true });
188
+ const snapshot = {
189
+ generatedAt: new Date().toISOString(),
190
+ timeOfDay: envNumber('MCP_ENV_DEFAULT_TIME_OF_DAY', DEFAULT_TIME_OF_DAY),
191
+ sunIntensity: envNumber('MCP_ENV_DEFAULT_SUN_INTENSITY', DEFAULT_SUN_INTENSITY, false),
192
+ skylightIntensity: envNumber('MCP_ENV_DEFAULT_SKYLIGHT_INTENSITY', DEFAULT_SKYLIGHT_INTENSITY, false)
193
+ };
194
+ await fs.writeFile(target.targetPath, JSON.stringify(snapshot, null, 2), 'utf8');
195
+ return {
196
+ success: true,
197
+ message: `Environment snapshot exported to ${target.targetPath}`,
198
+ details: { path: target.targetPath }
199
+ };
200
+ }
201
+ catch (error) {
202
+ const message = error instanceof Error ? error.message : String(error);
203
+ return { success: false, error: `Failed to export environment snapshot: ${message}` };
204
+ }
205
+ }
206
+ export async function importEnvironmentSnapshot(params) {
207
+ const target = getSnapshotTarget(params);
208
+ if (!target.success) {
209
+ return target;
210
+ }
211
+ try {
212
+ const filesystemTarget = await validateSnapshotFilesystemTarget(target.targetPath);
213
+ if (!filesystemTarget.success) {
214
+ return filesystemTarget;
215
+ }
216
+ let parsed = undefined;
217
+ try {
218
+ const contents = await fs.readFile(target.targetPath, 'utf8');
219
+ parsed = parseSnapshotObject(contents);
220
+ }
221
+ catch (error) {
222
+ const errObj = error;
223
+ if (errObj && (errObj.code === 'ENOENT' || errObj.code === 'ENOTDIR')) {
224
+ return {
225
+ success: true,
226
+ message: `Environment snapshot file not found at ${target.targetPath}; import treated as no-op`
227
+ };
228
+ }
229
+ throw error;
230
+ }
231
+ return {
232
+ success: true,
233
+ message: `Environment snapshot import handled from ${target.targetPath}`,
234
+ details: parsed
235
+ };
236
+ }
237
+ catch (error) {
238
+ const message = error instanceof Error ? error.message : String(error);
239
+ return { success: false, error: `Failed to import environment snapshot: ${message}` };
240
+ }
241
+ }
242
+ //# sourceMappingURL=environment-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-snapshot.js","sourceRoot":"","sources":["../../src/utils/environment-snapshot.ts"],"names":[],"mappings":"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"}
@@ -19,16 +19,6 @@ interface ErrorResponseDebug {
19
19
  interface ErrorToolResponse extends BaseToolResponse {
20
20
  _debug?: ErrorResponseDebug;
21
21
  }
22
- interface ErrorLike {
23
- message?: string;
24
- code?: string;
25
- type?: string;
26
- errorType?: string;
27
- stack?: string;
28
- response?: {
29
- status?: number;
30
- };
31
- }
32
22
  export declare class ErrorHandler {
33
23
  static createErrorResponse(error: unknown, toolName: string, context?: Record<string, unknown>): ErrorToolResponse;
34
24
  private static categorizeError;
@@ -39,7 +29,7 @@ export declare class ErrorHandler {
39
29
  initialDelay?: number;
40
30
  maxDelay?: number;
41
31
  backoffMultiplier?: number;
42
- shouldRetry?: (error: ErrorLike | Error | unknown) => boolean;
32
+ shouldRetry?: (error: unknown) => boolean;
43
33
  }): Promise<T>;
44
34
  }
45
35
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAO1D,oBAAY,SAAS;IACnB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAKD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,UAAU,iBAAkB,SAAQ,gBAAgB;IAClD,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAKD,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC;AAoCD,qBAAa,YAAY;IAOvB,MAAM,CAAC,mBAAmB,CACxB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,iBAAiB;IA4CpB,OAAO,CAAC,MAAM,CAAC,eAAe;IA8D9B,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiCrC,OAAO,CAAC,MAAM,CAAC,WAAW;WAqBb,gBAAgB,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,KAAK,OAAO,CAAC;KAC1D,GACL,OAAO,CAAC,CAAC,CAAC;CAuBd"}
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ1D,oBAAY,SAAS;IACnB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAKD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,UAAU,iBAAkB,SAAQ,gBAAgB;IAClD,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AA6DD,qBAAa,YAAY;IAOvB,MAAM,CAAC,mBAAmB,CACxB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,iBAAiB;IA8CpB,OAAO,CAAC,MAAM,CAAC,eAAe;IA8D9B,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAgCrC,OAAO,CAAC,MAAM,CAAC,WAAW;WAqBb,gBAAgB,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;KACtC,GACL,OAAO,CAAC,CAAC,CAAC;CAuBd"}
@@ -1,4 +1,5 @@
1
1
  import { Logger } from './logger.js';
2
+ import { isRecord } from './type-guards.js';
2
3
  const log = new Logger('ErrorHandler');
3
4
  export var ErrorType;
4
5
  (function (ErrorType) {
@@ -10,27 +11,42 @@ export var ErrorType;
10
11
  ErrorType["TIMEOUT"] = "TIMEOUT";
11
12
  ErrorType["UNKNOWN"] = "UNKNOWN";
12
13
  })(ErrorType || (ErrorType = {}));
14
+ function stringFromUnknown(value) {
15
+ if (typeof value === 'string')
16
+ return value;
17
+ if (typeof value === 'number')
18
+ return String(value);
19
+ return undefined;
20
+ }
21
+ function numberFromUnknown(value) {
22
+ if (typeof value === 'number' && Number.isFinite(value))
23
+ return value;
24
+ if (typeof value === 'string' && value.trim()) {
25
+ const parsed = Number(value.trim());
26
+ if (Number.isFinite(parsed))
27
+ return parsed;
28
+ }
29
+ return undefined;
30
+ }
13
31
  function normalizeErrorToLike(error) {
14
32
  if (error instanceof Error) {
15
33
  return {
16
34
  message: error.message,
17
35
  stack: error.stack,
18
- code: error.code
36
+ code: stringFromUnknown(error.code)
19
37
  };
20
38
  }
21
- if (typeof error === 'object' && error !== null) {
22
- const obj = error;
39
+ if (isRecord(error)) {
40
+ const response = isRecord(error.response) ? error.response : null;
23
41
  return {
24
- message: typeof obj.message === 'string' ? obj.message : undefined,
25
- code: typeof obj.code === 'string' ? obj.code : undefined,
26
- type: typeof obj.type === 'string' ? obj.type : undefined,
27
- errorType: typeof obj.errorType === 'string' ? obj.errorType : undefined,
28
- stack: typeof obj.stack === 'string' ? obj.stack : undefined,
29
- response: typeof obj.response === 'object' && obj.response !== null
42
+ message: stringFromUnknown(error.message),
43
+ code: stringFromUnknown(error.code),
44
+ type: stringFromUnknown(error.type),
45
+ errorType: stringFromUnknown(error.errorType),
46
+ stack: typeof error.stack === 'string' ? error.stack : undefined,
47
+ response: response
30
48
  ? {
31
- status: typeof obj.response.status === 'number'
32
- ? obj.response.status
33
- : undefined
49
+ status: numberFromUnknown(response.status)
34
50
  }
35
51
  : undefined
36
52
  };
@@ -43,7 +59,9 @@ export class ErrorHandler {
43
59
  const errorType = this.categorizeError(errorObj);
44
60
  const userMessage = this.getUserFriendlyMessage(errorType, errorObj);
45
61
  const retriable = this.isRetriable(errorObj);
46
- const scope = context?.scope || `tool-call/${toolName}`;
62
+ const scope = typeof context?.scope === 'string' && context.scope.trim()
63
+ ? context.scope
64
+ : `tool-call/${toolName}`;
47
65
  const errorMessage = errorObj.message || String(error);
48
66
  const errorStack = errorObj.stack;
49
67
  log.error(`Tool ${toolName} failed:`, {
@@ -73,14 +91,16 @@ export class ErrorHandler {
73
91
  return response;
74
92
  }
75
93
  static categorizeError(error) {
76
- const errorObj = typeof error === 'object' ? error : null;
94
+ const errorObj = normalizeErrorToLike(error);
77
95
  const explicitType = (errorObj?.type || errorObj?.errorType || '').toString().toUpperCase();
78
96
  if (explicitType && Object.values(ErrorType).includes(explicitType)) {
79
97
  return explicitType;
80
98
  }
81
- const errorMessage = (errorObj?.message || String(error)).toLowerCase();
99
+ const errorMessage = (errorObj.message || String(error)).toLowerCase();
100
+ if (errorMessage.includes('timeout') || errorMessage.includes('timed out')) {
101
+ return ErrorType.TIMEOUT;
102
+ }
82
103
  if (errorMessage.includes('econnrefused') ||
83
- errorMessage.includes('timeout') ||
84
104
  errorMessage.includes('connection') ||
85
105
  errorMessage.includes('network')) {
86
106
  return ErrorType.CONNECTION;
@@ -103,15 +123,11 @@ export class ErrorHandler {
103
123
  errorMessage.includes('missing')) {
104
124
  return ErrorType.PARAMETER;
105
125
  }
106
- if (errorMessage.includes('timeout')) {
107
- return ErrorType.TIMEOUT;
108
- }
109
126
  return ErrorType.UNKNOWN;
110
127
  }
111
128
  static getUserFriendlyMessage(type, error) {
112
- const originalMessage = (typeof error === 'object' && error !== null && 'message' in error)
113
- ? error.message || String(error)
114
- : String(error);
129
+ const errorObj = normalizeErrorToLike(error);
130
+ const originalMessage = errorObj.message || String(error);
115
131
  switch (type) {
116
132
  case ErrorType.CONNECTION:
117
133
  return 'Failed to connect to Unreal Engine. Please ensure the Automation Bridge plugin is active and the editor is running.';
@@ -131,15 +147,15 @@ export class ErrorHandler {
131
147
  }
132
148
  static isRetriable(error) {
133
149
  try {
134
- const errorObj = typeof error === 'object' ? error : null;
150
+ const errorObj = normalizeErrorToLike(error);
135
151
  const code = (errorObj?.code || '').toString().toUpperCase();
136
152
  const msg = (errorObj?.message || String(error) || '').toLowerCase();
137
- const status = Number(errorObj?.response?.status);
153
+ const status = numberFromUnknown(errorObj?.response?.status);
138
154
  if (['ECONNRESET', 'ECONNREFUSED', 'ETIMEDOUT', 'EPIPE'].includes(code))
139
155
  return true;
140
156
  if (/timeout|timed out|network|connection|closed|unavailable|busy|temporar/.test(msg))
141
157
  return true;
142
- if (!isNaN(status) && (status === 429 || (status >= 500 && status < 600)))
158
+ if (status !== undefined && (status === 408 || status === 429 || (status >= 500 && status < 600)))
143
159
  return true;
144
160
  }
145
161
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;AAKvC,MAAM,CAAN,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,sCAAyB,CAAA;IACzB,sCAAyB,CAAA;IACzB,4CAA+B,CAAA;IAC/B,oCAAuB,CAAA;IACvB,oCAAuB,CAAA;IACvB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;AACrB,CAAC,EARW,SAAS,KAAT,SAAS,QAQpB;AAoCD,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAG,KAA+B,CAAC,IAAI;SAC5C,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,OAAO;YACL,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAClE,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACzD,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACzD,SAAS,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACxE,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC5D,QAAQ,EAAE,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI;gBACjE,CAAC,CAAC;oBACA,MAAM,EAAE,OAAQ,GAAG,CAAC,QAAoC,CAAC,MAAM,KAAK,QAAQ;wBAC1E,CAAC,CAAE,GAAG,CAAC,QAAoC,CAAC,MAAgB;wBAC5D,CAAC,CAAC,SAAS;iBACd;gBACD,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACpC,CAAC;AAKD,MAAM,OAAO,YAAY;IAOvB,MAAM,CAAC,mBAAmB,CACxB,KAAc,EACd,QAAgB,EAChB,OAAiC;QAEjC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAI,OAAO,EAAE,KAAgB,IAAI,aAAa,QAAQ,EAAE,CAAC;QACpE,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC;QAElC,GAAG,CAAC,KAAK,CAAC,QAAQ,QAAQ,UAAU,EAAE;YACpC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,YAAY;YACrB,SAAS;YACT,KAAK;YACL,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAsB;YAClC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,qBAAqB,QAAQ,KAAK,WAAW,EAAE;YACxD,SAAS;YACT,KAAK;SACN,CAAC;QAGF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,QAAQ,CAAC,MAAM,GAAG;gBAChB,SAAS;gBACT,aAAa,EAAE,YAAY;gBAC3B,KAAK,EAAE,UAAU;gBACjB,OAAO;gBACP,SAAS;gBACT,KAAK;aACN,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAMO,MAAM,CAAC,eAAe,CAAC,KAAiC;QAC9D,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5F,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,YAAyB,CAAC,EAAE,CAAC;YACjF,OAAO,YAAyB,CAAC;QACnC,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAGxE,IACE,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;YACrC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;YACnC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAChC,CAAC;YACD,OAAO,SAAS,CAAC,UAAU,CAAC;QAC9B,CAAC;QAGD,IACE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EACnC,CAAC;YACD,OAAO,SAAS,CAAC,UAAU,CAAC;QAC9B,CAAC;QAGD,IACE,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/B,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAC1C,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;YAClC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9B,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC9B,CAAC;YACD,OAAO,SAAS,CAAC,aAAa,CAAC;QACjC,CAAC;QAGD,IACE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;YAClC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAChC,CAAC;YACD,OAAO,SAAS,CAAC,SAAS,CAAC;QAC7B,CAAC;QAGD,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC,OAAO,CAAC;QAC3B,CAAC;QAED,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAOO,MAAM,CAAC,sBAAsB,CAAC,IAAe,EAAE,KAAiC;QACtF,MAAM,eAAe,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC;YACzF,CAAC,CAAE,KAA8B,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;YAC1D,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAElB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS,CAAC,UAAU;gBACvB,OAAO,qHAAqH,CAAC;YAE/H,KAAK,SAAS,CAAC,UAAU;gBACvB,OAAO,kBAAkB,eAAe,EAAE,CAAC;YAE7C,KAAK,SAAS,CAAC,aAAa;gBAC1B,OAAO,wBAAwB,eAAe,EAAE,CAAC;YAEnD,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,uBAAuB,eAAe,EAAE,CAAC;YAElD,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,iEAAiE,CAAC;YAE3E,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,qBAAqB,eAAe,EAAE,CAAC;YAEhD;gBACE,OAAO,eAAe,CAAC;QAC3B,CAAC;IACH,CAAC;IAMO,MAAM,CAAC,WAAW,CAAC,KAAiC;QAC1D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;YACvE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACrF,IAAI,uEAAuE,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAEb,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAOD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,EAAoB,EACpB,UAMI,EAAE;QAEN,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAgB,CAAC,CAAC,CAAC;QAElG,IAAI,KAAK,GAAG,YAAY,CAAC;QAEzB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,KAAK,UAAU,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClD,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBACzD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}