@ductape/sdk 0.0.4-v6 → 0.0.4-v60

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