trigger.dev 4.0.0-v4-beta.28 → 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 (102) hide show
  1. package/README.md +26 -30
  2. package/dist/esm/apiClient.d.ts +56 -1
  3. package/dist/esm/apiClient.js +56 -1
  4. package/dist/esm/apiClient.js.map +1 -1
  5. package/dist/esm/cli/common.js +1 -1
  6. package/dist/esm/cli/common.js.map +1 -1
  7. package/dist/esm/cli/index.js +13 -9
  8. package/dist/esm/cli/index.js.map +1 -1
  9. package/dist/esm/commands/deploy.js +1 -1
  10. package/dist/esm/commands/deploy.js.map +1 -1
  11. package/dist/esm/commands/dev.d.ts +17 -5
  12. package/dist/esm/commands/dev.js +47 -0
  13. package/dist/esm/commands/dev.js.map +1 -1
  14. package/dist/esm/commands/init.d.ts +8 -0
  15. package/dist/esm/commands/init.js +127 -63
  16. package/dist/esm/commands/init.js.map +1 -1
  17. package/dist/esm/commands/install-mcp.d.ts +50 -0
  18. package/dist/esm/commands/install-mcp.js +497 -0
  19. package/dist/esm/commands/install-mcp.js.map +1 -0
  20. package/dist/esm/commands/install-rules.d.ts +11 -0
  21. package/dist/esm/commands/install-rules.js +380 -0
  22. package/dist/esm/commands/install-rules.js.map +1 -0
  23. package/dist/esm/commands/login.d.ts +5 -0
  24. package/dist/esm/commands/login.js +1 -1
  25. package/dist/esm/commands/login.js.map +1 -1
  26. package/dist/esm/commands/mcp.d.ts +38 -0
  27. package/dist/esm/commands/mcp.js +82 -0
  28. package/dist/esm/commands/mcp.js.map +1 -0
  29. package/dist/esm/commands/update.d.ts +1 -0
  30. package/dist/esm/commands/update.js +6 -6
  31. package/dist/esm/commands/update.js.map +1 -1
  32. package/dist/esm/dev/devOutput.js +3 -3
  33. package/dist/esm/dev/devOutput.js.map +1 -1
  34. package/dist/esm/entryPoints/managed/env.d.ts +5 -5
  35. package/dist/esm/mcp/auth.d.ts +12 -0
  36. package/dist/esm/mcp/auth.js +146 -0
  37. package/dist/esm/mcp/auth.js.map +1 -0
  38. package/dist/esm/mcp/capabilities.d.ts +4 -0
  39. package/dist/esm/mcp/capabilities.js +22 -0
  40. package/dist/esm/mcp/capabilities.js.map +1 -0
  41. package/dist/esm/mcp/config.d.ts +77 -0
  42. package/dist/esm/mcp/config.js +82 -0
  43. package/dist/esm/mcp/config.js.map +1 -0
  44. package/dist/esm/mcp/context.d.ts +45 -0
  45. package/dist/esm/mcp/context.js +129 -0
  46. package/dist/esm/mcp/context.js.map +1 -0
  47. package/dist/esm/mcp/formatters.d.ts +5 -0
  48. package/dist/esm/mcp/formatters.js +310 -0
  49. package/dist/esm/mcp/formatters.js.map +1 -0
  50. package/dist/esm/mcp/logger.d.ts +11 -0
  51. package/dist/esm/mcp/logger.js +34 -0
  52. package/dist/esm/mcp/logger.js.map +1 -0
  53. package/dist/esm/mcp/mintlifyClient.d.ts +1 -0
  54. package/dist/esm/mcp/mintlifyClient.js +65 -0
  55. package/dist/esm/mcp/mintlifyClient.js.map +1 -0
  56. package/dist/esm/mcp/schemas.d.ts +324 -0
  57. package/dist/esm/mcp/schemas.js +144 -0
  58. package/dist/esm/mcp/schemas.js.map +1 -0
  59. package/dist/esm/mcp/tools/deploys.d.ts +174 -0
  60. package/dist/esm/mcp/tools/deploys.js +161 -0
  61. package/dist/esm/mcp/tools/deploys.js.map +1 -0
  62. package/dist/esm/mcp/tools/docs.d.ts +77 -0
  63. package/dist/esm/mcp/tools/docs.js +18 -0
  64. package/dist/esm/mcp/tools/docs.js.map +1 -0
  65. package/dist/esm/mcp/tools/orgs.d.ts +172 -0
  66. package/dist/esm/mcp/tools/orgs.js +172 -0
  67. package/dist/esm/mcp/tools/orgs.js.map +1 -0
  68. package/dist/esm/mcp/tools/previewBranches.d.ts +78 -0
  69. package/dist/esm/mcp/tools/previewBranches.js +28 -0
  70. package/dist/esm/mcp/tools/previewBranches.js.map +1 -0
  71. package/dist/esm/mcp/tools/runs.d.ts +254 -0
  72. package/dist/esm/mcp/tools/runs.js +119 -0
  73. package/dist/esm/mcp/tools/runs.js.map +1 -0
  74. package/dist/esm/mcp/tools/tasks.d.ts +200 -0
  75. package/dist/esm/mcp/tools/tasks.js +117 -0
  76. package/dist/esm/mcp/tools/tasks.js.map +1 -0
  77. package/dist/esm/mcp/tools.d.ts +2 -0
  78. package/dist/esm/mcp/tools.js +39 -0
  79. package/dist/esm/mcp/tools.js.map +1 -0
  80. package/dist/esm/mcp/types.d.ts +6 -0
  81. package/dist/esm/mcp/types.js +2 -0
  82. package/dist/esm/mcp/types.js.map +1 -0
  83. package/dist/esm/mcp/utils.d.ts +89 -0
  84. package/dist/esm/mcp/utils.js +95 -0
  85. package/dist/esm/mcp/utils.js.map +1 -0
  86. package/dist/esm/rules/install.d.ts +1 -0
  87. package/dist/esm/rules/install.js +2 -0
  88. package/dist/esm/rules/install.js.map +1 -0
  89. package/dist/esm/rules/manifest.d.ts +145 -0
  90. package/dist/esm/rules/manifest.js +110 -0
  91. package/dist/esm/rules/manifest.js.map +1 -0
  92. package/dist/esm/rules/types.d.ts +3 -0
  93. package/dist/esm/rules/types.js +3 -0
  94. package/dist/esm/rules/types.js.map +1 -0
  95. package/dist/esm/utilities/configFiles.d.ts +29 -0
  96. package/dist/esm/utilities/configFiles.js +51 -0
  97. package/dist/esm/utilities/configFiles.js.map +1 -1
  98. package/dist/esm/utilities/fileSystem.d.ts +6 -0
  99. package/dist/esm/utilities/fileSystem.js +41 -3
  100. package/dist/esm/utilities/fileSystem.js.map +1 -1
  101. package/dist/esm/version.js +1 -1
  102. package/package.json +11 -7
@@ -0,0 +1,161 @@
1
+ import { DeployInput, ListDeploysInput } from "../schemas.js";
2
+ import { toolsMetadata } from "../config.js";
3
+ import { respondWithError, toolHandler } from "../utils.js";
4
+ import { x } from "tinyexec";
5
+ import { getPackageJson, tryResolveTriggerPackageVersion } from "../../commands/update.js";
6
+ import { VERSION } from "../../version.js";
7
+ import { resolveSync as esmResolve } from "mlly";
8
+ import { fileURLToPath } from "node:url";
9
+ import stripAnsi from "strip-ansi";
10
+ export const deployTool = {
11
+ name: toolsMetadata.deploy.name,
12
+ title: toolsMetadata.deploy.title,
13
+ description: toolsMetadata.deploy.description,
14
+ inputSchema: DeployInput.shape,
15
+ handler: toolHandler(DeployInput.shape, async (input, { ctx, createProgressTracker, _meta }) => {
16
+ ctx.logger?.log("calling deploy", { input });
17
+ if (ctx.options.devOnly) {
18
+ return respondWithError(`This MCP server is only available for the dev environment. The deploy command is not allowed with the --dev-only flag.`);
19
+ }
20
+ const cwd = await ctx.getProjectDir({ cwd: input.configPath });
21
+ if (!cwd.ok) {
22
+ return respondWithError(cwd.error);
23
+ }
24
+ const auth = await ctx.getAuth();
25
+ const args = ["deploy", "--env", input.environment, "--api-url", auth.auth.apiUrl];
26
+ if (input.environment === "preview" && input.branch) {
27
+ args.push("--branch", input.branch);
28
+ }
29
+ if (ctx.options.profile) {
30
+ args.push("--profile", ctx.options.profile);
31
+ }
32
+ if (input.skipPromotion) {
33
+ args.push("--skip-promotion");
34
+ }
35
+ if (input.skipSyncEnvVars) {
36
+ args.push("--skip-sync-env-vars");
37
+ }
38
+ if (input.skipUpdateCheck) {
39
+ args.push("--skip-update-check");
40
+ }
41
+ const [nodePath, cliPath] = await resolveCLIExec(ctx, cwd.cwd);
42
+ ctx.logger?.log("deploy process args", {
43
+ nodePath,
44
+ cliPath,
45
+ args,
46
+ meta: _meta,
47
+ });
48
+ const progressTracker = createProgressTracker(100);
49
+ await progressTracker.updateProgress(5, `Starting deploy to ${input.environment}${input.branch ? ` on branch ${input.branch}` : ""}`);
50
+ const deployProcess = x(nodePath, [cliPath, ...args], {
51
+ nodeOptions: {
52
+ cwd: cwd.cwd,
53
+ env: {
54
+ TRIGGER_MCP_SERVER: "1",
55
+ },
56
+ },
57
+ });
58
+ const logs = [];
59
+ for await (const line of deployProcess) {
60
+ const lineWithoutAnsi = stripAnsi(line);
61
+ const buildingVersion = lineWithoutAnsi.match(/Building version (\d+\.\d+)/);
62
+ if (buildingVersion) {
63
+ await progressTracker.incrementProgress(1, `Building version ${buildingVersion[1]}`);
64
+ }
65
+ else {
66
+ await progressTracker.incrementProgress(1);
67
+ }
68
+ logs.push(stripAnsi(line));
69
+ }
70
+ await progressTracker.complete("Deploy complete");
71
+ ctx.logger?.log("deploy deployProcess", {
72
+ logs,
73
+ });
74
+ if (deployProcess.exitCode !== 0) {
75
+ return respondWithError(logs.join("\n"));
76
+ }
77
+ return {
78
+ content: [{ type: "text", text: logs.join("\n") }],
79
+ };
80
+ }),
81
+ };
82
+ export const listDeploysTool = {
83
+ name: toolsMetadata.list_deploys.name,
84
+ title: toolsMetadata.list_deploys.title,
85
+ description: toolsMetadata.list_deploys.description,
86
+ inputSchema: ListDeploysInput.shape,
87
+ handler: toolHandler(ListDeploysInput.shape, async (input, { ctx }) => {
88
+ ctx.logger?.log("calling list_deploys", { input });
89
+ if (ctx.options.devOnly) {
90
+ 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.`);
91
+ }
92
+ const projectRef = await ctx.getProjectRef({
93
+ projectRef: input.projectRef,
94
+ cwd: input.configPath,
95
+ });
96
+ const apiClient = await ctx.getApiClient({
97
+ projectRef,
98
+ environment: input.environment,
99
+ scopes: ["read:deployments"],
100
+ branch: input.branch,
101
+ });
102
+ const result = await apiClient.listDeployments(input);
103
+ return {
104
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
105
+ };
106
+ }),
107
+ };
108
+ async function resolveCLIExec(context, cwd) {
109
+ // Lets first try to get the version of the CLI package
110
+ const installedCLI = await tryResolveTriggerCLIPath(context, cwd);
111
+ if (installedCLI) {
112
+ context.logger?.log("resolve_cli_exec installedCLI", { installedCLI });
113
+ return [process.argv[0] ?? "node", installedCLI.path];
114
+ }
115
+ const sdkVersion = await tryResolveTriggerPackageVersion("@trigger.dev/sdk", cwd);
116
+ if (!sdkVersion) {
117
+ context.logger?.log("resolve_cli_exec no sdk version found", { cwd });
118
+ return [process.argv[0] ?? "npx", process.argv[1] ?? "trigger.dev@latest"];
119
+ }
120
+ if (sdkVersion === VERSION) {
121
+ context.logger?.log("resolve_cli_exec sdk version is the same as the current version", {
122
+ sdkVersion,
123
+ });
124
+ if (typeof process.argv[0] === "string" && typeof process.argv[1] === "string") {
125
+ return [process.argv[0], process.argv[1]];
126
+ }
127
+ return ["npx", "trigger.dev@latest"];
128
+ }
129
+ return ["npx", `trigger.dev@${sdkVersion}`];
130
+ }
131
+ async function tryResolveTriggerCLIPath(context, basedir) {
132
+ try {
133
+ const resolvedPathFileURI = esmResolve("trigger.dev", {
134
+ url: basedir,
135
+ });
136
+ const resolvedPath = fileURLToPath(resolvedPathFileURI);
137
+ context.logger?.log("resolve_cli_exec resolvedPathFileURI", { resolvedPathFileURI });
138
+ const { packageJson } = await getPackageJson(resolvedPath, {
139
+ test: (filePath) => {
140
+ // We need to skip any type-marker files
141
+ if (filePath.includes("dist/commonjs")) {
142
+ return false;
143
+ }
144
+ if (filePath.includes("dist/esm")) {
145
+ return false;
146
+ }
147
+ return true;
148
+ },
149
+ });
150
+ if (packageJson.version) {
151
+ context.logger?.log("resolve_cli_exec packageJson", { packageJson });
152
+ return { path: resolvedPath, version: packageJson.version };
153
+ }
154
+ return;
155
+ }
156
+ catch (error) {
157
+ context.logger?.log("resolve_cli_exec error", { error });
158
+ return undefined;
159
+ }
160
+ }
161
+ //# sourceMappingURL=deploys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploys.js","sourceRoot":"","sources":["../../../../src/mcp/tools/deploys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI;IAC/B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK;IACjC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,WAAW;IAC7C,WAAW,EAAE,WAAW,CAAC,KAAK;IAC9B,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7F,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7C,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,gBAAgB,CACrB,wHAAwH,CACzH,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjC,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnF,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/D,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,qBAAqB,EAAE;YACrC,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,eAAe,CAAC,cAAc,CAClC,CAAC,EACD,sBAAsB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7F,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE;YACpD,WAAW,EAAE;gBACX,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,GAAG,EAAE;oBACH,kBAAkB,EAAE,GAAG;iBACxB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,EAAE,CAAC;QAEhB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACvC,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAExC,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAE7E,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,eAAe,CAAC,iBAAiB,CAAC,CAAC,EAAE,oBAAoB,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACN,MAAM,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAElD,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,EAAE;YACtC,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,IAAI;IACrC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,KAAK;IACvC,WAAW,EAAE,aAAa,CAAC,YAAY,CAAC,WAAW;IACnD,WAAW,EAAE,gBAAgB,CAAC,KAAK;IACnC,OAAO,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACpE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEnD,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,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,kBAAkB,CAAC;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC,CAAC;CACH,CAAC;AAEF,KAAK,UAAU,cAAc,CAAC,OAAmB,EAAE,GAAY;IAC7D,uDAAuD;IACvD,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAElE,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,+BAA+B,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAEvE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,+BAA+B,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAElF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,uCAAuC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAEtE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,iEAAiE,EAAE;YACrF,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,eAAe,UAAU,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,OAAmB,EACnB,OAAgB;IAQhB,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,UAAU,CAAC,aAAa,EAAE;YACpD,GAAG,EAAE,OAAO;SACb,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAExD,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,sCAAsC,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAErF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE;YACzD,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACjB,wCAAwC;gBACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBACvC,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAClC,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,8BAA8B,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YAErE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;QAC9D,CAAC;QAED,OAAO;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { z } from "zod";
2
+ export declare const searchDocsTool: {
3
+ name: string;
4
+ title: string;
5
+ description: string;
6
+ inputSchema: {
7
+ query: z.ZodString;
8
+ };
9
+ handler: (input: unknown, extra: import("../types.js").ToolMeta) => Promise<{
10
+ [x: string]: unknown;
11
+ content: ({
12
+ [x: string]: unknown;
13
+ type: "text";
14
+ text: string;
15
+ _meta?: {
16
+ [x: string]: unknown;
17
+ } | undefined;
18
+ } | {
19
+ [x: string]: unknown;
20
+ type: "image";
21
+ data: string;
22
+ mimeType: string;
23
+ _meta?: {
24
+ [x: string]: unknown;
25
+ } | undefined;
26
+ } | {
27
+ [x: string]: unknown;
28
+ type: "audio";
29
+ data: string;
30
+ mimeType: string;
31
+ _meta?: {
32
+ [x: string]: unknown;
33
+ } | undefined;
34
+ } | {
35
+ [x: string]: unknown;
36
+ type: "resource_link";
37
+ name: string;
38
+ uri: string;
39
+ description?: string | undefined;
40
+ title?: string | undefined;
41
+ _meta?: {
42
+ [x: string]: unknown;
43
+ } | undefined;
44
+ mimeType?: string | undefined;
45
+ } | {
46
+ [x: string]: unknown;
47
+ type: "resource";
48
+ resource: {
49
+ [x: string]: unknown;
50
+ text: string;
51
+ uri: string;
52
+ _meta?: {
53
+ [x: string]: unknown;
54
+ } | undefined;
55
+ mimeType?: string | undefined;
56
+ } | {
57
+ [x: string]: unknown;
58
+ uri: string;
59
+ blob: string;
60
+ _meta?: {
61
+ [x: string]: unknown;
62
+ } | undefined;
63
+ mimeType?: string | undefined;
64
+ };
65
+ _meta?: {
66
+ [x: string]: unknown;
67
+ } | undefined;
68
+ })[];
69
+ isError?: boolean | undefined;
70
+ _meta?: {
71
+ [x: string]: unknown;
72
+ } | undefined;
73
+ structuredContent?: {
74
+ [x: string]: unknown;
75
+ } | undefined;
76
+ }>;
77
+ };
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import { toolsMetadata } from "../config.js";
3
+ import { toolHandler } from "../utils.js";
4
+ import { performSearch } from "../mintlifyClient.js";
5
+ export const searchDocsTool = {
6
+ name: toolsMetadata.search_docs.name,
7
+ title: toolsMetadata.search_docs.title,
8
+ description: toolsMetadata.search_docs.description,
9
+ inputSchema: {
10
+ query: z.string(),
11
+ },
12
+ handler: toolHandler({ query: z.string() }, async (input, { ctx, signal }) => {
13
+ ctx.logger?.log("calling search_docs", { input });
14
+ const results = await performSearch(input.query, signal);
15
+ return results.result;
16
+ }),
17
+ };
18
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../../src/mcp/tools/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI;IACpC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK;IACtC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,WAAW;IAClD,WAAW,EAAE;QACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB;IACD,OAAO,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3E,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEzD,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC;CACH,CAAC"}
@@ -0,0 +1,172 @@
1
+ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import { ToolMeta } from "../types.js";
3
+ export declare const listOrgsTool: {
4
+ name: string;
5
+ title: string;
6
+ description: string;
7
+ inputSchema: {};
8
+ handler: (input: unknown, { ctx }: ToolMeta) => Promise<CallToolResult>;
9
+ };
10
+ export declare const listProjectsTool: {
11
+ name: string;
12
+ title: string;
13
+ description: string;
14
+ inputSchema: {};
15
+ handler: (input: unknown, { ctx }: ToolMeta) => Promise<CallToolResult>;
16
+ };
17
+ export declare const createProjectInOrgTool: {
18
+ name: string;
19
+ title: string;
20
+ description: string;
21
+ inputSchema: {
22
+ orgParam: import("zod").ZodString;
23
+ name: import("zod").ZodString;
24
+ };
25
+ handler: (input: unknown, extra: ToolMeta) => Promise<{
26
+ [x: string]: unknown;
27
+ content: ({
28
+ [x: string]: unknown;
29
+ type: "text";
30
+ text: string;
31
+ _meta?: {
32
+ [x: string]: unknown;
33
+ } | undefined;
34
+ } | {
35
+ [x: string]: unknown;
36
+ type: "image";
37
+ data: string;
38
+ mimeType: string;
39
+ _meta?: {
40
+ [x: string]: unknown;
41
+ } | undefined;
42
+ } | {
43
+ [x: string]: unknown;
44
+ type: "audio";
45
+ data: string;
46
+ mimeType: string;
47
+ _meta?: {
48
+ [x: string]: unknown;
49
+ } | undefined;
50
+ } | {
51
+ [x: string]: unknown;
52
+ type: "resource_link";
53
+ name: string;
54
+ uri: string;
55
+ description?: string | undefined;
56
+ title?: string | undefined;
57
+ _meta?: {
58
+ [x: string]: unknown;
59
+ } | undefined;
60
+ mimeType?: string | undefined;
61
+ } | {
62
+ [x: string]: unknown;
63
+ type: "resource";
64
+ resource: {
65
+ [x: string]: unknown;
66
+ text: string;
67
+ uri: string;
68
+ _meta?: {
69
+ [x: string]: unknown;
70
+ } | undefined;
71
+ mimeType?: string | undefined;
72
+ } | {
73
+ [x: string]: unknown;
74
+ uri: string;
75
+ blob: string;
76
+ _meta?: {
77
+ [x: string]: unknown;
78
+ } | undefined;
79
+ mimeType?: string | undefined;
80
+ };
81
+ _meta?: {
82
+ [x: string]: unknown;
83
+ } | undefined;
84
+ })[];
85
+ isError?: boolean | undefined;
86
+ _meta?: {
87
+ [x: string]: unknown;
88
+ } | undefined;
89
+ structuredContent?: {
90
+ [x: string]: unknown;
91
+ } | undefined;
92
+ }>;
93
+ };
94
+ export declare const initializeProjectTool: {
95
+ name: string;
96
+ title: string;
97
+ description: string;
98
+ inputSchema: {
99
+ orgParam: import("zod").ZodString;
100
+ projectRef: import("zod").ZodOptional<import("zod").ZodString>;
101
+ projectName: import("zod").ZodString;
102
+ cwd: import("zod").ZodOptional<import("zod").ZodString>;
103
+ };
104
+ handler: (input: unknown, extra: ToolMeta) => Promise<{
105
+ [x: string]: unknown;
106
+ content: ({
107
+ [x: string]: unknown;
108
+ type: "text";
109
+ text: string;
110
+ _meta?: {
111
+ [x: string]: unknown;
112
+ } | undefined;
113
+ } | {
114
+ [x: string]: unknown;
115
+ type: "image";
116
+ data: string;
117
+ mimeType: string;
118
+ _meta?: {
119
+ [x: string]: unknown;
120
+ } | undefined;
121
+ } | {
122
+ [x: string]: unknown;
123
+ type: "audio";
124
+ data: string;
125
+ mimeType: string;
126
+ _meta?: {
127
+ [x: string]: unknown;
128
+ } | undefined;
129
+ } | {
130
+ [x: string]: unknown;
131
+ type: "resource_link";
132
+ name: string;
133
+ uri: string;
134
+ description?: string | undefined;
135
+ title?: string | undefined;
136
+ _meta?: {
137
+ [x: string]: unknown;
138
+ } | undefined;
139
+ mimeType?: string | undefined;
140
+ } | {
141
+ [x: string]: unknown;
142
+ type: "resource";
143
+ resource: {
144
+ [x: string]: unknown;
145
+ text: string;
146
+ uri: string;
147
+ _meta?: {
148
+ [x: string]: unknown;
149
+ } | undefined;
150
+ mimeType?: string | undefined;
151
+ } | {
152
+ [x: string]: unknown;
153
+ uri: string;
154
+ blob: string;
155
+ _meta?: {
156
+ [x: string]: unknown;
157
+ } | undefined;
158
+ mimeType?: string | undefined;
159
+ };
160
+ _meta?: {
161
+ [x: string]: unknown;
162
+ } | undefined;
163
+ })[];
164
+ isError?: boolean | undefined;
165
+ _meta?: {
166
+ [x: string]: unknown;
167
+ } | undefined;
168
+ structuredContent?: {
169
+ [x: string]: unknown;
170
+ } | undefined;
171
+ }>;
172
+ };
@@ -0,0 +1,172 @@
1
+ import { toolsMetadata } from "../config.js";
2
+ import { CreateProjectInOrgInput, InitializeProjectInput } from "../schemas.js";
3
+ import { respondWithError, toolHandler } from "../utils.js";
4
+ import { loadConfig } from "../../config.js";
5
+ import { tryCatch } from "@trigger.dev/core/utils";
6
+ export const listOrgsTool = {
7
+ name: toolsMetadata.list_orgs.name,
8
+ title: toolsMetadata.list_orgs.title,
9
+ description: toolsMetadata.list_orgs.description,
10
+ inputSchema: {},
11
+ handler: async (input, { ctx }) => {
12
+ ctx.logger?.log("calling list_orgs", { input });
13
+ const cliApiClient = await ctx.getCliApiClient();
14
+ const orgs = await cliApiClient.getOrgs();
15
+ if (!orgs.success) {
16
+ return respondWithError(orgs.error);
17
+ }
18
+ ctx.logger?.log("list_orgs", { orgs: orgs.data });
19
+ const contents = orgs.data.map((org) => {
20
+ return `- ${org.title} (id=${org.id}) (slug=${org.slug}) (createdAt=${org.createdAt})`;
21
+ });
22
+ return {
23
+ content: [{ type: "text", text: contents.join("\n") }],
24
+ };
25
+ },
26
+ };
27
+ export const listProjectsTool = {
28
+ name: toolsMetadata.list_projects.name,
29
+ title: toolsMetadata.list_projects.title,
30
+ description: toolsMetadata.list_projects.description,
31
+ inputSchema: {},
32
+ handler: async (input, { ctx }) => {
33
+ ctx.logger?.log("calling list_projects", { input });
34
+ const cliApiClient = await ctx.getCliApiClient();
35
+ const projects = await cliApiClient.getProjects();
36
+ if (!projects.success) {
37
+ return respondWithError(projects.error);
38
+ }
39
+ ctx.logger?.log("list_projects", { projects: projects.data });
40
+ const groupedByOrg = projects.data.reduce((acc, project) => {
41
+ if (!project.organization) {
42
+ return acc;
43
+ }
44
+ acc[project.organization.id] = acc[project.organization.id] || {
45
+ organization: project.organization,
46
+ projects: [],
47
+ };
48
+ acc[project.organization.id].projects.push(project);
49
+ return acc;
50
+ }, {});
51
+ const contents = Object.values(groupedByOrg)
52
+ .map((org) => {
53
+ const parts = [
54
+ `## Organization ${org.organization.title} (id=${org.organization.id}) (slug=${org.organization.slug}) projects:`,
55
+ ];
56
+ for (const project of org.projects) {
57
+ parts.push(`- ${project.name} (projectRef=${project.externalRef}) (slug=${project.slug}) (createdAt=${project.createdAt})`);
58
+ }
59
+ return parts.join("\n");
60
+ })
61
+ .join("\n");
62
+ return {
63
+ content: [
64
+ {
65
+ type: "text",
66
+ text: contents,
67
+ },
68
+ ],
69
+ };
70
+ },
71
+ };
72
+ export const createProjectInOrgTool = {
73
+ name: toolsMetadata.create_project_in_org.name,
74
+ title: toolsMetadata.create_project_in_org.title,
75
+ description: toolsMetadata.create_project_in_org.description,
76
+ inputSchema: CreateProjectInOrgInput.shape,
77
+ handler: toolHandler(CreateProjectInOrgInput.shape, async (input, { ctx }) => {
78
+ ctx.logger?.log("calling create_project_in_org", { input });
79
+ const cliApiClient = await ctx.getCliApiClient();
80
+ const project = await cliApiClient.createProject(input.orgParam, {
81
+ name: input.name,
82
+ });
83
+ if (!project.success) {
84
+ return respondWithError(project.error);
85
+ }
86
+ ctx.logger?.log("create_project_in_org", { project: project.data });
87
+ const contents = [
88
+ `Project created successfully: ${project.data.name} (projectRef=${project.data.externalRef}) (slug=${project.data.slug}) (createdAt=${project.data.createdAt})`,
89
+ ];
90
+ return {
91
+ content: [{ type: "text", text: contents.join("\n") }],
92
+ };
93
+ }),
94
+ };
95
+ export const initializeProjectTool = {
96
+ name: toolsMetadata.initialize_project.name,
97
+ title: toolsMetadata.initialize_project.title,
98
+ description: toolsMetadata.initialize_project.description,
99
+ inputSchema: InitializeProjectInput.shape,
100
+ handler: toolHandler(InitializeProjectInput.shape, async (input, { ctx }) => {
101
+ ctx.logger?.log("calling initialize_project", { input });
102
+ let projectRef = input.projectRef;
103
+ if (!projectRef) {
104
+ const cwd = input.cwd ?? (await ctx.getCwd());
105
+ if (!cwd) {
106
+ return respondWithError("No current working directory found. Please provide a projectRef or a cwd.");
107
+ }
108
+ // Try to load the config file
109
+ const [_, config] = await tryCatch(loadConfig({ cwd }));
110
+ if (config?.configFile) {
111
+ if (typeof config.project === "string" && config.project.startsWith("proj_")) {
112
+ ctx.logger?.log("initialize_project existing project", {
113
+ config,
114
+ projectRef: config.project,
115
+ });
116
+ return {
117
+ content: [
118
+ {
119
+ type: "text",
120
+ text: `We found an existing trigger.config.ts file in the current working directory. Skipping initialization.`,
121
+ },
122
+ ],
123
+ };
124
+ }
125
+ else {
126
+ return respondWithError("Could not find the project ref in the config file. Please provide a projectRef.");
127
+ }
128
+ }
129
+ const cliApiClient = await ctx.getCliApiClient();
130
+ const project = await cliApiClient.createProject(input.orgParam, {
131
+ name: input.projectName,
132
+ });
133
+ if (!project.success) {
134
+ return respondWithError(`Failed to create project ${input.projectName} in organization ${input.orgParam}: ${project.error}`);
135
+ }
136
+ ctx.logger?.log("initialize_project new project", {
137
+ project: project.data,
138
+ });
139
+ projectRef = project.data.externalRef;
140
+ }
141
+ const cliApiClient = await ctx.getCliApiClient();
142
+ const projectEnv = await cliApiClient.getProjectEnv({
143
+ projectRef: projectRef,
144
+ env: "dev",
145
+ });
146
+ const manualSetupGuide = await getManualSetupGuide(projectRef, projectEnv.success ? projectEnv.data.apiKey : undefined, projectEnv.success ? projectEnv.data.apiUrl : undefined);
147
+ return {
148
+ content: [
149
+ {
150
+ type: "text",
151
+ text: manualSetupGuide,
152
+ },
153
+ ],
154
+ };
155
+ }),
156
+ };
157
+ async function getManualSetupGuide(projectRef, apiKey, apiUrl) {
158
+ const response = await fetch("https://trigger.dev/docs/manual-setup.md");
159
+ let text = await response.text();
160
+ text = text.replace("<your-project-ref>", projectRef);
161
+ text = text.replace("tr_dev_xxxxxxxxxx", apiKey ?? "tr_dev_xxxxxxxxxx");
162
+ text = text.replace("https://your-trigger-instance.com", apiUrl ?? "https://your-trigger-instance.com");
163
+ return `
164
+ Use the following manual setup guide to initialize Trigger.dev in your project. Make sure to use the correct project ref: ${projectRef}, and the following environment variables:
165
+
166
+ TRIGGER_PROJECT_REF=${projectRef}
167
+ TRIGGER_SECRET_KEY=${apiKey ?? "tr_dev_xxxxxxxxxx"}
168
+ ${apiUrl ? `TRIGGER_API_URL=${apiUrl}` : ""}
169
+
170
+ ${text}`;
171
+ }
172
+ //# sourceMappingURL=orgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orgs.js","sourceRoot":"","sources":["../../../../src/mcp/tools/orgs.ts"],"names":[],"mappings":"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"}