@hookdeck/outpost-sdk 0.9.1 → 0.9.2

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 (266) hide show
  1. package/README.md +14 -7
  2. package/bin/mcp-server.js +1024 -407
  3. package/bin/mcp-server.js.map +47 -40
  4. package/dist/commonjs/funcs/attemptsGet.js.map +1 -1
  5. package/dist/commonjs/funcs/destinationsCreate.js.map +1 -1
  6. package/dist/commonjs/funcs/destinationsDelete.js.map +1 -1
  7. package/dist/commonjs/funcs/destinationsDisable.js.map +1 -1
  8. package/dist/commonjs/funcs/destinationsEnable.js.map +1 -1
  9. package/dist/commonjs/funcs/destinationsGet.js.map +1 -1
  10. package/dist/commonjs/funcs/destinationsGetAttempt.js.map +1 -1
  11. package/dist/commonjs/funcs/destinationsList.js.map +1 -1
  12. package/dist/commonjs/funcs/destinationsListAttempts.js.map +1 -1
  13. package/dist/commonjs/funcs/destinationsUpdate.js.map +1 -1
  14. package/dist/commonjs/funcs/eventsGet.js.map +1 -1
  15. package/dist/commonjs/funcs/metricsGetAttemptMetrics.d.ts +28 -0
  16. package/dist/commonjs/funcs/metricsGetAttemptMetrics.d.ts.map +1 -0
  17. package/dist/commonjs/funcs/metricsGetAttemptMetrics.js +142 -0
  18. package/dist/commonjs/funcs/metricsGetAttemptMetrics.js.map +1 -0
  19. package/dist/commonjs/funcs/metricsGetEventMetrics.d.ts +26 -0
  20. package/dist/commonjs/funcs/metricsGetEventMetrics.d.ts.map +1 -0
  21. package/dist/commonjs/funcs/metricsGetEventMetrics.js +136 -0
  22. package/dist/commonjs/funcs/metricsGetEventMetrics.js.map +1 -0
  23. package/dist/commonjs/funcs/schemasGetDestinationType.js.map +1 -1
  24. package/dist/commonjs/funcs/tenantsDelete.js.map +1 -1
  25. package/dist/commonjs/funcs/tenantsGet.js.map +1 -1
  26. package/dist/commonjs/funcs/tenantsGetPortalUrl.js.map +1 -1
  27. package/dist/commonjs/funcs/tenantsGetToken.js.map +1 -1
  28. package/dist/commonjs/funcs/tenantsUpsert.js.map +1 -1
  29. package/dist/commonjs/lib/config.d.ts +3 -3
  30. package/dist/commonjs/lib/config.js +3 -3
  31. package/dist/commonjs/lib/config.js.map +1 -1
  32. package/dist/commonjs/lib/files.d.ts +13 -0
  33. package/dist/commonjs/lib/files.d.ts.map +1 -1
  34. package/dist/commonjs/lib/files.js +19 -0
  35. package/dist/commonjs/lib/files.js.map +1 -1
  36. package/dist/commonjs/lib/sdks.d.ts.map +1 -1
  37. package/dist/commonjs/lib/sdks.js +8 -4
  38. package/dist/commonjs/lib/sdks.js.map +1 -1
  39. package/dist/commonjs/lib/url.d.ts.map +1 -1
  40. package/dist/commonjs/lib/url.js +4 -2
  41. package/dist/commonjs/lib/url.js.map +1 -1
  42. package/dist/commonjs/mcp-server/mcp-server.js +1 -1
  43. package/dist/commonjs/mcp-server/server.d.ts.map +1 -1
  44. package/dist/commonjs/mcp-server/server.js +5 -1
  45. package/dist/commonjs/mcp-server/server.js.map +1 -1
  46. package/dist/commonjs/mcp-server/tools/metricsGetAttemptMetrics.d.ts +8 -0
  47. package/dist/commonjs/mcp-server/tools/metricsGetAttemptMetrics.d.ts.map +1 -0
  48. package/dist/commonjs/mcp-server/tools/metricsGetAttemptMetrics.js +74 -0
  49. package/dist/commonjs/mcp-server/tools/metricsGetAttemptMetrics.js.map +1 -0
  50. package/dist/commonjs/mcp-server/tools/metricsGetEventMetrics.d.ts +8 -0
  51. package/dist/commonjs/mcp-server/tools/metricsGetEventMetrics.d.ts.map +1 -0
  52. package/dist/commonjs/mcp-server/tools/metricsGetEventMetrics.js +72 -0
  53. package/dist/commonjs/mcp-server/tools/metricsGetEventMetrics.js.map +1 -0
  54. package/dist/commonjs/models/components/attempt.d.ts +104 -6
  55. package/dist/commonjs/models/components/attempt.d.ts.map +1 -1
  56. package/dist/commonjs/models/components/attempt.js +106 -11
  57. package/dist/commonjs/models/components/attempt.js.map +1 -1
  58. package/dist/commonjs/models/components/index.d.ts +3 -2
  59. package/dist/commonjs/models/components/index.d.ts.map +1 -1
  60. package/dist/commonjs/models/components/index.js +3 -2
  61. package/dist/commonjs/models/components/index.js.map +1 -1
  62. package/dist/commonjs/models/components/metricsdatapoint.d.ts +38 -0
  63. package/dist/commonjs/models/components/metricsdatapoint.d.ts.map +1 -0
  64. package/dist/commonjs/models/components/{eventsummary.js → metricsdatapoint.js} +18 -31
  65. package/dist/commonjs/models/components/metricsdatapoint.js.map +1 -0
  66. package/dist/commonjs/models/components/metricsmetadata.d.ts +40 -0
  67. package/dist/commonjs/models/components/metricsmetadata.d.ts.map +1 -0
  68. package/dist/commonjs/models/components/{eventfull.js → metricsmetadata.js} +26 -33
  69. package/dist/commonjs/models/components/metricsmetadata.js.map +1 -0
  70. package/dist/commonjs/models/components/metricsresponse.d.ts +24 -0
  71. package/dist/commonjs/models/components/metricsresponse.d.ts.map +1 -0
  72. package/dist/commonjs/models/components/metricsresponse.js +62 -0
  73. package/dist/commonjs/models/components/metricsresponse.js.map +1 -0
  74. package/dist/commonjs/models/operations/getattempt.d.ts +2 -0
  75. package/dist/commonjs/models/operations/getattempt.d.ts.map +1 -1
  76. package/dist/commonjs/models/operations/getattempt.js.map +1 -1
  77. package/dist/commonjs/models/operations/getattemptmetrics.d.ts +273 -0
  78. package/dist/commonjs/models/operations/getattemptmetrics.d.ts.map +1 -0
  79. package/dist/commonjs/models/operations/getattemptmetrics.js +326 -0
  80. package/dist/commonjs/models/operations/getattemptmetrics.js.map +1 -0
  81. package/dist/commonjs/models/operations/geteventmetrics.d.ts +158 -0
  82. package/dist/commonjs/models/operations/geteventmetrics.d.ts.map +1 -0
  83. package/dist/commonjs/models/operations/geteventmetrics.js +208 -0
  84. package/dist/commonjs/models/operations/geteventmetrics.js.map +1 -0
  85. package/dist/commonjs/models/operations/gettenantdestinationattempt.d.ts +2 -0
  86. package/dist/commonjs/models/operations/gettenantdestinationattempt.d.ts.map +1 -1
  87. package/dist/commonjs/models/operations/gettenantdestinationattempt.js.map +1 -1
  88. package/dist/commonjs/models/operations/index.d.ts +2 -0
  89. package/dist/commonjs/models/operations/index.d.ts.map +1 -1
  90. package/dist/commonjs/models/operations/index.js +2 -0
  91. package/dist/commonjs/models/operations/index.js.map +1 -1
  92. package/dist/commonjs/models/operations/listattempts.d.ts +2 -0
  93. package/dist/commonjs/models/operations/listattempts.d.ts.map +1 -1
  94. package/dist/commonjs/models/operations/listattempts.js.map +1 -1
  95. package/dist/commonjs/models/operations/listtenantdestinationattempts.d.ts +2 -0
  96. package/dist/commonjs/models/operations/listtenantdestinationattempts.d.ts.map +1 -1
  97. package/dist/commonjs/models/operations/listtenantdestinationattempts.js.map +1 -1
  98. package/dist/commonjs/sdk/metrics.d.ts +36 -0
  99. package/dist/commonjs/sdk/metrics.d.ts.map +1 -0
  100. package/dist/commonjs/sdk/metrics.js +48 -0
  101. package/dist/commonjs/sdk/metrics.js.map +1 -0
  102. package/dist/commonjs/sdk/sdk.d.ts +3 -0
  103. package/dist/commonjs/sdk/sdk.d.ts.map +1 -1
  104. package/dist/commonjs/sdk/sdk.js +4 -0
  105. package/dist/commonjs/sdk/sdk.js.map +1 -1
  106. package/dist/esm/funcs/attemptsGet.js.map +1 -1
  107. package/dist/esm/funcs/destinationsCreate.js.map +1 -1
  108. package/dist/esm/funcs/destinationsDelete.js.map +1 -1
  109. package/dist/esm/funcs/destinationsDisable.js.map +1 -1
  110. package/dist/esm/funcs/destinationsEnable.js.map +1 -1
  111. package/dist/esm/funcs/destinationsGet.js.map +1 -1
  112. package/dist/esm/funcs/destinationsGetAttempt.js.map +1 -1
  113. package/dist/esm/funcs/destinationsList.js.map +1 -1
  114. package/dist/esm/funcs/destinationsListAttempts.js.map +1 -1
  115. package/dist/esm/funcs/destinationsUpdate.js.map +1 -1
  116. package/dist/esm/funcs/eventsGet.js.map +1 -1
  117. package/dist/esm/funcs/metricsGetAttemptMetrics.d.ts +28 -0
  118. package/dist/esm/funcs/metricsGetAttemptMetrics.d.ts.map +1 -0
  119. package/dist/esm/funcs/metricsGetAttemptMetrics.js +106 -0
  120. package/dist/esm/funcs/metricsGetAttemptMetrics.js.map +1 -0
  121. package/dist/esm/funcs/metricsGetEventMetrics.d.ts +26 -0
  122. package/dist/esm/funcs/metricsGetEventMetrics.d.ts.map +1 -0
  123. package/dist/esm/funcs/metricsGetEventMetrics.js +100 -0
  124. package/dist/esm/funcs/metricsGetEventMetrics.js.map +1 -0
  125. package/dist/esm/funcs/schemasGetDestinationType.js.map +1 -1
  126. package/dist/esm/funcs/tenantsDelete.js.map +1 -1
  127. package/dist/esm/funcs/tenantsGet.js.map +1 -1
  128. package/dist/esm/funcs/tenantsGetPortalUrl.js.map +1 -1
  129. package/dist/esm/funcs/tenantsGetToken.js.map +1 -1
  130. package/dist/esm/funcs/tenantsUpsert.js.map +1 -1
  131. package/dist/esm/lib/config.d.ts +3 -3
  132. package/dist/esm/lib/config.js +3 -3
  133. package/dist/esm/lib/config.js.map +1 -1
  134. package/dist/esm/lib/files.d.ts +13 -0
  135. package/dist/esm/lib/files.d.ts.map +1 -1
  136. package/dist/esm/lib/files.js +18 -0
  137. package/dist/esm/lib/files.js.map +1 -1
  138. package/dist/esm/lib/sdks.d.ts.map +1 -1
  139. package/dist/esm/lib/sdks.js +8 -4
  140. package/dist/esm/lib/sdks.js.map +1 -1
  141. package/dist/esm/lib/url.d.ts.map +1 -1
  142. package/dist/esm/lib/url.js +4 -2
  143. package/dist/esm/lib/url.js.map +1 -1
  144. package/dist/esm/mcp-server/mcp-server.js +1 -1
  145. package/dist/esm/mcp-server/server.d.ts.map +1 -1
  146. package/dist/esm/mcp-server/server.js +5 -1
  147. package/dist/esm/mcp-server/server.js.map +1 -1
  148. package/dist/esm/mcp-server/tools/metricsGetAttemptMetrics.d.ts +8 -0
  149. package/dist/esm/mcp-server/tools/metricsGetAttemptMetrics.d.ts.map +1 -0
  150. package/dist/esm/mcp-server/tools/metricsGetAttemptMetrics.js +38 -0
  151. package/dist/esm/mcp-server/tools/metricsGetAttemptMetrics.js.map +1 -0
  152. package/dist/esm/mcp-server/tools/metricsGetEventMetrics.d.ts +8 -0
  153. package/dist/esm/mcp-server/tools/metricsGetEventMetrics.d.ts.map +1 -0
  154. package/dist/esm/mcp-server/tools/metricsGetEventMetrics.js +36 -0
  155. package/dist/esm/mcp-server/tools/metricsGetEventMetrics.js.map +1 -0
  156. package/dist/esm/models/components/attempt.d.ts +104 -6
  157. package/dist/esm/models/components/attempt.d.ts.map +1 -1
  158. package/dist/esm/models/components/attempt.js +101 -10
  159. package/dist/esm/models/components/attempt.js.map +1 -1
  160. package/dist/esm/models/components/index.d.ts +3 -2
  161. package/dist/esm/models/components/index.d.ts.map +1 -1
  162. package/dist/esm/models/components/index.js +3 -2
  163. package/dist/esm/models/components/index.js.map +1 -1
  164. package/dist/esm/models/components/metricsdatapoint.d.ts +38 -0
  165. package/dist/esm/models/components/metricsdatapoint.d.ts.map +1 -0
  166. package/dist/esm/models/components/metricsdatapoint.js +33 -0
  167. package/dist/esm/models/components/metricsdatapoint.js.map +1 -0
  168. package/dist/esm/models/components/metricsmetadata.d.ts +40 -0
  169. package/dist/esm/models/components/metricsmetadata.d.ts.map +1 -0
  170. package/dist/esm/models/components/metricsmetadata.js +41 -0
  171. package/dist/esm/models/components/metricsmetadata.js.map +1 -0
  172. package/dist/esm/models/components/metricsresponse.d.ts +24 -0
  173. package/dist/esm/models/components/metricsresponse.d.ts.map +1 -0
  174. package/dist/esm/models/components/metricsresponse.js +24 -0
  175. package/dist/esm/models/components/metricsresponse.js.map +1 -0
  176. package/dist/esm/models/operations/getattempt.d.ts +2 -0
  177. package/dist/esm/models/operations/getattempt.d.ts.map +1 -1
  178. package/dist/esm/models/operations/getattempt.js.map +1 -1
  179. package/dist/esm/models/operations/getattemptmetrics.d.ts +273 -0
  180. package/dist/esm/models/operations/getattemptmetrics.d.ts.map +1 -0
  181. package/dist/esm/models/operations/getattemptmetrics.js +272 -0
  182. package/dist/esm/models/operations/getattemptmetrics.js.map +1 -0
  183. package/dist/esm/models/operations/geteventmetrics.d.ts +158 -0
  184. package/dist/esm/models/operations/geteventmetrics.d.ts.map +1 -0
  185. package/dist/esm/models/operations/geteventmetrics.js +160 -0
  186. package/dist/esm/models/operations/geteventmetrics.js.map +1 -0
  187. package/dist/esm/models/operations/gettenantdestinationattempt.d.ts +2 -0
  188. package/dist/esm/models/operations/gettenantdestinationattempt.d.ts.map +1 -1
  189. package/dist/esm/models/operations/gettenantdestinationattempt.js.map +1 -1
  190. package/dist/esm/models/operations/index.d.ts +2 -0
  191. package/dist/esm/models/operations/index.d.ts.map +1 -1
  192. package/dist/esm/models/operations/index.js +2 -0
  193. package/dist/esm/models/operations/index.js.map +1 -1
  194. package/dist/esm/models/operations/listattempts.d.ts +2 -0
  195. package/dist/esm/models/operations/listattempts.d.ts.map +1 -1
  196. package/dist/esm/models/operations/listattempts.js.map +1 -1
  197. package/dist/esm/models/operations/listtenantdestinationattempts.d.ts +2 -0
  198. package/dist/esm/models/operations/listtenantdestinationattempts.d.ts.map +1 -1
  199. package/dist/esm/models/operations/listtenantdestinationattempts.js.map +1 -1
  200. package/dist/esm/sdk/metrics.d.ts +36 -0
  201. package/dist/esm/sdk/metrics.d.ts.map +1 -0
  202. package/dist/esm/sdk/metrics.js +44 -0
  203. package/dist/esm/sdk/metrics.js.map +1 -0
  204. package/dist/esm/sdk/sdk.d.ts +3 -0
  205. package/dist/esm/sdk/sdk.d.ts.map +1 -1
  206. package/dist/esm/sdk/sdk.js +4 -0
  207. package/dist/esm/sdk/sdk.js.map +1 -1
  208. package/jsr.json +1 -1
  209. package/package.json +1 -1
  210. package/src/funcs/attemptsGet.ts +0 -1
  211. package/src/funcs/destinationsCreate.ts +0 -1
  212. package/src/funcs/destinationsDelete.ts +0 -1
  213. package/src/funcs/destinationsDisable.ts +0 -1
  214. package/src/funcs/destinationsEnable.ts +0 -1
  215. package/src/funcs/destinationsGet.ts +0 -1
  216. package/src/funcs/destinationsGetAttempt.ts +0 -1
  217. package/src/funcs/destinationsList.ts +0 -1
  218. package/src/funcs/destinationsListAttempts.ts +0 -1
  219. package/src/funcs/destinationsUpdate.ts +0 -1
  220. package/src/funcs/eventsGet.ts +0 -1
  221. package/src/funcs/metricsGetAttemptMetrics.ts +206 -0
  222. package/src/funcs/metricsGetEventMetrics.ts +200 -0
  223. package/src/funcs/schemasGetDestinationType.ts +0 -1
  224. package/src/funcs/tenantsDelete.ts +0 -1
  225. package/src/funcs/tenantsGet.ts +0 -1
  226. package/src/funcs/tenantsGetPortalUrl.ts +0 -1
  227. package/src/funcs/tenantsGetToken.ts +0 -1
  228. package/src/funcs/tenantsUpsert.ts +0 -1
  229. package/src/lib/config.ts +3 -3
  230. package/src/lib/files.ts +22 -0
  231. package/src/lib/sdks.ts +7 -5
  232. package/src/lib/url.ts +16 -14
  233. package/src/mcp-server/mcp-server.ts +1 -1
  234. package/src/mcp-server/server.ts +5 -1
  235. package/src/mcp-server/tools/metricsGetAttemptMetrics.ts +47 -0
  236. package/src/mcp-server/tools/metricsGetEventMetrics.ts +45 -0
  237. package/src/models/components/attempt.ts +224 -23
  238. package/src/models/components/index.ts +3 -2
  239. package/src/models/components/metricsdatapoint.ts +79 -0
  240. package/src/models/components/metricsmetadata.ts +93 -0
  241. package/src/models/components/metricsresponse.ts +68 -0
  242. package/src/models/operations/getattempt.ts +2 -0
  243. package/src/models/operations/getattemptmetrics.ts +668 -0
  244. package/src/models/operations/geteventmetrics.ts +434 -0
  245. package/src/models/operations/gettenantdestinationattempt.ts +2 -0
  246. package/src/models/operations/index.ts +2 -0
  247. package/src/models/operations/listattempts.ts +2 -0
  248. package/src/models/operations/listtenantdestinationattempts.ts +2 -0
  249. package/src/sdk/metrics.ts +62 -0
  250. package/src/sdk/sdk.ts +6 -0
  251. package/dist/commonjs/models/components/eventfull.d.ts +0 -57
  252. package/dist/commonjs/models/components/eventfull.d.ts.map +0 -1
  253. package/dist/commonjs/models/components/eventfull.js.map +0 -1
  254. package/dist/commonjs/models/components/eventsummary.d.ts +0 -48
  255. package/dist/commonjs/models/components/eventsummary.d.ts.map +0 -1
  256. package/dist/commonjs/models/components/eventsummary.js.map +0 -1
  257. package/dist/esm/models/components/eventfull.d.ts +0 -57
  258. package/dist/esm/models/components/eventfull.d.ts.map +0 -1
  259. package/dist/esm/models/components/eventfull.js +0 -48
  260. package/dist/esm/models/components/eventfull.js.map +0 -1
  261. package/dist/esm/models/components/eventsummary.d.ts +0 -48
  262. package/dist/esm/models/components/eventsummary.d.ts.map +0 -1
  263. package/dist/esm/models/components/eventsummary.js +0 -46
  264. package/dist/esm/models/components/eventsummary.js.map +0 -1
  265. package/src/models/components/eventfull.ts +0 -107
  266. package/src/models/components/eventsummary.ts +0 -100
@@ -103,7 +103,6 @@ async function $do(
103
103
  charEncoding: "percent",
104
104
  }),
105
105
  };
106
-
107
106
  const path = pathToFunc("/tenants/{tenant_id}")(pathParams);
108
107
 
109
108
  const headers = new Headers(compactMap({
@@ -103,7 +103,6 @@ async function $do(
103
103
  charEncoding: "percent",
104
104
  }),
105
105
  };
106
-
107
106
  const path = pathToFunc("/tenants/{tenant_id}")(pathParams);
108
107
 
109
108
  const headers = new Headers(compactMap({
@@ -107,7 +107,6 @@ async function $do(
107
107
  charEncoding: "percent",
108
108
  }),
109
109
  };
110
-
111
110
  const path = pathToFunc("/tenants/{tenant_id}/portal")(pathParams);
112
111
 
113
112
  const query = encodeFormQuery({
@@ -103,7 +103,6 @@ async function $do(
103
103
  charEncoding: "percent",
104
104
  }),
105
105
  };
106
-
107
106
  const path = pathToFunc("/tenants/{tenant_id}/token")(pathParams);
108
107
 
109
108
  const headers = new Headers(compactMap({
@@ -107,7 +107,6 @@ async function $do(
107
107
  charEncoding: "percent",
108
108
  }),
109
109
  };
110
-
111
110
  const path = pathToFunc("/tenants/{tenant_id}")(pathParams);
112
111
 
113
112
  const headers = new Headers(compactMap({
package/src/lib/config.ts CHANGED
@@ -65,8 +65,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
65
65
  export const SDK_METADATA = {
66
66
  language: "typescript",
67
67
  openapiDocVersion: "0.0.1",
68
- sdkVersion: "0.9.1",
69
- genVersion: "2.865.2",
68
+ sdkVersion: "0.9.2",
69
+ genVersion: "2.869.10",
70
70
  userAgent:
71
- "speakeasy-sdk/typescript 0.9.1 2.865.2 0.0.1 @hookdeck/outpost-sdk",
71
+ "speakeasy-sdk/typescript 0.9.2 2.869.10 0.0.1 @hookdeck/outpost-sdk",
72
72
  } as const;
package/src/lib/files.ts CHANGED
@@ -80,3 +80,25 @@ export function getContentTypeFromFileName(fileName: string): string | null {
80
80
 
81
81
  return mimeTypes[ext] || null;
82
82
  }
83
+
84
+ /**
85
+ * Creates a Blob from file content with the given MIME type.
86
+ *
87
+ * Node.js Buffers are Uint8Array subclasses that may share a pooled
88
+ * ArrayBuffer (byteOffset > 0, byteLength < buffer.byteLength). Passing
89
+ * such a Buffer directly to `new Blob([buf])` can include the entire
90
+ * underlying pool on some runtimes, producing a Blob with extra bytes
91
+ * that corrupts multipart uploads.
92
+ *
93
+ * Copying into a standalone Uint8Array ensures the Blob receives only the
94
+ * intended bytes regardless of runtime behaviour.
95
+ */
96
+ export function bytesToBlob(
97
+ content: Uint8Array<ArrayBufferLike> | ArrayBuffer | Blob | string,
98
+ contentType: string,
99
+ ): Blob {
100
+ if (content instanceof Uint8Array) {
101
+ return new Blob([new Uint8Array(content)], { type: contentType });
102
+ }
103
+ return new Blob([content as BlobPart], { type: contentType });
104
+ }
package/src/lib/sdks.ts CHANGED
@@ -124,13 +124,15 @@ export class ClientSDK {
124
124
  if (!base) {
125
125
  return ERR(new InvalidRequestError("No base URL provided for operation"));
126
126
  }
127
- const reqURL = new URL(base);
128
- const inputURL = new URL(path, reqURL);
129
-
127
+ const baseURL = new URL(base);
128
+ let reqURL: URL;
130
129
  if (path) {
131
- reqURL.pathname += reqURL.pathname.endsWith("/") ? "" : "/";
132
- reqURL.pathname += inputURL.pathname.replace(/^\/+/, "");
130
+ baseURL.pathname = baseURL.pathname.replace(/\/+$/, "") + "/";
131
+ reqURL = new URL(path, baseURL);
132
+ } else {
133
+ reqURL = baseURL;
133
134
  }
135
+ reqURL.hash = "";
134
136
 
135
137
  let finalQuery = query || "";
136
138
 
package/src/lib/url.ts CHANGED
@@ -13,21 +13,23 @@ export function pathToFunc(
13
13
  const paramRE = /\{([a-zA-Z0-9_][a-zA-Z0-9_-]*?)\}/g;
14
14
 
15
15
  return function buildURLPath(params: Record<string, unknown> = {}): string {
16
- return pathPattern.replace(paramRE, function (_, placeholder) {
17
- if (!hasOwn.call(params, placeholder)) {
18
- throw new Error(`Parameter '${placeholder}' is required`);
19
- }
16
+ return pathPattern
17
+ .replace(paramRE, function (_, placeholder) {
18
+ if (!hasOwn.call(params, placeholder)) {
19
+ throw new Error(`Parameter '${placeholder}' is required`);
20
+ }
20
21
 
21
- const value = params[placeholder];
22
- if (typeof value !== "string" && typeof value !== "number") {
23
- throw new Error(
24
- `Parameter '${placeholder}' must be a string or number`,
25
- );
26
- }
22
+ const value = params[placeholder];
23
+ if (typeof value !== "string" && typeof value !== "number") {
24
+ throw new Error(
25
+ `Parameter '${placeholder}' must be a string or number`,
26
+ );
27
+ }
27
28
 
28
- return options?.charEncoding === "percent"
29
- ? encodeURIComponent(`${value}`)
30
- : `${value}`;
31
- });
29
+ return options?.charEncoding === "percent"
30
+ ? encodeURIComponent(`${value}`)
31
+ : `${value}`;
32
+ })
33
+ .replace(/^\/+/, "");
32
34
  };
33
35
  }
@@ -19,7 +19,7 @@ const routes = buildRouteMap({
19
19
  export const app = buildApplication(routes, {
20
20
  name: "mcp",
21
21
  versionInfo: {
22
- currentVersion: "0.9.1",
22
+ currentVersion: "0.9.2",
23
23
  },
24
24
  });
25
25
 
@@ -28,6 +28,8 @@ import { tool$destinationsUpdate } from "./tools/destinationsUpdate.js";
28
28
  import { tool$eventsGet } from "./tools/eventsGet.js";
29
29
  import { tool$eventsList } from "./tools/eventsList.js";
30
30
  import { tool$healthCheck } from "./tools/healthCheck.js";
31
+ import { tool$metricsGetAttemptMetrics } from "./tools/metricsGetAttemptMetrics.js";
32
+ import { tool$metricsGetEventMetrics } from "./tools/metricsGetEventMetrics.js";
31
33
  import { tool$publishEvent } from "./tools/publishEvent.js";
32
34
  import { tool$schemasGetDestinationType } from "./tools/schemasGetDestinationType.js";
33
35
  import { tool$schemasListDestinationTypes } from "./tools/schemasListDestinationTypes.js";
@@ -49,7 +51,7 @@ export function createMCPServer(deps: {
49
51
  }) {
50
52
  const server = new McpServer({
51
53
  name: "Outpost",
52
- version: "0.9.1",
54
+ version: "0.9.2",
53
55
  });
54
56
 
55
57
  const client = new OutpostCore({
@@ -104,6 +106,8 @@ export function createMCPServer(deps: {
104
106
  tool(tool$schemasListDestinationTypes);
105
107
  tool(tool$schemasGetDestinationType);
106
108
  tool(tool$topicsList);
109
+ tool(tool$metricsGetEventMetrics);
110
+ tool(tool$metricsGetAttemptMetrics);
107
111
 
108
112
  return server;
109
113
  }
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { metricsGetAttemptMetrics } from "../../funcs/metricsGetAttemptMetrics.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.GetAttemptMetricsRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$metricsGetAttemptMetrics: ToolDefinition<typeof args> = {
14
+ name: "metrics-get-attempt-metrics",
15
+ description: `Get Attempt Metrics
16
+
17
+ Returns aggregated delivery attempt metrics. Supports time bucketing via granularity,
18
+ dimensional grouping, and filtering.
19
+
20
+ **Measures:** \`count\`, \`successful_count\`, \`failed_count\`, \`error_rate\`,
21
+ \`first_attempt_count\`, \`retry_count\`, \`manual_retry_count\`, \`avg_attempt_number\`,
22
+ \`rate\`, \`successful_rate\`, \`failed_rate\`
23
+
24
+ **Dimensions:** \`tenant_id\` (admin-only), \`destination_id\`, \`topic\`, \`status\`, \`code\`, \`manual\`, \`attempt_number\`
25
+
26
+ **Filters:** \`tenant_id\` (admin-only), \`destination_id\`, \`topic\`, \`status\`, \`code\`, \`manual\`, \`attempt_number\`
27
+ `,
28
+ args,
29
+ tool: async (client, args, ctx) => {
30
+ const [result, apiCall] = await metricsGetAttemptMetrics(
31
+ client,
32
+ args.request,
33
+ { fetchOptions: { signal: ctx.signal } },
34
+ ).$inspect();
35
+
36
+ if (!result.ok) {
37
+ return {
38
+ content: [{ type: "text", text: result.error.message }],
39
+ isError: true,
40
+ };
41
+ }
42
+
43
+ const value = result.value;
44
+
45
+ return formatResult(value, apiCall);
46
+ },
47
+ };
@@ -0,0 +1,45 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { metricsGetEventMetrics } from "../../funcs/metricsGetEventMetrics.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.GetEventMetricsRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$metricsGetEventMetrics: ToolDefinition<typeof args> = {
14
+ name: "metrics-get-event-metrics",
15
+ description: `Get Event Metrics
16
+
17
+ Returns aggregated event publish metrics. Supports time bucketing via granularity,
18
+ dimensional grouping, and filtering.
19
+
20
+ **Measures:** \`count\`, \`rate\`
21
+
22
+ **Dimensions:** \`tenant_id\` (admin-only), \`topic\`, \`destination_id\`
23
+
24
+ **Filters:** \`tenant_id\` (admin-only), \`topic\`, \`destination_id\`
25
+ `,
26
+ args,
27
+ tool: async (client, args, ctx) => {
28
+ const [result, apiCall] = await metricsGetEventMetrics(
29
+ client,
30
+ args.request,
31
+ { fetchOptions: { signal: ctx.signal } },
32
+ ).$inspect();
33
+
34
+ if (!result.ok) {
35
+ return {
36
+ content: [{ type: "text", text: result.error.message }],
37
+ isError: true,
38
+ };
39
+ }
40
+
41
+ const value = result.value;
42
+
43
+ return formatResult(value, apiCall);
44
+ },
45
+ };
@@ -9,17 +9,11 @@ import { ClosedEnum } from "../../types/enums.js";
9
9
  import { Result as SafeParseResult } from "../../types/fp.js";
10
10
  import { SDKValidationError } from "../errors/sdkvalidationerror.js";
11
11
  import {
12
- EventFull,
13
- EventFull$inboundSchema,
14
- EventFull$Outbound,
15
- EventFull$outboundSchema,
16
- } from "./eventfull.js";
17
- import {
18
- EventSummary,
19
- EventSummary$inboundSchema,
20
- EventSummary$Outbound,
21
- EventSummary$outboundSchema,
22
- } from "./eventsummary.js";
12
+ Destination,
13
+ Destination$inboundSchema,
14
+ Destination$Outbound,
15
+ Destination$outboundSchema,
16
+ } from "./destination.js";
23
17
 
24
18
  /**
25
19
  * The attempt status.
@@ -33,6 +27,60 @@ export const Status = {
33
27
  */
34
28
  export type Status = ClosedEnum<typeof Status>;
35
29
 
30
+ /**
31
+ * Full event object with data (returned when include=event.data).
32
+ */
33
+ export type EventFull = {
34
+ id?: string | undefined;
35
+ /**
36
+ * The tenant this event belongs to.
37
+ */
38
+ tenantId?: string | undefined;
39
+ /**
40
+ * The destination this event was delivered to.
41
+ */
42
+ destinationId?: string | undefined;
43
+ topic?: string | undefined;
44
+ /**
45
+ * Time the event was received.
46
+ */
47
+ time?: Date | undefined;
48
+ /**
49
+ * Whether this event can be retried.
50
+ */
51
+ eligibleForRetry?: boolean | undefined;
52
+ metadata?: { [k: string]: string } | null | undefined;
53
+ /**
54
+ * The event payload data.
55
+ */
56
+ data?: { [k: string]: any } | undefined;
57
+ };
58
+
59
+ /**
60
+ * Event object without data (returned when include=event).
61
+ */
62
+ export type EventSummary = {
63
+ id?: string | undefined;
64
+ /**
65
+ * The tenant this event belongs to.
66
+ */
67
+ tenantId?: string | undefined;
68
+ /**
69
+ * The destination this event was delivered to.
70
+ */
71
+ destinationId?: string | undefined;
72
+ topic?: string | undefined;
73
+ /**
74
+ * Time the event was received.
75
+ */
76
+ time?: Date | undefined;
77
+ /**
78
+ * Whether this event can be retried.
79
+ */
80
+ eligibleForRetry?: boolean | undefined;
81
+ metadata?: { [k: string]: string } | null | undefined;
82
+ };
83
+
36
84
  /**
37
85
  * The associated event object. Only present when include=event or include=event.data.
38
86
  */
@@ -65,7 +113,7 @@ export type Attempt = {
65
113
  /**
66
114
  * Response data from the attempt. Only included when include=response_data.
67
115
  */
68
- responseData?: { [k: string]: any } | undefined;
116
+ responseData?: { [k: string]: any } | null | undefined;
69
117
  /**
70
118
  * The attempt number (1 for first attempt, 2+ for retries).
71
119
  */
@@ -85,7 +133,8 @@ export type Attempt = {
85
133
  /**
86
134
  * The associated event object. Only present when include=event or include=event.data.
87
135
  */
88
- event?: EventSummary | EventFull | undefined;
136
+ event?: EventSummary | EventFull | null | undefined;
137
+ destination?: Destination | undefined;
89
138
  };
90
139
 
91
140
  /** @internal */
@@ -95,12 +144,150 @@ export const Status$inboundSchema: z.ZodNativeEnum<typeof Status> = z
95
144
  export const Status$outboundSchema: z.ZodNativeEnum<typeof Status> =
96
145
  Status$inboundSchema;
97
146
 
147
+ /** @internal */
148
+ export const EventFull$inboundSchema: z.ZodType<
149
+ EventFull,
150
+ z.ZodTypeDef,
151
+ unknown
152
+ > = z.object({
153
+ id: z.string().optional(),
154
+ tenant_id: z.string().optional(),
155
+ destination_id: z.string().optional(),
156
+ topic: z.string().optional(),
157
+ time: z.string().datetime({ offset: true }).transform(v => new Date(v))
158
+ .optional(),
159
+ eligible_for_retry: z.boolean().optional(),
160
+ metadata: z.nullable(z.record(z.string())).optional(),
161
+ data: z.record(z.any()).optional(),
162
+ }).transform((v) => {
163
+ return remap$(v, {
164
+ "tenant_id": "tenantId",
165
+ "destination_id": "destinationId",
166
+ "eligible_for_retry": "eligibleForRetry",
167
+ });
168
+ });
169
+ /** @internal */
170
+ export type EventFull$Outbound = {
171
+ id?: string | undefined;
172
+ tenant_id?: string | undefined;
173
+ destination_id?: string | undefined;
174
+ topic?: string | undefined;
175
+ time?: string | undefined;
176
+ eligible_for_retry?: boolean | undefined;
177
+ metadata?: { [k: string]: string } | null | undefined;
178
+ data?: { [k: string]: any } | undefined;
179
+ };
180
+
181
+ /** @internal */
182
+ export const EventFull$outboundSchema: z.ZodType<
183
+ EventFull$Outbound,
184
+ z.ZodTypeDef,
185
+ EventFull
186
+ > = z.object({
187
+ id: z.string().optional(),
188
+ tenantId: z.string().optional(),
189
+ destinationId: z.string().optional(),
190
+ topic: z.string().optional(),
191
+ time: z.date().transform(v => v.toISOString()).optional(),
192
+ eligibleForRetry: z.boolean().optional(),
193
+ metadata: z.nullable(z.record(z.string())).optional(),
194
+ data: z.record(z.any()).optional(),
195
+ }).transform((v) => {
196
+ return remap$(v, {
197
+ tenantId: "tenant_id",
198
+ destinationId: "destination_id",
199
+ eligibleForRetry: "eligible_for_retry",
200
+ });
201
+ });
202
+
203
+ export function eventFullToJSON(eventFull: EventFull): string {
204
+ return JSON.stringify(EventFull$outboundSchema.parse(eventFull));
205
+ }
206
+ export function eventFullFromJSON(
207
+ jsonString: string,
208
+ ): SafeParseResult<EventFull, SDKValidationError> {
209
+ return safeParse(
210
+ jsonString,
211
+ (x) => EventFull$inboundSchema.parse(JSON.parse(x)),
212
+ `Failed to parse 'EventFull' from JSON`,
213
+ );
214
+ }
215
+
216
+ /** @internal */
217
+ export const EventSummary$inboundSchema: z.ZodType<
218
+ EventSummary,
219
+ z.ZodTypeDef,
220
+ unknown
221
+ > = z.object({
222
+ id: z.string().optional(),
223
+ tenant_id: z.string().optional(),
224
+ destination_id: z.string().optional(),
225
+ topic: z.string().optional(),
226
+ time: z.string().datetime({ offset: true }).transform(v => new Date(v))
227
+ .optional(),
228
+ eligible_for_retry: z.boolean().optional(),
229
+ metadata: z.nullable(z.record(z.string())).optional(),
230
+ }).transform((v) => {
231
+ return remap$(v, {
232
+ "tenant_id": "tenantId",
233
+ "destination_id": "destinationId",
234
+ "eligible_for_retry": "eligibleForRetry",
235
+ });
236
+ });
237
+ /** @internal */
238
+ export type EventSummary$Outbound = {
239
+ id?: string | undefined;
240
+ tenant_id?: string | undefined;
241
+ destination_id?: string | undefined;
242
+ topic?: string | undefined;
243
+ time?: string | undefined;
244
+ eligible_for_retry?: boolean | undefined;
245
+ metadata?: { [k: string]: string } | null | undefined;
246
+ };
247
+
248
+ /** @internal */
249
+ export const EventSummary$outboundSchema: z.ZodType<
250
+ EventSummary$Outbound,
251
+ z.ZodTypeDef,
252
+ EventSummary
253
+ > = z.object({
254
+ id: z.string().optional(),
255
+ tenantId: z.string().optional(),
256
+ destinationId: z.string().optional(),
257
+ topic: z.string().optional(),
258
+ time: z.date().transform(v => v.toISOString()).optional(),
259
+ eligibleForRetry: z.boolean().optional(),
260
+ metadata: z.nullable(z.record(z.string())).optional(),
261
+ }).transform((v) => {
262
+ return remap$(v, {
263
+ tenantId: "tenant_id",
264
+ destinationId: "destination_id",
265
+ eligibleForRetry: "eligible_for_retry",
266
+ });
267
+ });
268
+
269
+ export function eventSummaryToJSON(eventSummary: EventSummary): string {
270
+ return JSON.stringify(EventSummary$outboundSchema.parse(eventSummary));
271
+ }
272
+ export function eventSummaryFromJSON(
273
+ jsonString: string,
274
+ ): SafeParseResult<EventSummary, SDKValidationError> {
275
+ return safeParse(
276
+ jsonString,
277
+ (x) => EventSummary$inboundSchema.parse(JSON.parse(x)),
278
+ `Failed to parse 'EventSummary' from JSON`,
279
+ );
280
+ }
281
+
98
282
  /** @internal */
99
283
  export const EventUnion$inboundSchema: z.ZodType<
100
284
  EventUnion,
101
285
  z.ZodTypeDef,
102
286
  unknown
103
- > = z.union([EventSummary$inboundSchema, EventFull$inboundSchema]);
287
+ > = z.union([
288
+ z.lazy(() => EventSummary$inboundSchema),
289
+ z.lazy(() => EventFull$inboundSchema),
290
+ ]);
104
291
  /** @internal */
105
292
  export type EventUnion$Outbound = EventSummary$Outbound | EventFull$Outbound;
106
293
 
@@ -109,7 +296,10 @@ export const EventUnion$outboundSchema: z.ZodType<
109
296
  EventUnion$Outbound,
110
297
  z.ZodTypeDef,
111
298
  EventUnion
112
- > = z.union([EventSummary$outboundSchema, EventFull$outboundSchema]);
299
+ > = z.union([
300
+ z.lazy(() => EventSummary$outboundSchema),
301
+ z.lazy(() => EventFull$outboundSchema),
302
+ ]);
113
303
 
114
304
  export function eventUnionToJSON(eventUnion: EventUnion): string {
115
305
  return JSON.stringify(EventUnion$outboundSchema.parse(eventUnion));
@@ -133,13 +323,18 @@ export const Attempt$inboundSchema: z.ZodType<Attempt, z.ZodTypeDef, unknown> =
133
323
  time: z.string().datetime({ offset: true }).transform(v => new Date(v))
134
324
  .optional(),
135
325
  code: z.string().optional(),
136
- response_data: z.record(z.any()).optional(),
326
+ response_data: z.nullable(z.record(z.any())).optional(),
137
327
  attempt_number: z.number().int().optional(),
138
328
  manual: z.boolean().optional(),
139
329
  event_id: z.string().optional(),
140
330
  destination_id: z.string().optional(),
141
- event: z.union([EventSummary$inboundSchema, EventFull$inboundSchema])
142
- .optional(),
331
+ event: z.nullable(
332
+ z.union([
333
+ z.lazy(() => EventSummary$inboundSchema),
334
+ z.lazy(() => EventFull$inboundSchema),
335
+ ]),
336
+ ).optional(),
337
+ destination: Destination$inboundSchema.optional(),
143
338
  }).transform((v) => {
144
339
  return remap$(v, {
145
340
  "tenant_id": "tenantId",
@@ -156,12 +351,13 @@ export type Attempt$Outbound = {
156
351
  status?: string | undefined;
157
352
  time?: string | undefined;
158
353
  code?: string | undefined;
159
- response_data?: { [k: string]: any } | undefined;
354
+ response_data?: { [k: string]: any } | null | undefined;
160
355
  attempt_number?: number | undefined;
161
356
  manual?: boolean | undefined;
162
357
  event_id?: string | undefined;
163
358
  destination_id?: string | undefined;
164
- event?: EventSummary$Outbound | EventFull$Outbound | undefined;
359
+ event?: EventSummary$Outbound | EventFull$Outbound | null | undefined;
360
+ destination?: Destination$Outbound | undefined;
165
361
  };
166
362
 
167
363
  /** @internal */
@@ -175,13 +371,18 @@ export const Attempt$outboundSchema: z.ZodType<
175
371
  status: Status$outboundSchema.optional(),
176
372
  time: z.date().transform(v => v.toISOString()).optional(),
177
373
  code: z.string().optional(),
178
- responseData: z.record(z.any()).optional(),
374
+ responseData: z.nullable(z.record(z.any())).optional(),
179
375
  attemptNumber: z.number().int().optional(),
180
376
  manual: z.boolean().optional(),
181
377
  eventId: z.string().optional(),
182
378
  destinationId: z.string().optional(),
183
- event: z.union([EventSummary$outboundSchema, EventFull$outboundSchema])
184
- .optional(),
379
+ event: z.nullable(
380
+ z.union([
381
+ z.lazy(() => EventSummary$outboundSchema),
382
+ z.lazy(() => EventFull$outboundSchema),
383
+ ]),
384
+ ).optional(),
385
+ destination: Destination$outboundSchema.optional(),
185
386
  }).transform((v) => {
186
387
  return remap$(v, {
187
388
  tenantId: "tenant_id",
@@ -43,12 +43,13 @@ export * from "./destinationupdaterabbitmq.js";
43
43
  export * from "./destinationupdatewebhook.js";
44
44
  export * from "./destinationwebhook.js";
45
45
  export * from "./event.js";
46
- export * from "./eventfull.js";
47
46
  export * from "./eventpaginatedresult.js";
48
- export * from "./eventsummary.js";
49
47
  export * from "./gcppubsubconfig.js";
50
48
  export * from "./gcppubsubcredentials.js";
51
49
  export * from "./hookdeckcredentials.js";
50
+ export * from "./metricsdatapoint.js";
51
+ export * from "./metricsmetadata.js";
52
+ export * from "./metricsresponse.js";
52
53
  export * from "./portalredirect.js";
53
54
  export * from "./publishrequest.js";
54
55
  export * from "./publishresponse.js";