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,87 @@
1
+ import { VERSION } from "../version.js";
2
+ export const serverMetadata = {
3
+ name: "trigger",
4
+ version: VERSION,
5
+ instructions: `Trigger.dev MCP server to automate your Trigger.dev projects and answer questions about Trigger.dev by searching the docs.
6
+ If you need help setting up Trigger.dev in your project please refer to https://trigger.dev/docs/manual-setup.
7
+ If the user asks for help with adding Trigger.dev to their project, please refer to https://trigger.dev/docs/manual-setup.
8
+ `,
9
+ };
10
+ export const toolsMetadata = {
11
+ search_docs: {
12
+ name: "search_docs",
13
+ title: "Search Docs",
14
+ description: "Search across the Trigger.dev documentation to find relevant information, code examples, API references, and guides. Use this tool when you need to answer questions about Trigger.dev, find specific documentation, understand how features work, or locate implementation details. The search returns contextual content with titles and direct links to the documentation pages",
15
+ },
16
+ list_projects: {
17
+ name: "list_projects",
18
+ title: "List Projects",
19
+ description: "List all projects for the current user, useful for when searching for a project and for looking up a projectRef",
20
+ },
21
+ list_orgs: {
22
+ name: "list_orgs",
23
+ title: "List Organizations",
24
+ description: "List all organizations for the current user. Useful when looking up an org slug or ID.",
25
+ },
26
+ create_project_in_org: {
27
+ name: "create_project_in_org",
28
+ title: "Create Project in Organization",
29
+ description: "Create a new project in an organization. Only do this if the user wants to add Trigger.dev to an existing project. If there is already a trigger.config.ts file present, then you should not create a new project.",
30
+ },
31
+ initialize_project: {
32
+ name: "initialize_project",
33
+ title: "Initialize Project",
34
+ description: "Initialize Trigger.dev in your project. This will create a new project in the organization you select and add Trigger.dev to your project.",
35
+ },
36
+ get_tasks: {
37
+ name: "get_tasks",
38
+ title: "Get Tasks",
39
+ description: "Get all tasks in the project. Useful when searching for a task and for looking up a task identifier/slug",
40
+ },
41
+ get_current_worker: {
42
+ name: "get_current_worker",
43
+ title: "Get Current Worker",
44
+ description: "Get the current worker for the project. Useful when searching for a task and for looking up a task identifier/slug and payload schema, or looking for the latest version in a specific environment.",
45
+ },
46
+ trigger_task: {
47
+ name: "trigger_task",
48
+ title: "Trigger Task",
49
+ description: "Trigger a task in the project. Use the get_tasks tool to get a list of tasks and ask the user to select one if it's not clear which one to use. Use the wait_for_run_to_complete tool to wait for the run to complete.",
50
+ },
51
+ get_run_details: {
52
+ name: "get_run_details",
53
+ title: "Get Run Details",
54
+ description: "Get the details of a run. The run ID is the ID of the run that was triggered. It starts with run_",
55
+ },
56
+ wait_for_run_to_complete: {
57
+ name: "wait_for_run_to_complete",
58
+ title: "Wait for Run to Complete",
59
+ description: "Wait for a run to complete. The run ID is the ID of the run that was triggered. It starts with run_",
60
+ },
61
+ cancel_run: {
62
+ name: "cancel_run",
63
+ title: "Cancel Run",
64
+ description: "Cancel a run. The run ID is the ID of the run that was triggered. It starts with run_",
65
+ },
66
+ list_runs: {
67
+ name: "list_runs",
68
+ title: "List Runs",
69
+ description: "List all runs for a project. Use this tool when you need to search for a run or list all runs for a project.",
70
+ },
71
+ deploy: {
72
+ name: "deploy",
73
+ title: "Deploy",
74
+ description: "Deploy a project. Use this tool when you need to deploy a project. This will trigger a deployment for the project. This is a long running operation and including a progress token will allow you to display the progress to the user.",
75
+ },
76
+ list_deploys: {
77
+ name: "list_deploys",
78
+ title: "List Deploys",
79
+ description: "List all deploys for a project. Use this tool when you need to search for a deploy or list all deploys for a project.",
80
+ },
81
+ list_preview_branches: {
82
+ name: "list_preview_branches",
83
+ title: "List Preview Branches",
84
+ description: "List all preview branches for a project. Use this tool when you need to search for a preview branch or list all preview branches for a project.",
85
+ },
86
+ };
87
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/mcp/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE;;;GAGb;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW,EAAE;QACX,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,oXAAoX;KACvX;IACD,aAAa,EAAE;QACb,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,iHAAiH;KACpH;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,wFAAwF;KAC3F;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,oNAAoN;KACvN;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,4IAA4I;KAC/I;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,0GAA0G;KAC7G;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,qMAAqM;KACxM;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,wNAAwN;KAC3N;IACD,eAAe,EAAE;QACf,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,mGAAmG;KACtG;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,qGAAqG;KACxG;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,uFAAuF;KAC1F;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,8GAA8G;KACjH;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,WAAW,EACT,wOAAwO;KAC3O;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,uHAAuH;KAC1H;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,iJAAiJ;KACpJ;CACF,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ApiClient } from "@trigger.dev/core/v3";
3
+ import { CliApiClient } from "../apiClient.js";
4
+ import { FileLogger } from "./logger.js";
5
+ export type McpContextOptions = {
6
+ projectRef?: string;
7
+ fileLogger?: FileLogger;
8
+ apiUrl?: string;
9
+ profile?: string;
10
+ devOnly?: boolean;
11
+ };
12
+ export declare class McpContext {
13
+ readonly server: McpServer;
14
+ readonly options: McpContextOptions;
15
+ constructor(server: McpServer, options: McpContextOptions);
16
+ get logger(): FileLogger | undefined;
17
+ getAuth(): Promise<import("../utilities/session.js").LoginResultOk>;
18
+ getCliApiClient(branch?: string): Promise<CliApiClient>;
19
+ getApiClient(options: {
20
+ projectRef: string;
21
+ environment: string;
22
+ scopes: string[];
23
+ branch?: string;
24
+ }): Promise<ApiClient>;
25
+ getCwd(): Promise<string | undefined>;
26
+ getProjectRef(options: {
27
+ projectRef?: string;
28
+ cwd?: string;
29
+ }): Promise<string>;
30
+ getProjectDir({ cwd }: {
31
+ cwd?: string;
32
+ }): Promise<{
33
+ ok: boolean;
34
+ error: string;
35
+ cwd?: undefined;
36
+ } | {
37
+ ok: boolean;
38
+ cwd: string;
39
+ error?: undefined;
40
+ }>;
41
+ getDashboardUrl(path: string): Promise<string>;
42
+ get hasRootsCapability(): boolean;
43
+ get hasSamplingCapability(): boolean;
44
+ get hasElicitationCapability(): boolean;
45
+ }
@@ -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,7 @@
1
+ import { AnyRunShape } from "@trigger.dev/core/v3";
2
+ import { ListRunResponseItem, RetrieveRunResponse, RetrieveRunTraceResponseBody } from "@trigger.dev/core/v3/schemas";
3
+ import type { CursorPageResponse } from "@trigger.dev/core/v3/zodfetch";
4
+ export declare function formatRun(run: RetrieveRunResponse): string;
5
+ export declare function formatRunShape(run: AnyRunShape): string;
6
+ export declare function formatRunTrace(trace: RetrieveRunTraceResponseBody["trace"], maxTraceLines?: number): string;
7
+ export declare function formatRunList(runsPage: CursorPageResponse<ListRunResponseItem>): string;
@@ -0,0 +1,330 @@
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
+ export function formatRunShape(run) {
80
+ const lines = [];
81
+ lines.push(`Run ${run.id}`);
82
+ lines.push(`Task: ${run.taskIdentifier}`);
83
+ lines.push(`Status: ${formatStatus(run.status)}`);
84
+ if (run.output) {
85
+ lines.push(`Output: ${JSON.stringify(run.output, null, 2)}`);
86
+ }
87
+ if (run.error) {
88
+ lines.push(`Error: ${run.error.name || "Error"}: ${run.error.message}`);
89
+ }
90
+ if (run.metadata) {
91
+ lines.push(`Metadata: ${JSON.stringify(run.metadata, null, 2)}`);
92
+ }
93
+ lines.push(`Created at: ${formatDateTime(run.createdAt)}`);
94
+ if (run.finishedAt) {
95
+ lines.push(`Finished at: ${formatDateTime(run.finishedAt)}`);
96
+ }
97
+ return lines.join("\n");
98
+ }
99
+ function formatStatus(status) {
100
+ return status.toLowerCase().replace(/_/g, " ");
101
+ }
102
+ function formatTiming(run) {
103
+ const parts = [];
104
+ parts.push(`created ${formatDateTime(run.createdAt)}`);
105
+ if (run.startedAt) {
106
+ parts.push(`started ${formatDateTime(run.startedAt)}`);
107
+ }
108
+ if (run.finishedAt) {
109
+ parts.push(`finished ${formatDateTime(run.finishedAt)}`);
110
+ }
111
+ else if (run.delayedUntil) {
112
+ parts.push(`delayed until ${formatDateTime(run.delayedUntil)}`);
113
+ }
114
+ return parts.length > 0 ? parts.join(", ") : null;
115
+ }
116
+ function formatDateTime(date) {
117
+ if (!date)
118
+ return "unknown";
119
+ try {
120
+ return date
121
+ .toISOString()
122
+ .replace("T", " ")
123
+ .replace(/\.\d{3}Z$/, " UTC");
124
+ }
125
+ catch {
126
+ return "unknown";
127
+ }
128
+ }
129
+ function formatDuration(durationMs) {
130
+ if (durationMs < 1000)
131
+ return `${durationMs}ms`;
132
+ if (durationMs < 60000)
133
+ return `${(durationMs / 1000).toFixed(1)}s`;
134
+ if (durationMs < 3600000)
135
+ return `${(durationMs / 60000).toFixed(1)}m`;
136
+ return `${(durationMs / 3600000).toFixed(1)}h`;
137
+ }
138
+ function formatRelatedRuns(relatedRuns) {
139
+ const parts = [];
140
+ if (relatedRuns.parent) {
141
+ parts.push(`parent: ${relatedRuns.parent.id} (${relatedRuns.parent.status.toLowerCase()})`);
142
+ }
143
+ if (relatedRuns.root && relatedRuns.root.id !== relatedRuns.parent?.id) {
144
+ parts.push(`root: ${relatedRuns.root.id} (${relatedRuns.root.status.toLowerCase()})`);
145
+ }
146
+ if (relatedRuns.children && relatedRuns.children.length > 0) {
147
+ const childStatuses = relatedRuns.children.reduce((acc, child) => {
148
+ acc[child.status.toLowerCase()] = (acc[child.status.toLowerCase()] || 0) + 1;
149
+ return acc;
150
+ }, {});
151
+ const statusSummary = Object.entries(childStatuses)
152
+ .map(([status, count]) => `${count} ${status}`)
153
+ .join(", ");
154
+ parts.push(`children: ${relatedRuns.children.length} runs (${statusSummary})`);
155
+ }
156
+ return parts.length > 0 ? `Related: ${parts.join("; ")}` : null;
157
+ }
158
+ export function formatRunTrace(trace, maxTraceLines = DEFAULT_MAX_TRACE_LINES) {
159
+ const lines = [];
160
+ lines.push(`Trace ID: ${trace.traceId}`);
161
+ lines.push("");
162
+ // Format the root span and its children recursively
163
+ const reachedMaxLines = formatSpan(trace.rootSpan, lines, 0, maxTraceLines);
164
+ if (reachedMaxLines) {
165
+ lines.push(`(truncated logs to ${maxTraceLines} lines)`);
166
+ }
167
+ return lines.join("\n");
168
+ }
169
+ function formatSpan(span, lines, depth, maxLines) {
170
+ if (lines.length >= maxLines) {
171
+ return true;
172
+ }
173
+ const indent = " ".repeat(depth);
174
+ const prefix = depth === 0 ? "└─" : "├─";
175
+ // Format span header
176
+ const statusIndicator = getStatusIndicator(span.data);
177
+ const duration = formatDuration(span.data.duration);
178
+ const startTime = formatDateTime(span.data.startTime);
179
+ lines.push(`${indent}${prefix} ${span.message} ${statusIndicator}`);
180
+ lines.push(`${indent} Duration: ${duration}`);
181
+ lines.push(`${indent} Started: ${startTime}`);
182
+ if (span.data.taskSlug) {
183
+ lines.push(`${indent} Task: ${span.data.taskSlug}`);
184
+ }
185
+ if (span.data.taskPath) {
186
+ lines.push(`${indent} Path: ${span.data.taskPath}`);
187
+ }
188
+ if (span.data.queueName) {
189
+ lines.push(`${indent} Queue: ${span.data.queueName}`);
190
+ }
191
+ if (span.data.machinePreset) {
192
+ lines.push(`${indent} Machine: ${span.data.machinePreset}`);
193
+ }
194
+ if (span.data.workerVersion) {
195
+ lines.push(`${indent} Worker: ${span.data.workerVersion}`);
196
+ }
197
+ // Show properties if they exist
198
+ if (span.data.properties && Object.keys(span.data.properties).length > 0) {
199
+ lines.push(`${indent} Properties: ${JSON.stringify(span.data.properties, null, 2).replace(/\n/g, "\n" + indent + " ")}`);
200
+ }
201
+ // Show output if it exists
202
+ if (span.data.output) {
203
+ lines.push(`${indent} Output: ${JSON.stringify(span.data.output, null, 2).replace(/\n/g, "\n" + indent + " ")}`);
204
+ }
205
+ // Show events if they exist and are meaningful
206
+ if (span.data.events && span.data.events.length > 0) {
207
+ lines.push(`${indent} Events: ${span.data.events.length} events`);
208
+ // Optionally show first few events for context
209
+ const maxEvents = 3;
210
+ for (let i = 0; i < Math.min(span.data.events.length, maxEvents); i++) {
211
+ const event = span.data.events[i];
212
+ if (typeof event === "object" && event !== null) {
213
+ const eventStr = JSON.stringify(event, null, 2).replace(/\n/g, "\n" + indent + " ");
214
+ lines.push(`${indent} [${i + 1}] ${eventStr}`);
215
+ }
216
+ }
217
+ if (span.data.events.length > maxEvents) {
218
+ lines.push(`${indent} ... and ${span.data.events.length - maxEvents} more events`);
219
+ }
220
+ }
221
+ // Add spacing between spans
222
+ if (span.children && span.children.length > 0) {
223
+ lines.push("");
224
+ }
225
+ // Recursively format children
226
+ if (span.children) {
227
+ const reachedMaxLines = span.children.some((child, index) => {
228
+ const reachedMaxLines = formatSpan(child, lines, depth + 1, maxLines);
229
+ // Add spacing between sibling spans (except for the last one)
230
+ if (index < span.children.length - 1 && !reachedMaxLines) {
231
+ lines.push("");
232
+ }
233
+ return reachedMaxLines;
234
+ });
235
+ return reachedMaxLines;
236
+ }
237
+ return false;
238
+ }
239
+ function getStatusIndicator(spanData) {
240
+ if (spanData.isCancelled)
241
+ return "[CANCELLED]";
242
+ if (spanData.isError)
243
+ return "[ERROR]";
244
+ if (spanData.isPartial)
245
+ return "[PARTIAL]";
246
+ return "[COMPLETED]";
247
+ }
248
+ export function formatRunList(runsPage) {
249
+ const lines = [];
250
+ // Header with count info
251
+ const totalRuns = runsPage.data.length;
252
+ lines.push(`Found ${totalRuns} run${totalRuns === 1 ? "" : "s"}`);
253
+ lines.push("");
254
+ if (totalRuns === 0) {
255
+ lines.push("No runs found.");
256
+ return lines.join("\n");
257
+ }
258
+ // Format each run in a compact table-like format
259
+ runsPage.data.forEach((run, index) => {
260
+ lines.push(`${index + 1}. ${formatRunSummary(run)}`);
261
+ });
262
+ // Pagination info
263
+ lines.push("");
264
+ const paginationInfo = [];
265
+ if (runsPage.pagination.previous) {
266
+ paginationInfo.push("← Previous page available");
267
+ }
268
+ if (runsPage.pagination.next) {
269
+ paginationInfo.push("Next page available →");
270
+ }
271
+ if (paginationInfo.length > 0) {
272
+ lines.push(`Pagination: ${paginationInfo.join(" | ")}`);
273
+ if (runsPage.pagination.next) {
274
+ lines.push(`Next cursor: ${runsPage.pagination.next}`);
275
+ }
276
+ if (runsPage.pagination.previous) {
277
+ lines.push(`Previous cursor: ${runsPage.pagination.previous}`);
278
+ }
279
+ }
280
+ return lines.join("\n");
281
+ }
282
+ function formatRunSummary(run) {
283
+ const parts = [];
284
+ // Basic info: ID, task, status
285
+ parts.push(`${run.id}`);
286
+ parts.push(`${run.taskIdentifier}`);
287
+ parts.push(`${formatStatus(run.status)}`);
288
+ // Environment
289
+ parts.push(`env:${run.env.name}`);
290
+ // Timing - show the most relevant time
291
+ let timeInfo = "";
292
+ if (run.finishedAt) {
293
+ timeInfo = `finished ${formatDateTime(run.finishedAt)}`;
294
+ }
295
+ else if (run.startedAt) {
296
+ timeInfo = `started ${formatDateTime(run.startedAt)}`;
297
+ }
298
+ else if (run.delayedUntil) {
299
+ timeInfo = `delayed until ${formatDateTime(run.delayedUntil)}`;
300
+ }
301
+ else {
302
+ timeInfo = `created ${formatDateTime(run.createdAt)}`;
303
+ }
304
+ parts.push(timeInfo);
305
+ // Duration if available
306
+ if (run.durationMs > 0) {
307
+ parts.push(`took ${formatDuration(run.durationMs)}`);
308
+ }
309
+ // Cost if significant
310
+ if (run.costInCents > 0) {
311
+ parts.push(`$${(run.costInCents / 100).toFixed(4)}`);
312
+ }
313
+ // Tags if present
314
+ if (run.tags && run.tags.length > 0) {
315
+ const tagStr = run.tags.length > 2
316
+ ? `${run.tags.slice(0, 2).join(", ")}+${run.tags.length - 2}`
317
+ : run.tags.join(", ");
318
+ parts.push(`tags:[${tagStr}]`);
319
+ }
320
+ // Test flag
321
+ if (run.isTest) {
322
+ parts.push("[TEST]");
323
+ }
324
+ // Version if available
325
+ if (run.version) {
326
+ parts.push(`v${run.version}`);
327
+ }
328
+ return parts.join(" | ");
329
+ }
330
+ //# 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
+ }