trigger.dev 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/esm/apiClient.d.ts +56 -1
  2. package/dist/esm/apiClient.js +56 -1
  3. package/dist/esm/apiClient.js.map +1 -1
  4. package/dist/esm/cli/common.js +1 -1
  5. package/dist/esm/cli/common.js.map +1 -1
  6. package/dist/esm/cli/index.js +13 -9
  7. package/dist/esm/cli/index.js.map +1 -1
  8. package/dist/esm/commands/deploy.js +2 -2
  9. package/dist/esm/commands/deploy.js.map +1 -1
  10. package/dist/esm/commands/dev.d.ts +17 -5
  11. package/dist/esm/commands/dev.js +47 -0
  12. package/dist/esm/commands/dev.js.map +1 -1
  13. package/dist/esm/commands/init.d.ts +8 -0
  14. package/dist/esm/commands/init.js +127 -63
  15. package/dist/esm/commands/init.js.map +1 -1
  16. package/dist/esm/commands/install-mcp.d.ts +50 -0
  17. package/dist/esm/commands/install-mcp.js +497 -0
  18. package/dist/esm/commands/install-mcp.js.map +1 -0
  19. package/dist/esm/commands/install-rules.d.ts +11 -0
  20. package/dist/esm/commands/install-rules.js +381 -0
  21. package/dist/esm/commands/install-rules.js.map +1 -0
  22. package/dist/esm/commands/login.d.ts +5 -0
  23. package/dist/esm/commands/login.js +15 -5
  24. package/dist/esm/commands/login.js.map +1 -1
  25. package/dist/esm/commands/mcp.d.ts +38 -0
  26. package/dist/esm/commands/mcp.js +82 -0
  27. package/dist/esm/commands/mcp.js.map +1 -0
  28. package/dist/esm/commands/update.d.ts +1 -0
  29. package/dist/esm/commands/update.js +6 -6
  30. package/dist/esm/commands/update.js.map +1 -1
  31. package/dist/esm/dev/devOutput.js +3 -3
  32. package/dist/esm/dev/devOutput.js.map +1 -1
  33. package/dist/esm/entryPoints/managed/env.d.ts +5 -5
  34. package/dist/esm/mcp/auth.d.ts +12 -0
  35. package/dist/esm/mcp/auth.js +152 -0
  36. package/dist/esm/mcp/auth.js.map +1 -0
  37. package/dist/esm/mcp/capabilities.d.ts +4 -0
  38. package/dist/esm/mcp/capabilities.js +22 -0
  39. package/dist/esm/mcp/capabilities.js.map +1 -0
  40. package/dist/esm/mcp/config.d.ts +82 -0
  41. package/dist/esm/mcp/config.js +87 -0
  42. package/dist/esm/mcp/config.js.map +1 -0
  43. package/dist/esm/mcp/context.d.ts +45 -0
  44. package/dist/esm/mcp/context.js +129 -0
  45. package/dist/esm/mcp/context.js.map +1 -0
  46. package/dist/esm/mcp/formatters.d.ts +7 -0
  47. package/dist/esm/mcp/formatters.js +330 -0
  48. package/dist/esm/mcp/formatters.js.map +1 -0
  49. package/dist/esm/mcp/logger.d.ts +11 -0
  50. package/dist/esm/mcp/logger.js +34 -0
  51. package/dist/esm/mcp/logger.js.map +1 -0
  52. package/dist/esm/mcp/mintlifyClient.d.ts +1 -0
  53. package/dist/esm/mcp/mintlifyClient.js +65 -0
  54. package/dist/esm/mcp/mintlifyClient.js.map +1 -0
  55. package/dist/esm/mcp/schemas.d.ts +324 -0
  56. package/dist/esm/mcp/schemas.js +144 -0
  57. package/dist/esm/mcp/schemas.js.map +1 -0
  58. package/dist/esm/mcp/tools/deploys.d.ts +174 -0
  59. package/dist/esm/mcp/tools/deploys.js +161 -0
  60. package/dist/esm/mcp/tools/deploys.js.map +1 -0
  61. package/dist/esm/mcp/tools/docs.d.ts +77 -0
  62. package/dist/esm/mcp/tools/docs.js +18 -0
  63. package/dist/esm/mcp/tools/docs.js.map +1 -0
  64. package/dist/esm/mcp/tools/orgs.d.ts +172 -0
  65. package/dist/esm/mcp/tools/orgs.js +172 -0
  66. package/dist/esm/mcp/tools/orgs.js.map +1 -0
  67. package/dist/esm/mcp/tools/previewBranches.d.ts +78 -0
  68. package/dist/esm/mcp/tools/previewBranches.js +28 -0
  69. package/dist/esm/mcp/tools/previewBranches.js.map +1 -0
  70. package/dist/esm/mcp/tools/runs.d.ts +335 -0
  71. package/dist/esm/mcp/tools/runs.js +160 -0
  72. package/dist/esm/mcp/tools/runs.js.map +1 -0
  73. package/dist/esm/mcp/tools/tasks.d.ts +200 -0
  74. package/dist/esm/mcp/tools/tasks.js +117 -0
  75. package/dist/esm/mcp/tools/tasks.js.map +1 -0
  76. package/dist/esm/mcp/tools.d.ts +2 -0
  77. package/dist/esm/mcp/tools.js +40 -0
  78. package/dist/esm/mcp/tools.js.map +1 -0
  79. package/dist/esm/mcp/types.d.ts +6 -0
  80. package/dist/esm/mcp/types.js +2 -0
  81. package/dist/esm/mcp/types.js.map +1 -0
  82. package/dist/esm/mcp/utils.d.ts +89 -0
  83. package/dist/esm/mcp/utils.js +95 -0
  84. package/dist/esm/mcp/utils.js.map +1 -0
  85. package/dist/esm/rules/install.d.ts +1 -0
  86. package/dist/esm/rules/install.js +2 -0
  87. package/dist/esm/rules/install.js.map +1 -0
  88. package/dist/esm/rules/manifest.d.ts +145 -0
  89. package/dist/esm/rules/manifest.js +110 -0
  90. package/dist/esm/rules/manifest.js.map +1 -0
  91. package/dist/esm/rules/types.d.ts +3 -0
  92. package/dist/esm/rules/types.js +3 -0
  93. package/dist/esm/rules/types.js.map +1 -0
  94. package/dist/esm/utilities/accessTokens.d.ts +12 -0
  95. package/dist/esm/utilities/accessTokens.js +30 -0
  96. package/dist/esm/utilities/accessTokens.js.map +1 -0
  97. package/dist/esm/utilities/configFiles.d.ts +29 -0
  98. package/dist/esm/utilities/configFiles.js +51 -0
  99. package/dist/esm/utilities/configFiles.js.map +1 -1
  100. package/dist/esm/utilities/fileSystem.d.ts +6 -0
  101. package/dist/esm/utilities/fileSystem.js +41 -3
  102. package/dist/esm/utilities/fileSystem.js.map +1 -1
  103. package/dist/esm/utilities/session.d.ts +2 -0
  104. package/dist/esm/utilities/session.js +2 -0
  105. package/dist/esm/utilities/session.js.map +1 -1
  106. package/dist/esm/version.js +1 -1
  107. package/package.json +11 -7
  108. package/dist/esm/utilities/isPersonalAccessToken.d.ts +0 -4
  109. package/dist/esm/utilities/isPersonalAccessToken.js +0 -11
  110. package/dist/esm/utilities/isPersonalAccessToken.js.map +0 -1
@@ -0,0 +1,160 @@
1
+ import { toolsMetadata } from "../config.js";
2
+ import { formatRun, formatRunList, formatRunShape, formatRunTrace } from "../formatters.js";
3
+ import { CommonRunsInput, GetRunDetailsInput, ListRunsInput } from "../schemas.js";
4
+ import { respondWithError, toolHandler } from "../utils.js";
5
+ export const getRunDetailsTool = {
6
+ name: toolsMetadata.get_run_details.name,
7
+ title: toolsMetadata.get_run_details.title,
8
+ description: toolsMetadata.get_run_details.description,
9
+ inputSchema: GetRunDetailsInput.shape,
10
+ handler: toolHandler(GetRunDetailsInput.shape, async (input, { ctx }) => {
11
+ ctx.logger?.log("calling get_run_details", { input });
12
+ if (ctx.options.devOnly && input.environment !== "dev") {
13
+ return respondWithError(`This MCP server is only available for the dev environment. You tried to access the ${input.environment} environment. Remove the --dev-only flag to access other environments.`);
14
+ }
15
+ const projectRef = await ctx.getProjectRef({
16
+ projectRef: input.projectRef,
17
+ cwd: input.configPath,
18
+ });
19
+ const apiClient = await ctx.getApiClient({
20
+ projectRef,
21
+ environment: input.environment,
22
+ scopes: [`read:runs:${input.runId}`],
23
+ branch: input.branch,
24
+ });
25
+ const [runResult, traceResult] = await Promise.all([
26
+ apiClient.retrieveRun(input.runId),
27
+ apiClient.retrieveRunTrace(input.runId),
28
+ ]);
29
+ const formattedRun = formatRun(runResult);
30
+ const formattedTrace = formatRunTrace(traceResult.trace, input.maxTraceLines);
31
+ const runUrl = await ctx.getDashboardUrl(`/projects/v3/${projectRef}/runs/${runResult.id}`);
32
+ const content = [
33
+ "## Run Details",
34
+ formattedRun,
35
+ "",
36
+ "## Run Trace",
37
+ formattedTrace,
38
+ "",
39
+ `[View in dashboard](${runUrl})`,
40
+ ];
41
+ return {
42
+ content: [
43
+ {
44
+ type: "text",
45
+ text: content.join("\n"),
46
+ },
47
+ ],
48
+ };
49
+ }),
50
+ };
51
+ export const waitForRunToCompleteTool = {
52
+ name: toolsMetadata.wait_for_run_to_complete.name,
53
+ title: toolsMetadata.wait_for_run_to_complete.title,
54
+ description: toolsMetadata.wait_for_run_to_complete.description,
55
+ inputSchema: CommonRunsInput.shape,
56
+ handler: toolHandler(CommonRunsInput.shape, async (input, { ctx, signal }) => {
57
+ ctx.logger?.log("calling wait_for_run_to_complete", { input });
58
+ if (ctx.options.devOnly && input.environment !== "dev") {
59
+ return respondWithError(`This MCP server is only available for the dev environment. You tried to access the ${input.environment} environment. Remove the --dev-only flag to access other environments.`);
60
+ }
61
+ const projectRef = await ctx.getProjectRef({
62
+ projectRef: input.projectRef,
63
+ cwd: input.configPath,
64
+ });
65
+ const apiClient = await ctx.getApiClient({
66
+ projectRef,
67
+ environment: input.environment,
68
+ scopes: [`read:runs:${input.runId}`],
69
+ branch: input.branch,
70
+ });
71
+ const runSubscription = apiClient.subscribeToRun(input.runId, { signal });
72
+ const readableStream = runSubscription.getReader();
73
+ let run = null;
74
+ while (true) {
75
+ const { done, value } = await readableStream.read();
76
+ if (done) {
77
+ break;
78
+ }
79
+ run = value;
80
+ if (value.isCompleted) {
81
+ break;
82
+ }
83
+ }
84
+ if (!run) {
85
+ return respondWithError("Run not found");
86
+ }
87
+ return {
88
+ content: [{ type: "text", text: formatRunShape(run) }],
89
+ };
90
+ }),
91
+ };
92
+ export const cancelRunTool = {
93
+ name: toolsMetadata.cancel_run.name,
94
+ title: toolsMetadata.cancel_run.title,
95
+ description: toolsMetadata.cancel_run.description,
96
+ inputSchema: CommonRunsInput.shape,
97
+ handler: toolHandler(CommonRunsInput.shape, async (input, { ctx }) => {
98
+ ctx.logger?.log("calling cancel_run", { input });
99
+ if (ctx.options.devOnly && input.environment !== "dev") {
100
+ return respondWithError(`This MCP server is only available for the dev environment. You tried to access the ${input.environment} environment. Remove the --dev-only flag to access other environments.`);
101
+ }
102
+ const projectRef = await ctx.getProjectRef({
103
+ projectRef: input.projectRef,
104
+ cwd: input.configPath,
105
+ });
106
+ const apiClient = await ctx.getApiClient({
107
+ projectRef,
108
+ environment: input.environment,
109
+ scopes: [`write:runs:${input.runId}`, `read:runs:${input.runId}`],
110
+ branch: input.branch,
111
+ });
112
+ await apiClient.cancelRun(input.runId);
113
+ const retrieveResult = await apiClient.retrieveRun(input.runId);
114
+ const runUrl = await ctx.getDashboardUrl(`/projects/v3/${projectRef}/runs/${retrieveResult.id}`);
115
+ return {
116
+ content: [{ type: "text", text: JSON.stringify({ ...retrieveResult, runUrl }, null, 2) }],
117
+ };
118
+ }),
119
+ };
120
+ export const listRunsTool = {
121
+ name: toolsMetadata.list_runs.name,
122
+ title: toolsMetadata.list_runs.title,
123
+ description: toolsMetadata.list_runs.description,
124
+ inputSchema: ListRunsInput.shape,
125
+ handler: toolHandler(ListRunsInput.shape, async (input, { ctx }) => {
126
+ ctx.logger?.log("calling list_runs", { input });
127
+ if (ctx.options.devOnly && input.environment !== "dev") {
128
+ return respondWithError(`This MCP server is only available for the dev environment. You tried to access the ${input.environment} environment. Remove the --dev-only flag to access other environments.`);
129
+ }
130
+ const projectRef = await ctx.getProjectRef({
131
+ projectRef: input.projectRef,
132
+ cwd: input.configPath,
133
+ });
134
+ const apiClient = await ctx.getApiClient({
135
+ projectRef,
136
+ environment: input.environment,
137
+ scopes: ["read:runs"],
138
+ branch: input.branch,
139
+ });
140
+ const $from = typeof input.from === "string" ? new Date(input.from) : undefined;
141
+ const $to = typeof input.to === "string" ? new Date(input.to) : undefined;
142
+ const result = await apiClient.listRuns({
143
+ after: input.cursor,
144
+ limit: input.limit,
145
+ status: input.status,
146
+ taskIdentifier: input.taskIdentifier,
147
+ version: input.version,
148
+ tag: input.tag,
149
+ from: $from,
150
+ to: $to,
151
+ period: input.period,
152
+ machine: input.machine,
153
+ });
154
+ const formattedRuns = formatRunList(result);
155
+ return {
156
+ content: [{ type: "text", text: formattedRuns }],
157
+ };
158
+ }),
159
+ };
160
+ //# sourceMappingURL=runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../../../src/mcp/tools/runs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,aAAa,CAAC,eAAe,CAAC,IAAI;IACxC,KAAK,EAAE,aAAa,CAAC,eAAe,CAAC,KAAK;IAC1C,WAAW,EAAE,aAAa,CAAC,eAAe,CAAC,WAAW;IACtD,WAAW,EAAE,kBAAkB,CAAC,KAAK;IACrC,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACtE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtD,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACvD,OAAO,gBAAgB,CACrB,sFAAsF,KAAK,CAAC,WAAW,wEAAwE,CAChL,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC;YACzC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,KAAK,CAAC,UAAU;SACtB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC;YACvC,UAAU;YACV,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,CAAC,aAAa,KAAK,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;YAClC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;SACxC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAE9E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,gBAAgB,UAAU,SAAS,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5F,MAAM,OAAO,GAAG;YACd,gBAAgB;YAChB,YAAY;YACZ,EAAE;YACF,cAAc;YACd,cAAc;YACd,EAAE;YACF,uBAAuB,MAAM,GAAG;SACjC,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;iBACzB;aACF;SACF,CAAC;IACJ,CAAC,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,aAAa,CAAC,wBAAwB,CAAC,IAAI;IACjD,KAAK,EAAE,aAAa,CAAC,wBAAwB,CAAC,KAAK;IACnD,WAAW,EAAE,aAAa,CAAC,wBAAwB,CAAC,WAAW;IAC/D,WAAW,EAAE,eAAe,CAAC,KAAK;IAClC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3E,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/D,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACvD,OAAO,gBAAgB,CACrB,sFAAsF,KAAK,CAAC,WAAW,wEAAwE,CAChL,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC;YACzC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,KAAK,CAAC,UAAU;SACtB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC;YACvC,UAAU;YACV,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,CAAC,aAAa,KAAK,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;QAEnD,IAAI,GAAG,GAAuB,IAAI,CAAC;QAEnC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YACD,GAAG,GAAG,KAAK,CAAC;YAEZ,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;SACvD,CAAC;IACJ,CAAC,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI;IACnC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK;IACrC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,WAAW;IACjD,WAAW,EAAE,eAAe,CAAC,KAAK;IAClC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACnE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjD,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACvD,OAAO,gBAAgB,CACrB,sFAAsF,KAAK,CAAC,WAAW,wEAAwE,CAChL,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC;YACzC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,KAAK,CAAC,UAAU;SACtB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC;YACvC,UAAU;YACV,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,CAAC,cAAc,KAAK,CAAC,KAAK,EAAE,EAAE,aAAa,KAAK,CAAC,KAAK,EAAE,CAAC;YACjE,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CACtC,gBAAgB,UAAU,SAAS,cAAc,CAAC,EAAE,EAAE,CACvD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC1F,CAAC;IACJ,CAAC,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI;IAClC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK;IACpC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,WAAW;IAChD,WAAW,EAAE,aAAa,CAAC,KAAK;IAChC,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACjE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhD,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACvD,OAAO,gBAAgB,CACrB,sFAAsF,KAAK,CAAC,WAAW,wEAAwE,CAChL,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC;YACzC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,KAAK,CAAC,UAAU;SACtB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC;YACvC,UAAU;YACV,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,CAAC,WAAW,CAAC;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC;YACtC,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI,EAAE,KAAK;YACX,EAAE,EAAE,GAAG;YACP,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAE5C,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;SACjD,CAAC;IACJ,CAAC,CAAC;CACH,CAAC"}
@@ -0,0 +1,200 @@
1
+ import { ToolMeta } from "../types.js";
2
+ export declare const getCurrentWorker: {
3
+ name: string;
4
+ title: string;
5
+ description: string;
6
+ inputSchema: {
7
+ projectRef: import("zod").ZodOptional<import("zod").ZodString>;
8
+ configPath: import("zod").ZodOptional<import("zod").ZodString>;
9
+ environment: import("zod").ZodDefault<import("zod").ZodEnum<["dev", "staging", "prod", "preview"]>>;
10
+ branch: import("zod").ZodOptional<import("zod").ZodString>;
11
+ };
12
+ handler: (input: unknown, extra: ToolMeta) => Promise<{
13
+ [x: string]: unknown;
14
+ content: ({
15
+ [x: string]: unknown;
16
+ type: "text";
17
+ text: string;
18
+ _meta?: {
19
+ [x: string]: unknown;
20
+ } | undefined;
21
+ } | {
22
+ [x: string]: unknown;
23
+ type: "image";
24
+ data: string;
25
+ mimeType: string;
26
+ _meta?: {
27
+ [x: string]: unknown;
28
+ } | undefined;
29
+ } | {
30
+ [x: string]: unknown;
31
+ type: "audio";
32
+ data: string;
33
+ mimeType: string;
34
+ _meta?: {
35
+ [x: string]: unknown;
36
+ } | undefined;
37
+ } | {
38
+ [x: string]: unknown;
39
+ type: "resource_link";
40
+ name: string;
41
+ uri: string;
42
+ description?: string | undefined;
43
+ title?: string | undefined;
44
+ _meta?: {
45
+ [x: string]: unknown;
46
+ } | undefined;
47
+ mimeType?: string | undefined;
48
+ } | {
49
+ [x: string]: unknown;
50
+ type: "resource";
51
+ resource: {
52
+ [x: string]: unknown;
53
+ text: string;
54
+ uri: string;
55
+ _meta?: {
56
+ [x: string]: unknown;
57
+ } | undefined;
58
+ mimeType?: string | undefined;
59
+ } | {
60
+ [x: string]: unknown;
61
+ uri: string;
62
+ blob: string;
63
+ _meta?: {
64
+ [x: string]: unknown;
65
+ } | undefined;
66
+ mimeType?: string | undefined;
67
+ };
68
+ _meta?: {
69
+ [x: string]: unknown;
70
+ } | undefined;
71
+ })[];
72
+ isError?: boolean | undefined;
73
+ _meta?: {
74
+ [x: string]: unknown;
75
+ } | undefined;
76
+ structuredContent?: {
77
+ [x: string]: unknown;
78
+ } | undefined;
79
+ }>;
80
+ };
81
+ export declare const triggerTaskTool: {
82
+ name: string;
83
+ title: string;
84
+ description: string;
85
+ inputSchema: {
86
+ projectRef: import("zod").ZodOptional<import("zod").ZodString>;
87
+ configPath: import("zod").ZodOptional<import("zod").ZodString>;
88
+ environment: import("zod").ZodDefault<import("zod").ZodEnum<["dev", "staging", "prod", "preview"]>>;
89
+ branch: import("zod").ZodOptional<import("zod").ZodString>;
90
+ } & {
91
+ taskId: import("zod").ZodString;
92
+ payload: import("zod").ZodAny;
93
+ options: import("zod").ZodOptional<import("zod").ZodObject<{
94
+ queue: import("zod").ZodOptional<import("zod").ZodObject<{
95
+ name: import("zod").ZodString;
96
+ }, "strip", import("zod").ZodTypeAny, {
97
+ name: string;
98
+ }, {
99
+ name: string;
100
+ }>>;
101
+ delay: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodDate]>>;
102
+ idempotencyKey: import("zod").ZodOptional<import("zod").ZodString>;
103
+ machine: import("zod").ZodOptional<import("zod").ZodEnum<["micro", "small-1x", "small-2x", "medium-1x", "medium-2x", "large-1x", "large-2x"]>>;
104
+ maxAttempts: import("zod").ZodOptional<import("zod").ZodNumber>;
105
+ maxDuration: import("zod").ZodOptional<import("zod").ZodNumber>;
106
+ tags: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
107
+ ttl: import("zod").ZodDefault<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodNumber]>>;
108
+ }, "strip", import("zod").ZodTypeAny, {
109
+ ttl: string | number;
110
+ tags?: string[] | undefined;
111
+ idempotencyKey?: string | undefined;
112
+ maxAttempts?: number | undefined;
113
+ maxDuration?: number | undefined;
114
+ queue?: {
115
+ name: string;
116
+ } | undefined;
117
+ machine?: "micro" | "small-1x" | "small-2x" | "medium-1x" | "medium-2x" | "large-1x" | "large-2x" | undefined;
118
+ delay?: string | Date | undefined;
119
+ }, {
120
+ tags?: string[] | undefined;
121
+ idempotencyKey?: string | undefined;
122
+ maxAttempts?: number | undefined;
123
+ maxDuration?: number | undefined;
124
+ queue?: {
125
+ name: string;
126
+ } | undefined;
127
+ machine?: "micro" | "small-1x" | "small-2x" | "medium-1x" | "medium-2x" | "large-1x" | "large-2x" | undefined;
128
+ delay?: string | Date | undefined;
129
+ ttl?: string | number | undefined;
130
+ }>>;
131
+ };
132
+ handler: (input: unknown, extra: ToolMeta) => Promise<{
133
+ [x: string]: unknown;
134
+ content: ({
135
+ [x: string]: unknown;
136
+ type: "text";
137
+ text: string;
138
+ _meta?: {
139
+ [x: string]: unknown;
140
+ } | undefined;
141
+ } | {
142
+ [x: string]: unknown;
143
+ type: "image";
144
+ data: string;
145
+ mimeType: string;
146
+ _meta?: {
147
+ [x: string]: unknown;
148
+ } | undefined;
149
+ } | {
150
+ [x: string]: unknown;
151
+ type: "audio";
152
+ data: string;
153
+ mimeType: string;
154
+ _meta?: {
155
+ [x: string]: unknown;
156
+ } | undefined;
157
+ } | {
158
+ [x: string]: unknown;
159
+ type: "resource_link";
160
+ name: string;
161
+ uri: string;
162
+ description?: string | undefined;
163
+ title?: string | undefined;
164
+ _meta?: {
165
+ [x: string]: unknown;
166
+ } | undefined;
167
+ mimeType?: string | undefined;
168
+ } | {
169
+ [x: string]: unknown;
170
+ type: "resource";
171
+ resource: {
172
+ [x: string]: unknown;
173
+ text: string;
174
+ uri: string;
175
+ _meta?: {
176
+ [x: string]: unknown;
177
+ } | undefined;
178
+ mimeType?: string | undefined;
179
+ } | {
180
+ [x: string]: unknown;
181
+ uri: string;
182
+ blob: string;
183
+ _meta?: {
184
+ [x: string]: unknown;
185
+ } | undefined;
186
+ mimeType?: string | undefined;
187
+ };
188
+ _meta?: {
189
+ [x: string]: unknown;
190
+ } | undefined;
191
+ })[];
192
+ isError?: boolean | undefined;
193
+ _meta?: {
194
+ [x: string]: unknown;
195
+ } | undefined;
196
+ structuredContent?: {
197
+ [x: string]: unknown;
198
+ } | undefined;
199
+ }>;
200
+ };
@@ -0,0 +1,117 @@
1
+ import { toolsMetadata } from "../config.js";
2
+ import { CommonProjectsInput, TriggerTaskInput } from "../schemas.js";
3
+ import { respondWithError, toolHandler } from "../utils.js";
4
+ export const getCurrentWorker = {
5
+ name: toolsMetadata.get_current_worker.name,
6
+ title: toolsMetadata.get_current_worker.title,
7
+ description: toolsMetadata.get_current_worker.description,
8
+ inputSchema: CommonProjectsInput.shape,
9
+ handler: toolHandler(CommonProjectsInput.shape, async (input, { ctx }) => {
10
+ ctx.logger?.log("calling get_current_worker", { input });
11
+ if (ctx.options.devOnly && input.environment !== "dev") {
12
+ return respondWithError(`This MCP server is only available for the dev environment. You tried to access the ${input.environment} environment. Remove the --dev-only flag to access other environments.`);
13
+ }
14
+ const projectRef = await ctx.getProjectRef({
15
+ projectRef: input.projectRef,
16
+ cwd: input.configPath,
17
+ });
18
+ const cliApiClient = await ctx.getCliApiClient(input.branch);
19
+ const workerResult = await cliApiClient.getWorkerByTag(projectRef, input.environment, "current");
20
+ if (!workerResult.success) {
21
+ return respondWithError(workerResult.error);
22
+ }
23
+ const { worker, urls } = workerResult.data;
24
+ const contents = [
25
+ `Current worker for ${input.environment} is ${worker.version} using ${worker.sdkVersion} of the SDK.`,
26
+ ];
27
+ if (worker.tasks.length > 0) {
28
+ contents.push(`The worker has ${worker.tasks.length} tasks registered:`);
29
+ for (const task of worker.tasks) {
30
+ if (task.payloadSchema) {
31
+ contents.push(`- ${task.slug} in ${task.filePath} (payload schema: ${JSON.stringify(task.payloadSchema)})`);
32
+ }
33
+ else {
34
+ contents.push(`- ${task.slug} in ${task.filePath}`);
35
+ }
36
+ }
37
+ }
38
+ else {
39
+ contents.push(`The worker has no tasks registered.`);
40
+ }
41
+ contents.push(`\n`);
42
+ contents.push(`URLs:`);
43
+ contents.push(`- Runs: ${urls.runs}`);
44
+ contents.push(`\n`);
45
+ contents.push(`You can use the list_runs tool with the version ${worker.version} to get the list of runs for this worker.`);
46
+ if (typeof worker.sdkVersion === "string" &&
47
+ typeof worker.cliVersion === "string" &&
48
+ worker.sdkVersion !== worker.cliVersion) {
49
+ contents.push(`WARNING: The SDK version (${worker.sdkVersion}) is different from the CLI version (${worker.cliVersion}). This might cause issues with the task execution. Make sure to pin the CLI and the SDK versions to ${worker.sdkVersion}.`);
50
+ }
51
+ return {
52
+ content: [{ type: "text", text: contents.join("\n") }],
53
+ };
54
+ }),
55
+ };
56
+ export const triggerTaskTool = {
57
+ name: toolsMetadata.trigger_task.name,
58
+ title: toolsMetadata.trigger_task.title,
59
+ description: toolsMetadata.trigger_task.description,
60
+ inputSchema: TriggerTaskInput.shape,
61
+ handler: toolHandler(TriggerTaskInput.shape, async (input, { ctx }) => {
62
+ ctx.logger?.log("calling trigger_task", { input });
63
+ if (ctx.options.devOnly && input.environment !== "dev") {
64
+ return respondWithError(`This MCP server is only available for the dev environment. You tried to access the ${input.environment} environment. Remove the --dev-only flag to access other environments.`);
65
+ }
66
+ const projectRef = await ctx.getProjectRef({
67
+ projectRef: input.projectRef,
68
+ cwd: input.configPath,
69
+ });
70
+ const apiClient = await ctx.getApiClient({
71
+ projectRef,
72
+ environment: input.environment,
73
+ scopes: ["write:tasks"],
74
+ branch: input.branch,
75
+ });
76
+ ctx.logger?.log("triggering task", { input });
77
+ let payload = input.payload;
78
+ if (typeof payload === "string") {
79
+ try {
80
+ payload = JSON.parse(payload);
81
+ }
82
+ catch {
83
+ ctx.logger?.log("payload is not a valid JSON string, using as is", { payload });
84
+ }
85
+ }
86
+ const result = await apiClient.triggerTask(input.taskId, {
87
+ payload,
88
+ options: input.options,
89
+ });
90
+ const taskRunUrl = await ctx.getDashboardUrl(`/projects/v3/${projectRef}/runs/${result.id}`);
91
+ const contents = [
92
+ `Task ${input.taskId} triggered and run with ID created: ${result.id}.`,
93
+ `View the run in the dashboard: ${taskRunUrl}`,
94
+ `Use the ${toolsMetadata.wait_for_run_to_complete.name} tool to wait for the run to complete and the ${toolsMetadata.get_run_details.name} tool to get the details of the run.`,
95
+ ];
96
+ if (input.environment === "dev") {
97
+ const cliApiClient = await ctx.getCliApiClient(input.branch);
98
+ const devStatus = await cliApiClient.getDevStatus(projectRef);
99
+ const isConnected = devStatus.success ? devStatus.data.isConnected : false;
100
+ const connectionMessage = isConnected
101
+ ? undefined
102
+ : "The dev CLI is not connected to this project, because it is not currently running. Make sure to run the dev command to execute triggered tasks.";
103
+ if (connectionMessage) {
104
+ contents.push(connectionMessage);
105
+ }
106
+ }
107
+ return {
108
+ content: [
109
+ {
110
+ type: "text",
111
+ text: contents.join("\n"),
112
+ },
113
+ ],
114
+ };
115
+ }),
116
+ };
117
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/mcp/tools/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { McpContext } from "./context.js";
2
+ export declare function registerTools(context: McpContext): void;
@@ -0,0 +1,40 @@
1
+ import { deployTool, listDeploysTool } from "./tools/deploys.js";
2
+ import { searchDocsTool } from "./tools/docs.js";
3
+ import { createProjectInOrgTool, initializeProjectTool, listOrgsTool, listProjectsTool, } from "./tools/orgs.js";
4
+ import { listPreviewBranchesTool } from "./tools/previewBranches.js";
5
+ import { cancelRunTool, getRunDetailsTool, listRunsTool, waitForRunToCompleteTool, } from "./tools/runs.js";
6
+ import { getCurrentWorker, triggerTaskTool } from "./tools/tasks.js";
7
+ import { respondWithError } from "./utils.js";
8
+ export function registerTools(context) {
9
+ const tools = [
10
+ searchDocsTool,
11
+ listOrgsTool,
12
+ listProjectsTool,
13
+ createProjectInOrgTool,
14
+ initializeProjectTool,
15
+ getCurrentWorker,
16
+ triggerTaskTool,
17
+ listRunsTool,
18
+ getRunDetailsTool,
19
+ waitForRunToCompleteTool,
20
+ cancelRunTool,
21
+ deployTool,
22
+ listDeploysTool,
23
+ listPreviewBranchesTool,
24
+ ];
25
+ for (const tool of tools) {
26
+ context.server.registerTool(tool.name, {
27
+ annotations: { title: tool.title },
28
+ description: tool.description,
29
+ inputSchema: tool.inputSchema,
30
+ }, async (input, extra) => {
31
+ try {
32
+ return tool.handler(input, { ...extra, ctx: context });
33
+ }
34
+ catch (error) {
35
+ return respondWithError(error);
36
+ }
37
+ });
38
+ }
39
+ }
40
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,UAAU,aAAa,CAAC,OAAmB;IAC/C,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;QACtB,qBAAqB;QACrB,gBAAgB;QAChB,eAAe;QACf,YAAY;QACZ,iBAAiB;QACjB,wBAAwB;QACxB,aAAa;QACb,UAAU;QACV,eAAe;QACf,uBAAuB;KACxB,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,YAAY,CACzB,IAAI,CAAC,IAAI,EACT;YACE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAClC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,EACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js";
2
+ import { ServerNotification, ServerRequest } from "@modelcontextprotocol/sdk/types.js";
3
+ import { McpContext } from "./context.js";
4
+ export type ToolMeta = RequestHandlerExtra<ServerRequest, ServerNotification> & {
5
+ ctx: McpContext;
6
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ import type { CallToolResult, ServerNotification } from "@modelcontextprotocol/sdk/types.js";
2
+ import { z } from "zod";
3
+ import { ToolMeta } from "./types.js";
4
+ export declare function respondWithError(error: unknown): CallToolResult;
5
+ export type ToolHandlerMeta = ToolMeta & {
6
+ createProgressTracker: (total: number) => ProgressTracker;
7
+ };
8
+ export declare function toolHandler<TInputShape extends z.ZodRawShape>(shape: TInputShape, handler: (input: z.output<z.ZodObject<TInputShape>>, meta: ToolHandlerMeta) => Promise<CallToolResult>): (input: unknown, extra: ToolMeta) => Promise<{
9
+ [x: string]: unknown;
10
+ content: ({
11
+ [x: string]: unknown;
12
+ type: "text";
13
+ text: string;
14
+ _meta?: {
15
+ [x: string]: unknown;
16
+ } | undefined;
17
+ } | {
18
+ [x: string]: unknown;
19
+ type: "image";
20
+ data: string;
21
+ mimeType: string;
22
+ _meta?: {
23
+ [x: string]: unknown;
24
+ } | undefined;
25
+ } | {
26
+ [x: string]: unknown;
27
+ type: "audio";
28
+ data: string;
29
+ mimeType: string;
30
+ _meta?: {
31
+ [x: string]: unknown;
32
+ } | undefined;
33
+ } | {
34
+ [x: string]: unknown;
35
+ type: "resource_link";
36
+ name: string;
37
+ uri: string;
38
+ description?: string | undefined;
39
+ title?: string | undefined;
40
+ _meta?: {
41
+ [x: string]: unknown;
42
+ } | undefined;
43
+ mimeType?: string | undefined;
44
+ } | {
45
+ [x: string]: unknown;
46
+ type: "resource";
47
+ resource: {
48
+ [x: string]: unknown;
49
+ text: string;
50
+ uri: string;
51
+ _meta?: {
52
+ [x: string]: unknown;
53
+ } | undefined;
54
+ mimeType?: string | undefined;
55
+ } | {
56
+ [x: string]: unknown;
57
+ uri: string;
58
+ blob: string;
59
+ _meta?: {
60
+ [x: string]: unknown;
61
+ } | undefined;
62
+ mimeType?: string | undefined;
63
+ };
64
+ _meta?: {
65
+ [x: string]: unknown;
66
+ } | undefined;
67
+ })[];
68
+ isError?: boolean | undefined;
69
+ _meta?: {
70
+ [x: string]: unknown;
71
+ } | undefined;
72
+ structuredContent?: {
73
+ [x: string]: unknown;
74
+ } | undefined;
75
+ }>;
76
+ declare class ProgressTracker {
77
+ #private;
78
+ private progress;
79
+ private progressToken;
80
+ private total;
81
+ private message;
82
+ private sendNotification;
83
+ constructor(total: number, sendNotification: (notification: ServerNotification) => Promise<void>, progressToken?: string | number);
84
+ updateProgress(progress: number, message?: string): Promise<void>;
85
+ incrementProgress(increment: number, message?: string): Promise<void>;
86
+ complete(message?: string): Promise<void>;
87
+ getProgress(): number;
88
+ }
89
+ export {};