@cesteral/ttd-mcp 1.0.0

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 (427) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +308 -0
  3. package/dist/auth/index.d.ts +3 -0
  4. package/dist/auth/index.d.ts.map +1 -0
  5. package/dist/auth/index.js +3 -0
  6. package/dist/auth/index.js.map +1 -0
  7. package/dist/auth/ttd-auth-adapter.d.ts +21 -0
  8. package/dist/auth/ttd-auth-adapter.d.ts.map +1 -0
  9. package/dist/auth/ttd-auth-adapter.js +70 -0
  10. package/dist/auth/ttd-auth-adapter.js.map +1 -0
  11. package/dist/auth/ttd-auth-strategy.d.ts +10 -0
  12. package/dist/auth/ttd-auth-strategy.d.ts.map +1 -0
  13. package/dist/auth/ttd-auth-strategy.js +28 -0
  14. package/dist/auth/ttd-auth-strategy.js.map +1 -0
  15. package/dist/config/index.d.ts +100 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/index.js +47 -0
  18. package/dist/config/index.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +45 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts +4 -0
  24. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts.map +1 -0
  25. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js +286 -0
  26. package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js.map +1 -0
  27. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts +4 -0
  28. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts.map +1 -0
  29. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js +245 -0
  30. package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
  31. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts +4 -0
  32. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts.map +1 -0
  33. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.js +102 -0
  34. package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.js.map +1 -0
  35. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
  36. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
  37. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +299 -0
  38. package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
  39. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
  40. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
  41. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
  42. package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
  43. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts +4 -0
  44. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts.map +1 -0
  45. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js +215 -0
  46. package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js.map +1 -0
  47. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts +4 -0
  48. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts.map +1 -0
  49. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js +162 -0
  50. package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
  51. package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.d.ts +4 -0
  52. package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.d.ts.map +1 -0
  53. package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.js +163 -0
  54. package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.js.map +1 -0
  55. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts +4 -0
  56. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts.map +1 -0
  57. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js +259 -0
  58. package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js.map +1 -0
  59. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
  60. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
  61. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +193 -0
  62. package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
  63. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts +4 -0
  64. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts.map +1 -0
  65. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js +119 -0
  66. package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js.map +1 -0
  67. package/dist/mcp-server/prompts/index.d.ts +9 -0
  68. package/dist/mcp-server/prompts/index.d.ts.map +1 -0
  69. package/dist/mcp-server/prompts/index.js +97 -0
  70. package/dist/mcp-server/prompts/index.js.map +1 -0
  71. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts +4 -0
  72. package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts.map +1 -0
  73. package/dist/mcp-server/resources/definitions/entity-examples.resource.js +388 -0
  74. package/dist/mcp-server/resources/definitions/entity-examples.resource.js.map +1 -0
  75. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts +3 -0
  76. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts.map +1 -0
  77. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js +145 -0
  78. package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js.map +1 -0
  79. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts +4 -0
  80. package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts.map +1 -0
  81. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js +318 -0
  82. package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
  83. package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts +3 -0
  84. package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts.map +1 -0
  85. package/dist/mcp-server/resources/definitions/field-rules.resource.js +28 -0
  86. package/dist/mcp-server/resources/definitions/field-rules.resource.js.map +1 -0
  87. package/dist/mcp-server/resources/definitions/graphql-reference.resource.d.ts +3 -0
  88. package/dist/mcp-server/resources/definitions/graphql-reference.resource.d.ts.map +1 -0
  89. package/dist/mcp-server/resources/definitions/graphql-reference.resource.js +442 -0
  90. package/dist/mcp-server/resources/definitions/graphql-reference.resource.js.map +1 -0
  91. package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
  92. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  93. package/dist/mcp-server/resources/definitions/index.js +108 -0
  94. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  95. package/dist/mcp-server/resources/definitions/report-reference.resource.d.ts +3 -0
  96. package/dist/mcp-server/resources/definitions/report-reference.resource.d.ts.map +1 -0
  97. package/dist/mcp-server/resources/definitions/report-reference.resource.js +291 -0
  98. package/dist/mcp-server/resources/definitions/report-reference.resource.js.map +1 -0
  99. package/dist/mcp-server/resources/index.d.ts +3 -0
  100. package/dist/mcp-server/resources/index.d.ts.map +1 -0
  101. package/dist/mcp-server/resources/index.js +2 -0
  102. package/dist/mcp-server/resources/index.js.map +1 -0
  103. package/dist/mcp-server/resources/types.d.ts +8 -0
  104. package/dist/mcp-server/resources/types.d.ts.map +1 -0
  105. package/dist/mcp-server/resources/types.js +2 -0
  106. package/dist/mcp-server/resources/types.js.map +1 -0
  107. package/dist/mcp-server/resources/utils/field-rules.d.ts +18 -0
  108. package/dist/mcp-server/resources/utils/field-rules.d.ts.map +1 -0
  109. package/dist/mcp-server/resources/utils/field-rules.js +117 -0
  110. package/dist/mcp-server/resources/utils/field-rules.js.map +1 -0
  111. package/dist/mcp-server/server.d.ts +5 -0
  112. package/dist/mcp-server/server.d.ts.map +1 -0
  113. package/dist/mcp-server/server.js +162 -0
  114. package/dist/mcp-server/server.js.map +1 -0
  115. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +1137 -0
  116. package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts.map +1 -0
  117. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js +165 -0
  118. package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
  119. package/dist/mcp-server/tools/definitions/archive-entities.tool.d.ts +145 -0
  120. package/dist/mcp-server/tools/definitions/archive-entities.tool.d.ts.map +1 -0
  121. package/dist/mcp-server/tools/definitions/archive-entities.tool.js +120 -0
  122. package/dist/mcp-server/tools/definitions/archive-entities.tool.js.map +1 -0
  123. package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.d.ts +174 -0
  124. package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.d.ts.map +1 -0
  125. package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.js +141 -0
  126. package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.js.map +1 -0
  127. package/dist/mcp-server/tools/definitions/bid-list.tool.d.ts +225 -0
  128. package/dist/mcp-server/tools/definitions/bid-list.tool.d.ts.map +1 -0
  129. package/dist/mcp-server/tools/definitions/bid-list.tool.js +169 -0
  130. package/dist/mcp-server/tools/definitions/bid-list.tool.js.map +1 -0
  131. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +198 -0
  132. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts.map +1 -0
  133. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js +135 -0
  134. package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
  135. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts +258 -0
  136. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts.map +1 -0
  137. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js +187 -0
  138. package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js.map +1 -0
  139. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +170 -0
  140. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts.map +1 -0
  141. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js +137 -0
  142. package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
  143. package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.d.ts +109 -0
  144. package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.d.ts.map +1 -0
  145. package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.js +134 -0
  146. package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.js.map +1 -0
  147. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts +112 -0
  148. package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts.map +1 -0
  149. package/dist/mcp-server/tools/definitions/check-report-status.tool.js +94 -0
  150. package/dist/mcp-server/tools/definitions/check-report-status.tool.js.map +1 -0
  151. package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.d.ts +181 -0
  152. package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.d.ts.map +1 -0
  153. package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.js +52 -0
  154. package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.js.map +1 -0
  155. package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.d.ts +300 -0
  156. package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.d.ts.map +1 -0
  157. package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.js +63 -0
  158. package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.js.map +1 -0
  159. package/dist/mcp-server/tools/definitions/create-ad-groups.tool.d.ts +482 -0
  160. package/dist/mcp-server/tools/definitions/create-ad-groups.tool.d.ts.map +1 -0
  161. package/dist/mcp-server/tools/definitions/create-ad-groups.tool.js +121 -0
  162. package/dist/mcp-server/tools/definitions/create-ad-groups.tool.js.map +1 -0
  163. package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.d.ts +172 -0
  164. package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.d.ts.map +1 -0
  165. package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.js +55 -0
  166. package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.js.map +1 -0
  167. package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.d.ts +286 -0
  168. package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.d.ts.map +1 -0
  169. package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.js +63 -0
  170. package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.js.map +1 -0
  171. package/dist/mcp-server/tools/definitions/create-campaigns.tool.d.ts +458 -0
  172. package/dist/mcp-server/tools/definitions/create-campaigns.tool.d.ts.map +1 -0
  173. package/dist/mcp-server/tools/definitions/create-campaigns.tool.js +124 -0
  174. package/dist/mcp-server/tools/definitions/create-campaigns.tool.js.map +1 -0
  175. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +196 -0
  176. package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
  177. package/dist/mcp-server/tools/definitions/create-entity.tool.js +126 -0
  178. package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
  179. package/dist/mcp-server/tools/definitions/create-report-schedule.tool.d.ts +147 -0
  180. package/dist/mcp-server/tools/definitions/create-report-schedule.tool.d.ts.map +1 -0
  181. package/dist/mcp-server/tools/definitions/create-report-schedule.tool.js +171 -0
  182. package/dist/mcp-server/tools/definitions/create-report-schedule.tool.js.map +1 -0
  183. package/dist/mcp-server/tools/definitions/create-report-template.tool.d.ts +370 -0
  184. package/dist/mcp-server/tools/definitions/create-report-template.tool.d.ts.map +1 -0
  185. package/dist/mcp-server/tools/definitions/create-report-template.tool.js +224 -0
  186. package/dist/mcp-server/tools/definitions/create-report-template.tool.js.map +1 -0
  187. package/dist/mcp-server/tools/definitions/create-template-schedule.tool.d.ts +316 -0
  188. package/dist/mcp-server/tools/definitions/create-template-schedule.tool.d.ts.map +1 -0
  189. package/dist/mcp-server/tools/definitions/create-template-schedule.tool.js +247 -0
  190. package/dist/mcp-server/tools/definitions/create-template-schedule.tool.js.map +1 -0
  191. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +147 -0
  192. package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts.map +1 -0
  193. package/dist/mcp-server/tools/definitions/delete-entity.tool.js +112 -0
  194. package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
  195. package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.d.ts +79 -0
  196. package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.d.ts.map +1 -0
  197. package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.js +89 -0
  198. package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.js.map +1 -0
  199. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts +297 -0
  200. package/dist/mcp-server/tools/definitions/download-report.tool.d.ts.map +1 -0
  201. package/dist/mcp-server/tools/definitions/download-report.tool.js +160 -0
  202. package/dist/mcp-server/tools/definitions/download-report.tool.js.map +1 -0
  203. package/dist/mcp-server/tools/definitions/execute-entity-report.tool.d.ts +147 -0
  204. package/dist/mcp-server/tools/definitions/execute-entity-report.tool.d.ts.map +1 -0
  205. package/dist/mcp-server/tools/definitions/execute-entity-report.tool.js +134 -0
  206. package/dist/mcp-server/tools/definitions/execute-entity-report.tool.js.map +1 -0
  207. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +80 -0
  208. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts.map +1 -0
  209. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js +82 -0
  210. package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
  211. package/dist/mcp-server/tools/definitions/get-campaign-version.tool.d.ts +61 -0
  212. package/dist/mcp-server/tools/definitions/get-campaign-version.tool.d.ts.map +1 -0
  213. package/dist/mcp-server/tools/definitions/get-campaign-version.tool.js +51 -0
  214. package/dist/mcp-server/tools/definitions/get-campaign-version.tool.js.map +1 -0
  215. package/dist/mcp-server/tools/definitions/get-context.tool.d.ts +77 -0
  216. package/dist/mcp-server/tools/definitions/get-context.tool.d.ts.map +1 -0
  217. package/dist/mcp-server/tools/definitions/get-context.tool.js +80 -0
  218. package/dist/mcp-server/tools/definitions/get-context.tool.js.map +1 -0
  219. package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.d.ts +169 -0
  220. package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.d.ts.map +1 -0
  221. package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.js +138 -0
  222. package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.js.map +1 -0
  223. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +129 -0
  224. package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
  225. package/dist/mcp-server/tools/definitions/get-entity.tool.js +88 -0
  226. package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
  227. package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.d.ts +110 -0
  228. package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.d.ts.map +1 -0
  229. package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.js +58 -0
  230. package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.js.map +1 -0
  231. package/dist/mcp-server/tools/definitions/get-job-status.tool.d.ts +61 -0
  232. package/dist/mcp-server/tools/definitions/get-job-status.tool.d.ts.map +1 -0
  233. package/dist/mcp-server/tools/definitions/get-job-status.tool.js +54 -0
  234. package/dist/mcp-server/tools/definitions/get-job-status.tool.js.map +1 -0
  235. package/dist/mcp-server/tools/definitions/get-report-executions.tool.d.ts +131 -0
  236. package/dist/mcp-server/tools/definitions/get-report-executions.tool.d.ts.map +1 -0
  237. package/dist/mcp-server/tools/definitions/get-report-executions.tool.js +253 -0
  238. package/dist/mcp-server/tools/definitions/get-report-executions.tool.js.map +1 -0
  239. package/dist/mcp-server/tools/definitions/get-report-schedule.tool.d.ts +197 -0
  240. package/dist/mcp-server/tools/definitions/get-report-schedule.tool.d.ts.map +1 -0
  241. package/dist/mcp-server/tools/definitions/get-report-schedule.tool.js +66 -0
  242. package/dist/mcp-server/tools/definitions/get-report-schedule.tool.js.map +1 -0
  243. package/dist/mcp-server/tools/definitions/get-report-template.tool.d.ts +303 -0
  244. package/dist/mcp-server/tools/definitions/get-report-template.tool.d.ts.map +1 -0
  245. package/dist/mcp-server/tools/definitions/get-report-template.tool.js +139 -0
  246. package/dist/mcp-server/tools/definitions/get-report-template.tool.js.map +1 -0
  247. package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.d.ts +152 -0
  248. package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.d.ts.map +1 -0
  249. package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.js +167 -0
  250. package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.js.map +1 -0
  251. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +126 -0
  252. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts.map +1 -0
  253. package/dist/mcp-server/tools/definitions/get-report.tool.js +138 -0
  254. package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
  255. package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.d.ts +104 -0
  256. package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.d.ts.map +1 -0
  257. package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.js +57 -0
  258. package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.js.map +1 -0
  259. package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.d.ts +92 -0
  260. package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.d.ts.map +1 -0
  261. package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.js +124 -0
  262. package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.js.map +1 -0
  263. package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.d.ts +68 -0
  264. package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.d.ts.map +1 -0
  265. package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.js +102 -0
  266. package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.js.map +1 -0
  267. package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.d.ts +102 -0
  268. package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.d.ts.map +1 -0
  269. package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.js +152 -0
  270. package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.js.map +1 -0
  271. package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.d.ts +93 -0
  272. package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.d.ts.map +1 -0
  273. package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.js +133 -0
  274. package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.js.map +1 -0
  275. package/dist/mcp-server/tools/definitions/graphql-query.tool.d.ts +189 -0
  276. package/dist/mcp-server/tools/definitions/graphql-query.tool.d.ts.map +1 -0
  277. package/dist/mcp-server/tools/definitions/graphql-query.tool.js +143 -0
  278. package/dist/mcp-server/tools/definitions/graphql-query.tool.js.map +1 -0
  279. package/dist/mcp-server/tools/definitions/index.d.ts +45 -0
  280. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  281. package/dist/mcp-server/tools/definitions/index.js +135 -0
  282. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  283. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +231 -0
  284. package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
  285. package/dist/mcp-server/tools/definitions/list-entities.tool.js +147 -0
  286. package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
  287. package/dist/mcp-server/tools/definitions/list-report-schedules.tool.d.ts +282 -0
  288. package/dist/mcp-server/tools/definitions/list-report-schedules.tool.d.ts.map +1 -0
  289. package/dist/mcp-server/tools/definitions/list-report-schedules.tool.js +128 -0
  290. package/dist/mcp-server/tools/definitions/list-report-schedules.tool.js.map +1 -0
  291. package/dist/mcp-server/tools/definitions/list-report-templates.tool.d.ts +140 -0
  292. package/dist/mcp-server/tools/definitions/list-report-templates.tool.d.ts.map +1 -0
  293. package/dist/mcp-server/tools/definitions/list-report-templates.tool.js +118 -0
  294. package/dist/mcp-server/tools/definitions/list-report-templates.tool.js.map +1 -0
  295. package/dist/mcp-server/tools/definitions/list-report-types.tool.d.ts +97 -0
  296. package/dist/mcp-server/tools/definitions/list-report-types.tool.d.ts.map +1 -0
  297. package/dist/mcp-server/tools/definitions/list-report-types.tool.js +89 -0
  298. package/dist/mcp-server/tools/definitions/list-report-types.tool.js.map +1 -0
  299. package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.d.ts +109 -0
  300. package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.d.ts.map +1 -0
  301. package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.js +130 -0
  302. package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.js.map +1 -0
  303. package/dist/mcp-server/tools/definitions/rest-request.tool.d.ts +74 -0
  304. package/dist/mcp-server/tools/definitions/rest-request.tool.d.ts.map +1 -0
  305. package/dist/mcp-server/tools/definitions/rest-request.tool.js +54 -0
  306. package/dist/mcp-server/tools/definitions/rest-request.tool.js.map +1 -0
  307. package/dist/mcp-server/tools/definitions/seed.tool.d.ts +156 -0
  308. package/dist/mcp-server/tools/definitions/seed.tool.d.ts.map +1 -0
  309. package/dist/mcp-server/tools/definitions/seed.tool.js +316 -0
  310. package/dist/mcp-server/tools/definitions/seed.tool.js.map +1 -0
  311. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +114 -0
  312. package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts.map +1 -0
  313. package/dist/mcp-server/tools/definitions/submit-report.tool.js +136 -0
  314. package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
  315. package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.d.ts +82 -0
  316. package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.d.ts.map +1 -0
  317. package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.js +51 -0
  318. package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.js.map +1 -0
  319. package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.d.ts +158 -0
  320. package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.d.ts.map +1 -0
  321. package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.js +63 -0
  322. package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.js.map +1 -0
  323. package/dist/mcp-server/tools/definitions/update-ad-groups.tool.d.ts +241 -0
  324. package/dist/mcp-server/tools/definitions/update-ad-groups.tool.d.ts.map +1 -0
  325. package/dist/mcp-server/tools/definitions/update-ad-groups.tool.js +120 -0
  326. package/dist/mcp-server/tools/definitions/update-ad-groups.tool.js.map +1 -0
  327. package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.d.ts +82 -0
  328. package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.d.ts.map +1 -0
  329. package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.js +53 -0
  330. package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.js.map +1 -0
  331. package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.d.ts +158 -0
  332. package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.d.ts.map +1 -0
  333. package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.js +63 -0
  334. package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.js.map +1 -0
  335. package/dist/mcp-server/tools/definitions/update-campaigns.tool.d.ts +241 -0
  336. package/dist/mcp-server/tools/definitions/update-campaigns.tool.d.ts.map +1 -0
  337. package/dist/mcp-server/tools/definitions/update-campaigns.tool.js +120 -0
  338. package/dist/mcp-server/tools/definitions/update-campaigns.tool.js.map +1 -0
  339. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +164 -0
  340. package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
  341. package/dist/mcp-server/tools/definitions/update-entity.tool.js +101 -0
  342. package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
  343. package/dist/mcp-server/tools/definitions/update-report-schedule.tool.d.ts +116 -0
  344. package/dist/mcp-server/tools/definitions/update-report-schedule.tool.d.ts.map +1 -0
  345. package/dist/mcp-server/tools/definitions/update-report-schedule.tool.js +134 -0
  346. package/dist/mcp-server/tools/definitions/update-report-schedule.tool.js.map +1 -0
  347. package/dist/mcp-server/tools/definitions/update-report-template.tool.d.ts +358 -0
  348. package/dist/mcp-server/tools/definitions/update-report-template.tool.d.ts.map +1 -0
  349. package/dist/mcp-server/tools/definitions/update-report-template.tool.js +156 -0
  350. package/dist/mcp-server/tools/definitions/update-report-template.tool.js.map +1 -0
  351. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +226 -0
  352. package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
  353. package/dist/mcp-server/tools/definitions/validate-entity.tool.js +205 -0
  354. package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
  355. package/dist/mcp-server/tools/index.d.ts +2 -0
  356. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  357. package/dist/mcp-server/tools/index.js +2 -0
  358. package/dist/mcp-server/tools/index.js.map +1 -0
  359. package/dist/mcp-server/tools/utils/entity-mapping.d.ts +18 -0
  360. package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
  361. package/dist/mcp-server/tools/utils/entity-mapping.js +66 -0
  362. package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
  363. package/dist/mcp-server/tools/utils/graphql-errors.d.ts +13 -0
  364. package/dist/mcp-server/tools/utils/graphql-errors.d.ts.map +1 -0
  365. package/dist/mcp-server/tools/utils/graphql-errors.js +48 -0
  366. package/dist/mcp-server/tools/utils/graphql-errors.js.map +1 -0
  367. package/dist/mcp-server/tools/utils/parent-id-validation.d.ts +11 -0
  368. package/dist/mcp-server/tools/utils/parent-id-validation.d.ts.map +1 -0
  369. package/dist/mcp-server/tools/utils/parent-id-validation.js +60 -0
  370. package/dist/mcp-server/tools/utils/parent-id-validation.js.map +1 -0
  371. package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
  372. package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
  373. package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
  374. package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
  375. package/dist/mcp-server/tools/utils/workflow-schemas.d.ts +646 -0
  376. package/dist/mcp-server/tools/utils/workflow-schemas.d.ts.map +1 -0
  377. package/dist/mcp-server/tools/utils/workflow-schemas.js +173 -0
  378. package/dist/mcp-server/tools/utils/workflow-schemas.js.map +1 -0
  379. package/dist/mcp-server/transports/streamable-http-transport.d.ts +49 -0
  380. package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
  381. package/dist/mcp-server/transports/streamable-http-transport.js +74 -0
  382. package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
  383. package/dist/services/session-services.d.ts +22 -0
  384. package/dist/services/session-services.d.ts.map +1 -0
  385. package/dist/services/session-services.js +24 -0
  386. package/dist/services/session-services.js.map +1 -0
  387. package/dist/services/ttd/ttd-http-client.d.ts +13 -0
  388. package/dist/services/ttd/ttd-http-client.d.ts.map +1 -0
  389. package/dist/services/ttd/ttd-http-client.js +70 -0
  390. package/dist/services/ttd/ttd-http-client.js.map +1 -0
  391. package/dist/services/ttd/ttd-reporting-service.d.ts +79 -0
  392. package/dist/services/ttd/ttd-reporting-service.d.ts.map +1 -0
  393. package/dist/services/ttd/ttd-reporting-service.js +180 -0
  394. package/dist/services/ttd/ttd-reporting-service.js.map +1 -0
  395. package/dist/services/ttd/ttd-service.d.ts +107 -0
  396. package/dist/services/ttd/ttd-service.d.ts.map +1 -0
  397. package/dist/services/ttd/ttd-service.js +307 -0
  398. package/dist/services/ttd/ttd-service.js.map +1 -0
  399. package/dist/services/ttd/types.d.ts +153 -0
  400. package/dist/services/ttd/types.d.ts.map +1 -0
  401. package/dist/services/ttd/types.js +30 -0
  402. package/dist/services/ttd/types.js.map +1 -0
  403. package/dist/types-global/mcp.d.ts +2 -0
  404. package/dist/types-global/mcp.d.ts.map +1 -0
  405. package/dist/types-global/mcp.js +2 -0
  406. package/dist/types-global/mcp.js.map +1 -0
  407. package/dist/utils/errors/index.d.ts +2 -0
  408. package/dist/utils/errors/index.d.ts.map +1 -0
  409. package/dist/utils/errors/index.js +2 -0
  410. package/dist/utils/errors/index.js.map +1 -0
  411. package/dist/utils/platform.d.ts +3 -0
  412. package/dist/utils/platform.d.ts.map +1 -0
  413. package/dist/utils/platform.js +5 -0
  414. package/dist/utils/platform.js.map +1 -0
  415. package/dist/utils/security/rate-limiter.d.ts +3 -0
  416. package/dist/utils/security/rate-limiter.d.ts.map +1 -0
  417. package/dist/utils/security/rate-limiter.js +5 -0
  418. package/dist/utils/security/rate-limiter.js.map +1 -0
  419. package/dist/utils/telemetry/index.d.ts +2 -0
  420. package/dist/utils/telemetry/index.d.ts.map +1 -0
  421. package/dist/utils/telemetry/index.js +2 -0
  422. package/dist/utils/telemetry/index.js.map +1 -0
  423. package/dist/utils/telemetry/tracing.d.ts +3 -0
  424. package/dist/utils/telemetry/tracing.d.ts.map +1 -0
  425. package/dist/utils/telemetry/tracing.js +4 -0
  426. package/dist/utils/telemetry/tracing.js.map +1 -0
  427. package/package.json +56 -0
@@ -0,0 +1,180 @@
1
+ import { z } from "zod";
2
+ import { McpError, JsonRpcErrorCode, DEFAULT_REPORT_MAX_BACKOFF_MS, DEFAULT_REPORT_POLL_INTERVAL_MS, pollUntilComplete, ReportFailedError, } from "@cesteral/shared";
3
+ const ReportDeliverySchema = z
4
+ .object({
5
+ DownloadURL: z.string().nullish(),
6
+ })
7
+ .passthrough();
8
+ const ReportScheduleResponseSchema = z
9
+ .object({
10
+ ReportScheduleId: z.union([z.string(), z.number()]),
11
+ })
12
+ .passthrough();
13
+ const ReportScheduleDetailSchema = z
14
+ .object({
15
+ AdvertiserFilters: z.array(z.string()).optional(),
16
+ })
17
+ .passthrough();
18
+ const ReportExecutionSchema = z
19
+ .object({
20
+ ReportExecutionState: z.string().optional(),
21
+ ReportDeliveries: z.array(ReportDeliverySchema).optional(),
22
+ })
23
+ .passthrough();
24
+ const ReportExecutionQueryResponseSchema = z
25
+ .object({
26
+ Result: z.array(ReportExecutionSchema).optional(),
27
+ })
28
+ .passthrough();
29
+ function parseOrThrow(schema, value, endpoint) {
30
+ const result = schema.safeParse(value);
31
+ if (!result.success) {
32
+ throw new McpError(JsonRpcErrorCode.InternalError, `TTD response from ${endpoint} did not match expected shape: ${result.error.message}`);
33
+ }
34
+ return result.data;
35
+ }
36
+ export class TtdReportingService {
37
+ rateLimiter;
38
+ httpClient;
39
+ logger;
40
+ pollIntervalMs;
41
+ maxPollAttempts;
42
+ constructor(rateLimiter, httpClient, logger, pollIntervalMs = DEFAULT_REPORT_POLL_INTERVAL_MS, maxPollAttempts = 60) {
43
+ this.rateLimiter = rateLimiter;
44
+ this.httpClient = httpClient;
45
+ this.logger = logger;
46
+ this.pollIntervalMs = pollIntervalMs;
47
+ this.maxPollAttempts = maxPollAttempts;
48
+ }
49
+ async runReport(config, context) {
50
+ const partnerId = this.httpClient.partnerId;
51
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
52
+ const scheduleRaw = await this.httpClient.fetch("/myreports/reportschedule", context, {
53
+ method: "POST",
54
+ body: JSON.stringify(config),
55
+ });
56
+ const schedule = parseOrThrow(ReportScheduleResponseSchema, scheduleRaw, "POST /myreports/reportschedule");
57
+ const reportScheduleId = String(schedule.ReportScheduleId);
58
+ this.logger.info({ reportScheduleId, requestId: context?.requestId }, "Report schedule created — polling for results");
59
+ const advertiserIds = config.AdvertiserFilters ?? [];
60
+ const execution = await this.pollReportExecution(reportScheduleId, advertiserIds, context);
61
+ const downloadUrl = execution.ReportDeliveries?.[0]?.DownloadURL;
62
+ if (downloadUrl) {
63
+ return { reportScheduleId, execution, downloadUrl };
64
+ }
65
+ return { reportScheduleId, execution };
66
+ }
67
+ async createReportSchedule(config, context) {
68
+ const partnerId = this.httpClient.partnerId;
69
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
70
+ const scheduleRaw = await this.httpClient.fetch("/myreports/reportschedule", context, {
71
+ method: "POST",
72
+ body: JSON.stringify(config),
73
+ });
74
+ const schedule = parseOrThrow(ReportScheduleResponseSchema, scheduleRaw, "POST /myreports/reportschedule");
75
+ const reportScheduleId = String(schedule.ReportScheduleId);
76
+ this.logger.info({ reportScheduleId, requestId: context?.requestId }, "Report schedule created (non-blocking)");
77
+ return { reportScheduleId };
78
+ }
79
+ async checkReportExecution(reportScheduleId, context) {
80
+ const partnerId = this.httpClient.partnerId;
81
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
82
+ const advertiserIds = await this.getScheduleAdvertiserIds(reportScheduleId, context);
83
+ const body = {
84
+ AdvertiserIds: advertiserIds,
85
+ ReportScheduleIds: [Number(reportScheduleId)],
86
+ PageStartIndex: 0,
87
+ PageSize: 1,
88
+ };
89
+ const raw = await this.httpClient.fetch("/myreports/reportexecution/query/advertisers", context, {
90
+ method: "POST",
91
+ body: JSON.stringify(body),
92
+ });
93
+ const result = parseOrThrow(ReportExecutionQueryResponseSchema, raw, "POST /myreports/reportexecution/query/advertisers");
94
+ const executions = result.Result ?? [];
95
+ if (executions.length === 0) {
96
+ return {
97
+ reportScheduleId,
98
+ state: "Unknown",
99
+ execution: {},
100
+ };
101
+ }
102
+ const execution = executions[0];
103
+ const state = execution.ReportExecutionState ?? "Unknown";
104
+ const downloadUrl = execution.ReportDeliveries?.[0]?.DownloadURL ?? undefined;
105
+ return { reportScheduleId, state, execution, downloadUrl };
106
+ }
107
+ async listReportSchedules(query, context) {
108
+ const partnerId = this.httpClient.partnerId;
109
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
110
+ return this.httpClient.fetch("/myreports/reportschedule/query", context, {
111
+ method: "POST",
112
+ body: JSON.stringify(query),
113
+ });
114
+ }
115
+ async getScheduleAdvertiserIds(reportScheduleId, context) {
116
+ const raw = await this.getReportSchedule(reportScheduleId, context);
117
+ const schedule = parseOrThrow(ReportScheduleDetailSchema, raw, `GET /myreports/reportschedule/${reportScheduleId}`);
118
+ const advertiserFilters = schedule.AdvertiserFilters;
119
+ if (!advertiserFilters || advertiserFilters.length === 0) {
120
+ throw new McpError(JsonRpcErrorCode.InvalidParams, `Report schedule ${reportScheduleId} has no AdvertiserFilters; cannot query execution status via /query/advertisers.`);
121
+ }
122
+ return advertiserFilters;
123
+ }
124
+ async getReportSchedule(scheduleId, context) {
125
+ const partnerId = this.httpClient.partnerId;
126
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
127
+ return this.httpClient.fetch(`/myreports/reportschedule/${scheduleId}`, context, {
128
+ method: "GET",
129
+ });
130
+ }
131
+ async deleteReportSchedule(scheduleId, context) {
132
+ const partnerId = this.httpClient.partnerId;
133
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
134
+ await this.httpClient.fetch(`/myreports/reportschedule/${scheduleId}`, context, {
135
+ method: "DELETE",
136
+ });
137
+ }
138
+ async listReportTemplates(query, context) {
139
+ const partnerId = this.httpClient.partnerId;
140
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
141
+ return this.httpClient.fetch("/myreports/reporttemplateheader/query", context, {
142
+ method: "POST",
143
+ body: JSON.stringify(query),
144
+ });
145
+ }
146
+ async pollReportExecution(reportScheduleId, advertiserIds, context) {
147
+ const partnerId = this.httpClient.partnerId;
148
+ if (!advertiserIds || advertiserIds.length === 0) {
149
+ advertiserIds = await this.getScheduleAdvertiserIds(reportScheduleId, context);
150
+ }
151
+ try {
152
+ return await pollUntilComplete({
153
+ fetchStatus: async () => {
154
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
155
+ const body = {
156
+ AdvertiserIds: advertiserIds,
157
+ ReportScheduleIds: [Number(reportScheduleId)],
158
+ PageStartIndex: 0,
159
+ PageSize: 1,
160
+ };
161
+ const raw = await this.httpClient.fetch("/myreports/reportexecution/query/advertisers", context, { method: "POST", body: JSON.stringify(body) });
162
+ const result = parseOrThrow(ReportExecutionQueryResponseSchema, raw, "POST /myreports/reportexecution/query/advertisers");
163
+ return result.Result?.[0] ?? {};
164
+ },
165
+ isComplete: (exec) => exec.ReportExecutionState === "Complete",
166
+ isFailed: (exec) => exec.ReportExecutionState === "Failed",
167
+ initialDelayMs: this.pollIntervalMs,
168
+ maxDelayMs: DEFAULT_REPORT_MAX_BACKOFF_MS,
169
+ maxAttempts: this.maxPollAttempts,
170
+ });
171
+ }
172
+ catch (err) {
173
+ if (err instanceof ReportFailedError) {
174
+ throw new ReportFailedError(err.status, `Report execution failed: ${JSON.stringify(err.status)}`);
175
+ }
176
+ throw err;
177
+ }
178
+ }
179
+ }
180
+ //# sourceMappingURL=ttd-reporting-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ttd-reporting-service.js","sourceRoot":"","sources":["../../../src/services/ttd/ttd-reporting-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import type { Logger } from "pino";
2
+ import type { TtdHttpClient } from "./ttd-http-client.js";
3
+ import type { RateLimiter } from "@cesteral/shared";
4
+ import { type RequestContext } from "@cesteral/shared";
5
+ import { type TtdEntityType } from "../../mcp-server/tools/utils/entity-mapping.js";
6
+ import type { TtdAdvertiser, TtdCampaign, TtdAdGroup, TtdCreative, TtdConversionTracker } from "./types.js";
7
+ export type { TtdAdvertiser, TtdCampaign, TtdAdGroup, TtdCreative, TtdConversionTracker };
8
+ interface GraphqlQueryOptions {
9
+ betaFeatures?: string;
10
+ }
11
+ interface TtdEntityMap {
12
+ advertiser: TtdAdvertiser;
13
+ campaign: TtdCampaign;
14
+ adGroup: TtdAdGroup;
15
+ creative: TtdCreative;
16
+ conversionTracker: TtdConversionTracker;
17
+ }
18
+ export declare class TtdService {
19
+ private readonly logger;
20
+ private readonly rateLimiter;
21
+ private readonly httpClient;
22
+ private readonly graphqlUrl;
23
+ constructor(logger: Logger, rateLimiter: RateLimiter, httpClient: TtdHttpClient, graphqlUrl?: string);
24
+ listEntities<T extends TtdEntityType>(entityType: T, filters: Record<string, unknown>, pageToken?: string, pageSize?: number, context?: RequestContext): Promise<{
25
+ entities: TtdEntityMap[T][];
26
+ nextPageToken?: string;
27
+ }>;
28
+ getEntity<T extends TtdEntityType>(entityType: T, entityId: string, context?: RequestContext): Promise<TtdEntityMap[T]>;
29
+ createEntity<T extends TtdEntityType>(entityType: T, data: Record<string, unknown>, context?: RequestContext, options?: {
30
+ strictMode?: boolean;
31
+ }): Promise<TtdEntityMap[T]>;
32
+ updateEntity<T extends TtdEntityType>(entityType: T, entityId: string, data: Record<string, unknown>, context?: RequestContext, options?: {
33
+ strictMode?: boolean;
34
+ }): Promise<TtdEntityMap[T]>;
35
+ deleteEntity(entityType: TtdEntityType, entityId: string, context?: RequestContext): Promise<void>;
36
+ testCreateOrUpdate(entityType: TtdEntityType, data: Record<string, unknown>, mode: "create" | "update", entityId?: string, context?: RequestContext): Promise<{
37
+ valid: boolean;
38
+ errors?: string[];
39
+ }>;
40
+ bulkCreateEntities(entityType: TtdEntityType, items: Record<string, unknown>[], context?: RequestContext): Promise<{
41
+ results: Array<{
42
+ success: boolean;
43
+ entity?: unknown;
44
+ error?: string;
45
+ }>;
46
+ }>;
47
+ bulkUpdateEntities(entityType: TtdEntityType, items: Array<{
48
+ entityId: string;
49
+ data: Record<string, unknown>;
50
+ }>, context?: RequestContext): Promise<{
51
+ results: Array<{
52
+ success: boolean;
53
+ entity?: unknown;
54
+ error?: string;
55
+ }>;
56
+ }>;
57
+ archiveEntities(entityType: TtdEntityType, entityIds: string[], context?: RequestContext): Promise<{
58
+ results: Array<{
59
+ entityId: string;
60
+ success: boolean;
61
+ error?: string;
62
+ }>;
63
+ }>;
64
+ bulkUpdateStatus(entityType: TtdEntityType, entityIds: string[], status: "Available" | "Paused" | "Archived", context?: RequestContext): Promise<{
65
+ results: Array<{
66
+ entityId: string;
67
+ success: boolean;
68
+ error?: string;
69
+ }>;
70
+ }>;
71
+ private updateAvailability;
72
+ adjustBids(adjustments: Array<{
73
+ adGroupId: string;
74
+ baseBidCpm?: number;
75
+ maxBidCpm?: number;
76
+ currencyCode?: string;
77
+ }>, context?: RequestContext): Promise<{
78
+ results: Array<{
79
+ adGroupId: string;
80
+ success: boolean;
81
+ entity?: unknown;
82
+ error?: string;
83
+ }>;
84
+ }>;
85
+ graphqlQuery(query: string, variables?: Record<string, unknown>, context?: RequestContext, options?: GraphqlQueryOptions): Promise<unknown>;
86
+ executeEntityReport(entityType: "adGroup" | "campaign" | "advertiser", entityId: string, reportType: string, context?: RequestContext): Promise<unknown>;
87
+ getEntityReportMetadata(entityType: "adGroup" | "campaign" | "advertiser", entityId: string, tile: string, context?: RequestContext): Promise<unknown>;
88
+ private bidListGraphql;
89
+ createBidList(input: Record<string, unknown>, context?: RequestContext, selection?: string): Promise<unknown>;
90
+ getBidList(bidListId: string, context?: RequestContext, selection?: string): Promise<unknown>;
91
+ updateBidList(input: Record<string, unknown>, context?: RequestContext, selection?: string): Promise<unknown>;
92
+ setBidList(input: Record<string, unknown>, context?: RequestContext, selection?: string): Promise<unknown>;
93
+ deleteBidList(input: Record<string, unknown>, context?: RequestContext): Promise<unknown>;
94
+ batchGetBidLists(bidListIds: string[], context?: RequestContext, selection?: string): Promise<Array<{
95
+ bidListId: string;
96
+ success: boolean;
97
+ data?: unknown;
98
+ error?: string;
99
+ }>>;
100
+ batchUpdateBidLists(items: Record<string, unknown>[], context?: RequestContext, selection?: string): Promise<Array<{
101
+ index: number;
102
+ success: boolean;
103
+ data?: unknown;
104
+ error?: string;
105
+ }>>;
106
+ }
107
+ //# sourceMappingURL=ttd-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ttd-service.d.ts","sourceRoot":"","sources":["../../../src/services/ttd/ttd-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,307 @@
1
+ import { executeBulkConcurrent } from "@cesteral/shared";
2
+ import { McpError, JsonRpcErrorCode } from "@cesteral/shared";
3
+ import { getEntityConfig, } from "../../mcp-server/tools/utils/entity-mapping.js";
4
+ export class TtdService {
5
+ logger;
6
+ rateLimiter;
7
+ httpClient;
8
+ graphqlUrl;
9
+ constructor(logger, rateLimiter, httpClient, graphqlUrl = "https://desk.thetradedesk.com/graphql") {
10
+ this.logger = logger;
11
+ this.rateLimiter = rateLimiter;
12
+ this.httpClient = httpClient;
13
+ this.graphqlUrl = graphqlUrl;
14
+ }
15
+ async listEntities(entityType, filters, pageToken, pageSize, context) {
16
+ const config = getEntityConfig(entityType);
17
+ const partnerId = this.httpClient.partnerId;
18
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
19
+ this.logger.debug({ entityType, partnerId }, "Listing TTD entities");
20
+ const body = {
21
+ ...filters,
22
+ PageSize: pageSize || 25,
23
+ };
24
+ if (entityType === "advertiser") {
25
+ if (typeof body.PartnerId !== "string" || body.PartnerId.trim().length === 0) {
26
+ throw new McpError(JsonRpcErrorCode.InvalidParams, "partnerId is required when listing advertiser entities");
27
+ }
28
+ }
29
+ body.PageStartIndex = pageToken ? parseInt(pageToken, 10) || 0 : 0;
30
+ const result = (await this.httpClient.fetch(config.queryPath, context, {
31
+ method: "POST",
32
+ body: JSON.stringify(body),
33
+ }));
34
+ const entities = (result.Result || []);
35
+ const totalCount = result.TotalCount || 0;
36
+ const resultCount = result.ResultCount || 0;
37
+ const startIndex = pageToken ? parseInt(pageToken, 10) || 0 : 0;
38
+ const nextStartIndex = startIndex + resultCount;
39
+ return {
40
+ entities,
41
+ nextPageToken: nextStartIndex < totalCount ? String(nextStartIndex) : undefined,
42
+ };
43
+ }
44
+ async getEntity(entityType, entityId, context) {
45
+ const config = getEntityConfig(entityType);
46
+ const partnerId = this.httpClient.partnerId;
47
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
48
+ return this.httpClient.fetch(`${config.apiPath}/${entityId}`, context, {
49
+ method: "GET",
50
+ });
51
+ }
52
+ async createEntity(entityType, data, context, options) {
53
+ const config = getEntityConfig(entityType);
54
+ const partnerId = this.httpClient.partnerId;
55
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
56
+ return this.httpClient.fetch(config.apiPath, context, {
57
+ method: "POST",
58
+ body: JSON.stringify(data),
59
+ ...(options?.strictMode ? { headers: { "TTD-Strict-Mode": "true" } } : {}),
60
+ });
61
+ }
62
+ async updateEntity(entityType, entityId, data, context, options) {
63
+ const config = getEntityConfig(entityType);
64
+ const partnerId = this.httpClient.partnerId;
65
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
66
+ const payload = { ...data, [config.idField]: entityId };
67
+ return this.httpClient.fetch(config.apiPath, context, {
68
+ method: "PUT",
69
+ body: JSON.stringify(payload),
70
+ ...(options?.strictMode ? { headers: { "TTD-Strict-Mode": "true" } } : {}),
71
+ });
72
+ }
73
+ async deleteEntity(entityType, entityId, context) {
74
+ await this.updateAvailability(entityType, entityId, "Archived", context);
75
+ }
76
+ async testCreateOrUpdate(entityType, data, mode, entityId, context) {
77
+ const config = getEntityConfig(entityType);
78
+ const partnerId = this.httpClient.partnerId;
79
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
80
+ try {
81
+ if (mode === "update" && entityId) {
82
+ const payload = { ...data, [config.idField]: entityId };
83
+ await this.httpClient.fetch(config.apiPath, context, {
84
+ method: "PUT",
85
+ body: JSON.stringify(payload),
86
+ });
87
+ }
88
+ else {
89
+ await this.httpClient.fetch(config.apiPath, context, {
90
+ method: "POST",
91
+ body: JSON.stringify(data),
92
+ });
93
+ }
94
+ return { valid: true };
95
+ }
96
+ catch (error) {
97
+ const CLIENT_ERROR_CODES = new Set([
98
+ JsonRpcErrorCode.InvalidRequest,
99
+ JsonRpcErrorCode.InvalidParams,
100
+ JsonRpcErrorCode.NotFound,
101
+ ]);
102
+ if (error instanceof McpError && CLIENT_ERROR_CODES.has(error.code)) {
103
+ const errorMessage = error.message ?? String(error);
104
+ const errorBody = error.data?.errorBody ?? errorMessage;
105
+ return { valid: false, errors: [errorBody] };
106
+ }
107
+ throw error;
108
+ }
109
+ }
110
+ async bulkCreateEntities(entityType, items, context) {
111
+ const results = await executeBulkConcurrent(items, async (data) => {
112
+ return this.createEntity(entityType, data, context);
113
+ }, { logger: this.logger });
114
+ return { results };
115
+ }
116
+ async bulkUpdateEntities(entityType, items, context) {
117
+ const results = await executeBulkConcurrent(items, async (item) => {
118
+ return this.updateEntity(entityType, item.entityId, item.data, context);
119
+ }, { logger: this.logger });
120
+ return { results };
121
+ }
122
+ async archiveEntities(entityType, entityIds, context) {
123
+ const bulkResults = await executeBulkConcurrent(entityIds, async (entityId) => {
124
+ return this.updateAvailability(entityType, entityId, "Archived", context);
125
+ }, { logger: this.logger });
126
+ return {
127
+ results: bulkResults.map((r, i) => ({
128
+ entityId: entityIds[i],
129
+ success: r.success,
130
+ error: r.error,
131
+ })),
132
+ };
133
+ }
134
+ async bulkUpdateStatus(entityType, entityIds, status, context) {
135
+ const bulkResults = await executeBulkConcurrent(entityIds, async (entityId) => {
136
+ return this.updateAvailability(entityType, entityId, status, context);
137
+ }, { logger: this.logger });
138
+ return {
139
+ results: bulkResults.map((r, i) => ({
140
+ entityId: entityIds[i],
141
+ success: r.success,
142
+ error: r.error,
143
+ })),
144
+ };
145
+ }
146
+ async updateAvailability(entityType, entityId, availability, context) {
147
+ const config = getEntityConfig(entityType);
148
+ const partnerId = this.httpClient.partnerId;
149
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
150
+ return this.httpClient.fetch(config.apiPath, context, {
151
+ method: "PUT",
152
+ body: JSON.stringify({ [config.idField]: entityId, Availability: availability }),
153
+ });
154
+ }
155
+ async adjustBids(adjustments, context) {
156
+ const partnerId = this.httpClient.partnerId;
157
+ const adGroupConfig = getEntityConfig("adGroup");
158
+ const putResults = await executeBulkConcurrent(adjustments, async (adj) => {
159
+ const cc = adj.currencyCode || "USD";
160
+ const rtb = {};
161
+ if (adj.baseBidCpm !== undefined)
162
+ rtb.BaseBidCPM = { Amount: adj.baseBidCpm, CurrencyCode: cc };
163
+ if (adj.maxBidCpm !== undefined)
164
+ rtb.MaxBidCPM = { Amount: adj.maxBidCpm, CurrencyCode: cc };
165
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
166
+ return this.httpClient.fetch(adGroupConfig.apiPath, context, {
167
+ method: "PUT",
168
+ body: JSON.stringify({ AdGroupId: adj.adGroupId, RTBAttributes: rtb }),
169
+ });
170
+ }, { logger: this.logger });
171
+ return {
172
+ results: putResults.map((r, i) => ({
173
+ adGroupId: adjustments[i].adGroupId,
174
+ success: r.success,
175
+ entity: r.entity,
176
+ error: r.error,
177
+ })),
178
+ };
179
+ }
180
+ async graphqlQuery(query, variables, context, options) {
181
+ const partnerId = this.httpClient.partnerId;
182
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
183
+ return this.httpClient.fetchDirect(this.graphqlUrl, context, {
184
+ method: "POST",
185
+ headers: options?.betaFeatures ? { "TTD-GQL-Beta": options.betaFeatures } : undefined,
186
+ body: JSON.stringify({ query, variables }),
187
+ });
188
+ }
189
+ async executeEntityReport(entityType, entityId, reportType, context) {
190
+ const partnerId = this.httpClient.partnerId;
191
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
192
+ const mutationMap = {
193
+ adGroup: { name: "adGroupReportExecute", typeEnum: "AdGroupReportType" },
194
+ campaign: { name: "campaignReportExecute", typeEnum: "CampaignReportType" },
195
+ advertiser: { name: "advertiserReportExecute", typeEnum: "AdvertiserReportType" },
196
+ };
197
+ const { name, typeEnum } = mutationMap[entityType];
198
+ if (!/^[A-Z][A-Z0-9_]*$/.test(reportType)) {
199
+ throw new McpError(JsonRpcErrorCode.InvalidParams, `reportType must be a valid ${typeEnum} enum value. Use ttd_get_entity_report_types to discover supported values for this entity.`);
200
+ }
201
+ const query = `
202
+ mutation($entityId: ID!) {
203
+ ${name}(input: { id: $entityId, report: ${reportType} }) {
204
+ data { id url hasSampleData }
205
+ userErrors { field message }
206
+ }
207
+ }
208
+ `;
209
+ return this.httpClient.fetchDirect(this.graphqlUrl, context, {
210
+ method: "POST",
211
+ body: JSON.stringify({ query, variables: { entityId } }),
212
+ });
213
+ }
214
+ async getEntityReportMetadata(entityType, entityId, tile, context) {
215
+ const partnerId = this.httpClient.partnerId;
216
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
217
+ const variables = { tile };
218
+ if (entityType === "adGroup")
219
+ variables.adGroupId = entityId;
220
+ else if (entityType === "campaign")
221
+ variables.campaignId = entityId;
222
+ else
223
+ variables.advertiserId = entityId;
224
+ const query = `
225
+ query($adGroupId: ID, $campaignId: ID, $advertiserId: ID, $tile: ID!) {
226
+ programmaticTileReportMetadata(input: {
227
+ adGroupId: $adGroupId
228
+ campaignId: $campaignId
229
+ advertiserId: $advertiserId
230
+ tile: $tile
231
+ }) {
232
+ data { available schedule type }
233
+ userErrors { field message }
234
+ }
235
+ }
236
+ `;
237
+ return this.httpClient.fetchDirect(this.graphqlUrl, context, {
238
+ method: "POST",
239
+ body: JSON.stringify({ query, variables }),
240
+ });
241
+ }
242
+ async bidListGraphql(body, context) {
243
+ const partnerId = this.httpClient.partnerId;
244
+ await this.rateLimiter.consume(`ttd:${partnerId}`);
245
+ return this.httpClient.fetchDirect(this.graphqlUrl, context, {
246
+ method: "POST",
247
+ body: JSON.stringify(body),
248
+ });
249
+ }
250
+ async createBidList(input, context, selection = "id name") {
251
+ const query = `mutation BidListCreate($input: BidListCreateInput!) {
252
+ bidListCreate(input: $input) {
253
+ data { ${selection} }
254
+ }
255
+ }`;
256
+ return this.bidListGraphql({ query, variables: { input } }, context);
257
+ }
258
+ async getBidList(bidListId, context, selection = "id name") {
259
+ const query = `query BidListGet($id: ID!) {
260
+ bidList(id: $id) { ${selection} }
261
+ }`;
262
+ return this.bidListGraphql({ query, variables: { id: bidListId } }, context);
263
+ }
264
+ async updateBidList(input, context, selection = "id name") {
265
+ const query = `mutation BidListUpdate($input: BidListUpdateInput!) {
266
+ bidListUpdate(input: $input) {
267
+ data { ${selection} }
268
+ }
269
+ }`;
270
+ return this.bidListGraphql({ query, variables: { input } }, context);
271
+ }
272
+ async setBidList(input, context, selection = "id name") {
273
+ const query = `mutation BidListSet($input: BidListSetInput!) {
274
+ bidListSet(input: $input) {
275
+ data { ${selection} }
276
+ }
277
+ }`;
278
+ return this.bidListGraphql({ query, variables: { input } }, context);
279
+ }
280
+ async deleteBidList(input, context) {
281
+ const query = `mutation BidListDelete($input: BidListDeleteInput!) {
282
+ bidListDelete(input: $input) {
283
+ __typename
284
+ }
285
+ }`;
286
+ return this.bidListGraphql({ query, variables: { input } }, context);
287
+ }
288
+ async batchGetBidLists(bidListIds, context, selection = "id name") {
289
+ const results = await executeBulkConcurrent(bidListIds, async (id) => this.getBidList(id, context, selection), { logger: this.logger });
290
+ return results.map((r, i) => ({
291
+ bidListId: bidListIds[i],
292
+ success: r.success,
293
+ data: r.entity,
294
+ error: r.error,
295
+ }));
296
+ }
297
+ async batchUpdateBidLists(items, context, selection = "id name") {
298
+ const results = await executeBulkConcurrent(items, async (input) => this.updateBidList(input, context, selection), { logger: this.logger });
299
+ return results.map((r, i) => ({
300
+ index: i,
301
+ success: r.success,
302
+ data: r.entity,
303
+ error: r.error,
304
+ }));
305
+ }
306
+ }
307
+ //# sourceMappingURL=ttd-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ttd-service.js","sourceRoot":"","sources":["../../../src/services/ttd/ttd-service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuB,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,eAAe,GAEhB,MAAM,gDAAgD,CAAC;AA8BxD,MAAM,OAAO,UAAU;IAEF;IACA;IACA;IACA;IAJnB,YACmB,MAAc,EACd,WAAwB,EACxB,UAAyB,EACzB,aAAqB,uCAAuC;QAH5D,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAe;QACzB,eAAU,GAAV,UAAU,CAAkD;IAC5E,CAAC;IAIJ,KAAK,CAAC,YAAY,CAChB,UAAa,EACb,OAAgC,EAChC,SAAkB,EAClB,QAAiB,EACjB,OAAwB;QAExB,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAE5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAGrE,MAAM,IAAI,GAA4B;YACpC,GAAG,OAAO;YACV,QAAQ,EAAE,QAAQ,IAAI,EAAE;SACzB,CAAC;QAEF,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,wDAAwD,CACzD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAA4B,CAAC;QAG/B,MAAM,QAAQ,GAAG,CAAE,MAAM,CAAC,MAAoB,IAAI,EAAE,CAAsB,CAAC;QAC3E,MAAM,UAAU,GAAI,MAAM,CAAC,UAAqB,IAAI,CAAC,CAAC;QACtD,MAAM,WAAW,GAAI,MAAM,CAAC,WAAsB,IAAI,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;QAEhD,OAAO;YACL,QAAQ;YACR,aAAa,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CACb,UAAa,EACb,QAAgB,EAChB,OAAwB;QAExB,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAE5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,EAAE,OAAO,EAAE;YACrE,MAAM,EAAE,KAAK;SACd,CAA6B,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,UAAa,EACb,IAA6B,EAC7B,OAAwB,EACxB,OAAkC;QAElC,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAE5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3E,CAA6B,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,UAAa,EACb,QAAgB,EAChB,IAA6B,EAC7B,OAAwB,EACxB,OAAkC;QAElC,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAE5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAGnD,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;QAExD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;YACpD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3E,CAA6B,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,UAAyB,EACzB,QAAgB,EAChB,OAAwB;QAOxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAWD,KAAK,CAAC,kBAAkB,CACtB,UAAyB,EACzB,IAA6B,EAC7B,IAAyB,EACzB,QAAiB,EACjB,OAAwB;QAExB,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAE5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAElC,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;gBACxD,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;oBACnD,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;iBAC9B,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;oBACnD,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC3B,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YAGxB,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;gBACjC,gBAAgB,CAAC,cAAc;gBAC/B,gBAAgB,CAAC,aAAa;gBAC9B,gBAAgB,CAAC,QAAQ;aAC1B,CAAC,CAAC;YACH,IAAI,KAAK,YAAY,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpD,MAAM,SAAS,GACZ,KAAK,CAAC,IAA2C,EAAE,SAAS,IAAI,YAAY,CAAC;gBAChF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAQD,KAAK,CAAC,kBAAkB,CACtB,UAAyB,EACzB,KAAgC,EAChC,OAAwB;QAExB,MAAM,OAAO,GAAG,MAAM,qBAAqB,CACzC,KAAK,EACL,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAMD,KAAK,CAAC,kBAAkB,CACtB,UAAyB,EACzB,KAAiE,EACjE,OAAwB;QAExB,MAAM,OAAO,GAAG,MAAM,qBAAqB,CACzC,KAAK,EACL,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAQD,KAAK,CAAC,eAAe,CACnB,UAAyB,EACzB,SAAmB,EACnB,OAAwB;QAExB,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAC7C,SAAS,EACT,KAAK,EAAE,QAAQ,EAAE,EAAE;YACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAQD,KAAK,CAAC,gBAAgB,CACpB,UAAyB,EACzB,SAAmB,EACnB,MAA2C,EAC3C,OAAwB;QAExB,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAC7C,SAAS,EACT,KAAK,EAAE,QAAQ,EAAE,EAAE;YACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAOO,KAAK,CAAC,kBAAkB,CAC9B,UAAyB,EACzB,QAAgB,EAChB,YAAoB,EACpB,OAAwB;QAExB,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAE5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAOnD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;YACpD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;SACjF,CAAC,CAAC;IACL,CAAC;IAOD,KAAK,CAAC,UAAU,CACd,WAKE,EACF,OAAwB;QAIxB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAQjD,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAC5C,WAAW,EACX,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC;YACrC,MAAM,GAAG,GAA4B,EAAE,CAAC;YACxC,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;gBAC9B,GAAG,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;gBAC7B,GAAG,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YAE9D,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE;gBAC3D,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;aACvE,CAAC,CAAC;QACL,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;gBACnC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAUD,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,SAAmC,EACnC,OAAwB,EACxB,OAA6B;QAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAGnD,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;YACrF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAMD,KAAK,CAAC,mBAAmB,CACvB,UAAiD,EACjD,QAAgB,EAChB,UAAkB,EAClB,OAAwB;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAEnD,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;YACxE,QAAQ,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,oBAAoB,EAAE;YAC3E,UAAU,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;SACzE,CAAC;QACX,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,8BAA8B,QAAQ,4FAA4F,CACnI,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG;;UAER,IAAI,oCAAoC,UAAU;;;;;KAKvD,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAMD,KAAK,CAAC,uBAAuB,CAC3B,UAAiD,EACjD,QAAgB,EAChB,IAAY,EACZ,OAAwB;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QAEnD,MAAM,SAAS,GAA2B,EAAE,IAAI,EAAE,CAAC;QACnD,IAAI,UAAU,KAAK,SAAS;YAAE,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC;aACxD,IAAI,UAAU,KAAK,UAAU;YAAE,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC;;YAC/D,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC;QAEvC,MAAM,KAAK,GAAG;;;;;;;;;;;;KAYb,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAYO,KAAK,CAAC,cAAc,CAC1B,IAA2D,EAC3D,OAAwB;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA8B,EAC9B,OAAwB,EACxB,SAAS,GAAG,SAAS;QAErB,MAAM,KAAK,GAAG;;iBAED,SAAS;;MAEpB,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,UAAU,CACd,SAAiB,EACjB,OAAwB,EACxB,SAAS,GAAG,SAAS;QAErB,MAAM,KAAK,GAAG;2BACS,SAAS;MAC9B,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAMD,KAAK,CAAC,aAAa,CACjB,KAA8B,EAC9B,OAAwB,EACxB,SAAS,GAAG,SAAS;QAErB,MAAM,KAAK,GAAG;;iBAED,SAAS;;MAEpB,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAKD,KAAK,CAAC,UAAU,CACd,KAA8B,EAC9B,OAAwB,EACxB,SAAS,GAAG,SAAS;QAErB,MAAM,KAAK,GAAG;;iBAED,SAAS;;MAEpB,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAA8B,EAAE,OAAwB;QAG1E,MAAM,KAAK,GAAG;;;;MAIZ,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAMD,KAAK,CAAC,gBAAgB,CACpB,UAAoB,EACpB,OAAwB,EACxB,SAAS,GAAG,SAAS;QAErB,MAAM,OAAO,GAAG,MAAM,qBAAqB,CACzC,UAAU,EACV,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,EACrD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YACxB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,MAAM;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAOD,KAAK,CAAC,mBAAmB,CACvB,KAAgC,EAChC,OAAwB,EACxB,SAAS,GAAG,SAAS;QAErB,MAAM,OAAO,GAAG,MAAM,qBAAqB,CACzC,KAAK,EACL,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAC9D,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,MAAM;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}