@apify/actors-mcp-server 0.1.23 → 0.1.24-beta.1

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 (121) hide show
  1. package/README.md +58 -2
  2. package/dist/actor/const.d.ts +12 -0
  3. package/dist/actor/const.d.ts.map +1 -0
  4. package/dist/actor/const.js +18 -0
  5. package/dist/actor/const.js.map +1 -0
  6. package/dist/actor/server.d.ts +4 -0
  7. package/dist/actor/server.d.ts.map +1 -0
  8. package/dist/actor/server.js +161 -0
  9. package/dist/actor/server.js.map +1 -0
  10. package/dist/actor/types.d.ts +23 -0
  11. package/dist/actor/types.d.ts.map +1 -0
  12. package/dist/actor/types.js +2 -0
  13. package/dist/actor/types.js.map +1 -0
  14. package/dist/actor/utils.d.ts +3 -0
  15. package/dist/actor/utils.d.ts.map +1 -0
  16. package/dist/actor/utils.js +26 -0
  17. package/dist/actor/utils.js.map +1 -0
  18. package/dist/apify-client.d.ts +7 -0
  19. package/dist/apify-client.d.ts.map +1 -0
  20. package/dist/apify-client.js +30 -0
  21. package/dist/apify-client.js.map +1 -0
  22. package/dist/const.d.ts +15 -19
  23. package/dist/const.d.ts.map +1 -1
  24. package/dist/const.js +23 -23
  25. package/dist/const.js.map +1 -1
  26. package/dist/examples/clientSse.d.ts +11 -1
  27. package/dist/examples/clientSse.d.ts.map +1 -1
  28. package/dist/examples/clientSse.js +13 -10
  29. package/dist/examples/clientSse.js.map +1 -1
  30. package/dist/examples/clientStdio.js +6 -6
  31. package/dist/examples/clientStdio.js.map +1 -1
  32. package/dist/examples/clientStdioChat.js +31 -16
  33. package/dist/examples/clientStdioChat.js.map +1 -1
  34. package/dist/examples/clientStreamableHttp.d.ts +2 -0
  35. package/dist/examples/clientStreamableHttp.d.ts.map +1 -0
  36. package/dist/examples/clientStreamableHttp.js +93 -0
  37. package/dist/examples/clientStreamableHttp.js.map +1 -0
  38. package/dist/index.d.ts +2 -14
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +6 -51
  41. package/dist/index.js.map +1 -1
  42. package/dist/input.d.ts +1 -1
  43. package/dist/input.d.ts.map +1 -1
  44. package/dist/input.js +15 -7
  45. package/dist/input.js.map +1 -1
  46. package/dist/main.d.ts +4 -0
  47. package/dist/main.d.ts.map +1 -1
  48. package/dist/main.js +22 -125
  49. package/dist/main.js.map +1 -1
  50. package/dist/mcp/actors.d.ts +22 -0
  51. package/dist/mcp/actors.d.ts.map +1 -0
  52. package/dist/mcp/actors.js +76 -0
  53. package/dist/mcp/actors.js.map +1 -0
  54. package/dist/mcp/client.d.ts +6 -0
  55. package/dist/mcp/client.d.ts.map +1 -0
  56. package/dist/mcp/client.js +33 -0
  57. package/dist/mcp/client.js.map +1 -0
  58. package/dist/mcp/const.d.ts +3 -0
  59. package/dist/mcp/const.d.ts.map +1 -0
  60. package/dist/mcp/const.js +3 -0
  61. package/dist/mcp/const.js.map +1 -0
  62. package/dist/mcp/proxy.d.ts +4 -0
  63. package/dist/mcp/proxy.d.ts.map +1 -0
  64. package/dist/mcp/proxy.js +29 -0
  65. package/dist/mcp/proxy.js.map +1 -0
  66. package/dist/mcp/server.d.ts +41 -0
  67. package/dist/mcp/server.d.ts.map +1 -0
  68. package/dist/mcp/server.js +191 -0
  69. package/dist/mcp/server.js.map +1 -0
  70. package/dist/mcp/utils.d.ts +26 -0
  71. package/dist/mcp/utils.d.ts.map +1 -0
  72. package/dist/mcp/utils.js +53 -0
  73. package/dist/mcp/utils.js.map +1 -0
  74. package/dist/stdio.d.ts +15 -0
  75. package/dist/stdio.d.ts.map +1 -0
  76. package/dist/stdio.js +57 -0
  77. package/dist/stdio.js.map +1 -0
  78. package/dist/tools/actor.d.ts +40 -0
  79. package/dist/tools/actor.d.ts.map +1 -0
  80. package/dist/tools/actor.js +138 -0
  81. package/dist/tools/actor.js.map +1 -0
  82. package/dist/tools/build.d.ts +13 -0
  83. package/dist/tools/build.d.ts.map +1 -0
  84. package/dist/tools/build.js +122 -0
  85. package/dist/tools/build.js.map +1 -0
  86. package/dist/tools/helpers.d.ts +19 -0
  87. package/dist/tools/helpers.d.ts.map +1 -0
  88. package/dist/tools/helpers.js +62 -0
  89. package/dist/tools/helpers.js.map +1 -0
  90. package/dist/tools/index.d.ts +6 -0
  91. package/dist/tools/index.d.ts.map +1 -0
  92. package/dist/tools/index.js +8 -0
  93. package/dist/tools/index.js.map +1 -0
  94. package/dist/tools/store_collection.d.ts +21 -0
  95. package/dist/tools/store_collection.d.ts.map +1 -0
  96. package/dist/tools/store_collection.js +82 -0
  97. package/dist/tools/store_collection.js.map +1 -0
  98. package/dist/tools/utils.d.ts +77 -0
  99. package/dist/tools/utils.d.ts.map +1 -0
  100. package/dist/tools/utils.js +202 -0
  101. package/dist/tools/utils.js.map +1 -0
  102. package/dist/tsconfig.tsbuildinfo +1 -1
  103. package/dist/types.d.ts +97 -10
  104. package/dist/types.d.ts.map +1 -1
  105. package/package.json +17 -14
  106. package/dist/actors.d.ts +0 -74
  107. package/dist/actors.d.ts.map +0 -1
  108. package/dist/actors.js +0 -327
  109. package/dist/actors.js.map +0 -1
  110. package/dist/logger.d.ts +0 -3
  111. package/dist/logger.d.ts.map +0 -1
  112. package/dist/logger.js +0 -4
  113. package/dist/logger.js.map +0 -1
  114. package/dist/server.d.ts +0 -43
  115. package/dist/server.d.ts.map +0 -1
  116. package/dist/server.js +0 -178
  117. package/dist/server.js.map +0 -1
  118. package/dist/tools.d.ts +0 -46
  119. package/dist/tools.d.ts.map +0 -1
  120. package/dist/tools.js +0 -128
  121. package/dist/tools.js.map +0 -1
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG7G,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC;AAE7D,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;AAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAC7F,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE9E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAC3B,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;IAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;AAExC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAA,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAkB,CAAC,mCAAK,EAAY,CAAC,CAAC;AACtF,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEpD,IAAI,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAClD,kGAAkG;IAClG,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QAClB,GAAG,CAAC,IAAI,CAAC,0DAA0D,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,CAAC;IACJ,GAAG,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAEzG,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACvD,MAAM,KAAK,CAAC,IAAI,CAAC,8GAA8G,CAAC,CAAC;IACrI,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAsB,CAAC;IAC1E,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,UAAW,EAAE,KAAK,CAAC,eAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAErH,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,uBAAuB,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { ActorDefinition } from 'apify-client';
2
+ export declare function isActorMCPServer(actorID: string, apifyToken: string): Promise<boolean>;
3
+ export declare function getActorsMCPServerPath(actorID: string, apifyToken: string): Promise<string | undefined>;
4
+ export declare function getActorsMCPServerURL(actorID: string, apifyToken: string): Promise<string>;
5
+ /**
6
+ * Gets Actor ID from the Actor object.
7
+ *
8
+ * @param actorID
9
+ * @param apifyToken
10
+ */
11
+ export declare function getRealActorID(actorID: string, apifyToken: string): Promise<string>;
12
+ /**
13
+ * Returns standby URL for given Actor ID.
14
+ *
15
+ * @param actorID
16
+ * @param standbyBaseUrl
17
+ * @param apifyToken
18
+ * @returns
19
+ */
20
+ export declare function getActorStandbyURL(actorID: string, apifyToken: string, standbyBaseUrl?: string): Promise<string>;
21
+ export declare function getActorDefinition(actorID: string, apifyToken: string): Promise<ActorDefinition>;
22
+ //# sourceMappingURL=actors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actors.d.ts","sourceRoot":"","sources":["../../src/mcp/actors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5F;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7G;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhG;AAED;;;;;EAKE;AACF,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASzF;AAED;;;;;;;EAOE;AACF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7H;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA6BtG"}
@@ -0,0 +1,76 @@
1
+ import { ApifyClient, getApifyAPIBaseUrl } from '../apify-client.js';
2
+ export async function isActorMCPServer(actorID, apifyToken) {
3
+ const mcpPath = await getActorsMCPServerPath(actorID, apifyToken);
4
+ return ((mcpPath === null || mcpPath === void 0 ? void 0 : mcpPath.length) || 0) > 0;
5
+ }
6
+ export async function getActorsMCPServerPath(actorID, apifyToken) {
7
+ const actorDefinition = await getActorDefinition(actorID, apifyToken);
8
+ if ('webServerMcpPath' in actorDefinition && typeof actorDefinition.webServerMcpPath === 'string') {
9
+ return actorDefinition.webServerMcpPath;
10
+ }
11
+ return undefined;
12
+ }
13
+ export async function getActorsMCPServerURL(actorID, apifyToken) {
14
+ // TODO: get from API instead
15
+ const standbyBaseUrl = process.env.HOSTNAME === 'mcp-securitybyobscurity.apify.com'
16
+ ? 'securitybyobscurity.apify.actor' : 'apify.actor';
17
+ const standbyUrl = await getActorStandbyURL(actorID, apifyToken, standbyBaseUrl);
18
+ const mcpPath = await getActorsMCPServerPath(actorID, apifyToken);
19
+ return `${standbyUrl}${mcpPath}`;
20
+ }
21
+ /**
22
+ * Gets Actor ID from the Actor object.
23
+ *
24
+ * @param actorID
25
+ * @param apifyToken
26
+ */
27
+ export async function getRealActorID(actorID, apifyToken) {
28
+ const apifyClient = new ApifyClient({ token: apifyToken });
29
+ const actor = apifyClient.actor(actorID);
30
+ const info = await actor.get();
31
+ if (!info) {
32
+ throw new Error(`Actor ${actorID} not found`);
33
+ }
34
+ return info.id;
35
+ }
36
+ /**
37
+ * Returns standby URL for given Actor ID.
38
+ *
39
+ * @param actorID
40
+ * @param standbyBaseUrl
41
+ * @param apifyToken
42
+ * @returns
43
+ */
44
+ export async function getActorStandbyURL(actorID, apifyToken, standbyBaseUrl = 'apify.actor') {
45
+ const actorRealID = await getRealActorID(actorID, apifyToken);
46
+ return `https://${actorRealID}.${standbyBaseUrl}`;
47
+ }
48
+ export async function getActorDefinition(actorID, apifyToken) {
49
+ const apifyClient = new ApifyClient({ token: apifyToken });
50
+ const actor = apifyClient.actor(actorID);
51
+ const info = await actor.get();
52
+ if (!info) {
53
+ throw new Error(`Actor ${actorID} not found`);
54
+ }
55
+ const actorObjID = info.id;
56
+ const res = await fetch(`${getApifyAPIBaseUrl()}/v2/acts/${actorObjID}/builds/default`, {
57
+ headers: {
58
+ // This is done so tests can pass with public Actors without token
59
+ ...(apifyToken ? { Authorization: `Bearer ${apifyToken}` } : {}),
60
+ },
61
+ });
62
+ if (!res.ok) {
63
+ throw new Error(`Failed to fetch default build for actor ${actorID}: ${res.statusText}`);
64
+ }
65
+ const json = await res.json(); // eslint-disable-line @typescript-eslint/no-explicit-any
66
+ const buildInfo = json.data;
67
+ if (!buildInfo) {
68
+ throw new Error(`Default build for Actor ${actorID} not found`);
69
+ }
70
+ const { actorDefinition } = buildInfo;
71
+ if (!actorDefinition) {
72
+ throw new Error(`Actor default build ${actorID} does not have Actor definition`);
73
+ }
74
+ return actorDefinition;
75
+ }
76
+ //# sourceMappingURL=actors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actors.js","sourceRoot":"","sources":["../../src/mcp/actors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ /**
3
+ * Creates and connects a ModelContextProtocol client.
4
+ */
5
+ export declare function createMCPClient(url: string, token: string): Promise<Client>;
6
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKnE;;GAEG;AACH,wBAAsB,eAAe,CACjC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAC3B,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
@@ -0,0 +1,33 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
3
+ import { getMCPServerID } from './utils.js';
4
+ /**
5
+ * Creates and connects a ModelContextProtocol client.
6
+ */
7
+ export async function createMCPClient(url, token) {
8
+ const transport = new SSEClientTransport(new URL(url), {
9
+ requestInit: {
10
+ headers: {
11
+ authorization: `Bearer ${token}`,
12
+ },
13
+ },
14
+ eventSourceInit: {
15
+ // The EventSource package augments EventSourceInit with a "fetch" parameter.
16
+ // You can use this to set additional headers on the outgoing request.
17
+ // Based on this example: https://github.com/modelcontextprotocol/typescript-sdk/issues/118
18
+ async fetch(input, init) {
19
+ const headers = new Headers((init === null || init === void 0 ? void 0 : init.headers) || {});
20
+ headers.set('authorization', `Bearer ${token}`);
21
+ return fetch(input, { ...init, headers });
22
+ },
23
+ // We have to cast to "any" to use it, since it's non-standard
24
+ }, // eslint-disable-line @typescript-eslint/no-explicit-any
25
+ });
26
+ const client = new Client({
27
+ name: getMCPServerID(url),
28
+ version: '1.0.0',
29
+ });
30
+ await client.connect(transport);
31
+ return client;
32
+ }
33
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,GAAW,EAAE,KAAa;IAE1B,MAAM,SAAS,GAAG,IAAI,kBAAkB,CACpC,IAAI,GAAG,CAAC,GAAG,CAAC,EACZ;QACI,WAAW,EAAE;YACT,OAAO,EAAE;gBACL,aAAa,EAAE,UAAU,KAAK,EAAE;aACnC;SACJ;QACD,eAAe,EAAE;YACb,6EAA6E;YAC7E,sEAAsE;YACtE,2FAA2F;YAC3F,KAAK,CAAC,KAAK,CAAC,KAA6B,EAAE,IAAkB;gBACzD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;gBAChD,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9C,CAAC;YACL,8DAA8D;SACtD,EAAE,yDAAyD;KACtE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACtB,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC;QACzB,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const MAX_TOOL_NAME_LENGTH = 64;
2
+ export declare const SERVER_ID_LENGTH = 8;
3
+ //# sourceMappingURL=const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/mcp/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const MAX_TOOL_NAME_LENGTH = 64;
2
+ export const SERVER_ID_LENGTH = 8;
3
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/mcp/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import type { ToolWrap } from '../types.js';
3
+ export declare function getMCPServerTools(actorID: string, client: Client, serverUrl: string): Promise<ToolWrap[]>;
4
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/mcp/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGxE,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG1D,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EAEd,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,EAAE,CAAC,CA6BrB"}
@@ -0,0 +1,29 @@
1
+ import Ajv from 'ajv';
2
+ import { getMCPServerID, getProxyMCPServerToolName } from './utils.js';
3
+ export async function getMCPServerTools(actorID, client,
4
+ // Name of the MCP server
5
+ serverUrl) {
6
+ const res = await client.listTools();
7
+ const { tools } = res;
8
+ const ajv = new Ajv({ coerceTypes: 'array', strict: false });
9
+ const compiledTools = [];
10
+ for (const tool of tools) {
11
+ const mcpTool = {
12
+ actorID,
13
+ serverId: getMCPServerID(serverUrl),
14
+ serverUrl,
15
+ originToolName: tool.name,
16
+ name: getProxyMCPServerToolName(serverUrl, tool.name),
17
+ description: tool.description || '',
18
+ inputSchema: tool.inputSchema,
19
+ ajvValidate: ajv.compile(tool.inputSchema),
20
+ };
21
+ const wrap = {
22
+ type: 'actor-mcp',
23
+ tool: mcpTool,
24
+ };
25
+ compiledTools.push(wrap);
26
+ }
27
+ return compiledTools;
28
+ }
29
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/mcp/proxy.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,OAAe,EACf,MAAc;AACd,yBAAyB;AACzB,SAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IACrC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAEtB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7D,MAAM,aAAa,GAAe,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAiB;YAC1B,OAAO;YACP,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC;YACnC,SAAS;YACT,cAAc,EAAE,IAAI,CAAC,IAAI;YAEzB,IAAI,EAAE,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC;YACrD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;SAC7C,CAAC;QAEF,MAAM,IAAI,GAAa;YACnB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,OAAO;SAChB,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Model Context Protocol (MCP) server for Apify Actors
3
+ */
4
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
+ import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
6
+ import type { ToolWrap } from '../types.js';
7
+ /**
8
+ * Create Apify MCP server
9
+ */
10
+ export declare class ActorsMcpServer {
11
+ readonly server: Server;
12
+ readonly tools: Map<string, ToolWrap>;
13
+ constructor();
14
+ /**
15
+ * Loads missing default tools.
16
+ */
17
+ loadDefaultTools(apifyToken: string): Promise<void>;
18
+ /**
19
+ * Loads tools from URL params.
20
+ *
21
+ * This method also handles enabling of Actor auto loading via the processParamsGetTools.
22
+ *
23
+ * Used primarily for SSE.
24
+ */
25
+ loadToolsFromUrl(url: string, apifyToken: string): Promise<void>;
26
+ /**
27
+ * Upsert new tools.
28
+ * @param tools - Array of tool wrappers.
29
+ * @returns Array of tool wrappers.
30
+ */
31
+ updateTools(tools: ToolWrap[]): ToolWrap[];
32
+ /**
33
+ * Returns an array of tool names.
34
+ * @returns {string[]} - An array of tool names.
35
+ */
36
+ getToolNames(): string[];
37
+ private setupErrorHandling;
38
+ private setupToolHandlers;
39
+ connect(transport: Transport): Promise<void>;
40
+ }
41
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAe/E,OAAO,KAAK,EAAuC,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIjF;;GAEG;AACH,qBAAa,eAAe;IACxB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;;IAuB7C;;OAEG;IACU,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAMhD;;;;;;OAMG;IACU,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAK7D;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;IAQpC;;;OAGG;IACI,YAAY,IAAI,MAAM,EAAE;IAI/B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,iBAAiB;IA0GnB,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrD"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Model Context Protocol (MCP) server for Apify Actors
3
+ */
4
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
6
+ import log from '@apify/log';
7
+ import { ACTOR_OUTPUT_MAX_CHARS_PER_ITEM, ACTOR_OUTPUT_TRUNCATED_MESSAGE, defaults, SERVER_NAME, SERVER_VERSION, } from '../const.js';
8
+ import { actorDefinitionTool, callActorGetDataset, getActorsAsTools, searchTool } from '../tools/index.js';
9
+ import { actorNameToToolName } from '../tools/utils.js';
10
+ import { createMCPClient } from './client.js';
11
+ import { processParamsGetTools } from './utils.js';
12
+ /**
13
+ * Create Apify MCP server
14
+ */
15
+ export class ActorsMcpServer {
16
+ constructor() {
17
+ Object.defineProperty(this, "server", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ Object.defineProperty(this, "tools", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: void 0
28
+ });
29
+ this.server = new Server({
30
+ name: SERVER_NAME,
31
+ version: SERVER_VERSION,
32
+ }, {
33
+ capabilities: {
34
+ tools: { listChanged: true },
35
+ logging: {},
36
+ },
37
+ });
38
+ this.tools = new Map();
39
+ this.setupErrorHandling();
40
+ this.setupToolHandlers();
41
+ // Add default tools
42
+ this.updateTools([searchTool, actorDefinitionTool]);
43
+ }
44
+ /**
45
+ * Loads missing default tools.
46
+ */
47
+ async loadDefaultTools(apifyToken) {
48
+ const missingDefaultTools = defaults.actors.filter((name) => !this.tools.has(actorNameToToolName(name)));
49
+ const tools = await getActorsAsTools(missingDefaultTools, apifyToken);
50
+ if (tools.length > 0)
51
+ this.updateTools(tools);
52
+ }
53
+ /**
54
+ * Loads tools from URL params.
55
+ *
56
+ * This method also handles enabling of Actor auto loading via the processParamsGetTools.
57
+ *
58
+ * Used primarily for SSE.
59
+ */
60
+ async loadToolsFromUrl(url, apifyToken) {
61
+ const tools = await processParamsGetTools(url, apifyToken);
62
+ if (tools.length > 0)
63
+ this.updateTools(tools);
64
+ }
65
+ /**
66
+ * Upsert new tools.
67
+ * @param tools - Array of tool wrappers.
68
+ * @returns Array of tool wrappers.
69
+ */
70
+ updateTools(tools) {
71
+ for (const wrap of tools) {
72
+ this.tools.set(wrap.tool.name, wrap);
73
+ log.info(`Added/updated tool: ${wrap.tool.name}`);
74
+ }
75
+ return tools;
76
+ }
77
+ /**
78
+ * Returns an array of tool names.
79
+ * @returns {string[]} - An array of tool names.
80
+ */
81
+ getToolNames() {
82
+ return Array.from(this.tools.keys());
83
+ }
84
+ setupErrorHandling() {
85
+ this.server.onerror = (error) => {
86
+ console.error('[MCP Error]', error); // eslint-disable-line no-console
87
+ };
88
+ process.on('SIGINT', async () => {
89
+ await this.server.close();
90
+ process.exit(0);
91
+ });
92
+ }
93
+ setupToolHandlers() {
94
+ /**
95
+ * Handles the request to list tools.
96
+ * @param {object} request - The request object.
97
+ * @returns {object} - The response object containing the tools.
98
+ */
99
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
100
+ // TODO if there is actor-mcp as a tool, also list the tools from that Actor
101
+ const tools = Array.from(this.tools.values()).map((tool) => (tool.tool));
102
+ return { tools };
103
+ });
104
+ /**
105
+ * Handles the request to call a tool.
106
+ * @param {object} request - The request object containing tool name and arguments.
107
+ * @throws {Error} - Throws an error if the tool is unknown or arguments are invalid.
108
+ */
109
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
110
+ const { name, arguments: args } = request.params;
111
+ const apifyToken = (request.params.apifyToken || process.env.APIFY_TOKEN);
112
+ // Remove apifyToken from request.params just in case
113
+ delete request.params.apifyToken;
114
+ // Validate token
115
+ if (!apifyToken) {
116
+ throw new Error('APIFY_TOKEN is required but not set in the environment variables or passed as a parameter.');
117
+ }
118
+ // TODO - log errors
119
+ // TODO: handle errors better, server.sendLoggingMessage ( )
120
+ // TODO - do not raise but return mcp errors
121
+ // TODO - if connection is /mcp client will not receive notification on tool change
122
+ // Find tool by name or actor full name
123
+ const tool = Array.from(this.tools.values())
124
+ .find((t) => t.tool.name === name || (t.type === 'actor' && t.tool.actorFullName === name));
125
+ if (!tool) {
126
+ await this.server.sendLoggingMessage({ level: 'info', data: `Unknown tool $\{name}, available tools ${this.getToolNames()}` });
127
+ throw new Error(`Unknown tool: ${name}`);
128
+ }
129
+ if (!args) {
130
+ throw new Error(`Missing arguments for tool: ${name}`);
131
+ }
132
+ log.info(`Validate arguments for tool: ${tool.tool.name} with arguments: ${JSON.stringify(args)}`);
133
+ if (!tool.tool.ajvValidate(args)) {
134
+ throw new Error(`Invalid arguments for tool ${tool.tool.name}: args: ${JSON.stringify(args)} error: ${JSON.stringify(tool === null || tool === void 0 ? void 0 : tool.tool.ajvValidate.errors)}`);
135
+ }
136
+ try {
137
+ // Handle internal tool
138
+ if (tool.type === 'internal') {
139
+ const internalTool = tool.tool;
140
+ const res = await internalTool.call({
141
+ args,
142
+ apifyMcpServer: this,
143
+ mcpServer: this.server,
144
+ apifyToken,
145
+ });
146
+ return { ...res };
147
+ }
148
+ if (tool.type === 'actor-mcp') {
149
+ const serverTool = tool.tool;
150
+ let client;
151
+ try {
152
+ client = await createMCPClient(serverTool.serverUrl, apifyToken);
153
+ const res = await client.callTool({
154
+ name: serverTool.originToolName,
155
+ arguments: args,
156
+ });
157
+ return { ...res };
158
+ }
159
+ finally {
160
+ if (client)
161
+ await client.close();
162
+ }
163
+ }
164
+ // Handle actor tool
165
+ if (tool.type === 'actor') {
166
+ const actorTool = tool.tool;
167
+ const callOptions = {
168
+ memory: actorTool.memoryMbytes,
169
+ };
170
+ const items = await callActorGetDataset(actorTool.actorFullName, args, apifyToken, callOptions);
171
+ const content = items.map((item) => {
172
+ const text = JSON.stringify(item).slice(0, ACTOR_OUTPUT_MAX_CHARS_PER_ITEM);
173
+ return text.length === ACTOR_OUTPUT_MAX_CHARS_PER_ITEM
174
+ ? { type: 'text', text: `${text} ... ${ACTOR_OUTPUT_TRUNCATED_MESSAGE}` }
175
+ : { type: 'text', text };
176
+ });
177
+ return { content };
178
+ }
179
+ }
180
+ catch (error) {
181
+ log.error(`Error calling tool: ${error}`);
182
+ throw new Error(`Error calling tool: ${error}`);
183
+ }
184
+ throw new Error(`Tool ${name} is not implemented`);
185
+ });
186
+ }
187
+ async connect(transport) {
188
+ await this.server.connect(transport);
189
+ }
190
+ }
191
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Input, ToolWrap } from '../types.js';
2
+ /**
3
+ * Generates a unique server ID based on the provided URL.
4
+ *
5
+ * URL is used instead of Actor ID becase one Actor may expose multiple servers - legacy SSE / streamable HTTP.
6
+ *
7
+ * @param url The URL to generate the server ID from.
8
+ * @returns A unique server ID.
9
+ */
10
+ export declare function getMCPServerID(url: string): string;
11
+ /**
12
+ * Generates a unique tool name based on the provided URL and tool name.
13
+ * @param url The URL to generate the tool name from.
14
+ * @param toolName The tool name to generate the tool name from.
15
+ * @returns A unique tool name.
16
+ */
17
+ export declare function getProxyMCPServerToolName(url: string, toolName: string): string;
18
+ /**
19
+ * Process input parameters and get tools
20
+ * If URL contains query parameter `actors`, return tools from Actors otherwise return null.
21
+ * @param url
22
+ * @param apifyToken
23
+ */
24
+ export declare function processParamsGetTools(url: string, apifyToken: string): Promise<ToolWrap[]>;
25
+ export declare function parseInputParamsFromUrl(url: string): Input;
26
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/mcp/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAY1E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAI1D"}
@@ -0,0 +1,53 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { parse } from 'node:querystring';
3
+ import { processInput } from '../input.js';
4
+ import { addTool, getActorsAsTools, removeTool } from '../tools/index.js';
5
+ import { MAX_TOOL_NAME_LENGTH, SERVER_ID_LENGTH } from './const.js';
6
+ /**
7
+ * Generates a unique server ID based on the provided URL.
8
+ *
9
+ * URL is used instead of Actor ID becase one Actor may expose multiple servers - legacy SSE / streamable HTTP.
10
+ *
11
+ * @param url The URL to generate the server ID from.
12
+ * @returns A unique server ID.
13
+ */
14
+ export function getMCPServerID(url) {
15
+ const serverHashDigest = createHash('sha256').update(url).digest('hex');
16
+ return serverHashDigest.slice(0, SERVER_ID_LENGTH);
17
+ }
18
+ /**
19
+ * Generates a unique tool name based on the provided URL and tool name.
20
+ * @param url The URL to generate the tool name from.
21
+ * @param toolName The tool name to generate the tool name from.
22
+ * @returns A unique tool name.
23
+ */
24
+ export function getProxyMCPServerToolName(url, toolName) {
25
+ const prefix = getMCPServerID(url);
26
+ const fullName = `${prefix}-${toolName}`;
27
+ return fullName.slice(0, MAX_TOOL_NAME_LENGTH);
28
+ }
29
+ /**
30
+ * Process input parameters and get tools
31
+ * If URL contains query parameter `actors`, return tools from Actors otherwise return null.
32
+ * @param url
33
+ * @param apifyToken
34
+ */
35
+ export async function processParamsGetTools(url, apifyToken) {
36
+ const input = parseInputParamsFromUrl(url);
37
+ let tools = [];
38
+ if (input.actors) {
39
+ const actors = input.actors;
40
+ // Normal Actors as a tool
41
+ tools = await getActorsAsTools(actors, apifyToken);
42
+ }
43
+ if (input.enableAddingActors) {
44
+ tools.push(addTool, removeTool);
45
+ }
46
+ return tools;
47
+ }
48
+ export function parseInputParamsFromUrl(url) {
49
+ const query = url.split('?')[1] || '';
50
+ const params = parse(query);
51
+ return processInput(params);
52
+ }
53
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/mcp/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAExE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,QAAgB;IACnE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEnC,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW,EAAE,UAAkB;IACvE,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAe,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,CAAC,MAAkB,CAAC;QACxC,0BAA0B;QAC1B,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAW;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAqB,CAAC;IAChD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * This script initializes and starts the Apify MCP server using the Stdio transport.
4
+ *
5
+ * Usage:
6
+ * node <script_name> --actors=<actor1,actor2,...>
7
+ *
8
+ * Command-line arguments:
9
+ * --actors - A comma-separated list of Actor full names to add to the server.
10
+ *
11
+ * Example:
12
+ * node stdio.js --actors=apify/google-search-scraper,apify/instagram-scraper
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=stdio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}