trigger.dev 4.0.0 → 4.0.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 (101) 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 +1 -1
  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 +380 -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 +1 -1
  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 +146 -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 +77 -0
  41. package/dist/esm/mcp/config.js +82 -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 +5 -0
  47. package/dist/esm/mcp/formatters.js +310 -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 +254 -0
  71. package/dist/esm/mcp/tools/runs.js +119 -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 +39 -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/configFiles.d.ts +29 -0
  95. package/dist/esm/utilities/configFiles.js +51 -0
  96. package/dist/esm/utilities/configFiles.js.map +1 -1
  97. package/dist/esm/utilities/fileSystem.d.ts +6 -0
  98. package/dist/esm/utilities/fileSystem.js +41 -3
  99. package/dist/esm/utilities/fileSystem.js.map +1 -1
  100. package/dist/esm/version.js +1 -1
  101. package/package.json +11 -7
@@ -0,0 +1,129 @@
1
+ import { tryCatch } from "@trigger.dev/core/utils";
2
+ import { ApiClient } from "@trigger.dev/core/v3";
3
+ import path from "node:path";
4
+ import { CliApiClient } from "../apiClient.js";
5
+ import { loadConfig } from "../config.js";
6
+ import { mcpAuth } from "./auth.js";
7
+ import { hasElicitationCapability, hasRootsCapability, hasSamplingCapability, } from "./capabilities.js";
8
+ import { fileURLToPath } from "node:url";
9
+ export class McpContext {
10
+ server;
11
+ options;
12
+ constructor(server, options) {
13
+ this.server = server;
14
+ this.options = options;
15
+ }
16
+ get logger() {
17
+ return this.options.fileLogger;
18
+ }
19
+ async getAuth() {
20
+ const auth = await mcpAuth({
21
+ server: this.server,
22
+ defaultApiUrl: this.options.apiUrl,
23
+ profile: this.options.profile,
24
+ context: this,
25
+ });
26
+ if (!auth.ok) {
27
+ throw new Error(auth.error);
28
+ }
29
+ return auth;
30
+ }
31
+ async getCliApiClient(branch) {
32
+ const auth = await this.getAuth();
33
+ return new CliApiClient(auth.auth.apiUrl, auth.auth.accessToken, branch);
34
+ }
35
+ async getApiClient(options) {
36
+ const cliApiClient = await this.getCliApiClient(options.branch);
37
+ const jwt = await cliApiClient.getJWT(options.projectRef, options.environment, {
38
+ claims: {
39
+ scopes: options.scopes,
40
+ },
41
+ });
42
+ if (!jwt.success) {
43
+ throw new Error(`Could not get the authentication token for the project ${options.projectRef} in the ${options.environment} environment. Please try again.`);
44
+ }
45
+ return new ApiClient(cliApiClient.apiURL, jwt.data.token);
46
+ }
47
+ async getCwd() {
48
+ if (!this.hasRootsCapability) {
49
+ return undefined;
50
+ }
51
+ const response = await this.server.server.listRoots();
52
+ if (response.roots.length >= 1) {
53
+ return response.roots[0]?.uri ? fileURLToPath(response.roots[0].uri) : undefined;
54
+ }
55
+ return undefined;
56
+ }
57
+ async getProjectRef(options) {
58
+ if (options.projectRef) {
59
+ return options.projectRef;
60
+ }
61
+ const projectDir = await this.getProjectDir({ cwd: options.cwd });
62
+ if (!projectDir.ok) {
63
+ throw new Error(projectDir.error);
64
+ }
65
+ const [_, config] = await tryCatch(loadConfig({ cwd: projectDir.cwd }));
66
+ if (config?.configFile &&
67
+ typeof config.project === "string" &&
68
+ config.project.startsWith("proj_")) {
69
+ return config.project;
70
+ }
71
+ throw new Error("No project ref found. Please provide a projectRef.");
72
+ }
73
+ async getProjectDir({ cwd }) {
74
+ // If cwd is a path to the actual trigger.config.ts file, then we should set the cwd to the directory of the file
75
+ let $cwd = cwd ? (path.extname(cwd) !== "" ? path.dirname(cwd) : cwd) : undefined;
76
+ function isRelativePath(filePath) {
77
+ return !path.isAbsolute(filePath);
78
+ }
79
+ if (!cwd) {
80
+ if (!this.hasRootsCapability) {
81
+ return {
82
+ ok: false,
83
+ error: "The current MCP server does not support the roots capability, so please call the tool again with a projectRef or an absolute path as cwd parameter",
84
+ };
85
+ }
86
+ $cwd = await this.getCwd();
87
+ }
88
+ else if (isRelativePath(cwd)) {
89
+ if (!this.hasRootsCapability) {
90
+ return {
91
+ ok: false,
92
+ error: "The current MCP server does not support the roots capability, so please call the tool again with a projectRef or an absolute path as cwd parameter",
93
+ };
94
+ }
95
+ const resolvedCwd = await this.getCwd();
96
+ if (!resolvedCwd) {
97
+ return {
98
+ ok: false,
99
+ error: "No current working directory found. Please provide a projectRef or a cwd.",
100
+ };
101
+ }
102
+ $cwd = path.resolve(resolvedCwd, cwd);
103
+ }
104
+ if (!$cwd) {
105
+ return {
106
+ ok: false,
107
+ error: "No current working directory found. Please provide a projectRef or a cwd.",
108
+ };
109
+ }
110
+ return {
111
+ ok: true,
112
+ cwd: $cwd,
113
+ };
114
+ }
115
+ async getDashboardUrl(path) {
116
+ const auth = await this.getAuth();
117
+ return `${auth.dashboardUrl}${path}`;
118
+ }
119
+ get hasRootsCapability() {
120
+ return hasRootsCapability(this.server);
121
+ }
122
+ get hasSamplingCapability() {
123
+ return hasSamplingCapability(this.server);
124
+ }
125
+ get hasElicitationCapability() {
126
+ return hasElicitationCapability(this.server);
127
+ }
128
+ }
129
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ListRunResponseItem, RetrieveRunResponse, RetrieveRunTraceResponseBody } from "@trigger.dev/core/v3/schemas";
2
+ import type { CursorPageResponse } from "@trigger.dev/core/v3/zodfetch";
3
+ export declare function formatRun(run: RetrieveRunResponse): string;
4
+ export declare function formatRunTrace(trace: RetrieveRunTraceResponseBody["trace"], maxTraceLines?: number): string;
5
+ export declare function formatRunList(runsPage: CursorPageResponse<ListRunResponseItem>): string;
@@ -0,0 +1,310 @@
1
+ const DEFAULT_MAX_TRACE_LINES = 500;
2
+ export function formatRun(run) {
3
+ const lines = [];
4
+ // Header with basic info
5
+ lines.push(`Run ${run.id}`);
6
+ lines.push(`Task: ${run.taskIdentifier}`);
7
+ lines.push(`Status: ${formatStatus(run.status)}`);
8
+ // Timing information
9
+ const timing = formatTiming(run);
10
+ if (timing) {
11
+ lines.push(`Timing: ${timing}`);
12
+ }
13
+ // Duration and cost
14
+ if (run.durationMs > 0) {
15
+ lines.push(`Duration: ${formatDuration(run.durationMs)}`);
16
+ }
17
+ if (run.costInCents > 0) {
18
+ lines.push(`Cost: $${(run.costInCents / 100).toFixed(4)}`);
19
+ }
20
+ // Attempt count
21
+ if (run.attemptCount > 1) {
22
+ lines.push(`Attempts: ${run.attemptCount}`);
23
+ }
24
+ // Version and trigger info
25
+ if (run.version) {
26
+ lines.push(`Version: ${run.version}`);
27
+ }
28
+ // Tags
29
+ if (run.tags && run.tags.length > 0) {
30
+ lines.push(`Tags: ${run.tags.join(", ")}`);
31
+ }
32
+ // Error information
33
+ if (run.error) {
34
+ lines.push(`Error: ${run.error.name || "Error"}: ${run.error.message}`);
35
+ if (run.error.stackTrace) {
36
+ lines.push(`Stack: ${run.error.stackTrace.split("\n")[0]}`); // First line only
37
+ }
38
+ }
39
+ // Related runs
40
+ const relatedInfo = formatRelatedRuns(run.relatedRuns);
41
+ if (relatedInfo) {
42
+ lines.push(relatedInfo);
43
+ }
44
+ // Schedule info
45
+ if (run.schedule) {
46
+ lines.push(`Schedule: ${run.schedule.generator.expression} (${run.schedule.id})`);
47
+ }
48
+ // Batch info
49
+ if (run.batchId) {
50
+ lines.push(`Batch: ${run.batchId}`);
51
+ }
52
+ // Test flag
53
+ if (run.isTest) {
54
+ lines.push(`Test run`);
55
+ }
56
+ // TTL info
57
+ if (run.ttl) {
58
+ lines.push(`TTL: ${run.ttl}`);
59
+ }
60
+ // Payload and Output data
61
+ if (run.payload) {
62
+ lines.push(`Payload: ${JSON.stringify(run.payload, null, 2)}`);
63
+ }
64
+ else if (run.payloadPresignedUrl) {
65
+ lines.push(`Payload: (large payload available via presigned URL: ${run.payloadPresignedUrl})`);
66
+ }
67
+ if (run.output) {
68
+ lines.push(`Output: ${JSON.stringify(run.output, null, 2)}`);
69
+ }
70
+ else if (run.outputPresignedUrl) {
71
+ lines.push(`Output: (large output available via presigned URL: ${run.outputPresignedUrl})`);
72
+ }
73
+ // Metadata
74
+ if (run.metadata && Object.keys(run.metadata).length > 0) {
75
+ lines.push(`Metadata: ${Object.keys(run.metadata).length} fields`);
76
+ }
77
+ return lines.join("\n");
78
+ }
79
+ function formatStatus(status) {
80
+ return status.toLowerCase().replace(/_/g, " ");
81
+ }
82
+ function formatTiming(run) {
83
+ const parts = [];
84
+ parts.push(`created ${formatDateTime(run.createdAt)}`);
85
+ if (run.startedAt) {
86
+ parts.push(`started ${formatDateTime(run.startedAt)}`);
87
+ }
88
+ if (run.finishedAt) {
89
+ parts.push(`finished ${formatDateTime(run.finishedAt)}`);
90
+ }
91
+ else if (run.delayedUntil) {
92
+ parts.push(`delayed until ${formatDateTime(run.delayedUntil)}`);
93
+ }
94
+ return parts.length > 0 ? parts.join(", ") : null;
95
+ }
96
+ function formatDateTime(date) {
97
+ if (!date)
98
+ return "unknown";
99
+ try {
100
+ return date
101
+ .toISOString()
102
+ .replace("T", " ")
103
+ .replace(/\.\d{3}Z$/, " UTC");
104
+ }
105
+ catch {
106
+ return "unknown";
107
+ }
108
+ }
109
+ function formatDuration(durationMs) {
110
+ if (durationMs < 1000)
111
+ return `${durationMs}ms`;
112
+ if (durationMs < 60000)
113
+ return `${(durationMs / 1000).toFixed(1)}s`;
114
+ if (durationMs < 3600000)
115
+ return `${(durationMs / 60000).toFixed(1)}m`;
116
+ return `${(durationMs / 3600000).toFixed(1)}h`;
117
+ }
118
+ function formatRelatedRuns(relatedRuns) {
119
+ const parts = [];
120
+ if (relatedRuns.parent) {
121
+ parts.push(`parent: ${relatedRuns.parent.id} (${relatedRuns.parent.status.toLowerCase()})`);
122
+ }
123
+ if (relatedRuns.root && relatedRuns.root.id !== relatedRuns.parent?.id) {
124
+ parts.push(`root: ${relatedRuns.root.id} (${relatedRuns.root.status.toLowerCase()})`);
125
+ }
126
+ if (relatedRuns.children && relatedRuns.children.length > 0) {
127
+ const childStatuses = relatedRuns.children.reduce((acc, child) => {
128
+ acc[child.status.toLowerCase()] = (acc[child.status.toLowerCase()] || 0) + 1;
129
+ return acc;
130
+ }, {});
131
+ const statusSummary = Object.entries(childStatuses)
132
+ .map(([status, count]) => `${count} ${status}`)
133
+ .join(", ");
134
+ parts.push(`children: ${relatedRuns.children.length} runs (${statusSummary})`);
135
+ }
136
+ return parts.length > 0 ? `Related: ${parts.join("; ")}` : null;
137
+ }
138
+ export function formatRunTrace(trace, maxTraceLines = DEFAULT_MAX_TRACE_LINES) {
139
+ const lines = [];
140
+ lines.push(`Trace ID: ${trace.traceId}`);
141
+ lines.push("");
142
+ // Format the root span and its children recursively
143
+ const reachedMaxLines = formatSpan(trace.rootSpan, lines, 0, maxTraceLines);
144
+ if (reachedMaxLines) {
145
+ lines.push(`(truncated logs to ${maxTraceLines} lines)`);
146
+ }
147
+ return lines.join("\n");
148
+ }
149
+ function formatSpan(span, lines, depth, maxLines) {
150
+ if (lines.length >= maxLines) {
151
+ return true;
152
+ }
153
+ const indent = " ".repeat(depth);
154
+ const prefix = depth === 0 ? "└─" : "├─";
155
+ // Format span header
156
+ const statusIndicator = getStatusIndicator(span.data);
157
+ const duration = formatDuration(span.data.duration);
158
+ const startTime = formatDateTime(span.data.startTime);
159
+ lines.push(`${indent}${prefix} ${span.message} ${statusIndicator}`);
160
+ lines.push(`${indent} Duration: ${duration}`);
161
+ lines.push(`${indent} Started: ${startTime}`);
162
+ if (span.data.taskSlug) {
163
+ lines.push(`${indent} Task: ${span.data.taskSlug}`);
164
+ }
165
+ if (span.data.taskPath) {
166
+ lines.push(`${indent} Path: ${span.data.taskPath}`);
167
+ }
168
+ if (span.data.queueName) {
169
+ lines.push(`${indent} Queue: ${span.data.queueName}`);
170
+ }
171
+ if (span.data.machinePreset) {
172
+ lines.push(`${indent} Machine: ${span.data.machinePreset}`);
173
+ }
174
+ if (span.data.workerVersion) {
175
+ lines.push(`${indent} Worker: ${span.data.workerVersion}`);
176
+ }
177
+ // Show properties if they exist
178
+ if (span.data.properties && Object.keys(span.data.properties).length > 0) {
179
+ lines.push(`${indent} Properties: ${JSON.stringify(span.data.properties, null, 2).replace(/\n/g, "\n" + indent + " ")}`);
180
+ }
181
+ // Show output if it exists
182
+ if (span.data.output) {
183
+ lines.push(`${indent} Output: ${JSON.stringify(span.data.output, null, 2).replace(/\n/g, "\n" + indent + " ")}`);
184
+ }
185
+ // Show events if they exist and are meaningful
186
+ if (span.data.events && span.data.events.length > 0) {
187
+ lines.push(`${indent} Events: ${span.data.events.length} events`);
188
+ // Optionally show first few events for context
189
+ const maxEvents = 3;
190
+ for (let i = 0; i < Math.min(span.data.events.length, maxEvents); i++) {
191
+ const event = span.data.events[i];
192
+ if (typeof event === "object" && event !== null) {
193
+ const eventStr = JSON.stringify(event, null, 2).replace(/\n/g, "\n" + indent + " ");
194
+ lines.push(`${indent} [${i + 1}] ${eventStr}`);
195
+ }
196
+ }
197
+ if (span.data.events.length > maxEvents) {
198
+ lines.push(`${indent} ... and ${span.data.events.length - maxEvents} more events`);
199
+ }
200
+ }
201
+ // Add spacing between spans
202
+ if (span.children && span.children.length > 0) {
203
+ lines.push("");
204
+ }
205
+ // Recursively format children
206
+ if (span.children) {
207
+ const reachedMaxLines = span.children.some((child, index) => {
208
+ const reachedMaxLines = formatSpan(child, lines, depth + 1, maxLines);
209
+ // Add spacing between sibling spans (except for the last one)
210
+ if (index < span.children.length - 1 && !reachedMaxLines) {
211
+ lines.push("");
212
+ }
213
+ return reachedMaxLines;
214
+ });
215
+ return reachedMaxLines;
216
+ }
217
+ return false;
218
+ }
219
+ function getStatusIndicator(spanData) {
220
+ if (spanData.isCancelled)
221
+ return "[CANCELLED]";
222
+ if (spanData.isError)
223
+ return "[ERROR]";
224
+ if (spanData.isPartial)
225
+ return "[PARTIAL]";
226
+ return "[COMPLETED]";
227
+ }
228
+ export function formatRunList(runsPage) {
229
+ const lines = [];
230
+ // Header with count info
231
+ const totalRuns = runsPage.data.length;
232
+ lines.push(`Found ${totalRuns} run${totalRuns === 1 ? "" : "s"}`);
233
+ lines.push("");
234
+ if (totalRuns === 0) {
235
+ lines.push("No runs found.");
236
+ return lines.join("\n");
237
+ }
238
+ // Format each run in a compact table-like format
239
+ runsPage.data.forEach((run, index) => {
240
+ lines.push(`${index + 1}. ${formatRunSummary(run)}`);
241
+ });
242
+ // Pagination info
243
+ lines.push("");
244
+ const paginationInfo = [];
245
+ if (runsPage.pagination.previous) {
246
+ paginationInfo.push("← Previous page available");
247
+ }
248
+ if (runsPage.pagination.next) {
249
+ paginationInfo.push("Next page available →");
250
+ }
251
+ if (paginationInfo.length > 0) {
252
+ lines.push(`Pagination: ${paginationInfo.join(" | ")}`);
253
+ if (runsPage.pagination.next) {
254
+ lines.push(`Next cursor: ${runsPage.pagination.next}`);
255
+ }
256
+ if (runsPage.pagination.previous) {
257
+ lines.push(`Previous cursor: ${runsPage.pagination.previous}`);
258
+ }
259
+ }
260
+ return lines.join("\n");
261
+ }
262
+ function formatRunSummary(run) {
263
+ const parts = [];
264
+ // Basic info: ID, task, status
265
+ parts.push(`${run.id}`);
266
+ parts.push(`${run.taskIdentifier}`);
267
+ parts.push(`${formatStatus(run.status)}`);
268
+ // Environment
269
+ parts.push(`env:${run.env.name}`);
270
+ // Timing - show the most relevant time
271
+ let timeInfo = "";
272
+ if (run.finishedAt) {
273
+ timeInfo = `finished ${formatDateTime(run.finishedAt)}`;
274
+ }
275
+ else if (run.startedAt) {
276
+ timeInfo = `started ${formatDateTime(run.startedAt)}`;
277
+ }
278
+ else if (run.delayedUntil) {
279
+ timeInfo = `delayed until ${formatDateTime(run.delayedUntil)}`;
280
+ }
281
+ else {
282
+ timeInfo = `created ${formatDateTime(run.createdAt)}`;
283
+ }
284
+ parts.push(timeInfo);
285
+ // Duration if available
286
+ if (run.durationMs > 0) {
287
+ parts.push(`took ${formatDuration(run.durationMs)}`);
288
+ }
289
+ // Cost if significant
290
+ if (run.costInCents > 0) {
291
+ parts.push(`$${(run.costInCents / 100).toFixed(4)}`);
292
+ }
293
+ // Tags if present
294
+ if (run.tags && run.tags.length > 0) {
295
+ const tagStr = run.tags.length > 2
296
+ ? `${run.tags.slice(0, 2).join(", ")}+${run.tags.length - 2}`
297
+ : run.tags.join(", ");
298
+ parts.push(`tags:[${tagStr}]`);
299
+ }
300
+ // Test flag
301
+ if (run.isTest) {
302
+ parts.push("[TEST]");
303
+ }
304
+ // Version if available
305
+ if (run.version) {
306
+ parts.push(`v${run.version}`);
307
+ }
308
+ return parts.join(" | ");
309
+ }
310
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/mcp/formatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare class FileLogger {
3
+ private filePath;
4
+ private server;
5
+ constructor(filePath: string, server: McpServer);
6
+ log(message: string, ...args: unknown[]): void;
7
+ private formatServerInfo;
8
+ private formatClientName;
9
+ private formatClientVersion;
10
+ private formatClientCapabilities;
11
+ }
@@ -0,0 +1,34 @@
1
+ import { appendFileSync } from "node:fs";
2
+ import util from "node:util";
3
+ export class FileLogger {
4
+ filePath;
5
+ server;
6
+ constructor(filePath, server) {
7
+ this.filePath = filePath;
8
+ this.server = server;
9
+ }
10
+ log(message, ...args) {
11
+ const logMessage = `[${new Date().toISOString()}][${this.formatServerInfo()}] ${message} - ${util.inspect(args, {
12
+ depth: null,
13
+ colors: false,
14
+ })}\n`;
15
+ appendFileSync(this.filePath, logMessage);
16
+ }
17
+ formatServerInfo() {
18
+ return `${this.formatClientName()} ${this.formatClientVersion()} ${this.formatClientCapabilities()}`;
19
+ }
20
+ formatClientName() {
21
+ const clientName = this.server.server.getClientVersion()?.name;
22
+ return `client=${clientName ?? "unknown"}`;
23
+ }
24
+ formatClientVersion() {
25
+ const clientVersion = this.server.server.getClientVersion();
26
+ return `version=${clientVersion?.version ?? "unknown"}`;
27
+ }
28
+ formatClientCapabilities() {
29
+ const clientCapabilities = this.server.server.getClientCapabilities();
30
+ const keys = Object.keys(clientCapabilities ?? {});
31
+ return `capabilities=${keys.join(",")}`;
32
+ }
33
+ }
34
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/mcp/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,UAAU;IACb,QAAQ,CAAS;IACjB,MAAM,CAAY;IAE1B,YAAY,QAAgB,EAAE,MAAiB;QAC7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,GAAG,IAAe;QACrC,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,gBAAgB,EAAE,KAAK,OAAO,MAAM,IAAI,CAAC,OAAO,CACvG,IAAI,EACJ;YACE,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,KAAK;SACd,CACF,IAAI,CAAC;QACN,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAEO,gBAAgB;QACtB,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;IACvG,CAAC;IAEO,gBAAgB;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC;QAC/D,OAAO,UAAU,UAAU,IAAI,SAAS,EAAE,CAAC;IAC7C,CAAC;IAEO,mBAAmB;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAE5D,OAAO,WAAW,aAAa,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC;IAC1D,CAAC;IAEO,wBAAwB;QAC9B,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAEtE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAEnD,OAAO,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1C,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export declare function performSearch(query: string, signal: AbortSignal): Promise<any>;
@@ -0,0 +1,65 @@
1
+ export async function performSearch(query, signal) {
2
+ const body = callToolBody("Search", { query });
3
+ const response = await fetch("https://trigger.dev/docs/mcp", {
4
+ method: "POST",
5
+ headers: {
6
+ "Content-Type": "application/json",
7
+ Accept: "application/json, text/event-stream",
8
+ "MCP-Protocol-Version": "2025-06-18",
9
+ },
10
+ signal,
11
+ body: JSON.stringify(body),
12
+ });
13
+ const data = await parseResponse(response);
14
+ return data;
15
+ }
16
+ async function parseResponse(response) {
17
+ if (response.headers.get("content-type")?.includes("text/event-stream")) {
18
+ return parseSSEResponse(response);
19
+ }
20
+ else {
21
+ return parseJSONResponse(response);
22
+ }
23
+ }
24
+ async function parseJSONResponse(response) {
25
+ const data = await response.json();
26
+ return data;
27
+ }
28
+ // Get the first data: event and return the parsed JSON of the event
29
+ async function parseSSEResponse(response) {
30
+ const reader = response.body?.getReader();
31
+ const decoder = new TextDecoder();
32
+ if (!reader) {
33
+ throw new Error("No reader found");
34
+ }
35
+ let buffer = "";
36
+ while (true) {
37
+ const { value, done } = await reader.read();
38
+ if (done)
39
+ throw new Error("SSE stream closed before data arrived");
40
+ buffer += decoder.decode(value, { stream: true });
41
+ const events = buffer.split("\n\n"); // SSE delimiter
42
+ buffer = events.pop(); // keep incomplete
43
+ for (const evt of events) {
44
+ for (const line of evt.split("\n")) {
45
+ if (line.startsWith("data:")) {
46
+ const json = line.slice(5).trim();
47
+ return JSON.parse(json); // ✅ got it
48
+ }
49
+ }
50
+ }
51
+ }
52
+ throw new Error("No data: event found");
53
+ }
54
+ function callToolBody(tool, args) {
55
+ return {
56
+ jsonrpc: "2.0",
57
+ id: 1,
58
+ method: "tools/call",
59
+ params: {
60
+ name: tool,
61
+ arguments: args,
62
+ },
63
+ };
64
+ }
65
+ //# sourceMappingURL=mintlifyClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mintlifyClient.js","sourceRoot":"","sources":["../../../src/mcp/mintlifyClient.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,MAAmB;IACpE,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,8BAA8B,EAAE;QAC3D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,qCAAqC;YAC7C,sBAAsB,EAAE,YAAY;SACrC;QACD,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAkB;IAC7C,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAkB;IACjD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,KAAK,UAAU,gBAAgB,CAAC,QAAkB;IAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEnE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB;QACrD,MAAM,GAAG,MAAM,CAAC,GAAG,EAAG,CAAC,CAAC,kBAAkB;QAE1C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAA6B;IAC/D,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,CAAC;QACL,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI;SAChB;KACF,CAAC;AACJ,CAAC"}