@ductape/sdk 0.0.4-v9 → 0.0.4-v91

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 (998) hide show
  1. package/dist/agents/agent-context.d.ts +98 -0
  2. package/dist/agents/agent-context.js +588 -0
  3. package/dist/agents/agent-context.js.map +1 -0
  4. package/dist/agents/agent-executor.d.ts +180 -0
  5. package/dist/agents/agent-executor.js +715 -0
  6. package/dist/agents/agent-executor.js.map +1 -0
  7. package/dist/agents/agents.service.d.ts +310 -0
  8. package/dist/agents/agents.service.js +1249 -0
  9. package/dist/agents/agents.service.js.map +1 -0
  10. package/dist/agents/index.d.ts +55 -0
  11. package/dist/agents/index.js +110 -0
  12. package/dist/agents/index.js.map +1 -0
  13. package/dist/agents/memory-manager.d.ts +182 -0
  14. package/dist/agents/memory-manager.js +383 -0
  15. package/dist/agents/memory-manager.js.map +1 -0
  16. package/dist/agents/tool-registry.d.ts +141 -0
  17. package/dist/agents/tool-registry.js +355 -0
  18. package/dist/agents/tool-registry.js.map +1 -0
  19. package/dist/agents/types/agents.types.d.ts +1227 -0
  20. package/dist/agents/types/agents.types.js +12 -0
  21. package/dist/agents/types/agents.types.js.map +1 -0
  22. package/dist/agents/types/index.d.ts +6 -0
  23. package/dist/agents/types/index.js +23 -0
  24. package/dist/agents/types/index.js.map +1 -0
  25. package/dist/agents/vector-store-adapter.d.ts +108 -0
  26. package/dist/agents/vector-store-adapter.js +213 -0
  27. package/dist/agents/vector-store-adapter.js.map +1 -0
  28. package/dist/api/services/appApi.service.d.ts +51 -5
  29. package/dist/api/services/appApi.service.js +101 -3
  30. package/dist/api/services/appApi.service.js.map +1 -1
  31. package/dist/api/services/pricingApi.service.d.ts +10 -0
  32. package/dist/api/services/pricingApi.service.js +34 -0
  33. package/dist/api/services/pricingApi.service.js.map +1 -0
  34. package/dist/api/services/processorApi.service.d.ts +322 -0
  35. package/dist/api/services/processorApi.service.js +252 -0
  36. package/dist/api/services/processorApi.service.js.map +1 -1
  37. package/dist/api/services/productsApi.service.d.ts +105 -0
  38. package/dist/api/services/productsApi.service.js +139 -3
  39. package/dist/api/services/productsApi.service.js.map +1 -1
  40. package/dist/api/services/resilienceApi.service.d.ts +106 -0
  41. package/dist/api/services/resilienceApi.service.js +224 -0
  42. package/dist/api/services/resilienceApi.service.js.map +1 -0
  43. package/dist/api/services/secretsApi.service.d.ts +50 -0
  44. package/dist/api/services/secretsApi.service.js +124 -0
  45. package/dist/api/services/secretsApi.service.js.map +1 -0
  46. package/dist/api/services/workflowApi.service.d.ts +199 -0
  47. package/dist/api/services/workflowApi.service.js +183 -0
  48. package/dist/api/services/workflowApi.service.js.map +1 -0
  49. package/dist/api/services/workspaceApi.service.d.ts +8 -0
  50. package/dist/api/services/workspaceApi.service.js +20 -0
  51. package/dist/api/services/workspaceApi.service.js.map +1 -1
  52. package/dist/api/urls.d.ts +62 -0
  53. package/dist/api/urls.js +87 -17
  54. package/dist/api/urls.js.map +1 -1
  55. package/dist/api/utils/auth.utils.d.ts +1 -3
  56. package/dist/api/utils/auth.utils.js.map +1 -1
  57. package/dist/api/utils/cache.utils.d.ts +1 -1
  58. package/dist/api/utils/cache.utils.js +2 -2
  59. package/dist/api/utils/cache.utils.js.map +1 -1
  60. package/dist/api/utils/strings.utils.d.ts +2 -0
  61. package/dist/api/utils/strings.utils.js +14 -0
  62. package/dist/api/utils/strings.utils.js.map +1 -1
  63. package/dist/apps/services/app.service.d.ts +41 -33
  64. package/dist/apps/services/app.service.js +472 -184
  65. package/dist/apps/services/app.service.js.map +1 -1
  66. package/dist/apps/utils/auth-context-manager.d.ts +137 -0
  67. package/dist/apps/utils/auth-context-manager.js +248 -0
  68. package/dist/apps/utils/auth-context-manager.js.map +1 -0
  69. package/dist/apps/utils/credential-manager.d.ts +128 -0
  70. package/dist/apps/utils/credential-manager.js +199 -0
  71. package/dist/apps/utils/credential-manager.js.map +1 -0
  72. package/dist/apps/utils/index.d.ts +10 -0
  73. package/dist/apps/utils/index.js +54 -0
  74. package/dist/apps/utils/index.js.map +1 -0
  75. package/dist/apps/utils/input-helpers.d.ts +67 -0
  76. package/dist/apps/utils/input-helpers.js +185 -0
  77. package/dist/apps/utils/input-helpers.js.map +1 -0
  78. package/dist/apps/utils/input-resolver.d.ts +165 -0
  79. package/dist/apps/utils/input-resolver.js +477 -0
  80. package/dist/apps/utils/input-resolver.js.map +1 -0
  81. package/dist/apps/utils/oauth-manager.d.ts +196 -0
  82. package/dist/apps/utils/oauth-manager.js +429 -0
  83. package/dist/apps/utils/oauth-manager.js.map +1 -0
  84. package/dist/apps/validators/joi-validators/create.appAction.validator.d.ts +1 -2
  85. package/dist/apps/validators/joi-validators/create.appAction.validator.js +21 -2
  86. package/dist/apps/validators/joi-validators/create.appAction.validator.js.map +1 -1
  87. package/dist/apps/validators/joi-validators/update.appAction.validator.js +11 -1
  88. package/dist/apps/validators/joi-validators/update.appAction.validator.js.map +1 -1
  89. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.d.ts +1 -1
  90. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js +34 -1
  91. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js.map +1 -1
  92. package/dist/bin.d.ts +26 -0
  93. package/dist/bin.js +28 -0
  94. package/dist/bin.js.map +1 -0
  95. package/dist/brokers/brokers.service.d.ts +297 -0
  96. package/dist/brokers/brokers.service.js +797 -0
  97. package/dist/brokers/brokers.service.js.map +1 -0
  98. package/dist/brokers/index.d.ts +46 -0
  99. package/dist/brokers/index.js +83 -0
  100. package/dist/brokers/index.js.map +1 -0
  101. package/dist/brokers/types/index.d.ts +316 -0
  102. package/dist/brokers/types/index.js +8 -0
  103. package/dist/brokers/types/index.js.map +1 -0
  104. package/dist/brokers/utils/broker.util.d.ts +33 -0
  105. package/dist/brokers/utils/broker.util.js +125 -0
  106. package/dist/brokers/utils/broker.util.js.map +1 -0
  107. package/dist/brokers/utils/providers/aws-sqs.service.d.ts +16 -0
  108. package/dist/brokers/utils/providers/aws-sqs.service.js +71 -0
  109. package/dist/brokers/utils/providers/aws-sqs.service.js.map +1 -0
  110. package/dist/brokers/utils/providers/google-pubsub.service.d.ts +16 -0
  111. package/dist/brokers/utils/providers/google-pubsub.service.js +43 -0
  112. package/dist/brokers/utils/providers/google-pubsub.service.js.map +1 -0
  113. package/dist/brokers/utils/providers/index.d.ts +6 -0
  114. package/dist/brokers/utils/providers/index.js +16 -0
  115. package/dist/brokers/utils/providers/index.js.map +1 -0
  116. package/dist/brokers/utils/providers/kafka.service.d.ts +23 -0
  117. package/dist/brokers/utils/providers/kafka.service.js +131 -0
  118. package/dist/brokers/utils/providers/kafka.service.js.map +1 -0
  119. package/dist/brokers/utils/providers/nats.service.d.ts +18 -0
  120. package/dist/brokers/utils/providers/nats.service.js +63 -0
  121. package/dist/brokers/utils/providers/nats.service.js.map +1 -0
  122. package/dist/brokers/utils/providers/rabbitmq.service.d.ts +15 -0
  123. package/dist/brokers/utils/providers/rabbitmq.service.js +151 -0
  124. package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -0
  125. package/dist/brokers/utils/providers/redis.service.d.ts +18 -0
  126. package/dist/brokers/utils/providers/redis.service.js +93 -0
  127. package/dist/brokers/utils/providers/redis.service.js.map +1 -0
  128. package/dist/cache/cache.manager.d.ts +229 -0
  129. package/dist/cache/cache.manager.js +460 -0
  130. package/dist/cache/cache.manager.js.map +1 -0
  131. package/dist/cache/cache.service.d.ts +186 -0
  132. package/dist/cache/cache.service.js +437 -0
  133. package/dist/cache/cache.service.js.map +1 -0
  134. package/dist/cache/index.d.ts +52 -0
  135. package/dist/cache/index.js +79 -0
  136. package/dist/cache/index.js.map +1 -0
  137. package/dist/cache/types/index.d.ts +106 -0
  138. package/dist/cache/types/index.js +6 -0
  139. package/dist/cache/types/index.js.map +1 -0
  140. package/dist/clients/pricing.client.d.ts +3 -0
  141. package/dist/clients/pricing.client.js +33 -0
  142. package/dist/clients/pricing.client.js.map +1 -0
  143. package/dist/database/actions/action-manager.d.ts +170 -0
  144. package/dist/database/actions/action-manager.js +465 -0
  145. package/dist/database/actions/action-manager.js.map +1 -0
  146. package/dist/database/actions/index.d.ts +6 -0
  147. package/dist/database/actions/index.js +13 -0
  148. package/dist/database/actions/index.js.map +1 -0
  149. package/dist/database/adapters/adapter.factory.d.ts +62 -0
  150. package/dist/database/adapters/adapter.factory.js +97 -0
  151. package/dist/database/adapters/adapter.factory.js.map +1 -0
  152. package/dist/database/adapters/base.adapter.d.ts +423 -0
  153. package/dist/database/adapters/base.adapter.js +260 -0
  154. package/dist/database/adapters/base.adapter.js.map +1 -0
  155. package/dist/database/adapters/cassandra.adapter.d.ts +92 -0
  156. package/dist/database/adapters/cassandra.adapter.js +1091 -0
  157. package/dist/database/adapters/cassandra.adapter.js.map +1 -0
  158. package/dist/database/adapters/dynamodb.adapter.d.ts +110 -0
  159. package/dist/database/adapters/dynamodb.adapter.js +1564 -0
  160. package/dist/database/adapters/dynamodb.adapter.js.map +1 -0
  161. package/dist/database/adapters/index.d.ts +11 -0
  162. package/dist/database/adapters/index.js +27 -0
  163. package/dist/database/adapters/index.js.map +1 -0
  164. package/dist/database/adapters/mariadb.adapter.d.ts +100 -0
  165. package/dist/database/adapters/mariadb.adapter.js +247 -0
  166. package/dist/database/adapters/mariadb.adapter.js.map +1 -0
  167. package/dist/database/adapters/mongodb.adapter.d.ts +121 -0
  168. package/dist/database/adapters/mongodb.adapter.js +1284 -0
  169. package/dist/database/adapters/mongodb.adapter.js.map +1 -0
  170. package/dist/database/adapters/mysql.adapter.d.ts +86 -0
  171. package/dist/database/adapters/mysql.adapter.js +1371 -0
  172. package/dist/database/adapters/mysql.adapter.js.map +1 -0
  173. package/dist/database/adapters/postgresql.adapter.d.ts +90 -0
  174. package/dist/database/adapters/postgresql.adapter.js +1487 -0
  175. package/dist/database/adapters/postgresql.adapter.js.map +1 -0
  176. package/dist/database/databases.service.d.ts +1408 -0
  177. package/dist/database/databases.service.js +2953 -0
  178. package/dist/database/databases.service.js.map +1 -0
  179. package/dist/database/index.d.ts +46 -0
  180. package/dist/database/index.js +109 -0
  181. package/dist/database/index.js.map +1 -0
  182. package/dist/database/migrations/index.d.ts +6 -0
  183. package/dist/database/migrations/index.js +12 -0
  184. package/dist/database/migrations/index.js.map +1 -0
  185. package/dist/database/migrations/migration-engine.d.ts +136 -0
  186. package/dist/database/migrations/migration-engine.js +1421 -0
  187. package/dist/database/migrations/migration-engine.js.map +1 -0
  188. package/dist/database/operators/aggregation-builder.d.ts +67 -0
  189. package/dist/database/operators/aggregation-builder.js +841 -0
  190. package/dist/database/operators/aggregation-builder.js.map +1 -0
  191. package/dist/database/operators/index.d.ts +7 -0
  192. package/dist/database/operators/index.js +15 -0
  193. package/dist/database/operators/index.js.map +1 -0
  194. package/dist/database/operators/query-builder.d.ts +69 -0
  195. package/dist/database/operators/query-builder.js +447 -0
  196. package/dist/database/operators/query-builder.js.map +1 -0
  197. package/dist/database/presave/decrypt.d.ts +25 -0
  198. package/dist/database/presave/decrypt.js +146 -0
  199. package/dist/database/presave/decrypt.js.map +1 -0
  200. package/dist/database/presave/index.d.ts +9 -0
  201. package/dist/database/presave/index.js +18 -0
  202. package/dist/database/presave/index.js.map +1 -0
  203. package/dist/database/presave/presave-processor.d.ts +148 -0
  204. package/dist/database/presave/presave-processor.js +702 -0
  205. package/dist/database/presave/presave-processor.js.map +1 -0
  206. package/dist/database/schema/index.d.ts +7 -0
  207. package/dist/database/schema/index.js +13 -0
  208. package/dist/database/schema/index.js.map +1 -0
  209. package/dist/database/schema/schema-manager.d.ts +258 -0
  210. package/dist/database/schema/schema-manager.js +638 -0
  211. package/dist/database/schema/schema-manager.js.map +1 -0
  212. package/dist/database/transactions/index.d.ts +6 -0
  213. package/dist/database/transactions/index.js +13 -0
  214. package/dist/database/transactions/index.js.map +1 -0
  215. package/dist/database/transactions/transaction-manager.d.ts +113 -0
  216. package/dist/database/transactions/transaction-manager.js +344 -0
  217. package/dist/database/transactions/transaction-manager.js.map +1 -0
  218. package/dist/database/triggers/index.d.ts +7 -0
  219. package/dist/database/triggers/index.js +14 -0
  220. package/dist/database/triggers/index.js.map +1 -0
  221. package/dist/database/triggers/trigger-processor.d.ts +239 -0
  222. package/dist/database/triggers/trigger-processor.js +1034 -0
  223. package/dist/database/triggers/trigger-processor.js.map +1 -0
  224. package/dist/database/types/action.interface.d.ts +148 -0
  225. package/dist/database/types/action.interface.js +6 -0
  226. package/dist/database/types/action.interface.js.map +1 -0
  227. package/dist/database/types/aggregation.interface.d.ts +185 -0
  228. package/dist/database/types/aggregation.interface.js +6 -0
  229. package/dist/database/types/aggregation.interface.js.map +1 -0
  230. package/dist/database/types/connection.interface.d.ts +137 -0
  231. package/dist/database/types/connection.interface.js +6 -0
  232. package/dist/database/types/connection.interface.js.map +1 -0
  233. package/dist/database/types/enums.d.ts +195 -0
  234. package/dist/database/types/enums.js +244 -0
  235. package/dist/database/types/enums.js.map +1 -0
  236. package/dist/database/types/index.d.ts +14 -0
  237. package/dist/database/types/index.js +31 -0
  238. package/dist/database/types/index.js.map +1 -0
  239. package/dist/database/types/migration.interface.d.ts +686 -0
  240. package/dist/database/types/migration.interface.js +9 -0
  241. package/dist/database/types/migration.interface.js.map +1 -0
  242. package/dist/database/types/presave.interface.d.ts +292 -0
  243. package/dist/database/types/presave.interface.js +60 -0
  244. package/dist/database/types/presave.interface.js.map +1 -0
  245. package/dist/database/types/query.interface.d.ts +205 -0
  246. package/dist/database/types/query.interface.js +6 -0
  247. package/dist/database/types/query.interface.js.map +1 -0
  248. package/dist/database/types/schema.interface.d.ts +412 -0
  249. package/dist/database/types/schema.interface.js +6 -0
  250. package/dist/database/types/schema.interface.js.map +1 -0
  251. package/dist/database/types/transaction.interface.d.ts +84 -0
  252. package/dist/database/types/transaction.interface.js +6 -0
  253. package/dist/database/types/transaction.interface.js.map +1 -0
  254. package/dist/database/types/trigger.interface.d.ts +612 -0
  255. package/dist/database/types/trigger.interface.js +121 -0
  256. package/dist/database/types/trigger.interface.js.map +1 -0
  257. package/dist/database/types/write.interface.d.ts +216 -0
  258. package/dist/database/types/write.interface.js +6 -0
  259. package/dist/database/types/write.interface.js.map +1 -0
  260. package/dist/database/utils/database-error.d.ts +96 -0
  261. package/dist/database/utils/database-error.js +221 -0
  262. package/dist/database/utils/database-error.js.map +1 -0
  263. package/dist/database/utils/index.d.ts +6 -0
  264. package/dist/database/utils/index.js +11 -0
  265. package/dist/database/utils/index.js.map +1 -0
  266. package/dist/graph/adapters/adapter.factory.d.ts +47 -0
  267. package/dist/graph/adapters/adapter.factory.js +77 -0
  268. package/dist/graph/adapters/adapter.factory.js.map +1 -0
  269. package/dist/graph/adapters/arangodb.adapter.d.ts +86 -0
  270. package/dist/graph/adapters/arangodb.adapter.js +1588 -0
  271. package/dist/graph/adapters/arangodb.adapter.js.map +1 -0
  272. package/dist/graph/adapters/base.adapter.d.ts +264 -0
  273. package/dist/graph/adapters/base.adapter.js +156 -0
  274. package/dist/graph/adapters/base.adapter.js.map +1 -0
  275. package/dist/graph/adapters/index.d.ts +11 -0
  276. package/dist/graph/adapters/index.js +21 -0
  277. package/dist/graph/adapters/index.js.map +1 -0
  278. package/dist/graph/adapters/memgraph.adapter.d.ts +110 -0
  279. package/dist/graph/adapters/memgraph.adapter.js +1452 -0
  280. package/dist/graph/adapters/memgraph.adapter.js.map +1 -0
  281. package/dist/graph/adapters/neo4j.adapter.d.ts +81 -0
  282. package/dist/graph/adapters/neo4j.adapter.js +1317 -0
  283. package/dist/graph/adapters/neo4j.adapter.js.map +1 -0
  284. package/dist/graph/adapters/neptune.adapter.d.ts +82 -0
  285. package/dist/graph/adapters/neptune.adapter.js +1369 -0
  286. package/dist/graph/adapters/neptune.adapter.js.map +1 -0
  287. package/dist/graph/graphs.service.d.ts +568 -0
  288. package/dist/graph/graphs.service.js +1948 -0
  289. package/dist/graph/graphs.service.js.map +1 -0
  290. package/dist/graph/index.d.ts +57 -0
  291. package/dist/graph/index.js +77 -0
  292. package/dist/graph/index.js.map +1 -0
  293. package/dist/graph/transactions/index.d.ts +4 -0
  294. package/dist/graph/transactions/index.js +9 -0
  295. package/dist/graph/transactions/index.js.map +1 -0
  296. package/dist/graph/transactions/transaction-manager.d.ts +61 -0
  297. package/dist/graph/transactions/transaction-manager.js +126 -0
  298. package/dist/graph/transactions/transaction-manager.js.map +1 -0
  299. package/dist/graph/types/connection.interface.d.ts +149 -0
  300. package/dist/graph/types/connection.interface.js +9 -0
  301. package/dist/graph/types/connection.interface.js.map +1 -0
  302. package/dist/graph/types/enums.d.ts +101 -0
  303. package/dist/graph/types/enums.js +114 -0
  304. package/dist/graph/types/enums.js.map +1 -0
  305. package/dist/graph/types/index.d.ts +13 -0
  306. package/dist/graph/types/index.js +20 -0
  307. package/dist/graph/types/index.js.map +1 -0
  308. package/dist/graph/types/node.interface.d.ts +248 -0
  309. package/dist/graph/types/node.interface.js +9 -0
  310. package/dist/graph/types/node.interface.js.map +1 -0
  311. package/dist/graph/types/query.interface.d.ts +175 -0
  312. package/dist/graph/types/query.interface.js +9 -0
  313. package/dist/graph/types/query.interface.js.map +1 -0
  314. package/dist/graph/types/relationship.interface.d.ts +207 -0
  315. package/dist/graph/types/relationship.interface.js +9 -0
  316. package/dist/graph/types/relationship.interface.js.map +1 -0
  317. package/dist/graph/types/schema.interface.d.ts +295 -0
  318. package/dist/graph/types/schema.interface.js +9 -0
  319. package/dist/graph/types/schema.interface.js.map +1 -0
  320. package/dist/graph/types/transaction.interface.d.ts +55 -0
  321. package/dist/graph/types/transaction.interface.js +9 -0
  322. package/dist/graph/types/transaction.interface.js.map +1 -0
  323. package/dist/graph/types/traversal.interface.d.ts +181 -0
  324. package/dist/graph/types/traversal.interface.js +9 -0
  325. package/dist/graph/types/traversal.interface.js.map +1 -0
  326. package/dist/graph/utils/graph-error.d.ts +71 -0
  327. package/dist/graph/utils/graph-error.js +142 -0
  328. package/dist/graph/utils/graph-error.js.map +1 -0
  329. package/dist/graph/utils/index.d.ts +4 -0
  330. package/dist/graph/utils/index.js +9 -0
  331. package/dist/graph/utils/index.js.map +1 -0
  332. package/dist/imports/imports.service.d.ts +3 -3
  333. package/dist/imports/imports.service.js +8 -7
  334. package/dist/imports/imports.service.js.map +1 -1
  335. package/dist/imports/imports.types.d.ts +8 -0
  336. package/dist/imports/repos/openApi.repo.d.ts +1 -1
  337. package/dist/imports/repos/openApi.repo.js +414 -47
  338. package/dist/imports/repos/openApi.repo.js.map +1 -1
  339. package/dist/imports/repos/postmanV21.repo.d.ts +1 -1
  340. package/dist/imports/repos/postmanV21.repo.js +126 -83
  341. package/dist/imports/repos/postmanV21.repo.js.map +1 -1
  342. package/dist/index.d.ts +3654 -289
  343. package/dist/index.js +5066 -669
  344. package/dist/index.js.map +1 -1
  345. package/dist/init.interface.d.ts +407 -0
  346. package/dist/init.interface.js +3 -0
  347. package/dist/init.interface.js.map +1 -0
  348. package/dist/inputs/inputs.service.d.ts +1 -1
  349. package/dist/inputs/utils/inputs.utils.create.js +1 -1
  350. package/dist/inputs/utils/inputs.utils.create.js.map +1 -1
  351. package/dist/jobs/index.d.ts +38 -0
  352. package/dist/jobs/index.js +50 -0
  353. package/dist/jobs/index.js.map +1 -0
  354. package/dist/jobs/jobs.service.d.ts +154 -0
  355. package/dist/jobs/jobs.service.js +491 -0
  356. package/dist/jobs/jobs.service.js.map +1 -0
  357. package/dist/jobs/jobs.state.d.ts +113 -0
  358. package/dist/jobs/jobs.state.js +447 -0
  359. package/dist/jobs/jobs.state.js.map +1 -0
  360. package/dist/jobs/types.d.ts +449 -0
  361. package/dist/jobs/types.js +74 -0
  362. package/dist/jobs/types.js.map +1 -0
  363. package/dist/logs/logs.service.js +6 -2
  364. package/dist/logs/logs.service.js.map +1 -1
  365. package/dist/logs/logs.types.d.ts +19 -1
  366. package/dist/logs/logs.types.js +6 -0
  367. package/dist/logs/logs.types.js.map +1 -1
  368. package/dist/models/index.d.ts +6 -0
  369. package/dist/models/index.js +11 -0
  370. package/dist/models/index.js.map +1 -0
  371. package/dist/models/models.service.d.ts +137 -0
  372. package/dist/models/models.service.js +195 -0
  373. package/dist/models/models.service.js.map +1 -0
  374. package/dist/notifications/index.d.ts +13 -0
  375. package/dist/notifications/index.js +26 -0
  376. package/dist/notifications/index.js.map +1 -0
  377. package/dist/notifications/notifications.service.d.ts +265 -0
  378. package/dist/notifications/notifications.service.js +862 -0
  379. package/dist/notifications/notifications.service.js.map +1 -0
  380. package/dist/notifications/types/index.d.ts +4 -0
  381. package/dist/notifications/types/index.js +21 -0
  382. package/dist/notifications/types/index.js.map +1 -0
  383. package/dist/notifications/types/notifications.types.d.ts +402 -0
  384. package/dist/notifications/types/notifications.types.js +49 -0
  385. package/dist/notifications/types/notifications.types.js.map +1 -0
  386. package/dist/parsers/index.d.ts +3 -0
  387. package/dist/parsers/index.js +27 -0
  388. package/dist/parsers/index.js.map +1 -0
  389. package/dist/parsers/pipelines/postman.pipelines.d.ts +15 -0
  390. package/dist/parsers/pipelines/postman.pipelines.js +103 -0
  391. package/dist/parsers/pipelines/postman.pipelines.js.map +1 -0
  392. package/dist/parsers/types/postman.types.d.ts +200 -0
  393. package/dist/parsers/types/postman.types.js +3 -0
  394. package/dist/parsers/types/postman.types.js.map +1 -0
  395. package/dist/parsers/utils/postman.utils.d.ts +12 -0
  396. package/dist/parsers/utils/postman.utils.js +116 -0
  397. package/dist/parsers/utils/postman.utils.js.map +1 -0
  398. package/dist/parsers/validators/postman-auth.validators.d.ts +10 -0
  399. package/dist/parsers/validators/postman-auth.validators.js +127 -0
  400. package/dist/parsers/validators/postman-auth.validators.js.map +1 -0
  401. package/dist/parsers/validators/postman-request.validators.d.ts +13 -0
  402. package/dist/parsers/validators/postman-request.validators.js +139 -0
  403. package/dist/parsers/validators/postman-request.validators.js.map +1 -0
  404. package/dist/parsers/validators/postman-response.validators.d.ts +13 -0
  405. package/dist/parsers/validators/postman-response.validators.js +150 -0
  406. package/dist/parsers/validators/postman-response.validators.js.map +1 -0
  407. package/dist/parsers/validators/postman-variable.validators.d.ts +14 -0
  408. package/dist/parsers/validators/postman-variable.validators.js +163 -0
  409. package/dist/parsers/validators/postman-variable.validators.js.map +1 -0
  410. package/dist/pricing/pricing.repo.js +1 -0
  411. package/dist/pricing/pricing.repo.js.map +1 -0
  412. package/dist/pricing/pricing.service.d.ts +24 -0
  413. package/dist/pricing/pricing.service.js +51 -0
  414. package/dist/pricing/pricing.service.js.map +1 -0
  415. package/dist/pricing/pricing.types.d.ts +76 -0
  416. package/dist/pricing/pricing.types.js +21 -0
  417. package/dist/pricing/pricing.types.js.map +1 -0
  418. package/dist/pricing/utils/string.utils.d.ts +1 -0
  419. package/dist/pricing/utils/string.utils.js +9 -0
  420. package/dist/pricing/utils/string.utils.js.map +1 -0
  421. package/dist/processor/services/processor.service.d.ts +117 -73
  422. package/dist/processor/services/processor.service.js +1557 -1276
  423. package/dist/processor/services/processor.service.js.map +1 -1
  424. package/dist/processor/services/request.service.d.ts +36 -0
  425. package/dist/processor/services/request.service.js +304 -0
  426. package/dist/processor/services/request.service.js.map +1 -0
  427. package/dist/processor/types/request.types.d.ts +14 -0
  428. package/dist/processor/types/request.types.js +3 -0
  429. package/dist/processor/types/request.types.js.map +1 -0
  430. package/dist/processor/utils/processor.utils.js +32 -20
  431. package/dist/processor/utils/processor.utils.js.map +1 -1
  432. package/dist/processor/utils/request.utils.d.ts +20 -0
  433. package/dist/processor/utils/request.utils.js +113 -0
  434. package/dist/processor/utils/request.utils.js.map +1 -0
  435. package/dist/products/services/products.service.d.ts +365 -75
  436. package/dist/products/services/products.service.js +2809 -414
  437. package/dist/products/services/products.service.js.map +1 -1
  438. package/dist/products/utils/string.utils.d.ts +1 -1
  439. package/dist/products/utils/string.utils.js +14 -2
  440. package/dist/products/utils/string.utils.js.map +1 -1
  441. package/dist/products/validators/index.d.ts +7 -1
  442. package/dist/products/validators/index.js +16 -1
  443. package/dist/products/validators/index.js.map +1 -1
  444. package/dist/products/validators/joi-validators/create.productAgent.validator.d.ts +3 -0
  445. package/dist/products/validators/joi-validators/create.productAgent.validator.js +266 -0
  446. package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -0
  447. package/dist/products/validators/joi-validators/create.productDatabase.validator.js +5 -0
  448. package/dist/products/validators/joi-validators/create.productDatabase.validator.js.map +1 -1
  449. package/dist/products/validators/joi-validators/create.productEnv.validator.js +1 -0
  450. package/dist/products/validators/joi-validators/create.productEnv.validator.js.map +1 -1
  451. package/dist/products/validators/joi-validators/create.productGraph.validator.js +89 -0
  452. package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -0
  453. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.d.ts +4 -0
  454. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js +58 -0
  455. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js.map +1 -0
  456. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +81 -25
  457. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
  458. package/dist/products/validators/joi-validators/create.productModel.validator.d.ts +3 -0
  459. package/dist/products/validators/joi-validators/create.productModel.validator.js +132 -0
  460. package/dist/products/validators/joi-validators/create.productModel.validator.js.map +1 -0
  461. package/dist/products/validators/joi-validators/create.productNotification.validator.js +133 -45
  462. package/dist/products/validators/joi-validators/create.productNotification.validator.js.map +1 -1
  463. package/dist/products/validators/joi-validators/create.productStorage.validator.js +77 -18
  464. package/dist/products/validators/joi-validators/create.productStorage.validator.js.map +1 -1
  465. package/dist/products/validators/joi-validators/create.productVector.validator.d.ts +3 -0
  466. package/dist/products/validators/joi-validators/create.productVector.validator.js +135 -0
  467. package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -0
  468. package/dist/products/validators/joi-validators/update.dataValue.validator.js +1 -0
  469. package/dist/products/validators/joi-validators/update.dataValue.validator.js.map +1 -1
  470. package/dist/products/validators/joi-validators/update.productDatabase.validator.js +5 -0
  471. package/dist/products/validators/joi-validators/update.productDatabase.validator.js.map +1 -1
  472. package/dist/products/validators/joi-validators/update.productEnv.validator.js +3 -0
  473. package/dist/products/validators/joi-validators/update.productEnv.validator.js.map +1 -1
  474. package/dist/products/validators/joi-validators/update.productGraph.validator.js +88 -0
  475. package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -0
  476. package/dist/resilience/fallback.service.d.ts +140 -0
  477. package/dist/resilience/fallback.service.js +764 -0
  478. package/dist/resilience/fallback.service.js.map +1 -0
  479. package/dist/resilience/healthcheck.service.d.ts +159 -0
  480. package/dist/resilience/healthcheck.service.js +943 -0
  481. package/dist/resilience/healthcheck.service.js.map +1 -0
  482. package/dist/resilience/index.d.ts +104 -0
  483. package/dist/resilience/index.js +140 -0
  484. package/dist/resilience/index.js.map +1 -0
  485. package/dist/resilience/quota.service.d.ts +82 -0
  486. package/dist/resilience/quota.service.js +516 -0
  487. package/dist/resilience/quota.service.js.map +1 -0
  488. package/dist/resilience/resilience.service.d.ts +98 -0
  489. package/dist/resilience/resilience.service.js +560 -0
  490. package/dist/resilience/resilience.service.js.map +1 -0
  491. package/dist/resilience/types/index.d.ts +513 -0
  492. package/dist/resilience/types/index.js +29 -0
  493. package/dist/resilience/types/index.js.map +1 -0
  494. package/dist/secrets/index.d.ts +10 -0
  495. package/dist/secrets/index.js +33 -0
  496. package/dist/secrets/index.js.map +1 -0
  497. package/dist/secrets/secrets.resolver.d.ts +52 -0
  498. package/dist/secrets/secrets.resolver.js +233 -0
  499. package/dist/secrets/secrets.resolver.js.map +1 -0
  500. package/dist/secrets/secrets.service.d.ts +93 -0
  501. package/dist/secrets/secrets.service.js +258 -0
  502. package/dist/secrets/secrets.service.js.map +1 -0
  503. package/dist/secrets/secrets.types.d.ts +188 -0
  504. package/dist/secrets/secrets.types.js +87 -0
  505. package/dist/secrets/secrets.types.js.map +1 -0
  506. package/dist/sessions/index.d.ts +50 -0
  507. package/dist/sessions/index.js +93 -0
  508. package/dist/sessions/index.js.map +1 -0
  509. package/dist/sessions/sessions.helper.d.ts +68 -0
  510. package/dist/sessions/sessions.helper.js +116 -0
  511. package/dist/sessions/sessions.helper.js.map +1 -0
  512. package/dist/sessions/sessions.resolver.d.ts +157 -0
  513. package/dist/sessions/sessions.resolver.js +374 -0
  514. package/dist/sessions/sessions.resolver.js.map +1 -0
  515. package/dist/sessions/sessions.service.d.ts +178 -0
  516. package/dist/sessions/sessions.service.js +923 -0
  517. package/dist/sessions/sessions.service.js.map +1 -0
  518. package/dist/sessions/types/index.d.ts +298 -0
  519. package/dist/sessions/types/index.js +6 -0
  520. package/dist/sessions/types/index.js.map +1 -0
  521. package/dist/storage/index.d.ts +66 -0
  522. package/dist/storage/index.js +99 -0
  523. package/dist/storage/index.js.map +1 -0
  524. package/dist/storage/storage.service.d.ts +174 -0
  525. package/dist/storage/storage.service.js +757 -0
  526. package/dist/storage/storage.service.js.map +1 -0
  527. package/dist/storage/types/index.d.ts +267 -0
  528. package/dist/storage/types/index.js +6 -0
  529. package/dist/storage/types/index.js.map +1 -0
  530. package/dist/storage/utils/storage.util.d.ts +62 -0
  531. package/dist/storage/utils/storage.util.js +593 -0
  532. package/dist/storage/utils/storage.util.js.map +1 -0
  533. package/dist/test/index.d.ts +3 -0
  534. package/dist/test/index.js +11 -0
  535. package/dist/test/index.js.map +1 -0
  536. package/dist/test/test.appBuilder.d.ts +0 -1
  537. package/dist/test/test.appBuilder.js +0 -15
  538. package/dist/test/test.appBuilder.js.map +1 -1
  539. package/dist/test/test.broker.kafka.js +172 -0
  540. package/dist/test/test.broker.kafka.js.map +1 -0
  541. package/dist/test/test.broker.nats.js +193 -0
  542. package/dist/test/test.broker.nats.js.map +1 -0
  543. package/dist/test/test.broker.pubsub.js +171 -0
  544. package/dist/test/test.broker.pubsub.js.map +1 -0
  545. package/dist/test/test.broker.rabbitmq.js +164 -0
  546. package/dist/test/test.broker.rabbitmq.js.map +1 -0
  547. package/dist/test/test.broker.redis.js +168 -0
  548. package/dist/test/test.broker.redis.js.map +1 -0
  549. package/dist/test/test.broker.sqs.d.ts +1 -0
  550. package/dist/test/test.broker.sqs.js +158 -0
  551. package/dist/test/test.broker.sqs.js.map +1 -0
  552. package/dist/test/test.caches.d.ts +1 -0
  553. package/dist/test/test.caches.js +231 -0
  554. package/dist/test/test.caches.js.map +1 -0
  555. package/dist/test/test.database.d.ts +1 -0
  556. package/dist/test/test.database.dynamo.d.ts +1 -0
  557. package/dist/test/test.database.dynamo.js +265 -0
  558. package/dist/test/test.database.dynamo.js.map +1 -0
  559. package/dist/test/test.database.js +140 -0
  560. package/dist/test/test.database.js.map +1 -0
  561. package/dist/test/test.database.mongo.d.ts +1 -0
  562. package/dist/test/test.database.mongo.js +371 -0
  563. package/dist/test/test.database.mongo.js.map +1 -0
  564. package/dist/test/test.database.mysql.d.ts +1 -0
  565. package/dist/test/test.database.mysql.js +415 -0
  566. package/dist/test/test.database.mysql.js.map +1 -0
  567. package/dist/test/test.database.postgres.d.ts +1 -0
  568. package/dist/test/test.database.postgres.js +412 -0
  569. package/dist/test/test.database.postgres.js.map +1 -0
  570. package/dist/test/test.email.brevo.d.ts +1 -0
  571. package/dist/test/test.email.brevo.js +326 -0
  572. package/dist/test/test.email.brevo.js.map +1 -0
  573. package/dist/test/test.email.mailgun.d.ts +1 -0
  574. package/dist/test/test.email.mailgun.js +352 -0
  575. package/dist/test/test.email.mailgun.js.map +1 -0
  576. package/dist/test/test.email.postmark.d.ts +1 -0
  577. package/dist/test/test.email.postmark.js +316 -0
  578. package/dist/test/test.email.postmark.js.map +1 -0
  579. package/dist/test/test.email.sendgrid.d.ts +1 -0
  580. package/dist/test/test.email.sendgrid.js +365 -0
  581. package/dist/test/test.email.sendgrid.js.map +1 -0
  582. package/dist/test/test.email.smtp.d.ts +1 -0
  583. package/dist/test/test.email.smtp.js +323 -0
  584. package/dist/test/test.email.smtp.js.map +1 -0
  585. package/dist/test/test.graph.arangodb.d.ts +1 -0
  586. package/dist/test/test.graph.arangodb.js +358 -0
  587. package/dist/test/test.graph.arangodb.js.map +1 -0
  588. package/dist/test/test.graph.memgraph.d.ts +1 -0
  589. package/dist/test/test.graph.memgraph.js +320 -0
  590. package/dist/test/test.graph.memgraph.js.map +1 -0
  591. package/dist/test/test.graph.neo4j.d.ts +1 -0
  592. package/dist/test/test.graph.neo4j.js +218 -0
  593. package/dist/test/test.graph.neo4j.js.map +1 -0
  594. package/dist/test/test.graph.neptune.d.ts +1 -0
  595. package/dist/test/test.graph.neptune.js +331 -0
  596. package/dist/test/test.graph.neptune.js.map +1 -0
  597. package/dist/test/test.health.js +1 -0
  598. package/dist/test/test.health.js.map +1 -0
  599. package/dist/test/test.import.d.ts +0 -1
  600. package/dist/test/test.import.js +0 -1459
  601. package/dist/test/test.import.js.map +1 -1
  602. package/dist/test/test.import.openapi.d.ts +0 -1
  603. package/dist/test/test.import.openapi.js +0 -75
  604. package/dist/test/test.import.openapi.js.map +1 -1
  605. package/dist/test/test.imports.js +14 -55
  606. package/dist/test/test.imports.js.map +1 -1
  607. package/dist/test/test.logs.d.ts +0 -1
  608. package/dist/test/test.logs.js +0 -17
  609. package/dist/test/test.logs.js.map +1 -1
  610. package/dist/test/test.notifications.d.ts +1 -0
  611. package/dist/test/test.notifications.js +198 -0
  612. package/dist/test/test.notifications.js.map +1 -0
  613. package/dist/test/test.notifiers.js +1 -0
  614. package/dist/test/test.notifiers.js.map +1 -0
  615. package/dist/test/test.processor.d.ts +0 -1
  616. package/dist/test/test.processor.js +0 -122
  617. package/dist/test/test.processor.js.map +1 -1
  618. package/dist/test/test.productBuilder.d.ts +0 -1
  619. package/dist/test/test.productBuilder.js +0 -660
  620. package/dist/test/test.productBuilder.js.map +1 -1
  621. package/dist/test/test.products.js +1 -0
  622. package/dist/test/test.products.js.map +1 -0
  623. package/dist/test/test.push.expo.d.ts +1 -0
  624. package/dist/test/test.push.expo.js +442 -0
  625. package/dist/test/test.push.expo.js.map +1 -0
  626. package/dist/test/test.push.firebase.d.ts +1 -0
  627. package/dist/test/test.push.firebase.js +409 -0
  628. package/dist/test/test.push.firebase.js.map +1 -0
  629. package/dist/test/test.session.d.ts +1 -0
  630. package/dist/test/test.session.js +299 -0
  631. package/dist/test/test.session.js.map +1 -0
  632. package/dist/test/test.sms.nexmo.d.ts +1 -0
  633. package/dist/test/test.sms.nexmo.js +278 -0
  634. package/dist/test/test.sms.nexmo.js.map +1 -0
  635. package/dist/test/test.sms.twilio.d.ts +1 -0
  636. package/dist/test/test.sms.twilio.js +275 -0
  637. package/dist/test/test.sms.twilio.js.map +1 -0
  638. package/dist/test/test.storage.d.ts +1 -0
  639. package/dist/test/test.storage.js +202 -0
  640. package/dist/test/test.storage.js.map +1 -0
  641. package/dist/test/test.triggers.d.ts +1 -0
  642. package/dist/test/test.triggers.js +314 -0
  643. package/dist/test/test.triggers.js.map +1 -0
  644. package/dist/test/test.vector.pinecone.d.ts +1 -0
  645. package/dist/test/test.vector.pinecone.js +238 -0
  646. package/dist/test/test.vector.pinecone.js.map +1 -0
  647. package/dist/test/test.vector.qdrant.d.ts +1 -0
  648. package/dist/test/test.vector.qdrant.js +307 -0
  649. package/dist/test/test.vector.qdrant.js.map +1 -0
  650. package/dist/test/test.vector.weaviate.d.ts +1 -0
  651. package/dist/test/test.vector.weaviate.js +325 -0
  652. package/dist/test/test.vector.weaviate.js.map +1 -0
  653. package/dist/types/appBuilder.types.d.ts +9 -2
  654. package/dist/types/enums.d.ts +11 -1
  655. package/dist/types/enums.js +10 -0
  656. package/dist/types/enums.js.map +1 -1
  657. package/dist/types/index.types.d.ts +4 -7
  658. package/dist/types/index.types.js +0 -1
  659. package/dist/types/index.types.js.map +1 -1
  660. package/dist/types/inputs.types.js +1 -1
  661. package/dist/types/inputs.types.js.map +1 -1
  662. package/dist/types/pricing.types.d.ts +4 -0
  663. package/dist/types/pricing.types.js +3 -0
  664. package/dist/types/pricing.types.js.map +1 -0
  665. package/dist/types/processor.types.d.ts +214 -33
  666. package/dist/types/processor.types.js +9 -1
  667. package/dist/types/processor.types.js.map +1 -1
  668. package/dist/types/productsBuilder.types.d.ts +978 -23
  669. package/dist/types/productsBuilder.types.js +210 -3
  670. package/dist/types/productsBuilder.types.js.map +1 -1
  671. package/dist/types/request-tracker.interface.js +1 -0
  672. package/dist/types/request-tracker.interface.js.map +1 -0
  673. package/dist/types/requests.types.d.ts +2 -0
  674. package/dist/utils/constants.d.ts +1 -0
  675. package/dist/utils/constants.js +5 -0
  676. package/dist/utils/constants.js.map +1 -0
  677. package/dist/utils/index.d.ts +0 -2
  678. package/dist/utils/index.js +24 -52
  679. package/dist/utils/index.js.map +1 -1
  680. package/dist/vector/actions/action-manager.d.ts +140 -0
  681. package/dist/vector/actions/action-manager.js +356 -0
  682. package/dist/vector/actions/action-manager.js.map +1 -0
  683. package/dist/vector/adapters/base.adapter.d.ts +169 -0
  684. package/dist/vector/adapters/base.adapter.js +218 -0
  685. package/dist/vector/adapters/base.adapter.js.map +1 -0
  686. package/dist/vector/adapters/index.d.ts +10 -0
  687. package/dist/vector/adapters/index.js +19 -0
  688. package/dist/vector/adapters/index.js.map +1 -0
  689. package/dist/vector/adapters/memory.adapter.d.ts +85 -0
  690. package/dist/vector/adapters/memory.adapter.js +505 -0
  691. package/dist/vector/adapters/memory.adapter.js.map +1 -0
  692. package/dist/vector/adapters/pinecone.adapter.d.ts +52 -0
  693. package/dist/vector/adapters/pinecone.adapter.js +433 -0
  694. package/dist/vector/adapters/pinecone.adapter.js.map +1 -0
  695. package/dist/vector/adapters/qdrant.adapter.d.ts +56 -0
  696. package/dist/vector/adapters/qdrant.adapter.js +442 -0
  697. package/dist/vector/adapters/qdrant.adapter.js.map +1 -0
  698. package/dist/vector/adapters/weaviate.adapter.d.ts +68 -0
  699. package/dist/vector/adapters/weaviate.adapter.js +645 -0
  700. package/dist/vector/adapters/weaviate.adapter.js.map +1 -0
  701. package/dist/vector/index.d.ts +36 -0
  702. package/dist/vector/index.js +70 -0
  703. package/dist/vector/index.js.map +1 -0
  704. package/dist/vector/types/action.interface.d.ts +195 -0
  705. package/dist/vector/types/action.interface.js +100 -0
  706. package/dist/vector/types/action.interface.js.map +1 -0
  707. package/dist/vector/types/connection.interface.d.ts +151 -0
  708. package/dist/vector/types/connection.interface.js +8 -0
  709. package/dist/vector/types/connection.interface.js.map +1 -0
  710. package/dist/vector/types/embedding.interface.d.ts +144 -0
  711. package/dist/vector/types/embedding.interface.js +8 -0
  712. package/dist/vector/types/embedding.interface.js.map +1 -0
  713. package/dist/vector/types/enums.d.ts +104 -0
  714. package/dist/vector/types/enums.js +113 -0
  715. package/dist/vector/types/enums.js.map +1 -0
  716. package/dist/vector/types/index.d.ts +11 -0
  717. package/dist/vector/types/index.js +23 -0
  718. package/dist/vector/types/index.js.map +1 -0
  719. package/dist/vector/types/vector.interface.d.ts +315 -0
  720. package/dist/vector/types/vector.interface.js +8 -0
  721. package/dist/vector/types/vector.interface.js.map +1 -0
  722. package/dist/vector/utils/index.d.ts +6 -0
  723. package/dist/vector/utils/index.js +11 -0
  724. package/dist/vector/utils/index.js.map +1 -0
  725. package/dist/vector/utils/vector-error.d.ts +69 -0
  726. package/dist/vector/utils/vector-error.js +116 -0
  727. package/dist/vector/utils/vector-error.js.map +1 -0
  728. package/dist/vector/vector-database.service.d.ts +474 -0
  729. package/dist/vector/vector-database.service.js +850 -0
  730. package/dist/vector/vector-database.service.js.map +1 -0
  731. package/dist/vector/vector.service.d.ts +283 -0
  732. package/dist/vector/vector.service.js +544 -0
  733. package/dist/vector/vector.service.js.map +1 -0
  734. package/dist/warehouse/executor/index.d.ts +5 -0
  735. package/dist/warehouse/executor/index.js +12 -0
  736. package/dist/warehouse/executor/index.js.map +1 -0
  737. package/dist/warehouse/executor/joins/index.d.ts +5 -0
  738. package/dist/warehouse/executor/joins/index.js +11 -0
  739. package/dist/warehouse/executor/joins/index.js.map +1 -0
  740. package/dist/warehouse/executor/joins/join-executor.d.ts +101 -0
  741. package/dist/warehouse/executor/joins/join-executor.js +493 -0
  742. package/dist/warehouse/executor/joins/join-executor.js.map +1 -0
  743. package/dist/warehouse/executor/joins/semantic-join.d.ts +64 -0
  744. package/dist/warehouse/executor/joins/semantic-join.js +241 -0
  745. package/dist/warehouse/executor/joins/semantic-join.js.map +1 -0
  746. package/dist/warehouse/executor/single-source-executor.d.ts +155 -0
  747. package/dist/warehouse/executor/single-source-executor.js +573 -0
  748. package/dist/warehouse/executor/single-source-executor.js.map +1 -0
  749. package/dist/warehouse/index.d.ts +79 -0
  750. package/dist/warehouse/index.js +111 -0
  751. package/dist/warehouse/index.js.map +1 -0
  752. package/dist/warehouse/parser/index.d.ts +4 -0
  753. package/dist/warehouse/parser/index.js +10 -0
  754. package/dist/warehouse/parser/index.js.map +1 -0
  755. package/dist/warehouse/parser/query-parser.d.ts +181 -0
  756. package/dist/warehouse/parser/query-parser.js +415 -0
  757. package/dist/warehouse/parser/query-parser.js.map +1 -0
  758. package/dist/warehouse/registry/data-source-registry.d.ts +207 -0
  759. package/dist/warehouse/registry/data-source-registry.js +396 -0
  760. package/dist/warehouse/registry/data-source-registry.js.map +1 -0
  761. package/dist/warehouse/registry/index.d.ts +4 -0
  762. package/dist/warehouse/registry/index.js +9 -0
  763. package/dist/warehouse/registry/index.js.map +1 -0
  764. package/dist/warehouse/transactions/index.d.ts +4 -0
  765. package/dist/warehouse/transactions/index.js +9 -0
  766. package/dist/warehouse/transactions/index.js.map +1 -0
  767. package/dist/warehouse/transactions/saga-orchestrator.d.ts +92 -0
  768. package/dist/warehouse/transactions/saga-orchestrator.js +383 -0
  769. package/dist/warehouse/transactions/saga-orchestrator.js.map +1 -0
  770. package/dist/warehouse/types/index.d.ts +9 -0
  771. package/dist/warehouse/types/index.js +33 -0
  772. package/dist/warehouse/types/index.js.map +1 -0
  773. package/dist/warehouse/types/join.interface.d.ts +225 -0
  774. package/dist/warehouse/types/join.interface.js +87 -0
  775. package/dist/warehouse/types/join.interface.js.map +1 -0
  776. package/dist/warehouse/types/query.interface.d.ts +232 -0
  777. package/dist/warehouse/types/query.interface.js +9 -0
  778. package/dist/warehouse/types/query.interface.js.map +1 -0
  779. package/dist/warehouse/types/transaction.interface.d.ts +236 -0
  780. package/dist/warehouse/types/transaction.interface.js +74 -0
  781. package/dist/warehouse/types/transaction.interface.js.map +1 -0
  782. package/dist/warehouse/types/where.interface.d.ts +208 -0
  783. package/dist/warehouse/types/where.interface.js +89 -0
  784. package/dist/warehouse/types/where.interface.js.map +1 -0
  785. package/dist/warehouse/warehouse.service.d.ts +200 -0
  786. package/dist/warehouse/warehouse.service.js +470 -0
  787. package/dist/warehouse/warehouse.service.js.map +1 -0
  788. package/dist/workflows/index.d.ts +30 -0
  789. package/dist/workflows/index.js +64 -0
  790. package/dist/workflows/index.js.map +1 -0
  791. package/dist/workflows/types/index.d.ts +6 -0
  792. package/dist/workflows/types/index.js +23 -0
  793. package/dist/workflows/types/index.js.map +1 -0
  794. package/dist/workflows/types/workflows.types.d.ts +1037 -0
  795. package/dist/workflows/types/workflows.types.js +13 -0
  796. package/dist/workflows/types/workflows.types.js.map +1 -0
  797. package/dist/workflows/workflow-builder.d.ts +70 -0
  798. package/dist/workflows/workflow-builder.js +338 -0
  799. package/dist/workflows/workflow-builder.js.map +1 -0
  800. package/dist/workflows/workflow-executor.d.ts +208 -0
  801. package/dist/workflows/workflow-executor.js +1194 -0
  802. package/dist/workflows/workflow-executor.js.map +1 -0
  803. package/dist/workflows/workflows.service.d.ts +410 -0
  804. package/dist/workflows/workflows.service.js +1724 -0
  805. package/dist/workflows/workflows.service.js.map +1 -0
  806. package/package.json +65 -12
  807. package/dist/actions/actions.repo.js +0 -13
  808. package/dist/actions/actions.repo.js.map +0 -1
  809. package/dist/actions/actions.service.js +0 -24
  810. package/dist/actions/actions.service.js.map +0 -1
  811. package/dist/actions/utils/actions.util.read.js +0 -427
  812. package/dist/actions/utils/actions.util.read.js.map +0 -1
  813. package/dist/api/services/integrationsApi.service.d.ts +0 -18
  814. package/dist/api/services/integrationsApi.service.js +0 -80
  815. package/dist/api/services/integrationsApi.service.js.map +0 -1
  816. package/dist/appBuilder/services/app.service.d.ts +0 -111
  817. package/dist/appBuilder/services/app.service.js +0 -737
  818. package/dist/appBuilder/services/app.service.js.map +0 -1
  819. package/dist/appBuilder/services/appBuilder.service.d.ts +0 -111
  820. package/dist/appBuilder/services/appBuilder.service.js +0 -662
  821. package/dist/appBuilder/services/appBuilder.service.js.map +0 -1
  822. package/dist/appBuilder/utils/objects.utils.d.ts +0 -3
  823. package/dist/appBuilder/utils/objects.utils.js +0 -9
  824. package/dist/appBuilder/utils/objects.utils.js.map +0 -1
  825. package/dist/appBuilder/utils/string.utils.d.ts +0 -2
  826. package/dist/appBuilder/utils/string.utils.js +0 -57
  827. package/dist/appBuilder/utils/string.utils.js.map +0 -1
  828. package/dist/appBuilder/validators/index.d.ts +0 -19
  829. package/dist/appBuilder/validators/index.js +0 -40
  830. package/dist/appBuilder/validators/index.js.map +0 -1
  831. package/dist/appBuilder/validators/joi-validators/create.app.validator.js +0 -10
  832. package/dist/appBuilder/validators/joi-validators/create.app.validator.js.map +0 -1
  833. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.d.ts +0 -4
  834. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js +0 -20
  835. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js.map +0 -1
  836. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.d.ts +0 -7
  837. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js +0 -44
  838. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js.map +0 -1
  839. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.d.ts +0 -3
  840. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js +0 -31
  841. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js.map +0 -1
  842. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.d.ts +0 -4
  843. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js +0 -11
  844. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js.map +0 -1
  845. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.d.ts +0 -4
  846. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js +0 -12
  847. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js.map +0 -1
  848. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.d.ts +0 -4
  849. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js +0 -17
  850. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js.map +0 -1
  851. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
  852. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js +0 -30
  853. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js.map +0 -1
  854. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.d.ts +0 -4
  855. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js +0 -14
  856. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js.map +0 -1
  857. package/dist/appBuilder/validators/joi-validators/sample.validator.d.ts +0 -5
  858. package/dist/appBuilder/validators/joi-validators/sample.validator.js +0 -26
  859. package/dist/appBuilder/validators/joi-validators/sample.validator.js.map +0 -1
  860. package/dist/appBuilder/validators/joi-validators/update.app.validator.d.ts +0 -4
  861. package/dist/appBuilder/validators/joi-validators/update.app.validator.js +0 -34
  862. package/dist/appBuilder/validators/joi-validators/update.app.validator.js.map +0 -1
  863. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.d.ts +0 -4
  864. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js +0 -23
  865. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js.map +0 -1
  866. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.d.ts +0 -3
  867. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js +0 -21
  868. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js.map +0 -1
  869. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.d.ts +0 -4
  870. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js +0 -19
  871. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js.map +0 -1
  872. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.d.ts +0 -4
  873. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js +0 -12
  874. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js.map +0 -1
  875. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.d.ts +0 -4
  876. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js +0 -17
  877. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js.map +0 -1
  878. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
  879. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js +0 -16
  880. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js.map +0 -1
  881. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.d.ts +0 -4
  882. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js +0 -14
  883. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js.map +0 -1
  884. package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js +0 -27
  885. package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js.map +0 -1
  886. package/dist/apps/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
  887. package/dist/apps/validators/joi-validators/create.appEvent.validator.js +0 -30
  888. package/dist/apps/validators/joi-validators/create.appEvent.validator.js.map +0 -1
  889. package/dist/apps/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
  890. package/dist/apps/validators/joi-validators/update.appEvent.validator.js +0 -16
  891. package/dist/apps/validators/joi-validators/update.appEvent.validator.js.map +0 -1
  892. package/dist/clients/integrations.client.d.ts +0 -2
  893. package/dist/clients/integrations.client.js +0 -26
  894. package/dist/clients/integrations.client.js.map +0 -1
  895. package/dist/integrationsBuilder/services/integration.service.d.ts +0 -138
  896. package/dist/integrationsBuilder/services/integration.service.js +0 -1148
  897. package/dist/integrationsBuilder/services/integration.service.js.map +0 -1
  898. package/dist/integrationsBuilder/services/integrationBuilder.service.d.ts +0 -130
  899. package/dist/integrationsBuilder/services/integrationBuilder.service.js +0 -1017
  900. package/dist/integrationsBuilder/services/integrationBuilder.service.js.map +0 -1
  901. package/dist/integrationsBuilder/utils/objects.utils.d.ts +0 -2
  902. package/dist/integrationsBuilder/utils/objects.utils.js +0 -48
  903. package/dist/integrationsBuilder/utils/objects.utils.js.map +0 -1
  904. package/dist/integrationsBuilder/utils/string.utils.d.ts +0 -1
  905. package/dist/integrationsBuilder/utils/string.utils.js +0 -9
  906. package/dist/integrationsBuilder/utils/string.utils.js.map +0 -1
  907. package/dist/integrationsBuilder/validators/index.d.ts +0 -18
  908. package/dist/integrationsBuilder/validators/index.js +0 -38
  909. package/dist/integrationsBuilder/validators/index.js.map +0 -1
  910. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.d.ts +0 -3
  911. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js +0 -10
  912. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js.map +0 -1
  913. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.d.ts +0 -4
  914. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js +0 -26
  915. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js.map +0 -1
  916. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.d.ts +0 -3
  917. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js +0 -8
  918. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js.map +0 -1
  919. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.d.ts +0 -3
  920. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js +0 -8
  921. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js.map +0 -1
  922. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.d.ts +0 -3
  923. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js +0 -10
  924. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js.map +0 -1
  925. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.d.ts +0 -3
  926. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js +0 -60
  927. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js.map +0 -1
  928. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.d.ts +0 -3
  929. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js +0 -8
  930. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js.map +0 -1
  931. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.d.ts +0 -3
  932. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js +0 -8
  933. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js.map +0 -1
  934. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.d.ts +0 -3
  935. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js +0 -8
  936. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js.map +0 -1
  937. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.d.ts +0 -3
  938. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js +0 -9
  939. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js.map +0 -1
  940. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.d.ts +0 -3
  941. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js +0 -8
  942. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js.map +0 -1
  943. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.d.ts +0 -3
  944. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js +0 -8
  945. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js.map +0 -1
  946. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.d.ts +0 -3
  947. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js +0 -8
  948. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js.map +0 -1
  949. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.d.ts +0 -3
  950. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js +0 -8
  951. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js.map +0 -1
  952. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.d.ts +0 -3
  953. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js +0 -8
  954. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js.map +0 -1
  955. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.d.ts +0 -3
  956. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js +0 -8
  957. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js.map +0 -1
  958. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.d.ts +0 -3
  959. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js +0 -8
  960. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js.map +0 -1
  961. package/dist/postman.d.ts +0 -1
  962. package/dist/postman.js +0 -21674
  963. package/dist/postman.js.map +0 -1
  964. package/dist/processor/utils/mongo.util.js +0 -152
  965. package/dist/processor/utils/mongo.util.js.map +0 -1
  966. package/dist/processor/utils/postgres.util.d.ts +0 -14
  967. package/dist/processor/utils/postgres.util.js +0 -83
  968. package/dist/processor/utils/postgres.util.js.map +0 -1
  969. package/dist/products/validators/joi-validators/create.product.validator.d.ts +0 -3
  970. package/dist/products/validators/joi-validators/create.product.validator.js +0 -10
  971. package/dist/products/validators/joi-validators/create.product.validator.js.map +0 -1
  972. package/dist/test.appBuilder.js +0 -14
  973. package/dist/test.appBuilder.js.map +0 -1
  974. package/dist/test.import.js +0 -24
  975. package/dist/test.import.js.map +0 -1
  976. package/dist/test.imports.js +0 -28
  977. package/dist/test.imports.js.map +0 -1
  978. package/dist/test.integrationBuilder.js +0 -276
  979. package/dist/test.integrationBuilder.js.map +0 -1
  980. package/dist/test.processor.js +0 -23
  981. package/dist/test.processor.js.map +0 -1
  982. package/dist/test.utils.js +0 -25
  983. package/dist/test.utils.js.map +0 -1
  984. package/dist/types/integrationsBuilder.types.d.ts +0 -276
  985. package/dist/types/integrationsBuilder.types.js +0 -51
  986. package/dist/types/integrationsBuilder.types.js.map +0 -1
  987. /package/dist/{actions/actions.repo.d.ts → pricing/pricing.repo.d.ts} +0 -0
  988. /package/dist/{appBuilder/validators/joi-validators/create.app.validator.d.ts → products/validators/joi-validators/create.productGraph.validator.d.ts} +0 -0
  989. /package/dist/{appBuilder/validators/joi-validators/update.validation.entityData.validator.d.ts → products/validators/joi-validators/update.productGraph.validator.d.ts} +0 -0
  990. /package/dist/{test.appBuilder.d.ts → test/test.broker.kafka.d.ts} +0 -0
  991. /package/dist/{test.imports.d.ts → test/test.broker.nats.d.ts} +0 -0
  992. /package/dist/{test.integrationBuilder.d.ts → test/test.broker.pubsub.d.ts} +0 -0
  993. /package/dist/{test.processor.d.ts → test/test.broker.rabbitmq.d.ts} +0 -0
  994. /package/dist/{test.utils.d.ts → test/test.broker.redis.d.ts} +0 -0
  995. /package/dist/{actions/actions.service.d.ts → test/test.health.d.ts} +0 -0
  996. /package/dist/{actions/utils/actions.util.read.d.ts → test/test.notifiers.d.ts} +0 -0
  997. /package/dist/{processor/utils/mongo.util.d.ts → test/test.products.d.ts} +0 -0
  998. /package/dist/{test.import.d.ts → types/request-tracker.interface.d.ts} +0 -0
@@ -0,0 +1,1948 @@
1
+ "use strict";
2
+ /**
3
+ * Graph Service
4
+ *
5
+ * Main service class for graph database operations.
6
+ * Provides a unified API for working with different graph databases
7
+ * (Neo4j, Neptune, ArangoDB, Memgraph).
8
+ *
9
+ * Based on Ductape Graph API documentation.
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.GraphService = void 0;
49
+ const adapter_factory_1 = require("./adapters/adapter.factory");
50
+ const transaction_manager_1 = require("./transactions/transaction-manager");
51
+ const graph_error_1 = require("./utils/graph-error");
52
+ const products_service_1 = __importDefault(require("../products/services/products.service"));
53
+ const productsBuilder_types_1 = require("../types/productsBuilder.types");
54
+ const cache_manager_1 = require("../cache/cache.manager");
55
+ const processor_service_1 = __importDefault(require("../processor/services/processor.service"));
56
+ const crypto_1 = require("crypto");
57
+ const logs_service_1 = __importDefault(require("../logs/logs.service"));
58
+ const logs_types_1 = require("../logs/logs.types");
59
+ const processor_utils_1 = require("../processor/utils/processor.utils");
60
+ const secrets_1 = require("../secrets");
61
+ /**
62
+ * Main graph database service
63
+ */
64
+ class GraphService {
65
+ constructor(config) {
66
+ /** Cache of adapters by connection key */
67
+ this.adapters = new Map();
68
+ /** Connection contexts */
69
+ this.connectionContexts = new Map();
70
+ /** Currently active connection context */
71
+ this.currentContext = null;
72
+ /** Transaction manager */
73
+ this.transactionManager = null;
74
+ /** Service configuration */
75
+ this.config = null;
76
+ /** Product builders cache */
77
+ this.productBuilders = new Map();
78
+ /** Local graph configurations */
79
+ this.localConfigs = new Map();
80
+ /** LogService instance for logging operations */
81
+ this.logService = null;
82
+ /** Current product ID for logging */
83
+ this.productId = '';
84
+ /** CacheManager for two-tier caching (Redis + remote) */
85
+ this.cacheManager = null;
86
+ /** Private keys cache for products (keyed by product tag) */
87
+ this.privateKeys = new Map();
88
+ // ==================== GRAPH ACTIONS ====================
89
+ /** Local cache of graph actions */
90
+ this.actions = new Map();
91
+ this.adapterFactory = new adapter_factory_1.GraphAdapterFactory();
92
+ if (config) {
93
+ this.config = config;
94
+ this._privateKey = config.private_key || '';
95
+ // Initialize CacheManager if Redis client is provided
96
+ if (config.redis_client) {
97
+ this.cacheManager = new cache_manager_1.CacheManager({
98
+ workspace_id: config.workspace_id,
99
+ public_key: config.public_key,
100
+ user_id: config.user_id,
101
+ token: config.token,
102
+ env_type: config.env_type,
103
+ redis_client: config.redis_client,
104
+ });
105
+ }
106
+ }
107
+ }
108
+ // ==================== CONFIGURATION ====================
109
+ /**
110
+ * Update service configuration
111
+ */
112
+ updateConfig(config) {
113
+ this.config = config;
114
+ }
115
+ /**
116
+ * Get service configuration
117
+ */
118
+ getConfig() {
119
+ return this.config;
120
+ }
121
+ // ==================== PRODUCT BUILDER MANAGEMENT ====================
122
+ /**
123
+ * Create a new ProductBuilder instance
124
+ */
125
+ createNewProductBuilder() {
126
+ if (!this.config) {
127
+ throw graph_error_1.GraphError.configurationError('GraphService not configured. Please provide config when initializing.');
128
+ }
129
+ return new products_service_1.default({
130
+ workspace_id: this.config.workspace_id,
131
+ public_key: this.config.public_key,
132
+ user_id: this.config.user_id,
133
+ token: this.config.token,
134
+ env_type: this.config.env_type,
135
+ access_key: this.config.access_key,
136
+ });
137
+ }
138
+ /**
139
+ * Get or create a ProductBuilder instance for the given product tag
140
+ */
141
+ async getProductBuilder(productTag) {
142
+ let builder = this.productBuilders.get(productTag);
143
+ if (!builder) {
144
+ builder = this.createNewProductBuilder();
145
+ await builder.initializeProductByTag(productTag);
146
+ this.productBuilders.set(productTag, builder);
147
+ // Update productId for logging
148
+ this.productId = builder.fetchProductId() || '';
149
+ // Cache private key for caching operations
150
+ const privateKey = builder.fetchPrivateKey();
151
+ if (privateKey) {
152
+ this.privateKeys.set(productTag, privateKey);
153
+ }
154
+ }
155
+ return builder;
156
+ }
157
+ /**
158
+ * Initialize logging service
159
+ */
160
+ initializeLogService() {
161
+ if (!this.logService && this.config) {
162
+ this.logService = new logs_service_1.default({
163
+ product_id: this.productId,
164
+ workspace_id: this.config.workspace_id,
165
+ public_key: this.config.public_key,
166
+ user_id: this.config.user_id,
167
+ token: this.config.token,
168
+ env_type: this.config.env_type,
169
+ });
170
+ }
171
+ }
172
+ /**
173
+ * Create a new ProcessorService instance for job scheduling
174
+ */
175
+ createNewProcessor() {
176
+ if (!this.config) {
177
+ throw graph_error_1.GraphError.configurationError('GraphService not configured. Please provide config when initializing.');
178
+ }
179
+ return new processor_service_1.default({
180
+ workspace_id: this.config.workspace_id,
181
+ public_key: this.config.public_key,
182
+ user_id: this.config.user_id,
183
+ token: this.config.token,
184
+ env_type: this.config.env_type,
185
+ private_key: this._privateKey,
186
+ });
187
+ }
188
+ // ==================== GRAPH REGISTRATION ====================
189
+ /**
190
+ * Register a new graph database
191
+ * As documented in getting-started.md
192
+ *
193
+ * @example
194
+ * ```ts
195
+ * await ductape.graph.create({
196
+ * name: 'Social Graph',
197
+ * tag: 'social-graph',
198
+ * type: 'neo4j',
199
+ * description: 'Stores user relationships',
200
+ * envs: [
201
+ * { slug: 'dev', connection_url: 'bolt://localhost:7687' },
202
+ * { slug: 'prd', connection_url: 'bolt://neo4j-prod:7687' },
203
+ * ],
204
+ * });
205
+ * ```
206
+ */
207
+ async create(graphConfig, productTag) {
208
+ var _a;
209
+ // Validate required fields
210
+ if (!graphConfig.name || !graphConfig.tag || !graphConfig.type || !((_a = graphConfig.envs) === null || _a === void 0 ? void 0 : _a.length)) {
211
+ throw graph_error_1.GraphError.validationError('Graph configuration requires name, tag, type, and at least one environment');
212
+ }
213
+ const exists = await this.fetchGraphByTag(productTag, graphConfig.tag);
214
+ if (exists) {
215
+ return;
216
+ }
217
+ // Validate graph type
218
+ if (!this.adapterFactory.isSupported(graphConfig.type)) {
219
+ throw graph_error_1.GraphError.validationError(`Unsupported graph type: ${graphConfig.type}. ` +
220
+ `Supported types: ${this.adapterFactory.getSupportedTypes().join(', ')}`);
221
+ }
222
+ // Process sensitive fields - store as secrets if not already secret references
223
+ const processedEnvs = [];
224
+ for (const env of graphConfig.envs) {
225
+ // Store all sensitive fields as secrets
226
+ const connectionUrl = productTag
227
+ ? await this.storeAsSecretIfNeeded(env.connection_url, productTag, graphConfig.tag, env.slug, 'url', `Graph connection URL for ${graphConfig.tag} in ${env.slug}`)
228
+ : env.connection_url;
229
+ const graphName = productTag
230
+ ? await this.storeAsSecretIfNeeded(env.graphName, productTag, graphConfig.tag, env.slug, 'graphName', `Graph name for ${graphConfig.tag} in ${env.slug}`)
231
+ : env.graphName;
232
+ const region = productTag
233
+ ? await this.storeAsSecretIfNeeded(env.region, productTag, graphConfig.tag, env.slug, 'region', `AWS region for ${graphConfig.tag} in ${env.slug}`)
234
+ : env.region;
235
+ const username = productTag
236
+ ? await this.storeAsSecretIfNeeded(env.username, productTag, graphConfig.tag, env.slug, 'username', `Username for ${graphConfig.tag} in ${env.slug}`)
237
+ : env.username;
238
+ const password = productTag
239
+ ? await this.storeAsSecretIfNeeded(env.password, productTag, graphConfig.tag, env.slug, 'password', `Password for ${graphConfig.tag} in ${env.slug}`)
240
+ : env.password;
241
+ processedEnvs.push(Object.assign(Object.assign({}, env), { connection_url: connectionUrl || env.connection_url, graphName,
242
+ region,
243
+ username,
244
+ password }));
245
+ }
246
+ // If productTag is provided, use ProductBuilder to persist to backend
247
+ if (productTag) {
248
+ const builder = await this.getProductBuilder(productTag);
249
+ const productGraph = {
250
+ name: graphConfig.name,
251
+ tag: graphConfig.tag,
252
+ description: graphConfig.description,
253
+ type: graphConfig.type,
254
+ envs: processedEnvs.map((env) => ({
255
+ slug: env.slug,
256
+ connection_url: env.connection_url,
257
+ description: env.description,
258
+ database: env.database,
259
+ graphName: env.graphName,
260
+ region: env.region,
261
+ username: env.username,
262
+ password: env.password,
263
+ })),
264
+ };
265
+ await builder.createGraph(productGraph);
266
+ }
267
+ // Create local adapters and connection contexts
268
+ const processedConfig = Object.assign(Object.assign({}, graphConfig), { envs: processedEnvs });
269
+ this.createAdapter(processedConfig);
270
+ }
271
+ /**
272
+ * Create local adapter and connection context for a graph configuration.
273
+ * This is a lightweight operation that only sets up local state without API calls.
274
+ * Use this when the graph config is already fetched/decrypted from the API.
275
+ *
276
+ * @param graphConfig - The graph configuration (already decrypted if from API)
277
+ */
278
+ createAdapter(graphConfig) {
279
+ var _a;
280
+ // Validate required fields
281
+ if (!graphConfig.tag || !graphConfig.type || !((_a = graphConfig.envs) === null || _a === void 0 ? void 0 : _a.length)) {
282
+ throw graph_error_1.GraphError.validationError('Graph configuration requires tag, type, and at least one environment');
283
+ }
284
+ // Validate graph type
285
+ if (!this.adapterFactory.isSupported(graphConfig.type)) {
286
+ throw graph_error_1.GraphError.validationError(`Unsupported graph type: ${graphConfig.type}. ` +
287
+ `Supported types: ${this.adapterFactory.getSupportedTypes().join(', ')}`);
288
+ }
289
+ // Store in local configs
290
+ this.localConfigs.set(graphConfig.tag, graphConfig);
291
+ // Create adapters and contexts for each environment
292
+ for (const envConfig of graphConfig.envs) {
293
+ const contextKey = `${graphConfig.tag}:${envConfig.slug}`;
294
+ // Skip if already exists
295
+ if (this.adapters.has(contextKey) && this.connectionContexts.has(contextKey)) {
296
+ continue;
297
+ }
298
+ const adapter = this.adapterFactory.create(graphConfig.type);
299
+ this.adapters.set(contextKey, adapter);
300
+ // Store connection context (not connected yet)
301
+ this.connectionContexts.set(contextKey, {
302
+ graph: graphConfig.tag,
303
+ env: envConfig.slug,
304
+ type: graphConfig.type,
305
+ connectionUrl: envConfig.connection_url,
306
+ connected: false,
307
+ name: graphConfig.name,
308
+ description: graphConfig.description,
309
+ database: envConfig.database,
310
+ graphName: envConfig.graphName,
311
+ username: envConfig.username,
312
+ password: envConfig.password,
313
+ });
314
+ }
315
+ }
316
+ /**
317
+ * Generate a secret key for graph configuration field
318
+ * Format: GRAPH_{PRODUCT}_{ASSET_TAG}_{ENV}_{KEY}
319
+ *
320
+ * Where:
321
+ * - PRODUCT = productTag.split('.')[1] (second part after workspace)
322
+ * - ASSET_TAG = if graphTag starts with same workspace prefix, use second part; otherwise sanitize full tag
323
+ * - All parts are automatically capitalized
324
+ */
325
+ generateGraphSecretKey(productTag, graphTag, envSlug, field) {
326
+ const sanitize = (str) => str.toUpperCase().replace(/[^A-Z0-9]/g, '_');
327
+ // Support both ':' and '.' delimiters for product tags (e.g., 'ductape:rematch' or 'ductape.rematch')
328
+ const productParts = productTag.includes(':') ? productTag.split(':') : productTag.split('.');
329
+ const product = productParts[1] || productParts[0]; // Use product name (index 1), fallback to index 0
330
+ const workspace = productParts[0];
331
+ // Support both ':' and '.' delimiters for graph tags
332
+ const graphParts = graphTag.includes(':') ? graphTag.split(':') : graphTag.split('.');
333
+ let assetTag;
334
+ if (graphParts.length > 1 && graphParts[0] === workspace) {
335
+ // Same workspace prefix, use second part
336
+ assetTag = graphParts[1];
337
+ }
338
+ else {
339
+ // Different or no prefix, use full tag
340
+ assetTag = graphTag;
341
+ }
342
+ return `GRAPH_${sanitize(product)}_${sanitize(assetTag)}_${sanitize(envSlug)}_${sanitize(field)}`;
343
+ }
344
+ /**
345
+ * Store a value as a secret if it exists and is not already a secret reference
346
+ * @returns The secret reference if stored, or the original value
347
+ */
348
+ async storeAsSecretIfNeeded(value, productTag, graphTag, envSlug, fieldName, description) {
349
+ if (!value) {
350
+ return undefined;
351
+ }
352
+ const secretsService = (0, secrets_1.getSecretsService)();
353
+ const secretCheck = (0, secrets_1.isSecretReference)(value);
354
+ console.log(`[GraphService.storeAsSecretIfNeeded] Processing '${fieldName}' for env '${envSlug}':`, {
355
+ isSecretReference: secretCheck.isSecret,
356
+ hasValue: !!value,
357
+ });
358
+ // If not already a secret reference and we have a secrets service, store it as a secret
359
+ if (!secretCheck.isSecret && secretsService && productTag) {
360
+ const secretKey = this.generateGraphSecretKey(productTag, graphTag, envSlug, fieldName);
361
+ try {
362
+ const exists = await secretsService.exists(secretKey);
363
+ console.log(`[GraphService.storeAsSecretIfNeeded] Secret '${secretKey}' exists:`, exists);
364
+ if (exists) {
365
+ await secretsService.update(secretKey, { value });
366
+ console.log(`[GraphService.storeAsSecretIfNeeded] Updated existing secret '${secretKey}'`);
367
+ }
368
+ else {
369
+ await secretsService.create({
370
+ key: secretKey,
371
+ value,
372
+ description,
373
+ scope: [productTag, graphTag],
374
+ envs: [envSlug],
375
+ });
376
+ console.log(`[GraphService.storeAsSecretIfNeeded] Created new secret '${secretKey}'`);
377
+ }
378
+ return `$Secret{${secretKey}}`;
379
+ }
380
+ catch (error) {
381
+ console.warn(`[GraphService.storeAsSecretIfNeeded] Failed to store '${fieldName}' as secret: ${secretKey}`, error);
382
+ // Continue with the original value
383
+ return value;
384
+ }
385
+ }
386
+ return value;
387
+ }
388
+ // ==================== PRODUCT COMPONENT FETCHING ====================
389
+ /**
390
+ * Fetch all graphs for a product using the product component fetcher
391
+ * @param productTag - The product tag
392
+ * @returns Array of IProductGraph objects
393
+ */
394
+ async fetchAllGraphs(productTag) {
395
+ const builder = await this.getProductBuilder(productTag);
396
+ return builder.fetchGraphs();
397
+ }
398
+ /**
399
+ * Fetch a specific graph by tag using the product component fetcher
400
+ * @param productTag - The product tag
401
+ * @param graphTag - The graph tag
402
+ * @returns The IProductGraph object or null if not found
403
+ */
404
+ async fetchGraphByTag(productTag, graphTag) {
405
+ const builder = await this.getProductBuilder(productTag);
406
+ return builder.fetchGraph(graphTag);
407
+ }
408
+ // ==================== GRAPH CONFIGURATION ====================
409
+ /**
410
+ * Fetch all registered graphs for a product
411
+ */
412
+ async fetchAll(productTag) {
413
+ // Return local configs if no product tag
414
+ if (!productTag) {
415
+ return Array.from(this.localConfigs.values());
416
+ }
417
+ // Fetch from API using ProductBuilder
418
+ try {
419
+ const builder = await this.getProductBuilder(productTag);
420
+ const graphs = await builder.fetchGraphs();
421
+ // Convert IProductGraph[] to IGraphConfig[]
422
+ return graphs.map((graph) => this.productGraphToConfig(graph));
423
+ }
424
+ catch (error) {
425
+ // Fall back to local configs if API fails
426
+ return Array.from(this.localConfigs.values());
427
+ }
428
+ }
429
+ /**
430
+ * Fetch a specific graph configuration
431
+ */
432
+ async fetch(graphTag, productTag) {
433
+ // If productTag is provided, fetch from API
434
+ if (productTag) {
435
+ try {
436
+ const builder = await this.getProductBuilder(productTag);
437
+ const graph = await builder.fetchGraph(graphTag);
438
+ if (graph) {
439
+ const config = this.productGraphToConfig(graph);
440
+ // Also update local cache
441
+ this.localConfigs.set(graphTag, config);
442
+ return config;
443
+ }
444
+ return null;
445
+ }
446
+ catch (error) {
447
+ // Fall back to local config
448
+ return this.localConfigs.get(graphTag) || null;
449
+ }
450
+ }
451
+ return this.localConfigs.get(graphTag) || null;
452
+ }
453
+ /**
454
+ * Update graph configuration
455
+ */
456
+ async update(graphTag, updates, productTag) {
457
+ var _a;
458
+ // If productTag is provided, use ProductBuilder to update in backend
459
+ if (productTag) {
460
+ const builder = await this.getProductBuilder(productTag);
461
+ const productGraphUpdates = {
462
+ name: updates.name,
463
+ description: updates.description,
464
+ type: updates.type,
465
+ envs: (_a = updates.envs) === null || _a === void 0 ? void 0 : _a.map((env) => ({
466
+ slug: env.slug,
467
+ connection_url: env.connection_url,
468
+ description: env.description,
469
+ database: env.database,
470
+ graphName: env.graphName,
471
+ region: env.region,
472
+ username: env.username,
473
+ password: env.password,
474
+ })),
475
+ };
476
+ await builder.updateGraph(graphTag, productGraphUpdates);
477
+ }
478
+ const existing = this.localConfigs.get(graphTag);
479
+ if (!existing && !productTag) {
480
+ throw graph_error_1.GraphError.notFoundError(`Graph '${graphTag}' not found`);
481
+ }
482
+ const updated = Object.assign(Object.assign(Object.assign({}, (existing || {})), updates), { tag: graphTag });
483
+ this.localConfigs.set(graphTag, updated);
484
+ // Update connection contexts
485
+ if (updates.envs) {
486
+ for (const envConfig of updates.envs) {
487
+ const contextKey = `${graphTag}:${envConfig.slug}`;
488
+ const existingContext = this.connectionContexts.get(contextKey);
489
+ if (existingContext) {
490
+ this.connectionContexts.set(contextKey, Object.assign(Object.assign({}, existingContext), { connectionUrl: envConfig.connection_url, database: envConfig.database, graphName: envConfig.graphName, username: envConfig.username, password: envConfig.password }));
491
+ }
492
+ }
493
+ }
494
+ }
495
+ /**
496
+ * Delete a graph configuration
497
+ */
498
+ async delete(graphTag, productTag) {
499
+ var _a;
500
+ // If productTag is provided, use ProductBuilder to delete from backend
501
+ if (productTag) {
502
+ const builder = await this.getProductBuilder(productTag);
503
+ await builder.deleteGraph(graphTag);
504
+ }
505
+ // Get local config to clean up adapters and contexts
506
+ const config = this.localConfigs.get(graphTag);
507
+ if (config) {
508
+ // Clean up adapters and contexts for each environment
509
+ for (const envConfig of config.envs) {
510
+ const contextKey = `${graphTag}:${envConfig.slug}`;
511
+ // Disconnect adapter if connected
512
+ const adapter = this.adapters.get(contextKey);
513
+ if (adapter) {
514
+ try {
515
+ await adapter.disconnect();
516
+ }
517
+ catch (error) {
518
+ // Ignore disconnect errors during cleanup
519
+ }
520
+ this.adapters.delete(contextKey);
521
+ }
522
+ // Remove connection context
523
+ this.connectionContexts.delete(contextKey);
524
+ }
525
+ // Remove from local configs
526
+ this.localConfigs.delete(graphTag);
527
+ // Clear current context if it was the deleted graph
528
+ if (((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.graph) === graphTag) {
529
+ this.currentContext = null;
530
+ this.transactionManager = null;
531
+ }
532
+ }
533
+ else if (!productTag) {
534
+ throw graph_error_1.GraphError.notFoundError(`Graph '${graphTag}' not found`);
535
+ }
536
+ }
537
+ /**
538
+ * Convert IProductGraph to IGraphConfig
539
+ */
540
+ productGraphToConfig(graph) {
541
+ return {
542
+ name: graph.name,
543
+ tag: graph.tag,
544
+ type: graph.type,
545
+ description: graph.description,
546
+ envs: graph.envs.map((env) => ({
547
+ slug: env.slug,
548
+ connection_url: env.connection_url,
549
+ description: env.description,
550
+ database: env.database,
551
+ graphName: env.graphName,
552
+ region: env.region,
553
+ username: env.username,
554
+ password: env.password,
555
+ })),
556
+ };
557
+ }
558
+ // ==================== CONNECTION MANAGEMENT ====================
559
+ /**
560
+ * Connect to a graph database
561
+ * As documented in getting-started.md
562
+ *
563
+ * @example
564
+ * ```ts
565
+ * await ductape.graph.connect({
566
+ * env: 'dev',
567
+ * product: 'my-app',
568
+ * graph: 'social-graph',
569
+ * });
570
+ * ```
571
+ */
572
+ async connect(config) {
573
+ var _a, _b, _c, _d, _e, _f;
574
+ const process_id = (0, processor_utils_1.generateObjectId)();
575
+ const start = Date.now();
576
+ const contextKey = `${config.graph}:${config.env}`;
577
+ // Get adapter
578
+ let adapter = this.adapters.get(contextKey);
579
+ let context = this.connectionContexts.get(contextKey);
580
+ // If not locally registered, try to fetch from API
581
+ if (!adapter || !context) {
582
+ // Initialize product builder to get productId for logging
583
+ if (config.product) {
584
+ await this.getProductBuilder(config.product);
585
+ }
586
+ const graphConfig = await this.fetchGraphFromProduct(config.product, config.graph);
587
+ if (!graphConfig) {
588
+ throw graph_error_1.GraphError.notFoundError(`Graph '${config.graph}' not found in product '${config.product}'`);
589
+ }
590
+ // Register the graph locally (config is already decrypted from API)
591
+ this.createAdapter(graphConfig);
592
+ adapter = this.adapters.get(contextKey);
593
+ context = this.connectionContexts.get(contextKey);
594
+ }
595
+ if (!adapter || !context) {
596
+ throw graph_error_1.GraphError.configurationError(`Failed to initialize adapter for ${contextKey}`);
597
+ }
598
+ // Initialize logging
599
+ this.initializeLogService();
600
+ const envValue = config.env || '';
601
+ const baseLogs = {
602
+ product_tag: config.product || '',
603
+ workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '',
604
+ env: envValue,
605
+ app_env: envValue,
606
+ process_id,
607
+ type: logs_types_1.LogEventTypes.GRAPH,
608
+ parent_tag: config.graph,
609
+ child_tag: 'connect',
610
+ data: { graph: config.graph, env: envValue, operation: 'connect' },
611
+ };
612
+ (_b = this.logService) === null || _b === void 0 ? void 0 : _b.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Graph connect - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
613
+ try {
614
+ // Resolve all secret references in the context
615
+ const secretsService = (0, secrets_1.getSecretsService)();
616
+ // Helper function to resolve a value if it's a secret reference
617
+ const resolveSecret = async (value, fieldName) => {
618
+ if (!value)
619
+ return undefined;
620
+ const secretCheck = (0, secrets_1.isSecretReference)(value);
621
+ if (secretCheck.isSecret) {
622
+ if (secretsService) {
623
+ const resolved = await secretsService.resolve(value, { env: config.env });
624
+ return resolved.value;
625
+ }
626
+ else {
627
+ throw graph_error_1.GraphError.configurationError(`${fieldName} contains secret reference '${value}' but secrets service is not initialized. ` +
628
+ `Please ensure the Ductape client is properly initialized.`);
629
+ }
630
+ }
631
+ return value;
632
+ };
633
+ // Resolve all sensitive fields
634
+ const connectionUrl = await resolveSecret(context.connectionUrl, 'connectionUrl');
635
+ const graphName = await resolveSecret(context.graphName, 'graphName');
636
+ const username = await resolveSecret(context.username, 'username');
637
+ const password = await resolveSecret(context.password, 'password');
638
+ if (!connectionUrl) {
639
+ throw graph_error_1.GraphError.configurationError('Connection URL is required');
640
+ }
641
+ // Connect with auth credentials if provided
642
+ const authConfig = username && password ? { username, password } : undefined;
643
+ const result = await adapter.connect({
644
+ connectionUrl,
645
+ database: context.database,
646
+ graphName: graphName || context.graphName,
647
+ options: config.options,
648
+ auth: authConfig,
649
+ });
650
+ // Update context
651
+ context.connected = result.connected;
652
+ context.product = config.product;
653
+ this.connectionContexts.set(contextKey, context);
654
+ // Set as current context
655
+ this.currentContext = context;
656
+ // Initialize transaction manager
657
+ this.transactionManager = new transaction_manager_1.GraphTransactionManager(adapter);
658
+ const end = Date.now();
659
+ (_c = this.logService) === null || _c === void 0 ? void 0 : _c.add(Object.assign(Object.assign({}, baseLogs), { start,
660
+ end, message: 'Graph connect - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
661
+ (_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish();
662
+ return result;
663
+ }
664
+ catch (error) {
665
+ const end = Date.now();
666
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start,
667
+ end, message: 'Graph connect - failed', failed_execution: true, data: { graph: config.graph, env: config.env, error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
668
+ await ((_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish());
669
+ throw error;
670
+ }
671
+ }
672
+ /**
673
+ * Test connection to a graph database
674
+ */
675
+ async testConnection(config) {
676
+ const contextKey = `${config.graph}:${config.env}`;
677
+ const context = this.connectionContexts.get(contextKey);
678
+ if (!context) {
679
+ throw graph_error_1.GraphError.notFoundError(`Graph configuration not found for ${config.graph}:${config.env}`);
680
+ }
681
+ const adapter = this.adapterFactory.create(context.type);
682
+ return adapter.testConnection({
683
+ connectionUrl: context.connectionUrl,
684
+ database: context.database,
685
+ graphName: context.graphName,
686
+ options: config.options,
687
+ auth: context.username && context.password ? { username: context.username, password: context.password } : undefined,
688
+ });
689
+ }
690
+ /**
691
+ * Disconnect from current graph
692
+ */
693
+ async disconnect() {
694
+ if (this.currentContext) {
695
+ const contextKey = `${this.currentContext.graph}:${this.currentContext.env}`;
696
+ const adapter = this.adapters.get(contextKey);
697
+ if (adapter) {
698
+ // Rollback any pending transactions
699
+ if (this.transactionManager) {
700
+ await this.transactionManager.rollbackAll();
701
+ }
702
+ await adapter.disconnect();
703
+ this.currentContext.connected = false;
704
+ }
705
+ this.currentContext = null;
706
+ }
707
+ }
708
+ /**
709
+ * Disconnect from all graphs
710
+ */
711
+ async closeAll() {
712
+ for (const [key, adapter] of this.adapters.entries()) {
713
+ try {
714
+ await adapter.disconnect();
715
+ const context = this.connectionContexts.get(key);
716
+ if (context) {
717
+ context.connected = false;
718
+ }
719
+ }
720
+ catch (error) {
721
+ console.error(`Failed to disconnect ${key}:`, error);
722
+ }
723
+ }
724
+ if (this.transactionManager) {
725
+ await this.transactionManager.rollbackAll();
726
+ }
727
+ this.currentContext = null;
728
+ }
729
+ // ==================== NODE OPERATIONS ====================
730
+ /**
731
+ * Create a node
732
+ * As documented in nodes.md
733
+ */
734
+ async createNode(options, transaction) {
735
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
736
+ const process_id = (0, processor_utils_1.generateObjectId)();
737
+ const start = Date.now();
738
+ this.initializeLogService();
739
+ const envValue = ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.env) || '';
740
+ const graphValue = ((_b = this.currentContext) === null || _b === void 0 ? void 0 : _b.graph) || '';
741
+ const baseLogs = {
742
+ product_tag: ((_c = this.currentContext) === null || _c === void 0 ? void 0 : _c.product) || '',
743
+ workspace_id: ((_d = this.config) === null || _d === void 0 ? void 0 : _d.workspace_id) || '',
744
+ env: envValue,
745
+ app_env: envValue,
746
+ process_id,
747
+ type: logs_types_1.LogEventTypes.GRAPH,
748
+ parent_tag: graphValue,
749
+ child_tag: 'createNode',
750
+ data: { labels: options.labels, operation: 'createNode', graph: graphValue, env: envValue, properties: options.properties },
751
+ };
752
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Graph createNode - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
753
+ try {
754
+ const adapter = this.getAdapter();
755
+ const result = await adapter.createNode(options, transaction);
756
+ const end = Date.now();
757
+ (_f = this.logService) === null || _f === void 0 ? void 0 : _f.add(Object.assign(Object.assign({}, baseLogs), { start,
758
+ end, message: 'Graph createNode - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
759
+ (_g = this.logService) === null || _g === void 0 ? void 0 : _g.publish();
760
+ return result;
761
+ }
762
+ catch (error) {
763
+ const end = Date.now();
764
+ (_h = this.logService) === null || _h === void 0 ? void 0 : _h.add(Object.assign(Object.assign({}, baseLogs), { start,
765
+ end, message: 'Graph createNode - failed', failed_execution: true, data: { labels: options.labels, operation: 'createNode', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
766
+ await ((_j = this.logService) === null || _j === void 0 ? void 0 : _j.publish());
767
+ throw error;
768
+ }
769
+ }
770
+ /**
771
+ * Find nodes by criteria
772
+ * As documented in nodes.md
773
+ */
774
+ async findNodes(options, transaction) {
775
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
776
+ const process_id = (0, processor_utils_1.generateObjectId)();
777
+ const start = Date.now();
778
+ this.initializeLogService();
779
+ const envValue = ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.env) || '';
780
+ const graphValue = ((_b = this.currentContext) === null || _b === void 0 ? void 0 : _b.graph) || '';
781
+ const baseLogs = {
782
+ product_tag: ((_c = this.currentContext) === null || _c === void 0 ? void 0 : _c.product) || '',
783
+ workspace_id: ((_d = this.config) === null || _d === void 0 ? void 0 : _d.workspace_id) || '',
784
+ env: envValue,
785
+ app_env: envValue,
786
+ process_id,
787
+ type: logs_types_1.LogEventTypes.GRAPH,
788
+ parent_tag: graphValue,
789
+ child_tag: 'findNodes',
790
+ data: { labels: options.labels, operation: 'findNodes', graph: graphValue, env: envValue, where: options.where, select: options.select, orderBy: options.orderBy, limit: options.limit, offset: options.offset },
791
+ };
792
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Graph findNodes - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
793
+ try {
794
+ // Check cache if cache tag is provided
795
+ const productTag = (_f = this.currentContext) === null || _f === void 0 ? void 0 : _f.product;
796
+ const privateKey = productTag ? this.privateKeys.get(productTag) : undefined;
797
+ if (options.cache && this.cacheManager && privateKey) {
798
+ const cacheOptions = {
799
+ cache_tag: options.cache,
800
+ product_tag: productTag || '',
801
+ component_tag: ((_g = this.currentContext) === null || _g === void 0 ? void 0 : _g.graph) || '',
802
+ component_type: 'graph',
803
+ input: {
804
+ labels: options.labels,
805
+ where: options.where,
806
+ select: options.select,
807
+ orderBy: options.orderBy,
808
+ limit: options.limit,
809
+ offset: options.offset,
810
+ },
811
+ privateKey,
812
+ };
813
+ const cached = await this.cacheManager.fetch(cacheOptions);
814
+ if (cached.hit && cached.data) {
815
+ const end = Date.now();
816
+ (_h = this.logService) === null || _h === void 0 ? void 0 : _h.add(Object.assign(Object.assign({}, baseLogs), { start,
817
+ end, message: `Graph findNodes - cache hit (${cached.source})`, successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
818
+ (_j = this.logService) === null || _j === void 0 ? void 0 : _j.publish();
819
+ return cached.data;
820
+ }
821
+ }
822
+ const adapter = this.getAdapter();
823
+ const result = await adapter.findNodes(options, transaction);
824
+ // Store in cache if cache tag is provided
825
+ if (options.cache && this.cacheManager && privateKey) {
826
+ const cacheOptions = {
827
+ cache_tag: options.cache,
828
+ product_tag: productTag || '',
829
+ component_tag: ((_k = this.currentContext) === null || _k === void 0 ? void 0 : _k.graph) || '',
830
+ component_type: 'graph',
831
+ input: {
832
+ labels: options.labels,
833
+ where: options.where,
834
+ select: options.select,
835
+ orderBy: options.orderBy,
836
+ limit: options.limit,
837
+ offset: options.offset,
838
+ },
839
+ privateKey,
840
+ };
841
+ await this.cacheManager.store(cacheOptions, result);
842
+ }
843
+ const end = Date.now();
844
+ (_l = this.logService) === null || _l === void 0 ? void 0 : _l.add(Object.assign(Object.assign({}, baseLogs), { start,
845
+ end, message: 'Graph findNodes - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
846
+ (_m = this.logService) === null || _m === void 0 ? void 0 : _m.publish();
847
+ return result;
848
+ }
849
+ catch (error) {
850
+ const end = Date.now();
851
+ (_o = this.logService) === null || _o === void 0 ? void 0 : _o.add(Object.assign(Object.assign({}, baseLogs), { start,
852
+ end, message: 'Graph findNodes - failed', failed_execution: true, data: { labels: options.labels, operation: 'findNodes', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
853
+ await ((_p = this.logService) === null || _p === void 0 ? void 0 : _p.publish());
854
+ throw error;
855
+ }
856
+ }
857
+ /**
858
+ * Find a node by ID
859
+ * As documented in nodes.md
860
+ */
861
+ async findNodeById(id, transaction) {
862
+ const adapter = this.getAdapter();
863
+ return adapter.findNodeById(id, transaction);
864
+ }
865
+ /**
866
+ * Update a node
867
+ * As documented in nodes.md
868
+ */
869
+ async updateNode(options, transaction) {
870
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
871
+ const process_id = (0, processor_utils_1.generateObjectId)();
872
+ const start = Date.now();
873
+ this.initializeLogService();
874
+ const envValue = ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.env) || '';
875
+ const graphValue = ((_b = this.currentContext) === null || _b === void 0 ? void 0 : _b.graph) || '';
876
+ const baseLogs = {
877
+ product_tag: ((_c = this.currentContext) === null || _c === void 0 ? void 0 : _c.product) || '',
878
+ workspace_id: ((_d = this.config) === null || _d === void 0 ? void 0 : _d.workspace_id) || '',
879
+ env: envValue,
880
+ app_env: envValue,
881
+ process_id,
882
+ type: logs_types_1.LogEventTypes.GRAPH,
883
+ parent_tag: graphValue,
884
+ child_tag: 'updateNode',
885
+ data: { id: options.id, operation: 'updateNode', graph: graphValue, env: envValue, properties: options.properties, labels: options.labels },
886
+ };
887
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Graph updateNode - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
888
+ try {
889
+ const adapter = this.getAdapter();
890
+ const result = await adapter.updateNode(options, transaction);
891
+ const end = Date.now();
892
+ (_f = this.logService) === null || _f === void 0 ? void 0 : _f.add(Object.assign(Object.assign({}, baseLogs), { start,
893
+ end, message: 'Graph updateNode - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
894
+ (_g = this.logService) === null || _g === void 0 ? void 0 : _g.publish();
895
+ return result;
896
+ }
897
+ catch (error) {
898
+ const end = Date.now();
899
+ (_h = this.logService) === null || _h === void 0 ? void 0 : _h.add(Object.assign(Object.assign({}, baseLogs), { start,
900
+ end, message: 'Graph updateNode - failed', failed_execution: true, data: { id: options.id, operation: 'updateNode', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
901
+ await ((_j = this.logService) === null || _j === void 0 ? void 0 : _j.publish());
902
+ throw error;
903
+ }
904
+ }
905
+ /**
906
+ * Delete a node
907
+ * As documented in nodes.md
908
+ */
909
+ async deleteNode(options, transaction) {
910
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
911
+ const process_id = (0, processor_utils_1.generateObjectId)();
912
+ const start = Date.now();
913
+ this.initializeLogService();
914
+ const envValue = ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.env) || '';
915
+ const graphValue = ((_b = this.currentContext) === null || _b === void 0 ? void 0 : _b.graph) || '';
916
+ const baseLogs = {
917
+ product_tag: ((_c = this.currentContext) === null || _c === void 0 ? void 0 : _c.product) || '',
918
+ workspace_id: ((_d = this.config) === null || _d === void 0 ? void 0 : _d.workspace_id) || '',
919
+ env: envValue,
920
+ app_env: envValue,
921
+ process_id,
922
+ type: logs_types_1.LogEventTypes.GRAPH,
923
+ parent_tag: graphValue,
924
+ child_tag: 'deleteNode',
925
+ data: { id: options.id, operation: 'deleteNode', graph: graphValue, env: envValue, detach: options.detach },
926
+ };
927
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Graph deleteNode - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
928
+ try {
929
+ const adapter = this.getAdapter();
930
+ const result = await adapter.deleteNode(options, transaction);
931
+ const end = Date.now();
932
+ (_f = this.logService) === null || _f === void 0 ? void 0 : _f.add(Object.assign(Object.assign({}, baseLogs), { start,
933
+ end, message: 'Graph deleteNode - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
934
+ (_g = this.logService) === null || _g === void 0 ? void 0 : _g.publish();
935
+ return result;
936
+ }
937
+ catch (error) {
938
+ const end = Date.now();
939
+ (_h = this.logService) === null || _h === void 0 ? void 0 : _h.add(Object.assign(Object.assign({}, baseLogs), { start,
940
+ end, message: 'Graph deleteNode - failed', failed_execution: true, data: { id: options.id, operation: 'deleteNode', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
941
+ await ((_j = this.logService) === null || _j === void 0 ? void 0 : _j.publish());
942
+ throw error;
943
+ }
944
+ }
945
+ /**
946
+ * Merge (upsert) a node
947
+ * As documented in nodes.md
948
+ */
949
+ async mergeNode(options, transaction) {
950
+ const adapter = this.getAdapter();
951
+ return adapter.mergeNode(options, transaction);
952
+ }
953
+ // ==================== LABEL MANAGEMENT ====================
954
+ /**
955
+ * Add labels to an existing node
956
+ *
957
+ * @example
958
+ * ```ts
959
+ * const result = await graphService.addLabels({
960
+ * id: 'node-123',
961
+ * labels: ['Admin', 'Verified'],
962
+ * });
963
+ * console.log(result.node.labels); // ['Person', 'Admin', 'Verified']
964
+ * ```
965
+ */
966
+ async addLabels(options, transaction) {
967
+ const adapter = this.getAdapter();
968
+ return adapter.addLabels(options, transaction);
969
+ }
970
+ /**
971
+ * Remove labels from an existing node
972
+ *
973
+ * @example
974
+ * ```ts
975
+ * const result = await graphService.removeLabels({
976
+ * id: 'node-123',
977
+ * labels: ['Temporary'],
978
+ * });
979
+ * console.log(result.removedLabels); // ['Temporary']
980
+ * ```
981
+ */
982
+ async removeLabels(options, transaction) {
983
+ const adapter = this.getAdapter();
984
+ return adapter.removeLabels(options, transaction);
985
+ }
986
+ /**
987
+ * Set labels on a node (replaces all existing labels)
988
+ *
989
+ * @example
990
+ * ```ts
991
+ * const result = await graphService.setLabels({
992
+ * id: 'node-123',
993
+ * labels: ['Person', 'Employee'],
994
+ * });
995
+ * console.log(result.previousLabels); // ['Person', 'Contractor']
996
+ * console.log(result.newLabels); // ['Person', 'Employee']
997
+ * ```
998
+ */
999
+ async setLabels(options, transaction) {
1000
+ const adapter = this.getAdapter();
1001
+ return adapter.setLabels(options, transaction);
1002
+ }
1003
+ // ==================== RELATIONSHIP OPERATIONS ====================
1004
+ /**
1005
+ * Create a relationship
1006
+ * As documented in relationships.md
1007
+ */
1008
+ async createRelationship(options, transaction) {
1009
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
1010
+ const process_id = (0, processor_utils_1.generateObjectId)();
1011
+ const start = Date.now();
1012
+ this.initializeLogService();
1013
+ const envValue = ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.env) || '';
1014
+ const graphValue = ((_b = this.currentContext) === null || _b === void 0 ? void 0 : _b.graph) || '';
1015
+ const baseLogs = {
1016
+ product_tag: ((_c = this.currentContext) === null || _c === void 0 ? void 0 : _c.product) || '',
1017
+ workspace_id: ((_d = this.config) === null || _d === void 0 ? void 0 : _d.workspace_id) || '',
1018
+ env: envValue,
1019
+ app_env: envValue,
1020
+ process_id,
1021
+ type: logs_types_1.LogEventTypes.GRAPH,
1022
+ parent_tag: graphValue,
1023
+ child_tag: 'createRelationship',
1024
+ data: { type: options.type, operation: 'createRelationship', graph: graphValue, env: envValue, startNodeId: options.startNodeId, endNodeId: options.endNodeId, properties: options.properties },
1025
+ };
1026
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Graph createRelationship - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
1027
+ try {
1028
+ const adapter = this.getAdapter();
1029
+ const result = await adapter.createRelationship(options, transaction);
1030
+ const end = Date.now();
1031
+ (_f = this.logService) === null || _f === void 0 ? void 0 : _f.add(Object.assign(Object.assign({}, baseLogs), { start,
1032
+ end, message: 'Graph createRelationship - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
1033
+ (_g = this.logService) === null || _g === void 0 ? void 0 : _g.publish();
1034
+ return result;
1035
+ }
1036
+ catch (error) {
1037
+ const end = Date.now();
1038
+ (_h = this.logService) === null || _h === void 0 ? void 0 : _h.add(Object.assign(Object.assign({}, baseLogs), { start,
1039
+ end, message: 'Graph createRelationship - failed', failed_execution: true, data: { type: options.type, operation: 'createRelationship', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
1040
+ await ((_j = this.logService) === null || _j === void 0 ? void 0 : _j.publish());
1041
+ throw error;
1042
+ }
1043
+ }
1044
+ /**
1045
+ * Find relationships by criteria
1046
+ * As documented in relationships.md
1047
+ */
1048
+ async findRelationships(options, transaction) {
1049
+ const adapter = this.getAdapter();
1050
+ return adapter.findRelationships(options, transaction);
1051
+ }
1052
+ /**
1053
+ * Find a relationship by ID
1054
+ */
1055
+ async findRelationshipById(id, transaction) {
1056
+ const adapter = this.getAdapter();
1057
+ return adapter.findRelationshipById(id, transaction);
1058
+ }
1059
+ /**
1060
+ * Update a relationship
1061
+ * As documented in relationships.md
1062
+ */
1063
+ async updateRelationship(options, transaction) {
1064
+ const adapter = this.getAdapter();
1065
+ return adapter.updateRelationship(options, transaction);
1066
+ }
1067
+ /**
1068
+ * Delete a relationship
1069
+ * As documented in relationships.md
1070
+ */
1071
+ async deleteRelationship(options, transaction) {
1072
+ const adapter = this.getAdapter();
1073
+ return adapter.deleteRelationship(options, transaction);
1074
+ }
1075
+ /**
1076
+ * Merge (upsert) a relationship
1077
+ * As documented in relationships.md
1078
+ */
1079
+ async mergeRelationship(options, transaction) {
1080
+ const adapter = this.getAdapter();
1081
+ return adapter.mergeRelationship(options, transaction);
1082
+ }
1083
+ // ==================== TRAVERSAL OPERATIONS ====================
1084
+ /**
1085
+ * Traverse the graph from a starting node
1086
+ * As documented in traversals.md
1087
+ */
1088
+ async traverse(options, transaction) {
1089
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
1090
+ const process_id = (0, processor_utils_1.generateObjectId)();
1091
+ const start = Date.now();
1092
+ this.initializeLogService();
1093
+ const envValue = ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.env) || '';
1094
+ const graphValue = ((_b = this.currentContext) === null || _b === void 0 ? void 0 : _b.graph) || '';
1095
+ const baseLogs = {
1096
+ product_tag: ((_c = this.currentContext) === null || _c === void 0 ? void 0 : _c.product) || '',
1097
+ workspace_id: ((_d = this.config) === null || _d === void 0 ? void 0 : _d.workspace_id) || '',
1098
+ env: envValue,
1099
+ app_env: envValue,
1100
+ process_id,
1101
+ type: logs_types_1.LogEventTypes.GRAPH,
1102
+ parent_tag: graphValue,
1103
+ child_tag: 'traverse',
1104
+ data: { startNodeId: options.startNodeId, operation: 'traverse', graph: graphValue, env: envValue, direction: options.direction, maxDepth: options.maxDepth, relationshipTypes: options.relationshipTypes },
1105
+ };
1106
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Graph traverse - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
1107
+ try {
1108
+ const adapter = this.getAdapter();
1109
+ const result = await adapter.traverse(options, transaction);
1110
+ const end = Date.now();
1111
+ (_f = this.logService) === null || _f === void 0 ? void 0 : _f.add(Object.assign(Object.assign({}, baseLogs), { start,
1112
+ end, message: 'Graph traverse - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
1113
+ (_g = this.logService) === null || _g === void 0 ? void 0 : _g.publish();
1114
+ return result;
1115
+ }
1116
+ catch (error) {
1117
+ const end = Date.now();
1118
+ (_h = this.logService) === null || _h === void 0 ? void 0 : _h.add(Object.assign(Object.assign({}, baseLogs), { start,
1119
+ end, message: 'Graph traverse - failed', failed_execution: true, data: { startNodeId: options.startNodeId, operation: 'traverse', error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
1120
+ await ((_j = this.logService) === null || _j === void 0 ? void 0 : _j.publish());
1121
+ throw error;
1122
+ }
1123
+ }
1124
+ /**
1125
+ * Find the shortest path between two nodes
1126
+ * As documented in traversals.md
1127
+ */
1128
+ async shortestPath(options, transaction) {
1129
+ const adapter = this.getAdapter();
1130
+ return adapter.shortestPath(options, transaction);
1131
+ }
1132
+ /**
1133
+ * Find all paths between two nodes
1134
+ * As documented in traversals.md
1135
+ */
1136
+ async allPaths(options, transaction) {
1137
+ const adapter = this.getAdapter();
1138
+ return adapter.allPaths(options, transaction);
1139
+ }
1140
+ /**
1141
+ * Get the neighborhood of a node
1142
+ * As documented in traversals.md
1143
+ */
1144
+ async getNeighborhood(options, transaction) {
1145
+ const adapter = this.getAdapter();
1146
+ return adapter.getNeighborhood(options, transaction);
1147
+ }
1148
+ /**
1149
+ * Find connected components in the graph
1150
+ * As documented in traversals.md
1151
+ */
1152
+ async findConnectedComponents(options, transaction) {
1153
+ const adapter = this.getAdapter();
1154
+ return adapter.findConnectedComponents(options, transaction);
1155
+ }
1156
+ // ==================== AGGREGATION OPERATIONS ====================
1157
+ /**
1158
+ * Count nodes matching criteria
1159
+ * As documented in overview.md
1160
+ */
1161
+ async countNodes(labels, where, transaction) {
1162
+ const adapter = this.getAdapter();
1163
+ return adapter.countNodes(labels, where, transaction);
1164
+ }
1165
+ /**
1166
+ * Count relationships matching criteria
1167
+ * As documented in overview.md
1168
+ */
1169
+ async countRelationships(types, where, transaction) {
1170
+ const adapter = this.getAdapter();
1171
+ return adapter.countRelationships(types, where, transaction);
1172
+ }
1173
+ /**
1174
+ * Get graph statistics
1175
+ * As documented in overview.md
1176
+ */
1177
+ async getStatistics(transaction) {
1178
+ const adapter = this.getAdapter();
1179
+ return adapter.getStatistics(transaction);
1180
+ }
1181
+ // ==================== SEARCH OPERATIONS ====================
1182
+ /**
1183
+ * Full-text search
1184
+ * As documented in overview.md
1185
+ */
1186
+ async fullTextSearch(options, transaction) {
1187
+ const adapter = this.getAdapter();
1188
+ return adapter.fullTextSearch(options, transaction);
1189
+ }
1190
+ /**
1191
+ * Vector similarity search
1192
+ * As documented in overview.md
1193
+ */
1194
+ async vectorSearch(options, transaction) {
1195
+ const adapter = this.getAdapter();
1196
+ return adapter.vectorSearch(options, transaction);
1197
+ }
1198
+ // ==================== RAW QUERY ====================
1199
+ /**
1200
+ * Execute a raw query
1201
+ * As documented in overview.md
1202
+ *
1203
+ * @example
1204
+ * ```ts
1205
+ * const result = await ductape.graph.query(
1206
+ * 'MATCH (p:Person)-[:FRIENDS_WITH]->(f) WHERE p.name = $name RETURN f',
1207
+ * { name: 'Alice' }
1208
+ * );
1209
+ * ```
1210
+ */
1211
+ async query(query, params, transaction) {
1212
+ const adapter = this.getAdapter();
1213
+ return adapter.query({ query, params }, transaction);
1214
+ }
1215
+ // ==================== SCHEMA OPERATIONS ====================
1216
+ /**
1217
+ * Create a node index
1218
+ * As documented in overview.md
1219
+ */
1220
+ async createNodeIndex(options) {
1221
+ const adapter = this.getAdapter();
1222
+ return adapter.createNodeIndex(options);
1223
+ }
1224
+ /**
1225
+ * Create a node constraint
1226
+ * As documented in overview.md
1227
+ */
1228
+ async createNodeConstraint(options) {
1229
+ const adapter = this.getAdapter();
1230
+ return adapter.createNodeConstraint(options);
1231
+ }
1232
+ /**
1233
+ * Create a relationship index
1234
+ */
1235
+ async createRelationshipIndex(options) {
1236
+ const adapter = this.getAdapter();
1237
+ return adapter.createRelationshipIndex(options);
1238
+ }
1239
+ /**
1240
+ * List all indexes
1241
+ * As documented in overview.md
1242
+ */
1243
+ async listIndexes() {
1244
+ const adapter = this.getAdapter();
1245
+ return adapter.listIndexes();
1246
+ }
1247
+ /**
1248
+ * List all constraints
1249
+ */
1250
+ async listConstraints() {
1251
+ const adapter = this.getAdapter();
1252
+ return adapter.listConstraints();
1253
+ }
1254
+ /**
1255
+ * Drop an index
1256
+ */
1257
+ async dropIndex(name) {
1258
+ const adapter = this.getAdapter();
1259
+ return adapter.dropIndex(name);
1260
+ }
1261
+ /**
1262
+ * Drop a constraint
1263
+ */
1264
+ async dropConstraint(name) {
1265
+ const adapter = this.getAdapter();
1266
+ return adapter.dropConstraint(name);
1267
+ }
1268
+ // ==================== SCHEMA INTROSPECTION ====================
1269
+ /**
1270
+ * List all node labels with counts and property information
1271
+ * Used for GraphExplorer sidebar
1272
+ */
1273
+ async listLabels() {
1274
+ const adapter = this.getAdapter();
1275
+ return adapter.listLabels();
1276
+ }
1277
+ /**
1278
+ * List all relationship types with counts
1279
+ * Used for GraphExplorer sidebar
1280
+ */
1281
+ async listRelationshipTypes() {
1282
+ const adapter = this.getAdapter();
1283
+ return adapter.listRelationshipTypes();
1284
+ }
1285
+ /**
1286
+ * Generate a URL-safe tag from a name
1287
+ */
1288
+ generateActionTag(name) {
1289
+ return name
1290
+ .toLowerCase()
1291
+ .replace(/[^a-z0-9]+/g, '-')
1292
+ .replace(/^-+|-+$/g, '');
1293
+ }
1294
+ /**
1295
+ * Create a new graph action (saved parameterized query)
1296
+ *
1297
+ * @example
1298
+ * ```ts
1299
+ * const action = await graphService.createAction({
1300
+ * name: 'Find Persons',
1301
+ * description: 'Find persons with configurable limit',
1302
+ * operation: 'findNodes',
1303
+ * query: {
1304
+ * operation: 'findNodes',
1305
+ * options: { labels: ['Person'], limit: '{{limit}}' }
1306
+ * },
1307
+ * parameters: [
1308
+ * { name: 'limit', path: 'options.limit', defaultValue: 25, type: 'number' }
1309
+ * ]
1310
+ * }, 'my-product');
1311
+ * ```
1312
+ */
1313
+ async createAction(options, productTag) {
1314
+ var _a;
1315
+ const graphTag = options.graphTag || ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.graph);
1316
+ if (!graphTag) {
1317
+ throw graph_error_1.GraphError.configurationError('No graph specified. Please connect first or provide graphTag.');
1318
+ }
1319
+ const actionTag = this.generateActionTag(options.name);
1320
+ const now = new Date().toISOString();
1321
+ const action = {
1322
+ id: `action_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`,
1323
+ tag: actionTag,
1324
+ name: options.name,
1325
+ description: options.description,
1326
+ operation: options.operation,
1327
+ query: options.query,
1328
+ parameters: options.parameters,
1329
+ createdAt: now,
1330
+ graphTag,
1331
+ };
1332
+ // If productTag is provided, persist to backend using ProductBuilder
1333
+ if (productTag) {
1334
+ try {
1335
+ const builder = await this.getProductBuilder(productTag);
1336
+ await builder.createGraphAction(graphTag, action);
1337
+ }
1338
+ catch (error) {
1339
+ // Fall back to local storage if API fails
1340
+ console.warn('Failed to persist action to backend, storing locally:', error);
1341
+ }
1342
+ }
1343
+ // Store locally
1344
+ const graphActions = this.actions.get(graphTag) || [];
1345
+ graphActions.push(action);
1346
+ this.actions.set(graphTag, graphActions);
1347
+ return action;
1348
+ }
1349
+ /**
1350
+ * List all actions for a graph
1351
+ */
1352
+ async listActions(graphTag, productTag) {
1353
+ var _a;
1354
+ const tag = graphTag || ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.graph);
1355
+ if (!tag) {
1356
+ throw graph_error_1.GraphError.configurationError('No graph specified. Please connect first or provide graphTag.');
1357
+ }
1358
+ // If productTag is provided, fetch from backend using ProductBuilder
1359
+ if (productTag) {
1360
+ try {
1361
+ const builder = await this.getProductBuilder(productTag);
1362
+ const actions = await builder.fetchGraphActions(tag);
1363
+ // Update local cache
1364
+ this.actions.set(tag, actions);
1365
+ return { actions };
1366
+ }
1367
+ catch (error) {
1368
+ // Fall back to local cache
1369
+ console.warn('Failed to fetch actions from backend, using local cache:', error);
1370
+ }
1371
+ }
1372
+ const actions = this.actions.get(tag) || [];
1373
+ return { actions };
1374
+ }
1375
+ /**
1376
+ * Get a specific action by tag
1377
+ */
1378
+ async getAction(actionTag, graphTag, productTag) {
1379
+ var _a;
1380
+ const tag = graphTag || ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.graph);
1381
+ if (!tag) {
1382
+ throw graph_error_1.GraphError.configurationError('No graph specified. Please connect first or provide graphTag.');
1383
+ }
1384
+ // If productTag is provided, fetch from backend using ProductBuilder
1385
+ if (productTag) {
1386
+ try {
1387
+ const builder = await this.getProductBuilder(productTag);
1388
+ const action = await builder.fetchGraphAction(tag, actionTag);
1389
+ if (action) {
1390
+ // Update local cache
1391
+ const actions = this.actions.get(tag) || [];
1392
+ const existingIndex = actions.findIndex((a) => a.tag === actionTag);
1393
+ if (existingIndex >= 0) {
1394
+ actions[existingIndex] = action;
1395
+ }
1396
+ else {
1397
+ actions.push(action);
1398
+ }
1399
+ this.actions.set(tag, actions);
1400
+ return action;
1401
+ }
1402
+ }
1403
+ catch (error) {
1404
+ // Fall back to local cache
1405
+ console.warn('Failed to fetch action from backend, using local cache:', error);
1406
+ }
1407
+ }
1408
+ const actions = this.actions.get(tag) || [];
1409
+ return actions.find((a) => a.tag === actionTag) || null;
1410
+ }
1411
+ /**
1412
+ * Update an existing action
1413
+ */
1414
+ async updateAction(actionTag, updates, graphTag, productTag) {
1415
+ var _a, _b, _c, _d, _e;
1416
+ const tag = graphTag || ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.graph);
1417
+ if (!tag) {
1418
+ throw graph_error_1.GraphError.configurationError('No graph specified. Please connect first or provide graphTag.');
1419
+ }
1420
+ const actions = this.actions.get(tag) || [];
1421
+ const index = actions.findIndex((a) => a.tag === actionTag);
1422
+ if (index === -1) {
1423
+ throw graph_error_1.GraphError.notFoundError(`Action '${actionTag}' not found`);
1424
+ }
1425
+ const existing = actions[index];
1426
+ const updated = Object.assign(Object.assign({}, existing), { name: (_b = updates.name) !== null && _b !== void 0 ? _b : existing.name, description: (_c = updates.description) !== null && _c !== void 0 ? _c : existing.description, query: (_d = updates.query) !== null && _d !== void 0 ? _d : existing.query, parameters: (_e = updates.parameters) !== null && _e !== void 0 ? _e : existing.parameters, updatedAt: new Date().toISOString() });
1427
+ // If productTag is provided, persist to backend using ProductBuilder
1428
+ if (productTag) {
1429
+ try {
1430
+ const builder = await this.getProductBuilder(productTag);
1431
+ await builder.updateGraphAction(tag, actionTag, updated);
1432
+ }
1433
+ catch (error) {
1434
+ console.warn('Failed to update action in backend:', error);
1435
+ }
1436
+ }
1437
+ actions[index] = updated;
1438
+ this.actions.set(tag, actions);
1439
+ return updated;
1440
+ }
1441
+ /**
1442
+ * Delete an action
1443
+ */
1444
+ async deleteAction(actionTag, graphTag, productTag) {
1445
+ var _a;
1446
+ const tag = graphTag || ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.graph);
1447
+ if (!tag) {
1448
+ throw graph_error_1.GraphError.configurationError('No graph specified. Please connect first or provide graphTag.');
1449
+ }
1450
+ // If productTag is provided, delete from backend using ProductBuilder
1451
+ if (productTag) {
1452
+ try {
1453
+ const builder = await this.getProductBuilder(productTag);
1454
+ await builder.deleteGraphAction(tag, actionTag);
1455
+ }
1456
+ catch (error) {
1457
+ console.warn('Failed to delete action from backend:', error);
1458
+ }
1459
+ }
1460
+ const actions = this.actions.get(tag) || [];
1461
+ const filtered = actions.filter((a) => a.tag !== actionTag);
1462
+ if (filtered.length === actions.length) {
1463
+ throw graph_error_1.GraphError.notFoundError(`Action '${actionTag}' not found`);
1464
+ }
1465
+ this.actions.set(tag, filtered);
1466
+ }
1467
+ /**
1468
+ * Execute a graph action with parameter substitution
1469
+ *
1470
+ * @example
1471
+ * ```ts
1472
+ * const result = await graphService.execute({
1473
+ * product: 'my-app',
1474
+ * env: 'dev',
1475
+ * graph: 'social-graph',
1476
+ * action: 'find-persons',
1477
+ * input: { limit: 50 }
1478
+ * });
1479
+ * ```
1480
+ */
1481
+ async execute(options) {
1482
+ var _a, _b, _c, _d, _e, _f, _g, _h;
1483
+ const process_id = (0, processor_utils_1.generateObjectId)();
1484
+ const startTime = Date.now();
1485
+ // Session log fields (will be populated if session is provided)
1486
+ let sessionLogFields = {};
1487
+ let resolvedOptions = options;
1488
+ // Initialize product builder and logging
1489
+ if (options.product) {
1490
+ const builder = await this.getProductBuilder(options.product);
1491
+ // Process session if provided
1492
+ if (options.session) {
1493
+ const privateKey = builder.fetchPrivateKey();
1494
+ if (privateKey) {
1495
+ const { processSessionForExecution } = await Promise.resolve().then(() => __importStar(require('../sessions')));
1496
+ const sessionResult = await processSessionForExecution(options.session, privateKey, options, options.env);
1497
+ if (sessionResult.error) {
1498
+ throw new Error(`Session validation failed: ${sessionResult.error}`);
1499
+ }
1500
+ resolvedOptions = sessionResult.input;
1501
+ sessionLogFields = sessionResult.logFields;
1502
+ }
1503
+ }
1504
+ }
1505
+ this.initializeLogService();
1506
+ const baseLogs = Object.assign({ product_tag: options.product || '', workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '', env: options.env, process_id, type: logs_types_1.LogEventTypes.GRAPH, parent_tag: options.graph, child_tag: options.action, data: { graph: options.graph, action: options.action, operation: 'execute' } }, sessionLogFields);
1507
+ (_b = this.logService) === null || _b === void 0 ? void 0 : _b.add(Object.assign(Object.assign({}, baseLogs), { start: startTime, message: 'Graph action execute - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
1508
+ // Get the action
1509
+ const action = await this.getAction(resolvedOptions.action, resolvedOptions.graph);
1510
+ if (!action) {
1511
+ const end = Date.now();
1512
+ (_c = this.logService) === null || _c === void 0 ? void 0 : _c.add(Object.assign(Object.assign({}, baseLogs), { start: startTime, end, message: 'Graph action execute - failed', failed_execution: true, data: { graph: options.graph, action: options.action, error: `Action '${options.action}' not found` }, status: logs_types_1.LogEventStatus.FAIL }));
1513
+ await ((_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish());
1514
+ return {
1515
+ success: false,
1516
+ executionTime: end - startTime,
1517
+ data: [],
1518
+ count: 0,
1519
+ error: `Action '${options.action}' not found`,
1520
+ };
1521
+ }
1522
+ try {
1523
+ // Build the query with parameter substitution
1524
+ const query = this.substituteParameters(action.query, action.parameters, resolvedOptions.input || {});
1525
+ // Execute based on operation type
1526
+ const result = await this.executeOperation(query);
1527
+ const end = Date.now();
1528
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start: startTime, end, message: 'Graph action execute - success', successful_execution: true, status: logs_types_1.LogEventStatus.SUCCESS }));
1529
+ (_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish();
1530
+ return {
1531
+ success: true,
1532
+ executionTime: end - startTime,
1533
+ data: result.data,
1534
+ count: result.data.length,
1535
+ };
1536
+ }
1537
+ catch (error) {
1538
+ const end = Date.now();
1539
+ (_g = this.logService) === null || _g === void 0 ? void 0 : _g.add(Object.assign(Object.assign({}, baseLogs), { start: startTime, end, message: 'Graph action execute - failed', failed_execution: true, data: { graph: options.graph, action: options.action, error: error.message || 'Execution failed' }, status: logs_types_1.LogEventStatus.FAIL }));
1540
+ await ((_h = this.logService) === null || _h === void 0 ? void 0 : _h.publish());
1541
+ return {
1542
+ success: false,
1543
+ executionTime: end - startTime,
1544
+ data: [],
1545
+ count: 0,
1546
+ error: error.message || 'Execution failed',
1547
+ };
1548
+ }
1549
+ }
1550
+ // ==================== DISPATCH OPERATIONS ====================
1551
+ /**
1552
+ * Action dispatch operations - for predefined graph actions.
1553
+ */
1554
+ get action() {
1555
+ return {
1556
+ /**
1557
+ * Dispatches a graph action to run as a scheduled job.
1558
+ * @param {IGraphActionDispatchInput} data - The graph action dispatch input.
1559
+ * @returns {Promise<IDispatchResult>} The dispatch result with job ID and status.
1560
+ * @example
1561
+ * // Schedule a graph action to run in 1 hour
1562
+ * await ductape.graph.action.dispatch({
1563
+ * product: 'my-product',
1564
+ * env: 'production',
1565
+ * graph: 'social-graph',
1566
+ * event: 'compute-recommendations',
1567
+ * input: { userId: '123', limit: 10 },
1568
+ * schedule: { start_at: Date.now() + 3600000 }
1569
+ * });
1570
+ *
1571
+ * // Run on a cron schedule
1572
+ * await ductape.graph.action.dispatch({
1573
+ * product: 'my-product',
1574
+ * env: 'production',
1575
+ * graph: 'analytics-graph',
1576
+ * event: 'aggregate-metrics',
1577
+ * input: {},
1578
+ * schedule: { cron: '0 0 * * *' } // Daily at midnight
1579
+ * });
1580
+ */
1581
+ dispatch: async (data) => {
1582
+ const processorService = this.createNewProcessor();
1583
+ const productBuilder = await this.getProductBuilder(data.product);
1584
+ const schedule = data.schedule || {};
1585
+ const startAt = typeof schedule.start_at === 'string'
1586
+ ? new Date(schedule.start_at).getTime()
1587
+ : schedule.start_at || Date.now();
1588
+ // Generate job tag based on type, graph, and event
1589
+ const jobTag = `graph-action:${data.graph}:${data.event}`;
1590
+ // Check if job exists, if not create it
1591
+ const existingJob = await productBuilder.fetchJob(jobTag);
1592
+ if (!existingJob) {
1593
+ await productBuilder.createJob({
1594
+ tag: jobTag,
1595
+ name: `Graph Action: ${data.graph}/${data.event}`,
1596
+ description: `Auto-created job for graph action ${data.event} on graph ${data.graph}`,
1597
+ type: productsBuilder_types_1.JobEventTypes.GRAPH_ACTION,
1598
+ app: data.graph,
1599
+ event: data.event,
1600
+ executions: 0,
1601
+ intervals: schedule.every || 0,
1602
+ start_at: startAt,
1603
+ });
1604
+ }
1605
+ const jobInput = {
1606
+ product: data.product,
1607
+ env: data.env,
1608
+ event: jobTag,
1609
+ input: data.input,
1610
+ retries: data.retries || 0,
1611
+ start_at: startAt,
1612
+ session: data.session,
1613
+ cache: data.cache,
1614
+ repeat: schedule.cron || schedule.every
1615
+ ? {
1616
+ cron: schedule.cron,
1617
+ every: schedule.every,
1618
+ limit: schedule.limit,
1619
+ endDate: schedule.endDate,
1620
+ tz: schedule.tz,
1621
+ }
1622
+ : undefined,
1623
+ };
1624
+ await processorService.processJob(jobInput);
1625
+ const isRecurring = !!(schedule.cron || schedule.every);
1626
+ let nextRunAt;
1627
+ if (isRecurring && schedule.every) {
1628
+ nextRunAt = startAt + schedule.every;
1629
+ }
1630
+ return {
1631
+ job_id: (0, crypto_1.randomUUID)(),
1632
+ status: startAt > Date.now() ? 'scheduled' : 'queued',
1633
+ scheduled_at: startAt,
1634
+ recurring: isRecurring,
1635
+ next_run_at: nextRunAt,
1636
+ };
1637
+ },
1638
+ };
1639
+ }
1640
+ /**
1641
+ * Dispatches a graph operation to run as a scheduled job.
1642
+ * Use this for direct graph operations (traverse, query, createNode, deleteNodes, etc.).
1643
+ * @param {IGraphOperationDispatchInput} data - The graph operation dispatch input.
1644
+ * @returns {Promise<IDispatchResult>} The dispatch result with job ID and status.
1645
+ * @example
1646
+ * // Schedule a graph traversal operation
1647
+ * await ductape.graph.dispatch({
1648
+ * product: 'my-product',
1649
+ * env: 'production',
1650
+ * graph: 'social-graph',
1651
+ * operation: 'traverse',
1652
+ * input: { startNode: 'user:123', direction: 'outgoing', depth: 3 },
1653
+ * schedule: { start_at: Date.now() + 3600000 }
1654
+ * });
1655
+ *
1656
+ * // Run periodic graph cleanup
1657
+ * await ductape.graph.dispatch({
1658
+ * product: 'my-product',
1659
+ * env: 'production',
1660
+ * graph: 'session-graph',
1661
+ * operation: 'deleteNodes',
1662
+ * input: { filter: { expired: true } },
1663
+ * schedule: { cron: '0 4 * * *' } // Daily at 4 AM
1664
+ * });
1665
+ */
1666
+ async dispatch(data) {
1667
+ var _a, _b, _c, _d, _e, _f;
1668
+ const process_id = (0, processor_utils_1.generateObjectId)();
1669
+ const start = Date.now();
1670
+ const processorService = this.createNewProcessor();
1671
+ const productBuilder = await this.getProductBuilder(data.product);
1672
+ const schedule = data.schedule || {};
1673
+ const startAt = typeof schedule.start_at === 'string' ? new Date(schedule.start_at).getTime() : schedule.start_at || Date.now();
1674
+ // Generate job tag based on type, graph, and operation
1675
+ const jobTag = `graph-operation:${data.graph}:${data.operation}`;
1676
+ // Initialize logging
1677
+ this.initializeLogService();
1678
+ const baseLogs = {
1679
+ product_tag: data.product,
1680
+ workspace_id: ((_a = this.config) === null || _a === void 0 ? void 0 : _a.workspace_id) || '',
1681
+ env: data.env,
1682
+ process_id,
1683
+ type: logs_types_1.LogEventTypes.GRAPH,
1684
+ parent_tag: data.graph,
1685
+ child_tag: data.operation,
1686
+ data: { graph: data.graph, operation: data.operation },
1687
+ };
1688
+ (_b = this.logService) === null || _b === void 0 ? void 0 : _b.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Graph dispatch - initiated', status: logs_types_1.LogEventStatus.PROCESSING }));
1689
+ try {
1690
+ // Check if job exists, if not create it
1691
+ const existingJob = await productBuilder.fetchJob(jobTag);
1692
+ if (!existingJob) {
1693
+ await productBuilder.createJob({
1694
+ tag: jobTag,
1695
+ name: `Graph Operation: ${data.graph}/${data.operation}`,
1696
+ description: `Auto-created job for graph operation ${data.operation} on graph ${data.graph}`,
1697
+ type: productsBuilder_types_1.JobEventTypes.GRAPH_OPERATION,
1698
+ app: data.graph,
1699
+ event: data.operation,
1700
+ executions: 0,
1701
+ intervals: schedule.every || 0,
1702
+ start_at: startAt,
1703
+ });
1704
+ }
1705
+ const jobInput = {
1706
+ product: data.product,
1707
+ env: data.env,
1708
+ event: jobTag,
1709
+ input: data.input,
1710
+ retries: data.retries || 0,
1711
+ start_at: startAt,
1712
+ session: data.session,
1713
+ cache: data.cache,
1714
+ repeat: schedule.cron || schedule.every
1715
+ ? {
1716
+ cron: schedule.cron,
1717
+ every: schedule.every,
1718
+ limit: schedule.limit,
1719
+ endDate: schedule.endDate,
1720
+ tz: schedule.tz,
1721
+ }
1722
+ : undefined,
1723
+ };
1724
+ await processorService.processJob(jobInput);
1725
+ const isRecurring = !!(schedule.cron || schedule.every);
1726
+ let nextRunAt;
1727
+ if (isRecurring && schedule.every) {
1728
+ nextRunAt = startAt + schedule.every;
1729
+ }
1730
+ const job_id = (0, crypto_1.randomUUID)();
1731
+ const end = Date.now();
1732
+ (_c = this.logService) === null || _c === void 0 ? void 0 : _c.add(Object.assign(Object.assign({}, baseLogs), { start,
1733
+ end, message: 'Graph dispatch - success', successful_execution: true, data: { graph: data.graph, operation: data.operation, job_id }, status: logs_types_1.LogEventStatus.SUCCESS }));
1734
+ (_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish();
1735
+ return {
1736
+ job_id,
1737
+ status: startAt > Date.now() ? 'scheduled' : 'queued',
1738
+ scheduled_at: startAt,
1739
+ recurring: isRecurring,
1740
+ next_run_at: nextRunAt,
1741
+ };
1742
+ }
1743
+ catch (error) {
1744
+ const end = Date.now();
1745
+ (_e = this.logService) === null || _e === void 0 ? void 0 : _e.add(Object.assign(Object.assign({}, baseLogs), { start,
1746
+ end, message: 'Graph dispatch - failed', failed_execution: true, data: { graph: data.graph, operation: data.operation, error: String(error) }, status: logs_types_1.LogEventStatus.FAIL }));
1747
+ await ((_f = this.logService) === null || _f === void 0 ? void 0 : _f.publish());
1748
+ throw error;
1749
+ }
1750
+ }
1751
+ /**
1752
+ * Substitute parameter placeholders in a query object
1753
+ */
1754
+ substituteParameters(query, parameters, input) {
1755
+ var _a;
1756
+ // Deep clone the query
1757
+ const result = JSON.parse(JSON.stringify(query));
1758
+ // Substitute each parameter
1759
+ for (const param of parameters) {
1760
+ const value = (_a = input[param.name]) !== null && _a !== void 0 ? _a : param.defaultValue;
1761
+ this.setNestedValue(result, param.path, value);
1762
+ }
1763
+ return result;
1764
+ }
1765
+ /**
1766
+ * Set a nested value in an object using a dot-notation path
1767
+ */
1768
+ setNestedValue(obj, path, value) {
1769
+ const keys = path.replace(/\[(\d+)\]/g, '.$1').split('.');
1770
+ let current = obj;
1771
+ for (let i = 0; i < keys.length - 1; i++) {
1772
+ const key = keys[i];
1773
+ if (current[key] === undefined) {
1774
+ current[key] = {};
1775
+ }
1776
+ current = current[key];
1777
+ }
1778
+ current[keys[keys.length - 1]] = value;
1779
+ }
1780
+ /**
1781
+ * Execute an operation based on the query object
1782
+ */
1783
+ async executeOperation(query) {
1784
+ const { operation, options } = query;
1785
+ switch (operation) {
1786
+ case 'findNodes': {
1787
+ const result = await this.findNodes(options);
1788
+ return { data: result.nodes };
1789
+ }
1790
+ case 'findRelationships': {
1791
+ const result = await this.findRelationships(options);
1792
+ return { data: result.relationships };
1793
+ }
1794
+ case 'traverse': {
1795
+ const result = await this.traverse(options);
1796
+ return { data: result.paths };
1797
+ }
1798
+ case 'shortestPath': {
1799
+ const result = await this.shortestPath(options);
1800
+ return { data: result.path ? [result.path] : [] };
1801
+ }
1802
+ case 'allPaths': {
1803
+ const result = await this.allPaths(options);
1804
+ return { data: result.paths };
1805
+ }
1806
+ case 'getNeighborhood': {
1807
+ const result = await this.getNeighborhood(options);
1808
+ return { data: result.nodes };
1809
+ }
1810
+ case 'countNodes': {
1811
+ const result = await this.countNodes(options === null || options === void 0 ? void 0 : options.labels, options === null || options === void 0 ? void 0 : options.where);
1812
+ return { data: [{ count: result.count }] };
1813
+ }
1814
+ case 'countRelationships': {
1815
+ const result = await this.countRelationships(options === null || options === void 0 ? void 0 : options.types, options === null || options === void 0 ? void 0 : options.where);
1816
+ return { data: [{ count: result.count }] };
1817
+ }
1818
+ case 'getStatistics': {
1819
+ const result = await this.getStatistics();
1820
+ return { data: [result] };
1821
+ }
1822
+ case 'executeRaw':
1823
+ case 'query': {
1824
+ const result = await this.query(options.query, options.params);
1825
+ return { data: result.records };
1826
+ }
1827
+ default:
1828
+ throw new Error(`Unsupported operation: ${operation}`);
1829
+ }
1830
+ }
1831
+ // ==================== TRANSACTION OPERATIONS ====================
1832
+ /**
1833
+ * Execute operations within a transaction
1834
+ * As documented in transactions.md
1835
+ *
1836
+ * @example
1837
+ * ```ts
1838
+ * const result = await ductape.graph.executeTransaction(async (transaction) => {
1839
+ * const alice = await ductape.graph.createNode({
1840
+ * labels: ['Person'],
1841
+ * properties: { name: 'Alice' },
1842
+ * }, transaction);
1843
+ *
1844
+ * const bob = await ductape.graph.createNode({
1845
+ * labels: ['Person'],
1846
+ * properties: { name: 'Bob' },
1847
+ * }, transaction);
1848
+ *
1849
+ * await ductape.graph.createRelationship({
1850
+ * type: 'FRIENDS_WITH',
1851
+ * startNodeId: alice.node.id,
1852
+ * endNodeId: bob.node.id,
1853
+ * }, transaction);
1854
+ *
1855
+ * return { alice, bob };
1856
+ * });
1857
+ * ```
1858
+ */
1859
+ async executeTransaction(callback, options) {
1860
+ if (!this.transactionManager) {
1861
+ throw graph_error_1.GraphError.configurationError('No connection established. Please connect first.');
1862
+ }
1863
+ return this.transactionManager.executeTransaction(callback, options);
1864
+ }
1865
+ /**
1866
+ * Begin a manual transaction
1867
+ * As documented in transactions.md
1868
+ */
1869
+ async beginTransaction(options) {
1870
+ if (!this.transactionManager) {
1871
+ throw graph_error_1.GraphError.configurationError('No connection established. Please connect first.');
1872
+ }
1873
+ return this.transactionManager.beginTransaction(options);
1874
+ }
1875
+ /**
1876
+ * Commit a transaction
1877
+ */
1878
+ async commitTransaction(transaction) {
1879
+ if (!this.transactionManager) {
1880
+ throw graph_error_1.GraphError.configurationError('No connection established.');
1881
+ }
1882
+ return this.transactionManager.commitTransaction(transaction);
1883
+ }
1884
+ /**
1885
+ * Rollback a transaction
1886
+ */
1887
+ async rollbackTransaction(transaction) {
1888
+ if (!this.transactionManager) {
1889
+ throw graph_error_1.GraphError.configurationError('No connection established.');
1890
+ }
1891
+ return this.transactionManager.rollbackTransaction(transaction);
1892
+ }
1893
+ // ==================== UTILITY METHODS ====================
1894
+ /**
1895
+ * Get the current adapter
1896
+ */
1897
+ getAdapter() {
1898
+ if (!this.currentContext) {
1899
+ throw graph_error_1.GraphError.configurationError('No connection established. Please call connect() first.');
1900
+ }
1901
+ const contextKey = `${this.currentContext.graph}:${this.currentContext.env}`;
1902
+ const adapter = this.adapters.get(contextKey);
1903
+ if (!adapter) {
1904
+ throw graph_error_1.GraphError.configurationError(`Adapter not found for ${contextKey}`);
1905
+ }
1906
+ if (!this.currentContext.connected) {
1907
+ throw graph_error_1.GraphError.connectionError('Not connected to graph database');
1908
+ }
1909
+ return adapter;
1910
+ }
1911
+ /**
1912
+ * Fetch graph configuration from product API
1913
+ */
1914
+ async fetchGraphFromProduct(productTag, graphTag) {
1915
+ try {
1916
+ const builder = await this.getProductBuilder(productTag);
1917
+ const graph = await builder.fetchGraph(graphTag);
1918
+ if (graph) {
1919
+ return this.productGraphToConfig(graph);
1920
+ }
1921
+ return null;
1922
+ }
1923
+ catch (error) {
1924
+ console.warn(`[GraphService] Failed to fetch graph '${graphTag}' from product '${productTag}':`, error);
1925
+ return null;
1926
+ }
1927
+ }
1928
+ /**
1929
+ * Get current connection context
1930
+ */
1931
+ getCurrentContext() {
1932
+ return this.currentContext;
1933
+ }
1934
+ /**
1935
+ * Check if a feature is supported by the current adapter
1936
+ */
1937
+ supportsFeature(feature) {
1938
+ try {
1939
+ const adapter = this.getAdapter();
1940
+ return adapter.supportsFeature(feature);
1941
+ }
1942
+ catch (_a) {
1943
+ return false;
1944
+ }
1945
+ }
1946
+ }
1947
+ exports.GraphService = GraphService;
1948
+ //# sourceMappingURL=graphs.service.js.map