@sync.so/mcp-server 0.1.3 → 0.2.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 (261) hide show
  1. package/README.md +261 -86
  2. package/deploy/generation-status/app.html.gz +0 -0
  3. package/deploy/generation-status/release.json +6 -0
  4. package/dist/abort-signals.d.ts +6 -0
  5. package/dist/abort-signals.d.ts.map +1 -0
  6. package/dist/abort-signals.js +23 -0
  7. package/dist/account-features.d.ts +7 -0
  8. package/dist/account-features.d.ts.map +1 -0
  9. package/dist/account-features.js +48 -0
  10. package/dist/app-upload-relay.d.ts +13 -0
  11. package/dist/app-upload-relay.d.ts.map +1 -0
  12. package/dist/app-upload-relay.js +136 -0
  13. package/dist/asset-thumbnail.d.ts +3 -0
  14. package/dist/asset-thumbnail.d.ts.map +1 -0
  15. package/dist/asset-thumbnail.js +2 -0
  16. package/dist/auth/async-context.d.ts +5 -0
  17. package/dist/auth/async-context.d.ts.map +1 -0
  18. package/dist/auth/async-context.js +14 -0
  19. package/dist/auth/bearer-auth.d.ts +16 -0
  20. package/dist/auth/bearer-auth.d.ts.map +1 -0
  21. package/dist/auth/bearer-auth.js +55 -0
  22. package/dist/auth/client-credentials.d.ts +13 -0
  23. package/dist/auth/client-credentials.d.ts.map +1 -0
  24. package/dist/auth/client-credentials.js +67 -0
  25. package/dist/auth/device-auth.d.ts.map +1 -1
  26. package/dist/auth/device-auth.js +3 -2
  27. package/dist/auth/fixture-cleanup.d.ts +4 -0
  28. package/dist/auth/fixture-cleanup.d.ts.map +1 -0
  29. package/dist/auth/fixture-cleanup.js +9 -0
  30. package/dist/auth/index.d.ts +2 -0
  31. package/dist/auth/index.d.ts.map +1 -1
  32. package/dist/auth/index.js +2 -0
  33. package/dist/auth/oauth-diagnostics.d.ts +11 -0
  34. package/dist/auth/oauth-diagnostics.d.ts.map +1 -0
  35. package/dist/auth/oauth-diagnostics.js +78 -0
  36. package/dist/auth/oauth-provider.d.ts +16 -0
  37. package/dist/auth/oauth-provider.d.ts.map +1 -0
  38. package/dist/auth/oauth-provider.js +107 -0
  39. package/dist/auth/resource-metadata.d.ts +2 -0
  40. package/dist/auth/resource-metadata.d.ts.map +1 -0
  41. package/dist/auth/resource-metadata.js +3 -0
  42. package/dist/auth/token-verification.d.ts +11 -0
  43. package/dist/auth/token-verification.d.ts.map +1 -0
  44. package/dist/auth/token-verification.js +99 -0
  45. package/dist/auth/verification-cache.d.ts +8 -0
  46. package/dist/auth/verification-cache.d.ts.map +1 -0
  47. package/dist/auth/verification-cache.js +111 -0
  48. package/dist/chatgpt-analytics.d.ts +22 -0
  49. package/dist/chatgpt-analytics.d.ts.map +1 -0
  50. package/dist/chatgpt-analytics.js +172 -0
  51. package/dist/chatgpt-app.d.ts +15 -0
  52. package/dist/chatgpt-app.d.ts.map +1 -0
  53. package/dist/chatgpt-app.js +133 -0
  54. package/dist/chatgpt-release.d.ts +12 -0
  55. package/dist/chatgpt-release.d.ts.map +1 -0
  56. package/dist/chatgpt-release.js +30 -0
  57. package/dist/cli.js +30 -16
  58. package/dist/client-profile.d.ts +10 -0
  59. package/dist/client-profile.d.ts.map +1 -0
  60. package/dist/client-profile.js +45 -0
  61. package/dist/config.d.ts +17 -0
  62. package/dist/config.d.ts.map +1 -1
  63. package/dist/config.js +52 -0
  64. package/dist/generation-status-html.d.ts +2 -0
  65. package/dist/generation-status-html.d.ts.map +1 -0
  66. package/dist/generation-status-html.js +26 -0
  67. package/dist/generation-status.d.ts +6 -0
  68. package/dist/generation-status.d.ts.map +1 -0
  69. package/dist/generation-status.js +37 -0
  70. package/dist/http-client.d.ts +45 -1
  71. package/dist/http-client.d.ts.map +1 -1
  72. package/dist/http-client.js +171 -34
  73. package/dist/http-server.d.ts +53 -0
  74. package/dist/http-server.d.ts.map +1 -0
  75. package/dist/http-server.js +753 -0
  76. package/dist/http-session.d.ts +18 -0
  77. package/dist/http-session.d.ts.map +1 -0
  78. package/dist/http-session.js +189 -0
  79. package/dist/index.d.ts +4 -3
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +3 -2
  82. package/dist/oauth-response.d.ts +3 -0
  83. package/dist/oauth-response.d.ts.map +1 -0
  84. package/dist/oauth-response.js +30 -0
  85. package/dist/openapi/index.d.ts +2 -2
  86. package/dist/openapi/index.d.ts.map +1 -1
  87. package/dist/openapi/index.js +1 -1
  88. package/dist/openapi/parser.d.ts +2 -0
  89. package/dist/openapi/parser.d.ts.map +1 -1
  90. package/dist/openapi/parser.js +41 -1
  91. package/dist/openapi/types.d.ts +3 -0
  92. package/dist/openapi/types.d.ts.map +1 -1
  93. package/dist/organization-selection.d.ts +61 -0
  94. package/dist/organization-selection.d.ts.map +1 -0
  95. package/dist/organization-selection.js +142 -0
  96. package/dist/rate-limits.d.ts +13 -0
  97. package/dist/rate-limits.d.ts.map +1 -0
  98. package/dist/rate-limits.js +67 -0
  99. package/dist/revision.d.ts +6 -0
  100. package/dist/revision.d.ts.map +1 -0
  101. package/dist/revision.js +17 -0
  102. package/dist/runtime-diagnostics.d.ts +32 -0
  103. package/dist/runtime-diagnostics.d.ts.map +1 -0
  104. package/dist/runtime-diagnostics.js +58 -0
  105. package/dist/server.d.ts +23 -2
  106. package/dist/server.d.ts.map +1 -1
  107. package/dist/server.js +893 -32
  108. package/dist/session-registry.d.ts +54 -0
  109. package/dist/session-registry.d.ts.map +1 -0
  110. package/dist/session-registry.js +202 -0
  111. package/dist/session-telemetry.d.ts +13 -0
  112. package/dist/session-telemetry.d.ts.map +1 -0
  113. package/dist/session-telemetry.js +87 -0
  114. package/dist/spend-confirmation.d.ts +21 -0
  115. package/dist/spend-confirmation.d.ts.map +1 -0
  116. package/dist/spend-confirmation.js +105 -0
  117. package/dist/tool-analytics-context.d.ts +11 -0
  118. package/dist/tool-analytics-context.d.ts.map +1 -0
  119. package/dist/tool-analytics-context.js +8 -0
  120. package/dist/tool-names.d.ts +35 -0
  121. package/dist/tool-names.d.ts.map +1 -0
  122. package/dist/tool-names.js +133 -0
  123. package/dist/tools/account-context.d.ts +5 -0
  124. package/dist/tools/account-context.d.ts.map +1 -0
  125. package/dist/tools/account-context.js +131 -0
  126. package/dist/tools/account-management.d.ts +4 -0
  127. package/dist/tools/account-management.d.ts.map +1 -0
  128. package/dist/tools/account-management.js +111 -0
  129. package/dist/tools/app-tools.d.ts +31 -0
  130. package/dist/tools/app-tools.d.ts.map +1 -0
  131. package/dist/tools/app-tools.js +350 -0
  132. package/dist/tools/asset-analysis.d.ts +4 -0
  133. package/dist/tools/asset-analysis.d.ts.map +1 -0
  134. package/dist/tools/asset-analysis.js +172 -0
  135. package/dist/tools/asset-creators.d.ts +4 -0
  136. package/dist/tools/asset-creators.d.ts.map +1 -0
  137. package/dist/tools/asset-creators.js +38 -0
  138. package/dist/tools/audio-trim.d.ts +6 -0
  139. package/dist/tools/audio-trim.d.ts.map +1 -0
  140. package/dist/tools/audio-trim.js +79 -0
  141. package/dist/tools/batch-results.d.ts +16 -0
  142. package/dist/tools/batch-results.d.ts.map +1 -0
  143. package/dist/tools/batch-results.js +103 -0
  144. package/dist/tools/batches.d.ts +28 -0
  145. package/dist/tools/batches.d.ts.map +1 -0
  146. package/dist/tools/batches.js +293 -0
  147. package/dist/tools/dialogue.d.ts +6 -0
  148. package/dist/tools/dialogue.d.ts.map +1 -0
  149. package/dist/tools/dialogue.js +309 -0
  150. package/dist/tools/estimate-duration.d.ts +35 -0
  151. package/dist/tools/estimate-duration.d.ts.map +1 -0
  152. package/dist/tools/estimate-duration.js +66 -0
  153. package/dist/tools/feedback.d.ts +14 -0
  154. package/dist/tools/feedback.d.ts.map +1 -0
  155. package/dist/tools/feedback.js +72 -0
  156. package/dist/tools/generated-adapters.d.ts +25 -0
  157. package/dist/tools/generated-adapters.d.ts.map +1 -0
  158. package/dist/tools/generated-adapters.js +143 -0
  159. package/dist/tools/generation-context.d.ts +14 -0
  160. package/dist/tools/generation-context.d.ts.map +1 -0
  161. package/dist/tools/generation-context.js +39 -0
  162. package/dist/tools/generation-continuation.d.ts +4 -0
  163. package/dist/tools/generation-continuation.d.ts.map +1 -0
  164. package/dist/tools/generation-continuation.js +124 -0
  165. package/dist/tools/generation-costs.d.ts +6 -0
  166. package/dist/tools/generation-costs.d.ts.map +1 -0
  167. package/dist/tools/generation-costs.js +67 -0
  168. package/dist/tools/generation-output.d.ts +3 -0
  169. package/dist/tools/generation-output.d.ts.map +1 -0
  170. package/dist/tools/generation-output.js +39 -0
  171. package/dist/tools/generator.d.ts +35 -2
  172. package/dist/tools/generator.d.ts.map +1 -1
  173. package/dist/tools/generator.js +127 -9
  174. package/dist/tools/job-status.d.ts +35 -0
  175. package/dist/tools/job-status.d.ts.map +1 -0
  176. package/dist/tools/job-status.js +92 -0
  177. package/dist/tools/job-wait.d.ts +41 -0
  178. package/dist/tools/job-wait.d.ts.map +1 -0
  179. package/dist/tools/job-wait.js +84 -0
  180. package/dist/tools/jobs.d.ts +3 -0
  181. package/dist/tools/jobs.d.ts.map +1 -0
  182. package/dist/tools/jobs.js +210 -0
  183. package/dist/tools/media-upload.d.ts +27 -0
  184. package/dist/tools/media-upload.d.ts.map +1 -0
  185. package/dist/tools/media-upload.js +247 -0
  186. package/dist/tools/model-options.d.ts +36 -0
  187. package/dist/tools/model-options.d.ts.map +1 -0
  188. package/dist/tools/model-options.js +48 -0
  189. package/dist/tools/organization-choice.d.ts +9 -0
  190. package/dist/tools/organization-choice.d.ts.map +1 -0
  191. package/dist/tools/organization-choice.js +136 -0
  192. package/dist/tools/organizations.d.ts +56 -0
  193. package/dist/tools/organizations.d.ts.map +1 -0
  194. package/dist/tools/organizations.js +235 -0
  195. package/dist/tools/output-schemas.d.ts +54 -0
  196. package/dist/tools/output-schemas.d.ts.map +1 -0
  197. package/dist/tools/output-schemas.js +58 -0
  198. package/dist/tools/overrides.d.ts +3 -0
  199. package/dist/tools/overrides.d.ts.map +1 -1
  200. package/dist/tools/overrides.js +113 -15
  201. package/dist/tools/playback-metadata.d.ts +4 -0
  202. package/dist/tools/playback-metadata.d.ts.map +1 -0
  203. package/dist/tools/playback-metadata.js +51 -0
  204. package/dist/tools/project-destination.d.ts +13 -0
  205. package/dist/tools/project-destination.d.ts.map +1 -0
  206. package/dist/tools/project-destination.js +45 -0
  207. package/dist/tools/project-history.d.ts +6 -0
  208. package/dist/tools/project-history.d.ts.map +1 -0
  209. package/dist/tools/project-history.js +45 -0
  210. package/dist/tools/project-intent.d.ts +8 -0
  211. package/dist/tools/project-intent.d.ts.map +1 -0
  212. package/dist/tools/project-intent.js +87 -0
  213. package/dist/tools/running-submissions.d.ts +7 -0
  214. package/dist/tools/running-submissions.d.ts.map +1 -0
  215. package/dist/tools/running-submissions.js +91 -0
  216. package/dist/tools/speech.d.ts +6 -0
  217. package/dist/tools/speech.d.ts.map +1 -0
  218. package/dist/tools/speech.js +116 -0
  219. package/dist/tools/studio-draft.d.ts +7 -0
  220. package/dist/tools/studio-draft.d.ts.map +1 -0
  221. package/dist/tools/studio-draft.js +195 -0
  222. package/dist/tools/studio-view-contract.d.ts +184 -0
  223. package/dist/tools/studio-view-contract.d.ts.map +1 -0
  224. package/dist/tools/studio-view-contract.js +67 -0
  225. package/dist/tools/studio-view.d.ts +6 -0
  226. package/dist/tools/studio-view.d.ts.map +1 -0
  227. package/dist/tools/studio-view.js +126 -0
  228. package/dist/tools/timeline-lipsync.d.ts +316 -0
  229. package/dist/tools/timeline-lipsync.d.ts.map +1 -0
  230. package/dist/tools/timeline-lipsync.js +304 -0
  231. package/dist/tools/translation-preview.d.ts +8 -0
  232. package/dist/tools/translation-preview.d.ts.map +1 -0
  233. package/dist/tools/translation-preview.js +146 -0
  234. package/dist/tools/translation.d.ts +6 -0
  235. package/dist/tools/translation.d.ts.map +1 -0
  236. package/dist/tools/translation.js +131 -0
  237. package/dist/tools/upload-widget.d.ts +13 -0
  238. package/dist/tools/upload-widget.d.ts.map +1 -0
  239. package/dist/tools/upload-widget.js +788 -0
  240. package/dist/toolsets.d.ts +18 -0
  241. package/dist/toolsets.d.ts.map +1 -0
  242. package/dist/toolsets.js +157 -0
  243. package/dist/update-check.d.ts +38 -0
  244. package/dist/update-check.d.ts.map +1 -0
  245. package/dist/update-check.js +150 -0
  246. package/dist/upload-runtime.d.ts +45 -0
  247. package/dist/upload-runtime.d.ts.map +1 -0
  248. package/dist/upload-runtime.js +156 -0
  249. package/dist/upload-source.d.ts +4 -0
  250. package/dist/upload-source.d.ts.map +1 -0
  251. package/dist/upload-source.js +46 -0
  252. package/dist/version.d.ts +2 -0
  253. package/dist/version.d.ts.map +1 -0
  254. package/dist/version.js +3 -0
  255. package/package.json +79 -33
  256. package/dist/openapi/parser.test.d.ts +0 -2
  257. package/dist/openapi/parser.test.d.ts.map +0 -1
  258. package/dist/openapi/parser.test.js +0 -188
  259. package/dist/tools/generator.test.d.ts +0 -2
  260. package/dist/tools/generator.test.d.ts.map +0 -1
  261. package/dist/tools/generator.test.js +0 -178
@@ -0,0 +1,67 @@
1
+ import rateLimit, { ipKeyGenerator } from 'express-rate-limit';
2
+ import { mergeBasicClientCredentials } from './auth/client-credentials.js';
3
+ import { sessionOwner } from './session-registry.js';
4
+ // Hosted clients such as ChatGPT and Claude.ai reach this server from a few shared
5
+ // egress addresses, so a per-address limit would make all of their users share one
6
+ // bucket. Ordinary traffic is limited per signed-in user or OAuth client instead.
7
+ // Per address, only rejected requests count, which still bounds credential floods
8
+ // (each invalid token costs an upstream verification) without capping that traffic.
9
+ const WINDOW_MS = 60_000;
10
+ const REQUESTS_PER_MINUTE = 120;
11
+ const REJECTED_PER_MINUTE = 300;
12
+ function addressKey(req) {
13
+ return `ip:${ipKeyGenerator(req.ip ?? '')}`;
14
+ }
15
+ function rejectedRequestLimit(rejectedStatuses) {
16
+ return rateLimit({
17
+ windowMs: WINDOW_MS,
18
+ limit: REJECTED_PER_MINUTE,
19
+ skipSuccessfulRequests: true,
20
+ requestWasSuccessful: (_req, res) => !rejectedStatuses.includes(res.statusCode),
21
+ });
22
+ }
23
+ /** Before bearer authentication: rejected credentials per address. */
24
+ export function createMcpRejectedCredentialLimit() {
25
+ return rejectedRequestLimit([401, 403]);
26
+ }
27
+ /** After bearer authentication: requests per verified user, OAuth client and organization. */
28
+ export function createMcpUserLimit() {
29
+ return rateLimit({
30
+ windowMs: WINDOW_MS,
31
+ limit: REQUESTS_PER_MINUTE,
32
+ keyGenerator: (req) => {
33
+ const owner = sessionOwner(req.auth);
34
+ return owner
35
+ ? `user:${JSON.stringify([owner.sub, owner.clientId, owner.organizationId])}`
36
+ : addressKey(req);
37
+ },
38
+ });
39
+ }
40
+ /** Token and revocation requests the API rejected, per address. */
41
+ export function createOAuthRejectedRequestLimit() {
42
+ return rejectedRequestLimit([400, 401, 403]);
43
+ }
44
+ /**
45
+ * Accepted token and revocation requests per OAuth client. Client IDs are not secret,
46
+ * so requests the API rejects never spend a client's allowance; they count against
47
+ * the sender's address instead.
48
+ */
49
+ export function createOAuthClientLimit() {
50
+ return rateLimit({
51
+ windowMs: WINDOW_MS,
52
+ limit: REQUESTS_PER_MINUTE,
53
+ skipFailedRequests: true,
54
+ keyGenerator: (req) => {
55
+ const body = req.body;
56
+ try {
57
+ const clientId = mergeBasicClientCredentials(typeof body === 'object' && body !== null ? body : {}, req.headers.authorization).client_id;
58
+ if (typeof clientId === 'string')
59
+ return `client:${clientId}`;
60
+ }
61
+ catch {
62
+ // Malformed credentials fail in the proxy; count them by address here.
63
+ }
64
+ return addressKey(req);
65
+ },
66
+ });
67
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The commit this process runs. The deploy job writes it to `.revision` in the image;
3
+ * local and test runs fall back to the environment.
4
+ */
5
+ export declare const REVISION: string;
6
+ //# sourceMappingURL=revision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision.d.ts","sourceRoot":"","sources":["../src/revision.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,QAAQ,QAAiB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { readFileSync } from 'node:fs';
2
+ /**
3
+ * The commit this process runs. The deploy job writes it to `.revision` in the image;
4
+ * local and test runs fall back to the environment.
5
+ */
6
+ export const REVISION = readRevision();
7
+ function readRevision() {
8
+ try {
9
+ const value = readFileSync(new URL('../.revision', import.meta.url), 'utf8').trim();
10
+ if (value && value !== 'unknown')
11
+ return value;
12
+ }
13
+ catch {
14
+ // No revision file outside a deployed image.
15
+ }
16
+ return process.env.PORTER_TAG ?? process.env.GIT_SHA ?? process.env.K_REVISION ?? 'unknown';
17
+ }
@@ -0,0 +1,32 @@
1
+ export type HttpRequestCompletion = {
2
+ statusCode: number;
3
+ aborted: boolean;
4
+ responseDelivered: boolean;
5
+ durationMs: number;
6
+ };
7
+ export type HttpRequestStats = {
8
+ total: number;
9
+ inFlight: number;
10
+ completed: number;
11
+ aborted: number;
12
+ status2xx: number;
13
+ status3xx: number;
14
+ status4xx: number;
15
+ /** Rate-limited responses, also counted in status4xx. */
16
+ status429: number;
17
+ status5xx: number;
18
+ durationMsTotal: number;
19
+ durationMsMax: number;
20
+ };
21
+ export declare class HttpRequestMetrics {
22
+ #private;
23
+ start(): (completion: HttpRequestCompletion) => void;
24
+ snapshot(): HttpRequestStats;
25
+ }
26
+ export declare function serializeError(error: unknown): {
27
+ name?: string;
28
+ message: string;
29
+ stack?: string;
30
+ code?: string;
31
+ };
32
+ //# sourceMappingURL=runtime-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-diagnostics.d.ts","sourceRoot":"","sources":["../src/runtime-diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,kBAAkB;;IAe7B,KAAK,IAAI,CAAC,UAAU,EAAE,qBAAqB,KAAK,IAAI,CAqBnD;IAED,QAAQ,IAAI,gBAAgB,CAE3B;CACF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAWA"}
@@ -0,0 +1,58 @@
1
+ export class HttpRequestMetrics {
2
+ #stats = {
3
+ total: 0,
4
+ inFlight: 0,
5
+ completed: 0,
6
+ aborted: 0,
7
+ status2xx: 0,
8
+ status3xx: 0,
9
+ status4xx: 0,
10
+ status429: 0,
11
+ status5xx: 0,
12
+ durationMsTotal: 0,
13
+ durationMsMax: 0,
14
+ };
15
+ start() {
16
+ this.#stats.total += 1;
17
+ this.#stats.inFlight += 1;
18
+ let completed = false;
19
+ return (completion) => {
20
+ if (completed)
21
+ return;
22
+ completed = true;
23
+ this.#stats.inFlight = Math.max(0, this.#stats.inFlight - 1);
24
+ this.#stats.completed += 1;
25
+ if (completion.aborted)
26
+ this.#stats.aborted += 1;
27
+ if (completion.responseDelivered) {
28
+ if (completion.statusCode >= 200 && completion.statusCode < 300)
29
+ this.#stats.status2xx += 1;
30
+ if (completion.statusCode >= 300 && completion.statusCode < 400)
31
+ this.#stats.status3xx += 1;
32
+ if (completion.statusCode >= 400 && completion.statusCode < 500)
33
+ this.#stats.status4xx += 1;
34
+ if (completion.statusCode === 429)
35
+ this.#stats.status429 += 1;
36
+ if (completion.statusCode >= 500)
37
+ this.#stats.status5xx += 1;
38
+ }
39
+ this.#stats.durationMsTotal += completion.durationMs;
40
+ this.#stats.durationMsMax = Math.max(this.#stats.durationMsMax, completion.durationMs);
41
+ };
42
+ }
43
+ snapshot() {
44
+ return { ...this.#stats };
45
+ }
46
+ }
47
+ export function serializeError(error) {
48
+ if (error instanceof Error) {
49
+ const code = error.code;
50
+ return {
51
+ name: error.name,
52
+ message: error.message,
53
+ ...(error.stack ? { stack: error.stack } : {}),
54
+ ...(typeof code === 'string' ? { code } : {}),
55
+ };
56
+ }
57
+ return { message: String(error) };
58
+ }
package/dist/server.d.ts CHANGED
@@ -1,4 +1,25 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { CallToolResult } from '@modelcontextprotocol/server';
2
+ import { McpServer } from '@modelcontextprotocol/server';
3
+ import { type ClientProfile } from './client-profile.js';
2
4
  import type { SyncMcpConfig } from './config.js';
3
- export declare function createSyncMcpServer(config: SyncMcpConfig): Promise<McpServer>;
5
+ import type { McpToolDefinition } from './tools/index.js';
6
+ import { type AvailableUpdate, type UpdateCheck } from './update-check.js';
7
+ export declare const SERVER_INSTRUCTIONS: string;
8
+ export declare function serverInstructions(profile: ClientProfile, spendConfirmation?: boolean, feedback?: boolean, update?: AvailableUpdate, toolsetNote?: string): string;
9
+ export declare function serverDescription(spendConfirmation?: boolean): string;
10
+ export declare const HOSTED_HTTP_TOOL_ALLOWLIST: Set<string>;
11
+ export declare function createToolDescriptorMeta(meta: Record<string, unknown> | undefined): Record<string, unknown>;
12
+ export declare function registerTools(server: McpServer, tools: McpToolDefinition[], authMetadataUrl?: string, onToolError?: (tool: string, error: unknown) => void, decorateResult?: (result: CallToolResult) => CallToolResult): void;
13
+ /** One stdout line per failed tool call, for the hosted server's logs. */
14
+ export declare function logToolError(profile: () => string): (tool: string, error: unknown) => void;
15
+ export declare function createToolErrorResult(error: unknown, authMetadataUrl?: string): CallToolResult;
16
+ export declare function createJsonToolResult(result: unknown, outputSchema?: Record<string, unknown>): CallToolResult;
17
+ export declare function selectHostedHttpTools(tools: McpToolDefinition[], profile?: ClientProfile): McpToolDefinition[];
18
+ export declare function createSyncMcpServer(config: SyncMcpConfig, options?: {
19
+ updateCheck?: UpdateCheck;
20
+ }): Promise<McpServer>;
21
+ export declare function createMcpServerFactory(config: SyncMcpConfig): Promise<{
22
+ createServer: (clientName?: string, handshakeClientName?: string) => McpServer;
23
+ toolCount: number;
24
+ }>;
4
25
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CA6CnF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAgBzD,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA8CjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA2B1D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAGjB,MAAM,mBAAmB,CAAC;AAqE3B,eAAO,MAAM,mBAAmB,QAAsD,CAAC;AAKvF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,iBAAiB,UAAO,EACxB,QAAQ,UAAQ,EAChB,MAAM,CAAC,EAAE,eAAe,EACxB,WAAW,SAAK,GACf,MAAM,CASR;AAED,wBAAgB,iBAAiB,CAAC,iBAAiB,UAAO,GAAG,MAAM,CAElE;AAWD,eAAO,MAAM,0BAA0B,aAyErC,CAAC;AA8DH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAmDD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,iBAAiB,EAAE,EAC1B,eAAe,CAAC,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,EACpD,cAAc,GAAE,CAAC,MAAM,EAAE,cAAc,KAAK,cAAmC,GAC9E,IAAI,CAoDN;AAuBD,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAe1F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,cAAc,CAmE9F;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,cAAc,CAmBhB;AAyDD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,EAAE,EAC1B,OAAO,GAAE,aAAsC,GAC9C,iBAAiB,EAAE,CAKrB;AAsbD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAO,GAC1C,OAAO,CAAC,SAAS,CAAC,CAkBpB;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;IAC3E,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC;IAC/E,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAiDD"}