@smithery/api 0.1.0-alpha.4

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 (388) hide show
  1. package/CHANGELOG.md +213 -0
  2. package/LICENSE +201 -0
  3. package/README.md +389 -0
  4. package/api-promise.d.mts +2 -0
  5. package/api-promise.d.mts.map +1 -0
  6. package/api-promise.d.ts +2 -0
  7. package/api-promise.d.ts.map +1 -0
  8. package/api-promise.js +6 -0
  9. package/api-promise.js.map +1 -0
  10. package/api-promise.mjs +2 -0
  11. package/api-promise.mjs.map +1 -0
  12. package/client.d.mts +192 -0
  13. package/client.d.mts.map +1 -0
  14. package/client.d.ts +192 -0
  15. package/client.d.ts.map +1 -0
  16. package/client.js +475 -0
  17. package/client.js.map +1 -0
  18. package/client.mjs +471 -0
  19. package/client.mjs.map +1 -0
  20. package/core/api-promise.d.mts +46 -0
  21. package/core/api-promise.d.mts.map +1 -0
  22. package/core/api-promise.d.ts +46 -0
  23. package/core/api-promise.d.ts.map +1 -0
  24. package/core/api-promise.js +74 -0
  25. package/core/api-promise.js.map +1 -0
  26. package/core/api-promise.mjs +70 -0
  27. package/core/api-promise.mjs.map +1 -0
  28. package/core/error.d.mts +46 -0
  29. package/core/error.d.mts.map +1 -0
  30. package/core/error.d.ts +46 -0
  31. package/core/error.d.ts.map +1 -0
  32. package/core/error.js +113 -0
  33. package/core/error.js.map +1 -0
  34. package/core/error.mjs +97 -0
  35. package/core/error.mjs.map +1 -0
  36. package/core/pagination.d.mts +62 -0
  37. package/core/pagination.d.mts.map +1 -0
  38. package/core/pagination.d.ts +62 -0
  39. package/core/pagination.d.ts.map +1 -0
  40. package/core/pagination.js +99 -0
  41. package/core/pagination.js.map +1 -0
  42. package/core/pagination.mjs +93 -0
  43. package/core/pagination.mjs.map +1 -0
  44. package/core/resource.d.mts +6 -0
  45. package/core/resource.d.mts.map +1 -0
  46. package/core/resource.d.ts +6 -0
  47. package/core/resource.d.ts.map +1 -0
  48. package/core/resource.js +11 -0
  49. package/core/resource.js.map +1 -0
  50. package/core/resource.mjs +7 -0
  51. package/core/resource.mjs.map +1 -0
  52. package/core/uploads.d.mts +3 -0
  53. package/core/uploads.d.mts.map +1 -0
  54. package/core/uploads.d.ts +3 -0
  55. package/core/uploads.d.ts.map +1 -0
  56. package/core/uploads.js +6 -0
  57. package/core/uploads.js.map +1 -0
  58. package/core/uploads.mjs +2 -0
  59. package/core/uploads.mjs.map +1 -0
  60. package/error.d.mts +2 -0
  61. package/error.d.mts.map +1 -0
  62. package/error.d.ts +2 -0
  63. package/error.d.ts.map +1 -0
  64. package/error.js +6 -0
  65. package/error.js.map +1 -0
  66. package/error.mjs +2 -0
  67. package/error.mjs.map +1 -0
  68. package/index.d.mts +7 -0
  69. package/index.d.mts.map +1 -0
  70. package/index.d.ts +7 -0
  71. package/index.d.ts.map +1 -0
  72. package/index.js +32 -0
  73. package/index.js.map +1 -0
  74. package/index.mjs +8 -0
  75. package/index.mjs.map +1 -0
  76. package/internal/builtin-types.d.mts +73 -0
  77. package/internal/builtin-types.d.mts.map +1 -0
  78. package/internal/builtin-types.d.ts +73 -0
  79. package/internal/builtin-types.d.ts.map +1 -0
  80. package/internal/builtin-types.js +4 -0
  81. package/internal/builtin-types.js.map +1 -0
  82. package/internal/builtin-types.mjs +3 -0
  83. package/internal/builtin-types.mjs.map +1 -0
  84. package/internal/detect-platform.d.mts +15 -0
  85. package/internal/detect-platform.d.mts.map +1 -0
  86. package/internal/detect-platform.d.ts +15 -0
  87. package/internal/detect-platform.d.ts.map +1 -0
  88. package/internal/detect-platform.js +162 -0
  89. package/internal/detect-platform.js.map +1 -0
  90. package/internal/detect-platform.mjs +157 -0
  91. package/internal/detect-platform.mjs.map +1 -0
  92. package/internal/errors.d.mts +3 -0
  93. package/internal/errors.d.mts.map +1 -0
  94. package/internal/errors.d.ts +3 -0
  95. package/internal/errors.d.ts.map +1 -0
  96. package/internal/errors.js +41 -0
  97. package/internal/errors.js.map +1 -0
  98. package/internal/errors.mjs +36 -0
  99. package/internal/errors.mjs.map +1 -0
  100. package/internal/headers.d.mts +20 -0
  101. package/internal/headers.d.mts.map +1 -0
  102. package/internal/headers.d.ts +20 -0
  103. package/internal/headers.d.ts.map +1 -0
  104. package/internal/headers.js +79 -0
  105. package/internal/headers.js.map +1 -0
  106. package/internal/headers.mjs +74 -0
  107. package/internal/headers.mjs.map +1 -0
  108. package/internal/parse.d.mts +12 -0
  109. package/internal/parse.d.mts.map +1 -0
  110. package/internal/parse.d.ts +12 -0
  111. package/internal/parse.d.ts.map +1 -0
  112. package/internal/parse.js +35 -0
  113. package/internal/parse.js.map +1 -0
  114. package/internal/parse.mjs +32 -0
  115. package/internal/parse.mjs.map +1 -0
  116. package/internal/request-options.d.mts +75 -0
  117. package/internal/request-options.d.mts.map +1 -0
  118. package/internal/request-options.d.ts +75 -0
  119. package/internal/request-options.d.ts.map +1 -0
  120. package/internal/request-options.js +14 -0
  121. package/internal/request-options.js.map +1 -0
  122. package/internal/request-options.mjs +10 -0
  123. package/internal/request-options.mjs.map +1 -0
  124. package/internal/shim-types.d.mts +17 -0
  125. package/internal/shim-types.d.mts.map +1 -0
  126. package/internal/shim-types.d.ts +17 -0
  127. package/internal/shim-types.d.ts.map +1 -0
  128. package/internal/shim-types.js +4 -0
  129. package/internal/shim-types.js.map +1 -0
  130. package/internal/shim-types.mjs +3 -0
  131. package/internal/shim-types.mjs.map +1 -0
  132. package/internal/shims.d.mts +20 -0
  133. package/internal/shims.d.mts.map +1 -0
  134. package/internal/shims.d.ts +20 -0
  135. package/internal/shims.d.ts.map +1 -0
  136. package/internal/shims.js +92 -0
  137. package/internal/shims.js.map +1 -0
  138. package/internal/shims.mjs +85 -0
  139. package/internal/shims.mjs.map +1 -0
  140. package/internal/to-file.d.mts +45 -0
  141. package/internal/to-file.d.mts.map +1 -0
  142. package/internal/to-file.d.ts +45 -0
  143. package/internal/to-file.d.ts.map +1 -0
  144. package/internal/to-file.js +91 -0
  145. package/internal/to-file.js.map +1 -0
  146. package/internal/to-file.mjs +88 -0
  147. package/internal/to-file.mjs.map +1 -0
  148. package/internal/tslib.js +81 -0
  149. package/internal/tslib.mjs +17 -0
  150. package/internal/types.d.mts +69 -0
  151. package/internal/types.d.mts.map +1 -0
  152. package/internal/types.d.ts +69 -0
  153. package/internal/types.d.ts.map +1 -0
  154. package/internal/types.js +4 -0
  155. package/internal/types.js.map +1 -0
  156. package/internal/types.mjs +3 -0
  157. package/internal/types.mjs.map +1 -0
  158. package/internal/uploads.d.mts +42 -0
  159. package/internal/uploads.d.mts.map +1 -0
  160. package/internal/uploads.d.ts +42 -0
  161. package/internal/uploads.d.ts.map +1 -0
  162. package/internal/uploads.js +141 -0
  163. package/internal/uploads.js.map +1 -0
  164. package/internal/uploads.mjs +131 -0
  165. package/internal/uploads.mjs.map +1 -0
  166. package/internal/utils/base64.d.mts +3 -0
  167. package/internal/utils/base64.d.mts.map +1 -0
  168. package/internal/utils/base64.d.ts +3 -0
  169. package/internal/utils/base64.d.ts.map +1 -0
  170. package/internal/utils/base64.js +38 -0
  171. package/internal/utils/base64.js.map +1 -0
  172. package/internal/utils/base64.mjs +33 -0
  173. package/internal/utils/base64.mjs.map +1 -0
  174. package/internal/utils/bytes.d.mts +4 -0
  175. package/internal/utils/bytes.d.mts.map +1 -0
  176. package/internal/utils/bytes.d.ts +4 -0
  177. package/internal/utils/bytes.d.ts.map +1 -0
  178. package/internal/utils/bytes.js +31 -0
  179. package/internal/utils/bytes.js.map +1 -0
  180. package/internal/utils/bytes.mjs +26 -0
  181. package/internal/utils/bytes.mjs.map +1 -0
  182. package/internal/utils/env.d.mts +9 -0
  183. package/internal/utils/env.d.mts.map +1 -0
  184. package/internal/utils/env.d.ts +9 -0
  185. package/internal/utils/env.d.ts.map +1 -0
  186. package/internal/utils/env.js +22 -0
  187. package/internal/utils/env.js.map +1 -0
  188. package/internal/utils/env.mjs +18 -0
  189. package/internal/utils/env.mjs.map +1 -0
  190. package/internal/utils/log.d.mts +37 -0
  191. package/internal/utils/log.d.mts.map +1 -0
  192. package/internal/utils/log.d.ts +37 -0
  193. package/internal/utils/log.d.ts.map +1 -0
  194. package/internal/utils/log.js +85 -0
  195. package/internal/utils/log.js.map +1 -0
  196. package/internal/utils/log.mjs +79 -0
  197. package/internal/utils/log.mjs.map +1 -0
  198. package/internal/utils/path.d.mts +15 -0
  199. package/internal/utils/path.d.mts.map +1 -0
  200. package/internal/utils/path.d.ts +15 -0
  201. package/internal/utils/path.d.ts.map +1 -0
  202. package/internal/utils/path.js +79 -0
  203. package/internal/utils/path.js.map +1 -0
  204. package/internal/utils/path.mjs +74 -0
  205. package/internal/utils/path.mjs.map +1 -0
  206. package/internal/utils/sleep.d.mts +2 -0
  207. package/internal/utils/sleep.d.mts.map +1 -0
  208. package/internal/utils/sleep.d.ts +2 -0
  209. package/internal/utils/sleep.d.ts.map +1 -0
  210. package/internal/utils/sleep.js +7 -0
  211. package/internal/utils/sleep.js.map +1 -0
  212. package/internal/utils/sleep.mjs +3 -0
  213. package/internal/utils/sleep.mjs.map +1 -0
  214. package/internal/utils/uuid.d.mts +5 -0
  215. package/internal/utils/uuid.d.mts.map +1 -0
  216. package/internal/utils/uuid.d.ts +5 -0
  217. package/internal/utils/uuid.d.ts.map +1 -0
  218. package/internal/utils/uuid.js +19 -0
  219. package/internal/utils/uuid.js.map +1 -0
  220. package/internal/utils/uuid.mjs +15 -0
  221. package/internal/utils/uuid.mjs.map +1 -0
  222. package/internal/utils/values.d.mts +18 -0
  223. package/internal/utils/values.d.mts.map +1 -0
  224. package/internal/utils/values.d.ts +18 -0
  225. package/internal/utils/values.d.ts.map +1 -0
  226. package/internal/utils/values.js +112 -0
  227. package/internal/utils/values.js.map +1 -0
  228. package/internal/utils/values.mjs +94 -0
  229. package/internal/utils/values.mjs.map +1 -0
  230. package/internal/utils.d.mts +7 -0
  231. package/internal/utils.d.mts.map +1 -0
  232. package/internal/utils.d.ts +7 -0
  233. package/internal/utils.d.ts.map +1 -0
  234. package/internal/utils.js +11 -0
  235. package/internal/utils.js.map +1 -0
  236. package/internal/utils.mjs +8 -0
  237. package/internal/utils.mjs.map +1 -0
  238. package/package.json +147 -0
  239. package/pagination.d.mts +2 -0
  240. package/pagination.d.mts.map +1 -0
  241. package/pagination.d.ts +2 -0
  242. package/pagination.d.ts.map +1 -0
  243. package/pagination.js +6 -0
  244. package/pagination.js.map +1 -0
  245. package/pagination.mjs +2 -0
  246. package/pagination.mjs.map +1 -0
  247. package/resource.d.mts +2 -0
  248. package/resource.d.mts.map +1 -0
  249. package/resource.d.ts +2 -0
  250. package/resource.d.ts.map +1 -0
  251. package/resource.js +6 -0
  252. package/resource.js.map +1 -0
  253. package/resource.mjs +2 -0
  254. package/resource.mjs.map +1 -0
  255. package/resources/health.d.mts +17 -0
  256. package/resources/health.d.mts.map +1 -0
  257. package/resources/health.d.ts +17 -0
  258. package/resources/health.d.ts.map +1 -0
  259. package/resources/health.js +15 -0
  260. package/resources/health.js.map +1 -0
  261. package/resources/health.mjs +11 -0
  262. package/resources/health.mjs.map +1 -0
  263. package/resources/index.d.mts +4 -0
  264. package/resources/index.d.mts.map +1 -0
  265. package/resources/index.d.ts +4 -0
  266. package/resources/index.d.ts.map +1 -0
  267. package/resources/index.js +11 -0
  268. package/resources/index.js.map +1 -0
  269. package/resources/index.mjs +5 -0
  270. package/resources/index.mjs.map +1 -0
  271. package/resources/servers/deployments.d.mts +87 -0
  272. package/resources/servers/deployments.d.mts.map +1 -0
  273. package/resources/servers/deployments.d.ts +87 -0
  274. package/resources/servers/deployments.d.ts.map +1 -0
  275. package/resources/servers/deployments.js +37 -0
  276. package/resources/servers/deployments.js.map +1 -0
  277. package/resources/servers/deployments.mjs +33 -0
  278. package/resources/servers/deployments.mjs.map +1 -0
  279. package/resources/servers/index.d.mts +4 -0
  280. package/resources/servers/index.d.mts.map +1 -0
  281. package/resources/servers/index.d.ts +4 -0
  282. package/resources/servers/index.d.ts.map +1 -0
  283. package/resources/servers/index.js +11 -0
  284. package/resources/servers/index.js.map +1 -0
  285. package/resources/servers/index.mjs +5 -0
  286. package/resources/servers/index.mjs.map +1 -0
  287. package/resources/servers/logs.d.mts +71 -0
  288. package/resources/servers/logs.d.mts.map +1 -0
  289. package/resources/servers/logs.d.ts +71 -0
  290. package/resources/servers/logs.d.ts.map +1 -0
  291. package/resources/servers/logs.js +17 -0
  292. package/resources/servers/logs.js.map +1 -0
  293. package/resources/servers/logs.mjs +13 -0
  294. package/resources/servers/logs.mjs.map +1 -0
  295. package/resources/servers/servers.d.mts +87 -0
  296. package/resources/servers/servers.d.mts.map +1 -0
  297. package/resources/servers/servers.d.ts +87 -0
  298. package/resources/servers/servers.d.ts.map +1 -0
  299. package/resources/servers/servers.js +35 -0
  300. package/resources/servers/servers.js.map +1 -0
  301. package/resources/servers/servers.mjs +30 -0
  302. package/resources/servers/servers.mjs.map +1 -0
  303. package/resources/servers.d.mts +2 -0
  304. package/resources/servers.d.mts.map +1 -0
  305. package/resources/servers.d.ts +2 -0
  306. package/resources/servers.d.ts.map +1 -0
  307. package/resources/servers.js +6 -0
  308. package/resources/servers.js.map +1 -0
  309. package/resources/servers.mjs +3 -0
  310. package/resources/servers.mjs.map +1 -0
  311. package/resources/uplink.d.mts +17 -0
  312. package/resources/uplink.d.mts.map +1 -0
  313. package/resources/uplink.d.ts +17 -0
  314. package/resources/uplink.d.ts.map +1 -0
  315. package/resources/uplink.js +15 -0
  316. package/resources/uplink.js.map +1 -0
  317. package/resources/uplink.mjs +11 -0
  318. package/resources/uplink.mjs.map +1 -0
  319. package/resources.d.mts +2 -0
  320. package/resources.d.mts.map +1 -0
  321. package/resources.d.ts +2 -0
  322. package/resources.d.ts.map +1 -0
  323. package/resources.js +5 -0
  324. package/resources.js.map +1 -0
  325. package/resources.mjs +2 -0
  326. package/resources.mjs.map +1 -0
  327. package/src/api-promise.ts +2 -0
  328. package/src/client.ts +772 -0
  329. package/src/core/README.md +3 -0
  330. package/src/core/api-promise.ts +92 -0
  331. package/src/core/error.ts +130 -0
  332. package/src/core/pagination.ts +167 -0
  333. package/src/core/resource.ts +11 -0
  334. package/src/core/uploads.ts +2 -0
  335. package/src/error.ts +2 -0
  336. package/src/index.ts +23 -0
  337. package/src/internal/README.md +3 -0
  338. package/src/internal/builtin-types.ts +93 -0
  339. package/src/internal/detect-platform.ts +196 -0
  340. package/src/internal/errors.ts +33 -0
  341. package/src/internal/headers.ts +97 -0
  342. package/src/internal/parse.ts +50 -0
  343. package/src/internal/request-options.ts +91 -0
  344. package/src/internal/shim-types.ts +26 -0
  345. package/src/internal/shims.ts +107 -0
  346. package/src/internal/to-file.ts +154 -0
  347. package/src/internal/types.ts +95 -0
  348. package/src/internal/uploads.ts +187 -0
  349. package/src/internal/utils/base64.ts +40 -0
  350. package/src/internal/utils/bytes.ts +32 -0
  351. package/src/internal/utils/env.ts +18 -0
  352. package/src/internal/utils/log.ts +126 -0
  353. package/src/internal/utils/path.ts +88 -0
  354. package/src/internal/utils/sleep.ts +3 -0
  355. package/src/internal/utils/uuid.ts +17 -0
  356. package/src/internal/utils/values.ts +105 -0
  357. package/src/internal/utils.ts +8 -0
  358. package/src/lib/.keep +4 -0
  359. package/src/pagination.ts +2 -0
  360. package/src/resource.ts +2 -0
  361. package/src/resources/health.ts +24 -0
  362. package/src/resources/index.ts +11 -0
  363. package/src/resources/servers/deployments.ts +157 -0
  364. package/src/resources/servers/index.ts +20 -0
  365. package/src/resources/servers/logs.ts +106 -0
  366. package/src/resources/servers/servers.ts +157 -0
  367. package/src/resources/servers.ts +3 -0
  368. package/src/resources/uplink.ts +24 -0
  369. package/src/resources.ts +1 -0
  370. package/src/tsconfig.json +11 -0
  371. package/src/uploads.ts +2 -0
  372. package/src/version.ts +1 -0
  373. package/uploads.d.mts +2 -0
  374. package/uploads.d.mts.map +1 -0
  375. package/uploads.d.ts +2 -0
  376. package/uploads.d.ts.map +1 -0
  377. package/uploads.js +6 -0
  378. package/uploads.js.map +1 -0
  379. package/uploads.mjs +2 -0
  380. package/uploads.mjs.map +1 -0
  381. package/version.d.mts +2 -0
  382. package/version.d.mts.map +1 -0
  383. package/version.d.ts +2 -0
  384. package/version.d.ts.map +1 -0
  385. package/version.js +5 -0
  386. package/version.js.map +1 -0
  387. package/version.mjs +2 -0
  388. package/version.mjs.map +1 -0
@@ -0,0 +1,88 @@
1
+ import { SmitheryError } from '../../core/error';
2
+
3
+ /**
4
+ * Percent-encode everything that isn't safe to have in a path without encoding safe chars.
5
+ *
6
+ * Taken from https://datatracker.ietf.org/doc/html/rfc3986#section-3.3:
7
+ * > unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
8
+ * > sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
9
+ * > pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
10
+ */
11
+ export function encodeURIPath(str: string) {
12
+ return str.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g, encodeURIComponent);
13
+ }
14
+
15
+ const EMPTY = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.create(null));
16
+
17
+ export const createPathTagFunction = (pathEncoder = encodeURIPath) =>
18
+ function path(statics: readonly string[], ...params: readonly unknown[]): string {
19
+ // If there are no params, no processing is needed.
20
+ if (statics.length === 1) return statics[0]!;
21
+
22
+ let postPath = false;
23
+ const invalidSegments = [];
24
+ const path = statics.reduce((previousValue, currentValue, index) => {
25
+ if (/[?#]/.test(currentValue)) {
26
+ postPath = true;
27
+ }
28
+ const value = params[index];
29
+ let encoded = (postPath ? encodeURIComponent : pathEncoder)('' + value);
30
+ if (
31
+ index !== params.length &&
32
+ (value == null ||
33
+ (typeof value === 'object' &&
34
+ // handle values from other realms
35
+ value.toString ===
36
+ Object.getPrototypeOf(Object.getPrototypeOf((value as any).hasOwnProperty ?? EMPTY) ?? EMPTY)
37
+ ?.toString))
38
+ ) {
39
+ encoded = value + '';
40
+ invalidSegments.push({
41
+ start: previousValue.length + currentValue.length,
42
+ length: encoded.length,
43
+ error: `Value of type ${Object.prototype.toString
44
+ .call(value)
45
+ .slice(8, -1)} is not a valid path parameter`,
46
+ });
47
+ }
48
+ return previousValue + currentValue + (index === params.length ? '' : encoded);
49
+ }, '');
50
+
51
+ const pathOnly = path.split(/[?#]/, 1)[0]!;
52
+ const invalidSegmentPattern = /(?<=^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi;
53
+ let match;
54
+
55
+ // Find all invalid segments
56
+ while ((match = invalidSegmentPattern.exec(pathOnly)) !== null) {
57
+ invalidSegments.push({
58
+ start: match.index,
59
+ length: match[0].length,
60
+ error: `Value "${match[0]}" can\'t be safely passed as a path parameter`,
61
+ });
62
+ }
63
+
64
+ invalidSegments.sort((a, b) => a.start - b.start);
65
+
66
+ if (invalidSegments.length > 0) {
67
+ let lastEnd = 0;
68
+ const underline = invalidSegments.reduce((acc, segment) => {
69
+ const spaces = ' '.repeat(segment.start - lastEnd);
70
+ const arrows = '^'.repeat(segment.length);
71
+ lastEnd = segment.start + segment.length;
72
+ return acc + spaces + arrows;
73
+ }, '');
74
+
75
+ throw new SmitheryError(
76
+ `Path parameters result in path with invalid segments:\n${invalidSegments
77
+ .map((e) => e.error)
78
+ .join('\n')}\n${path}\n${underline}`,
79
+ );
80
+ }
81
+
82
+ return path;
83
+ };
84
+
85
+ /**
86
+ * URI-encodes path params and ensures no unsafe /./ or /../ path segments are introduced.
87
+ */
88
+ export const path = /* @__PURE__ */ createPathTagFunction(encodeURIPath);
@@ -0,0 +1,3 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export const sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));
@@ -0,0 +1,17 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ /**
4
+ * https://stackoverflow.com/a/2117523
5
+ */
6
+ export let uuid4 = function () {
7
+ const { crypto } = globalThis as any;
8
+ if (crypto?.randomUUID) {
9
+ uuid4 = crypto.randomUUID.bind(crypto);
10
+ return crypto.randomUUID();
11
+ }
12
+ const u8 = new Uint8Array(1);
13
+ const randomByte = crypto ? () => crypto.getRandomValues(u8)[0]! : () => (Math.random() * 0xff) & 0xff;
14
+ return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) =>
15
+ (+c ^ (randomByte() & (15 >> (+c / 4)))).toString(16),
16
+ );
17
+ };
@@ -0,0 +1,105 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { SmitheryError } from '../../core/error';
4
+
5
+ // https://url.spec.whatwg.org/#url-scheme-string
6
+ const startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;
7
+
8
+ export const isAbsoluteURL = (url: string): boolean => {
9
+ return startsWithSchemeRegexp.test(url);
10
+ };
11
+
12
+ export let isArray = (val: unknown): val is unknown[] => ((isArray = Array.isArray), isArray(val));
13
+ export let isReadonlyArray = isArray as (val: unknown) => val is readonly unknown[];
14
+
15
+ /** Returns an object if the given value isn't an object, otherwise returns as-is */
16
+ export function maybeObj(x: unknown): object {
17
+ if (typeof x !== 'object') {
18
+ return {};
19
+ }
20
+
21
+ return x ?? {};
22
+ }
23
+
24
+ // https://stackoverflow.com/a/34491287
25
+ export function isEmptyObj(obj: Object | null | undefined): boolean {
26
+ if (!obj) return true;
27
+ for (const _k in obj) return false;
28
+ return true;
29
+ }
30
+
31
+ // https://eslint.org/docs/latest/rules/no-prototype-builtins
32
+ export function hasOwn<T extends object = object>(obj: T, key: PropertyKey): key is keyof T {
33
+ return Object.prototype.hasOwnProperty.call(obj, key);
34
+ }
35
+
36
+ export function isObj(obj: unknown): obj is Record<string, unknown> {
37
+ return obj != null && typeof obj === 'object' && !Array.isArray(obj);
38
+ }
39
+
40
+ export const ensurePresent = <T>(value: T | null | undefined): T => {
41
+ if (value == null) {
42
+ throw new SmitheryError(`Expected a value to be given but received ${value} instead.`);
43
+ }
44
+
45
+ return value;
46
+ };
47
+
48
+ export const validatePositiveInteger = (name: string, n: unknown): number => {
49
+ if (typeof n !== 'number' || !Number.isInteger(n)) {
50
+ throw new SmitheryError(`${name} must be an integer`);
51
+ }
52
+ if (n < 0) {
53
+ throw new SmitheryError(`${name} must be a positive integer`);
54
+ }
55
+ return n;
56
+ };
57
+
58
+ export const coerceInteger = (value: unknown): number => {
59
+ if (typeof value === 'number') return Math.round(value);
60
+ if (typeof value === 'string') return parseInt(value, 10);
61
+
62
+ throw new SmitheryError(`Could not coerce ${value} (type: ${typeof value}) into a number`);
63
+ };
64
+
65
+ export const coerceFloat = (value: unknown): number => {
66
+ if (typeof value === 'number') return value;
67
+ if (typeof value === 'string') return parseFloat(value);
68
+
69
+ throw new SmitheryError(`Could not coerce ${value} (type: ${typeof value}) into a number`);
70
+ };
71
+
72
+ export const coerceBoolean = (value: unknown): boolean => {
73
+ if (typeof value === 'boolean') return value;
74
+ if (typeof value === 'string') return value === 'true';
75
+ return Boolean(value);
76
+ };
77
+
78
+ export const maybeCoerceInteger = (value: unknown): number | undefined => {
79
+ if (value == null) {
80
+ return undefined;
81
+ }
82
+ return coerceInteger(value);
83
+ };
84
+
85
+ export const maybeCoerceFloat = (value: unknown): number | undefined => {
86
+ if (value == null) {
87
+ return undefined;
88
+ }
89
+ return coerceFloat(value);
90
+ };
91
+
92
+ export const maybeCoerceBoolean = (value: unknown): boolean | undefined => {
93
+ if (value == null) {
94
+ return undefined;
95
+ }
96
+ return coerceBoolean(value);
97
+ };
98
+
99
+ export const safeJSON = (text: string) => {
100
+ try {
101
+ return JSON.parse(text);
102
+ } catch (err) {
103
+ return undefined;
104
+ }
105
+ };
@@ -0,0 +1,8 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export * from './utils/values';
4
+ export * from './utils/base64';
5
+ export * from './utils/env';
6
+ export * from './utils/log';
7
+ export * from './utils/uuid';
8
+ export * from './utils/sleep';
package/src/lib/.keep ADDED
@@ -0,0 +1,4 @@
1
+ File generated from our OpenAPI spec by Stainless.
2
+
3
+ This directory can be used to store custom files to expand the SDK.
4
+ It is ignored by Stainless code generation and its content (other than this keep file) won't be touched.
@@ -0,0 +1,2 @@
1
+ /** @deprecated Import from ./core/pagination instead */
2
+ export * from './core/pagination';
@@ -0,0 +1,2 @@
1
+ /** @deprecated Import from ./core/resource instead */
2
+ export * from './core/resource';
@@ -0,0 +1,24 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../core/resource';
4
+ import { APIPromise } from '../core/api-promise';
5
+ import { RequestOptions } from '../internal/request-options';
6
+
7
+ export class Health extends APIResource {
8
+ /**
9
+ * Check if the service is running
10
+ */
11
+ check(options?: RequestOptions): APIPromise<HealthCheckResponse> {
12
+ return this._client.get('/health', options);
13
+ }
14
+ }
15
+
16
+ export interface HealthCheckResponse {
17
+ status: string;
18
+
19
+ timestamp: string;
20
+ }
21
+
22
+ export declare namespace Health {
23
+ export { type HealthCheckResponse as HealthCheckResponse };
24
+ }
@@ -0,0 +1,11 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export { Health, type HealthCheckResponse } from './health';
4
+ export {
5
+ Servers,
6
+ type ServerRetrieveResponse,
7
+ type ServerListResponse,
8
+ type ServerListParams,
9
+ type ServerListResponsesSmitheryPage,
10
+ } from './servers/servers';
11
+ export { Uplink, type UplinkCreateTokenResponse } from './uplink';
@@ -0,0 +1,157 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../../core/resource';
4
+ import { APIPromise } from '../../core/api-promise';
5
+ import { RequestOptions } from '../../internal/request-options';
6
+ import { multipartFormRequestOptions } from '../../internal/uploads';
7
+ import { path } from '../../internal/utils/path';
8
+
9
+ export class Deployments extends APIResource {
10
+ /**
11
+ * Get deployment status
12
+ */
13
+ retrieve(
14
+ id: string,
15
+ params: DeploymentRetrieveParams,
16
+ options?: RequestOptions,
17
+ ): APIPromise<DeploymentRetrieveResponse> {
18
+ const { qualifiedName } = params;
19
+ return this._client.get(path`/servers/${qualifiedName}/deployments/${id}`, options);
20
+ }
21
+
22
+ /**
23
+ * List deployments for a server
24
+ */
25
+ list(qualifiedName: string, options?: RequestOptions): APIPromise<DeploymentListResponse> {
26
+ return this._client.get(path`/servers/${qualifiedName}/deployments`, options);
27
+ }
28
+
29
+ /**
30
+ * Upload and deploy an MCP server (hosted or external)
31
+ */
32
+ deploy(
33
+ qualifiedName: string,
34
+ body: DeploymentDeployParams,
35
+ options?: RequestOptions,
36
+ ): APIPromise<DeploymentDeployResponse> {
37
+ return this._client.put(
38
+ path`/servers/${qualifiedName}/deployments`,
39
+ multipartFormRequestOptions({ body, ...options }, this._client),
40
+ );
41
+ }
42
+
43
+ /**
44
+ * Use id='latest' to resume the most recent deployment
45
+ */
46
+ resume(
47
+ id: string,
48
+ params: DeploymentResumeParams,
49
+ options?: RequestOptions,
50
+ ): APIPromise<DeploymentResumeResponse> {
51
+ const { qualifiedName } = params;
52
+ return this._client.post(path`/servers/${qualifiedName}/deployments/${id}/resume`, options);
53
+ }
54
+ }
55
+
56
+ export interface DeploymentRetrieveResponse {
57
+ id: string;
58
+
59
+ createdAt: string;
60
+
61
+ status: string;
62
+
63
+ updatedAt: string;
64
+
65
+ logs?: Array<DeploymentRetrieveResponse.Log>;
66
+
67
+ mcpUrl?: string;
68
+ }
69
+
70
+ export namespace DeploymentRetrieveResponse {
71
+ export interface Log {
72
+ level: string;
73
+
74
+ message: string;
75
+
76
+ stage: 'deploy' | 'scan' | 'metadata' | 'publish';
77
+
78
+ timestamp: string;
79
+
80
+ error?: Log.Error;
81
+ }
82
+
83
+ export namespace Log {
84
+ export interface Error {
85
+ message?: string;
86
+ }
87
+ }
88
+ }
89
+
90
+ export type DeploymentListResponse = Array<DeploymentListResponse.DeploymentListResponseItem>;
91
+
92
+ export namespace DeploymentListResponse {
93
+ export interface DeploymentListResponseItem {
94
+ id: string;
95
+
96
+ createdAt: string;
97
+
98
+ status: string;
99
+
100
+ updatedAt: string;
101
+
102
+ mcpUrl?: string;
103
+ }
104
+ }
105
+
106
+ export interface DeploymentDeployResponse {
107
+ deploymentId: string;
108
+
109
+ mcpUrl: string;
110
+
111
+ status: string;
112
+
113
+ warnings?: Array<string>;
114
+ }
115
+
116
+ export interface DeploymentResumeResponse {
117
+ deploymentId: string;
118
+
119
+ status: string;
120
+ }
121
+
122
+ export interface DeploymentRetrieveParams {
123
+ qualifiedName: string;
124
+ }
125
+
126
+ export interface DeploymentDeployParams {
127
+ /**
128
+ * JSON string of DeployPayload
129
+ */
130
+ payload: string;
131
+
132
+ /**
133
+ * JavaScript module content (for hosted deployments)
134
+ */
135
+ module?: string;
136
+
137
+ /**
138
+ * Source map content
139
+ */
140
+ sourcemap?: string;
141
+ }
142
+
143
+ export interface DeploymentResumeParams {
144
+ qualifiedName: string;
145
+ }
146
+
147
+ export declare namespace Deployments {
148
+ export {
149
+ type DeploymentRetrieveResponse as DeploymentRetrieveResponse,
150
+ type DeploymentListResponse as DeploymentListResponse,
151
+ type DeploymentDeployResponse as DeploymentDeployResponse,
152
+ type DeploymentResumeResponse as DeploymentResumeResponse,
153
+ type DeploymentRetrieveParams as DeploymentRetrieveParams,
154
+ type DeploymentDeployParams as DeploymentDeployParams,
155
+ type DeploymentResumeParams as DeploymentResumeParams,
156
+ };
157
+ }
@@ -0,0 +1,20 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export {
4
+ Deployments,
5
+ type DeploymentRetrieveResponse,
6
+ type DeploymentListResponse,
7
+ type DeploymentDeployResponse,
8
+ type DeploymentResumeResponse,
9
+ type DeploymentRetrieveParams,
10
+ type DeploymentDeployParams,
11
+ type DeploymentResumeParams,
12
+ } from './deployments';
13
+ export { Logs, type LogListResponse, type LogListParams } from './logs';
14
+ export {
15
+ Servers,
16
+ type ServerRetrieveResponse,
17
+ type ServerListResponse,
18
+ type ServerListParams,
19
+ type ServerListResponsesSmitheryPage,
20
+ } from './servers';
@@ -0,0 +1,106 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../../core/resource';
4
+ import { APIPromise } from '../../core/api-promise';
5
+ import { RequestOptions } from '../../internal/request-options';
6
+ import { path } from '../../internal/utils/path';
7
+
8
+ export class Logs extends APIResource {
9
+ /**
10
+ * Fetch recent runtime logs for the server's deployed Worker, grouped by
11
+ * invocation (requires ownership).
12
+ */
13
+ list(
14
+ qualifiedName: string,
15
+ query: LogListParams | null | undefined = {},
16
+ options?: RequestOptions,
17
+ ): APIPromise<LogListResponse> {
18
+ return this._client.get(path`/servers/${qualifiedName}/logs`, { query, ...options });
19
+ }
20
+ }
21
+
22
+ export interface LogListResponse {
23
+ invocations: Array<LogListResponse.Invocation>;
24
+
25
+ /**
26
+ * Total invocations matching query
27
+ */
28
+ total: number;
29
+ }
30
+
31
+ export namespace LogListResponse {
32
+ export interface Invocation {
33
+ id: string;
34
+
35
+ duration: Invocation.Duration;
36
+
37
+ exceptions: Array<Invocation.Exception>;
38
+
39
+ logs: Array<Invocation.Log>;
40
+
41
+ request: Invocation.Request;
42
+
43
+ response: Invocation.Response;
44
+
45
+ timestamp: string;
46
+ }
47
+
48
+ export namespace Invocation {
49
+ export interface Duration {
50
+ cpuMs: number;
51
+
52
+ wallMs: number;
53
+ }
54
+
55
+ export interface Exception {
56
+ message: string;
57
+
58
+ name: string;
59
+
60
+ timestamp: string;
61
+
62
+ stack?: string;
63
+ }
64
+
65
+ export interface Log {
66
+ level: string;
67
+
68
+ message: string;
69
+
70
+ timestamp: string;
71
+ }
72
+
73
+ export interface Request {
74
+ method: string;
75
+
76
+ url: string;
77
+ }
78
+
79
+ export interface Response {
80
+ outcome: string;
81
+
82
+ status: number;
83
+ }
84
+ }
85
+ }
86
+
87
+ export interface LogListParams {
88
+ /**
89
+ * Start of time range (ISO 8601).
90
+ */
91
+ from?: string;
92
+
93
+ /**
94
+ * Max invocations to return. Defaults to 50.
95
+ */
96
+ limit?: number;
97
+
98
+ /**
99
+ * End of time range (ISO 8601).
100
+ */
101
+ to?: string;
102
+ }
103
+
104
+ export declare namespace Logs {
105
+ export { type LogListResponse as LogListResponse, type LogListParams as LogListParams };
106
+ }