@arii/boomtick-mcp 0.4.1 → 0.5.0
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.
- package/.mcp/schemas/boomtick.health.json +14 -10
- package/.mcp/schemas/boomtick_health.json +16 -0
- package/.mcp/schemas/github.checkout_branch.json +28 -24
- package/.mcp/schemas/github.comment_triage_summary.json +21 -17
- package/.mcp/schemas/github.create_issue.json +55 -50
- package/.mcp/schemas/github.create_pull_request.json +53 -48
- package/.mcp/schemas/github.get_merge_conflict_files.json +21 -17
- package/.mcp/schemas/github.get_pr.json +30 -12
- package/.mcp/schemas/github.get_pr_commits.json +32 -0
- package/.mcp/schemas/github.get_pr_diff.json +30 -12
- package/.mcp/schemas/github.get_pr_reviews.json +32 -0
- package/.mcp/schemas/github.issue_comment.json +35 -17
- package/.mcp/schemas/github.issue_update.json +114 -96
- package/.mcp/schemas/github.issue_view.json +30 -12
- package/.mcp/schemas/github.open_replacement_pr.json +64 -60
- package/.mcp/schemas/github.search_open_prs.json +61 -43
- package/.mcp/schemas/github_checkout_branch.json +31 -0
- package/.mcp/schemas/github_comment_triage_summary.json +24 -0
- package/.mcp/schemas/github_create_issue.json +58 -0
- package/.mcp/schemas/github_create_pull_request.json +56 -0
- package/.mcp/schemas/github_get_merge_conflict_files.json +24 -0
- package/.mcp/schemas/github_get_pr.json +32 -0
- package/.mcp/schemas/github_get_pr_commits.json +32 -0
- package/.mcp/schemas/github_get_pr_diff.json +32 -0
- package/.mcp/schemas/github_get_pr_reviews.json +32 -0
- package/.mcp/schemas/github_issue_comment.json +38 -0
- package/.mcp/schemas/github_issue_update.json +123 -0
- package/.mcp/schemas/github_issue_view.json +32 -0
- package/.mcp/schemas/github_open_replacement_pr.json +67 -0
- package/.mcp/schemas/github_search_open_prs.json +65 -0
- package/.mcp/schemas/jules.cancel_session.json +16 -12
- package/.mcp/schemas/jules.create_session.json +41 -37
- package/.mcp/schemas/jules.get_messages.json +16 -12
- package/.mcp/schemas/jules.get_pr.json +16 -12
- package/.mcp/schemas/jules.get_session.json +16 -12
- package/.mcp/schemas/jules.list_sessions.json +33 -29
- package/.mcp/schemas/jules.send_message.json +30 -26
- package/.mcp/schemas/jules.trigger_feedback.json +16 -12
- package/.mcp/schemas/jules_cancel_session.json +18 -0
- package/.mcp/schemas/jules_create_session.json +44 -0
- package/.mcp/schemas/jules_get_messages.json +18 -0
- package/.mcp/schemas/jules_get_pr.json +18 -0
- package/.mcp/schemas/jules_get_session.json +18 -0
- package/.mcp/schemas/jules_list_sessions.json +36 -0
- package/.mcp/schemas/jules_send_message.json +35 -0
- package/.mcp/schemas/jules_trigger_feedback.json +18 -0
- package/.mcp/schemas/repo.commit_patch.json +34 -30
- package/.mcp/schemas/repo.create_branch.json +21 -17
- package/.mcp/schemas/repo.create_repair_branch.json +34 -30
- package/.mcp/schemas/repo.get_changed_files.json +19 -15
- package/.mcp/schemas/repo.get_command_schema.json +16 -12
- package/.mcp/schemas/repo.get_package_scripts.json +21 -17
- package/.mcp/schemas/repo.get_workflow_runs.json +50 -0
- package/.mcp/schemas/repo.logs.json +42 -24
- package/.mcp/schemas/repo.read_agent_context.json +7 -3
- package/.mcp/schemas/repo.read_ci_logs.json +35 -17
- package/.mcp/schemas/repo.run_tests.json +40 -36
- package/.mcp/schemas/repo_commit_patch.json +39 -0
- package/.mcp/schemas/repo_create_branch.json +24 -0
- package/.mcp/schemas/repo_create_repair_branch.json +37 -0
- package/.mcp/schemas/repo_get_changed_files.json +22 -0
- package/.mcp/schemas/repo_get_command_schema.json +18 -0
- package/.mcp/schemas/repo_get_package_scripts.json +23 -0
- package/.mcp/schemas/repo_get_workflow_runs.json +50 -0
- package/.mcp/schemas/repo_logs.json +45 -0
- package/.mcp/schemas/repo_read_agent_context.json +9 -0
- package/.mcp/schemas/repo_read_ci_logs.json +38 -0
- package/.mcp/schemas/repo_run_tests.json +45 -0
- package/CHANGELOG.md +16 -0
- package/README.md +0 -1
- package/actions/impact-analysis/action.yml +4 -16
- package/actions/run-project-gate/action.yml +2 -9
- package/actions/test-build/action.yml +1 -19
- package/dist/lib/git.js +74 -0
- package/dist/lib/git.test.js +82 -0
- package/dist/lib/param_utils.js +35 -0
- package/dist/lib/param_utils.test.js +44 -0
- package/dist/mcp/definitions.js +27 -40
- package/dist/mcp/schemas.test.js +28 -0
- package/dist/mcp/server.js +64 -74
- package/dist/mcp/server.test.js +0 -33
- package/dist/tools/contract.js +229 -10
- package/dist/tools/github.create_issue.js +3 -2
- package/dist/tools/github.create_issue.test.js +10 -0
- package/dist/tools/github.create_pull_request.js +4 -4
- package/dist/tools/github.get_merge_conflict_files.js +10 -18
- package/dist/tools/github.get_pr.js +4 -1
- package/dist/tools/github.get_pr_commits.js +21 -0
- package/dist/tools/github.get_pr_diff.js +6 -2
- package/dist/tools/github.get_pr_reviews.js +21 -0
- package/dist/tools/github.get_pr_reviews.test.js +99 -0
- package/dist/tools/github.issue_comment.js +8 -1
- package/dist/tools/github.issue_update.js +3 -0
- package/dist/tools/github.issue_view.js +4 -1
- package/dist/tools/github.search_open_prs.js +4 -0
- package/dist/tools/jules/create-session.js +1 -2
- package/dist/tools/jules/get-pr.js +1 -2
- package/dist/tools/jules/get-session.js +1 -2
- package/dist/tools/jules/shared.js +24 -0
- package/dist/tools/repo.commit_patch.js +30 -10
- package/dist/tools/repo.get_changed_files.js +2 -13
- package/dist/tools/repo.get_workflow_runs.js +29 -0
- package/dist/tools/repo.logs.js +5 -1
- package/dist/tools/repo.read_agent_context.js +27 -1
- package/dist/tools/repo.read_agent_context.test.js +1 -1
- package/dist/tools/repo.read_ci_logs.js +5 -1
- package/dist/tools/repo.run_tests.js +26 -4
- package/package.json +4 -7
- package/scripts/sync-mcp-schemas.ts +6 -1
- package/src/agents/verifier-agent.prompt.md +0 -4
- package/src/lib/git.test.ts +110 -0
- package/src/lib/git.ts +109 -0
- package/src/lib/param_utils.test.ts +49 -0
- package/src/lib/param_utils.ts +42 -0
- package/src/mcp/definitions.ts +30 -43
- package/src/mcp/schemas.test.ts +34 -0
- package/src/mcp/server.test.ts +0 -42
- package/src/mcp/server.ts +65 -75
- package/src/tools/contract.ts +241 -10
- package/src/tools/github.create_issue.test.ts +10 -0
- package/src/tools/github.create_issue.ts +3 -1
- package/src/tools/github.create_pull_request.ts +4 -5
- package/src/tools/github.get_merge_conflict_files.ts +10 -20
- package/src/tools/github.get_pr.ts +4 -1
- package/src/tools/github.get_pr_commits.ts +27 -0
- package/src/tools/github.get_pr_diff.ts +7 -2
- package/src/tools/github.get_pr_reviews.test.ts +110 -0
- package/src/tools/github.get_pr_reviews.ts +27 -0
- package/src/tools/github.issue_comment.ts +8 -1
- package/src/tools/github.issue_update.ts +4 -1
- package/src/tools/github.issue_view.ts +4 -1
- package/src/tools/github.search_open_prs.ts +4 -0
- package/src/tools/jules/create-session.ts +1 -2
- package/src/tools/jules/get-pr.ts +1 -2
- package/src/tools/jules/get-session.ts +1 -2
- package/src/tools/jules/shared.ts +35 -0
- package/src/tools/repo.commit_patch.ts +35 -11
- package/src/tools/repo.get_changed_files.ts +2 -16
- package/src/tools/repo.get_workflow_runs.ts +36 -0
- package/src/tools/repo.logs.ts +5 -1
- package/src/tools/repo.read_agent_context.test.ts +1 -1
- package/src/tools/repo.read_agent_context.ts +35 -1
- package/src/tools/repo.read_ci_logs.ts +5 -1
- package/src/tools/repo.run_tests.ts +28 -5
- package/.mcp/schemas/agent.search_ddgs.json +0 -27
- package/.mcp/schemas/repo.get_route_map.json +0 -19
- package/.mcp/schemas/repo.run_lighthouse.json +0 -25
- package/.mcp/schemas/repo.run_playwright.json +0 -32
- package/dist/lib/td-cli.js +0 -54
- package/dist/tools/ddgs.search.js +0 -50
- package/dist/tools/ddgs.search.test.js +0 -67
- package/dist/tools/ddgs_search.py +0 -23
- package/dist/tools/repo.get_route_map.js +0 -37
- package/dist/tools/repo.run_lighthouse.js +0 -37
- package/dist/tools/repo.run_playwright.js +0 -29
- package/scripts/export-mcp-schema.ts +0 -7
- package/src/lib/td-cli.ts +0 -73
- package/src/tools/ddgs.search.test.ts +0 -92
- package/src/tools/ddgs.search.ts +0 -58
- package/src/tools/ddgs_search.py +0 -23
- package/src/tools/repo.get_route_map.ts +0 -41
- package/src/tools/repo.run_lighthouse.ts +0 -40
- package/src/tools/repo.run_playwright.ts +0 -35
package/src/mcp/server.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
import { config } from "../config.js";
|
|
12
12
|
import { createSuccessResult, createErrorResult } from "../lib/result.js";
|
|
13
13
|
import { MCP_TOOLS, MCP_PROMPTS, MCP_RESOURCES } from "./definitions.js";
|
|
14
|
+
import { normalizeArguments } from "../lib/param_utils.js";
|
|
14
15
|
import { healthHandler, HealthCheckInputSchema } from "./tools.js";
|
|
15
16
|
import { searchOpenPrsHandler, SearchOpenPrsInputSchema } from "../tools/github.search_open_prs.js";
|
|
16
17
|
import { getPrDiffHandler, GetPrDiffInputSchema } from "../tools/github.get_pr_diff.js";
|
|
@@ -20,14 +21,11 @@ import { getChangedFilesHandler, GetChangedFilesInputSchema } from "../tools/rep
|
|
|
20
21
|
import { readAgentContextHandler, ReadAgentContextInputSchema } from "../tools/repo.read_agent_context.js";
|
|
21
22
|
import { getCommandSchemaHandler, GetCommandSchemaInputSchema } from "../tools/repo.get_command_schema.js";
|
|
22
23
|
import { getPackageScriptsHandler, GetPackageScriptsInputSchema } from "../tools/repo.get_package_scripts.js";
|
|
23
|
-
import { getRouteMapHandler, GetRouteMapInputSchema } from "../tools/repo.get_route_map.js";
|
|
24
24
|
import { readCiLogsHandler, ReadCiLogsInputSchema } from "../tools/repo.read_ci_logs.js";
|
|
25
25
|
import { repoLogsHandler, RepoLogsInputSchema } from "../tools/repo.logs.js";
|
|
26
26
|
import { createRepairBranchHandler, CreateRepairBranchInputSchema } from "../tools/repo.create_repair_branch.js";
|
|
27
27
|
import { createBranchHandler, CreateBranchInputSchema } from "../tools/repo.create_branch.js";
|
|
28
28
|
import { runTestsHandler, RunTestsInputSchema } from "../tools/repo.run_tests.js";
|
|
29
|
-
import { runLighthouseHandler, RunLighthouseInputSchema } from "../tools/repo.run_lighthouse.js";
|
|
30
|
-
import { runPlaywrightHandler, RunPlaywrightInputSchema } from "../tools/repo.run_playwright.js";
|
|
31
29
|
import { commitPatchHandler, CommitPatchInputSchema } from "../tools/repo.commit_patch.js";
|
|
32
30
|
import { openReplacementPrHandler, OpenReplacementPrInputSchema } from "../tools/github.open_replacement_pr.js";
|
|
33
31
|
import { commentTriageSummaryHandler, CommentTriageSummaryInputSchema } from "../tools/github.comment_triage_summary.js";
|
|
@@ -47,7 +45,6 @@ import { listJulesSessionsHandler, ListJulesSessionsInputSchema } from "../tools
|
|
|
47
45
|
import { cancelJulesSessionHandler, CancelJulesSessionInputSchema } from "../tools/jules/cancel-session.js";
|
|
48
46
|
import { getJulesPullRequestHandler, GetJulesPullRequestInputSchema } from "../tools/jules/get-pr.js";
|
|
49
47
|
import { triggerJulesFeedbackHandler, TriggerJulesFeedbackInputSchema } from "../tools/jules/trigger-feedback.js";
|
|
50
|
-
import { ddgsSearchHandler, DdgsSearchInputSchema } from "../tools/ddgs.search.js";
|
|
51
48
|
|
|
52
49
|
import fs from "fs/promises";
|
|
53
50
|
import { existsSync, readFileSync } from "fs";
|
|
@@ -128,12 +125,6 @@ export class BoomtickMCPServer {
|
|
|
128
125
|
contents: [{ uri, mimeType: "application/json", text: content }],
|
|
129
126
|
};
|
|
130
127
|
}
|
|
131
|
-
if (uri === "repo://routes") {
|
|
132
|
-
const routeMap = await getRouteMapHandler({});
|
|
133
|
-
return {
|
|
134
|
-
contents: [{ uri, mimeType: "application/json", text: JSON.stringify(routeMap, null, 2) }],
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
128
|
if (uri === "repo://design-tokens") {
|
|
138
129
|
const tokensPath = path.join(config.repoPath, "src/styles/design-tokens.ts");
|
|
139
130
|
const content = await fs.readFile(tokensPath, "utf-8");
|
|
@@ -155,20 +146,6 @@ export class BoomtickMCPServer {
|
|
|
155
146
|
contents: [{ uri, mimeType: "application/json", text: JSON.stringify(logs, null, 2) }],
|
|
156
147
|
};
|
|
157
148
|
}
|
|
158
|
-
if (uri.startsWith("repo://lighthouse/")) {
|
|
159
|
-
const branch = uri.split("/").pop() || "";
|
|
160
|
-
const report = await runLighthouseHandler({ route: "/", worktreePath: `../boomtick-mcp-rescue-${branch}` });
|
|
161
|
-
return {
|
|
162
|
-
contents: [{ uri, mimeType: "application/json", text: JSON.stringify(report, null, 2) }],
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
if (uri.startsWith("repo://playwright/")) {
|
|
166
|
-
const branch = uri.split("/").pop() || "";
|
|
167
|
-
const report = await runPlaywrightHandler({ worktreePath: `../boomtick-mcp-rescue-${branch}` });
|
|
168
|
-
return {
|
|
169
|
-
contents: [{ uri, mimeType: "application/json", text: JSON.stringify(report, null, 2) }],
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
149
|
throw new Error(`Resource not found: ${uri}`);
|
|
173
150
|
});
|
|
174
151
|
}
|
|
@@ -182,80 +159,102 @@ export class BoomtickMCPServer {
|
|
|
182
159
|
|
|
183
160
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
184
161
|
try {
|
|
185
|
-
|
|
162
|
+
const normalizedToolName = request.params.name.replace(/_/g, ".");
|
|
163
|
+
const normArgs = normalizeArguments(request.params.arguments as Record<string, unknown>);
|
|
164
|
+
|
|
165
|
+
switch (normalizedToolName) {
|
|
186
166
|
case "boomtick.health":
|
|
187
|
-
return createSuccessResult(await healthHandler(HealthCheckInputSchema.parse(
|
|
167
|
+
return createSuccessResult(await healthHandler(HealthCheckInputSchema.parse(normArgs)));
|
|
168
|
+
case "github.search.open.prs":
|
|
188
169
|
case "github.search_open_prs":
|
|
189
|
-
return createSuccessResult(await searchOpenPrsHandler(SearchOpenPrsInputSchema.parse(
|
|
170
|
+
return createSuccessResult(await searchOpenPrsHandler(SearchOpenPrsInputSchema.parse(normArgs)));
|
|
171
|
+
case "repo.read.agent.context":
|
|
190
172
|
case "repo.read_agent_context":
|
|
191
|
-
return createSuccessResult(await readAgentContextHandler(ReadAgentContextInputSchema.parse(
|
|
173
|
+
return createSuccessResult(await readAgentContextHandler(ReadAgentContextInputSchema.parse(normArgs)));
|
|
174
|
+
case "github.get.pr.diff":
|
|
192
175
|
case "github.get_pr_diff":
|
|
193
|
-
return createSuccessResult(await getPrDiffHandler(GetPrDiffInputSchema.parse(
|
|
176
|
+
return createSuccessResult(await getPrDiffHandler(GetPrDiffInputSchema.parse(normArgs)));
|
|
177
|
+
case "github.get.merge.conflict.files":
|
|
194
178
|
case "github.get_merge_conflict_files":
|
|
195
|
-
return createSuccessResult(await getMergeConflictFilesHandler(GetMergeConflictFilesInputSchema.parse(
|
|
179
|
+
return createSuccessResult(await getMergeConflictFilesHandler(GetMergeConflictFilesInputSchema.parse(normArgs)));
|
|
180
|
+
case "github.checkout.branch":
|
|
196
181
|
case "github.checkout_branch":
|
|
197
|
-
return createSuccessResult(await checkoutBranchHandler(CheckoutBranchInputSchema.parse(
|
|
182
|
+
return createSuccessResult(await checkoutBranchHandler(CheckoutBranchInputSchema.parse(normArgs)));
|
|
183
|
+
case "repo.get.changed.files":
|
|
198
184
|
case "repo.get_changed_files":
|
|
199
|
-
return createSuccessResult(await getChangedFilesHandler(GetChangedFilesInputSchema.parse(
|
|
185
|
+
return createSuccessResult(await getChangedFilesHandler(GetChangedFilesInputSchema.parse(normArgs)));
|
|
186
|
+
case "repo.get.command.schema":
|
|
200
187
|
case "repo.get_command_schema":
|
|
201
|
-
return createSuccessResult(await getCommandSchemaHandler(GetCommandSchemaInputSchema.parse(
|
|
188
|
+
return createSuccessResult(await getCommandSchemaHandler(GetCommandSchemaInputSchema.parse(normArgs)));
|
|
189
|
+
case "repo.get.package.scripts":
|
|
202
190
|
case "repo.get_package_scripts":
|
|
203
|
-
return createSuccessResult(await getPackageScriptsHandler(GetPackageScriptsInputSchema.parse(
|
|
204
|
-
case "repo.
|
|
205
|
-
return createSuccessResult(await getRouteMapHandler(GetRouteMapInputSchema.parse(request.params.arguments || {})));
|
|
191
|
+
return createSuccessResult(await getPackageScriptsHandler(GetPackageScriptsInputSchema.parse(normArgs)));
|
|
192
|
+
case "repo.read.ci.logs":
|
|
206
193
|
case "repo.read_ci_logs":
|
|
207
|
-
return createSuccessResult(await readCiLogsHandler(ReadCiLogsInputSchema.parse(
|
|
194
|
+
return createSuccessResult(await readCiLogsHandler(ReadCiLogsInputSchema.parse(normArgs)));
|
|
208
195
|
case "repo.logs":
|
|
209
|
-
return createSuccessResult(await repoLogsHandler(RepoLogsInputSchema.parse(
|
|
196
|
+
return createSuccessResult(await repoLogsHandler(RepoLogsInputSchema.parse(normArgs)));
|
|
197
|
+
case "repo.create.branch":
|
|
210
198
|
case "repo.create_branch":
|
|
211
|
-
return createSuccessResult(await createBranchHandler(CreateBranchInputSchema.parse(
|
|
199
|
+
return createSuccessResult(await createBranchHandler(CreateBranchInputSchema.parse(normArgs)));
|
|
200
|
+
case "repo.create.repair.branch":
|
|
212
201
|
case "repo.create_repair_branch":
|
|
213
|
-
return createSuccessResult(await createRepairBranchHandler(CreateRepairBranchInputSchema.parse(
|
|
202
|
+
return createSuccessResult(await createRepairBranchHandler(CreateRepairBranchInputSchema.parse(normArgs)));
|
|
203
|
+
case "repo.run.tests":
|
|
214
204
|
case "repo.run_tests":
|
|
215
|
-
return createSuccessResult(await runTestsHandler(RunTestsInputSchema.parse(
|
|
216
|
-
case "repo.
|
|
217
|
-
return createSuccessResult(await runLighthouseHandler(RunLighthouseInputSchema.parse(request.params.arguments || {})));
|
|
218
|
-
case "repo.run_playwright":
|
|
219
|
-
return createSuccessResult(await runPlaywrightHandler(RunPlaywrightInputSchema.parse(request.params.arguments || {})));
|
|
205
|
+
return createSuccessResult(await runTestsHandler(RunTestsInputSchema.parse(normArgs)));
|
|
206
|
+
case "repo.commit.patch":
|
|
220
207
|
case "repo.commit_patch":
|
|
221
|
-
return createSuccessResult(await commitPatchHandler(CommitPatchInputSchema.parse(
|
|
208
|
+
return createSuccessResult(await commitPatchHandler(CommitPatchInputSchema.parse(normArgs)));
|
|
209
|
+
case "github.open.replacement.pr":
|
|
222
210
|
case "github.open_replacement_pr":
|
|
223
|
-
return createSuccessResult(await openReplacementPrHandler(OpenReplacementPrInputSchema.parse(
|
|
211
|
+
return createSuccessResult(await openReplacementPrHandler(OpenReplacementPrInputSchema.parse(normArgs)));
|
|
212
|
+
case "github.comment.triage.summary":
|
|
224
213
|
case "github.comment_triage_summary":
|
|
225
|
-
return createSuccessResult(await commentTriageSummaryHandler(CommentTriageSummaryInputSchema.parse(
|
|
214
|
+
return createSuccessResult(await commentTriageSummaryHandler(CommentTriageSummaryInputSchema.parse(normArgs)));
|
|
215
|
+
case "github.create.pull.request":
|
|
226
216
|
case "github.create_pull_request":
|
|
227
|
-
return createSuccessResult(await createPullRequestHandler(CreatePullRequestInputSchema.parse(
|
|
217
|
+
return createSuccessResult(await createPullRequestHandler(CreatePullRequestInputSchema.parse(normArgs)));
|
|
218
|
+
case "github.get.pr":
|
|
228
219
|
case "github.get_pr":
|
|
229
|
-
return createSuccessResult(await getPrHandler(GetPrInputSchema.parse(
|
|
220
|
+
return createSuccessResult(await getPrHandler(GetPrInputSchema.parse(normArgs)));
|
|
221
|
+
case "github.issue.view":
|
|
230
222
|
case "github.issue_view":
|
|
231
|
-
return createSuccessResult(await issueViewHandler(IssueViewInputSchema.parse(
|
|
223
|
+
return createSuccessResult(await issueViewHandler(IssueViewInputSchema.parse(normArgs)));
|
|
224
|
+
case "github.issue.update":
|
|
232
225
|
case "github.issue_update":
|
|
233
|
-
return createSuccessResult(await issueUpdateHandler(IssueUpdateInputSchema.parse(
|
|
226
|
+
return createSuccessResult(await issueUpdateHandler(IssueUpdateInputSchema.parse(normArgs)));
|
|
227
|
+
case "github.issue.comment":
|
|
234
228
|
case "github.issue_comment":
|
|
235
|
-
return createSuccessResult(await issueCommentHandler(IssueCommentInputSchema.parse(
|
|
229
|
+
return createSuccessResult(await issueCommentHandler(IssueCommentInputSchema.parse(normArgs)));
|
|
230
|
+
case "github.create.issue":
|
|
236
231
|
case "github.create_issue":
|
|
237
|
-
return createSuccessResult(await createIssueHandler(CreateIssueInputSchema.parse(
|
|
238
|
-
|
|
239
|
-
|
|
232
|
+
return createSuccessResult(await createIssueHandler(CreateIssueInputSchema.parse(normArgs)));
|
|
240
233
|
|
|
234
|
+
case "jules.create.session":
|
|
241
235
|
case "jules.create_session":
|
|
242
|
-
return createSuccessResult(await createJulesSessionHandler(CreateJulesSessionInputSchema.parse(
|
|
236
|
+
return createSuccessResult(await createJulesSessionHandler(CreateJulesSessionInputSchema.parse(normArgs)));
|
|
237
|
+
case "jules.get.session":
|
|
243
238
|
case "jules.get_session":
|
|
244
|
-
return createSuccessResult(await getJulesSessionHandler(GetJulesSessionInputSchema.parse(
|
|
239
|
+
return createSuccessResult(await getJulesSessionHandler(GetJulesSessionInputSchema.parse(normArgs)));
|
|
240
|
+
case "jules.send.message":
|
|
245
241
|
case "jules.send_message":
|
|
246
|
-
return createSuccessResult(await sendJulesMessageHandler(SendJulesMessageInputSchema.parse(
|
|
242
|
+
return createSuccessResult(await sendJulesMessageHandler(SendJulesMessageInputSchema.parse(normArgs)));
|
|
243
|
+
case "jules.get.messages":
|
|
247
244
|
case "jules.get_messages":
|
|
248
|
-
return createSuccessResult(await getJulesMessagesHandler(GetJulesMessagesInputSchema.parse(
|
|
245
|
+
return createSuccessResult(await getJulesMessagesHandler(GetJulesMessagesInputSchema.parse(normArgs)));
|
|
246
|
+
case "jules.list.sessions":
|
|
249
247
|
case "jules.list_sessions":
|
|
250
|
-
return createSuccessResult(await listJulesSessionsHandler(ListJulesSessionsInputSchema.parse(
|
|
248
|
+
return createSuccessResult(await listJulesSessionsHandler(ListJulesSessionsInputSchema.parse(normArgs)));
|
|
249
|
+
case "jules.cancel.session":
|
|
251
250
|
case "jules.cancel_session":
|
|
252
|
-
return createSuccessResult(await cancelJulesSessionHandler(CancelJulesSessionInputSchema.parse(
|
|
251
|
+
return createSuccessResult(await cancelJulesSessionHandler(CancelJulesSessionInputSchema.parse(normArgs)));
|
|
252
|
+
case "jules.get.pr":
|
|
253
253
|
case "jules.get_pr":
|
|
254
|
-
return createSuccessResult(await getJulesPullRequestHandler(GetJulesPullRequestInputSchema.parse(
|
|
254
|
+
return createSuccessResult(await getJulesPullRequestHandler(GetJulesPullRequestInputSchema.parse(normArgs)));
|
|
255
|
+
case "jules.trigger.feedback":
|
|
255
256
|
case "jules.trigger_feedback":
|
|
256
|
-
return createSuccessResult(await triggerJulesFeedbackHandler(TriggerJulesFeedbackInputSchema.parse(
|
|
257
|
-
case "agent.search_ddgs":
|
|
258
|
-
return createSuccessResult(await ddgsSearchHandler(DdgsSearchInputSchema.parse(request.params.arguments)));
|
|
257
|
+
return createSuccessResult(await triggerJulesFeedbackHandler(TriggerJulesFeedbackInputSchema.parse(normArgs)));
|
|
259
258
|
default:
|
|
260
259
|
return createErrorResult(`Tool not found: ${request.params.name}`);
|
|
261
260
|
}
|
|
@@ -343,15 +342,6 @@ export class BoomtickMCPServer {
|
|
|
343
342
|
process.exit(1);
|
|
344
343
|
}
|
|
345
344
|
|
|
346
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
347
|
-
const ddgsScriptPath = path.join(__dirname, "..", "tools", "ddgs_search.py");
|
|
348
|
-
try {
|
|
349
|
-
await fs.access(ddgsScriptPath);
|
|
350
|
-
} catch (err) {
|
|
351
|
-
console.error(`❌ Fatal: ddgs_search.py not found at ${ddgsScriptPath}`);
|
|
352
|
-
process.exit(1);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
345
|
const transport = new StdioServerTransport();
|
|
356
346
|
await this.server.connect(transport);
|
|
357
347
|
console.error("Boomtick MCP Server running on stdio");
|
package/src/tools/contract.ts
CHANGED
|
@@ -1228,7 +1228,7 @@ export const CreateBranchInputJsonSchema = {
|
|
|
1228
1228
|
"type": "object"
|
|
1229
1229
|
} as const;
|
|
1230
1230
|
|
|
1231
|
-
export const CreateIssueInputSchema = z.object({ "title": z.string().min(1), "body": z.union([z.string().min(1), z.null()]).default(null), "file": z.union([z.string().min(1), z.null()]).default(null), "repo": z.union([z.string(), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1231
|
+
export const CreateIssueInputSchema = z.object({ "title": z.string().min(1), "body": z.union([z.string().min(1), z.null()]).default(null), "file": z.union([z.string().min(1), z.null()]).default(null), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1232
1232
|
|
|
1233
1233
|
export type CreateIssueInput = z.infer<typeof CreateIssueInputSchema>;
|
|
1234
1234
|
|
|
@@ -1268,6 +1268,7 @@ export const CreateIssueInputJsonSchema = {
|
|
|
1268
1268
|
"repo": {
|
|
1269
1269
|
"anyOf": [
|
|
1270
1270
|
{
|
|
1271
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
1271
1272
|
"type": "string"
|
|
1272
1273
|
},
|
|
1273
1274
|
{
|
|
@@ -1410,7 +1411,7 @@ export const CreateJulesSessionInputJsonSchema = {
|
|
|
1410
1411
|
"type": "object"
|
|
1411
1412
|
} as const;
|
|
1412
1413
|
|
|
1413
|
-
export const CreatePullRequestInputSchema = z.object({ "title": z.string().describe("PR Title."), "body": z.string().describe("Description of changes."), "head": z.string().describe("The branch containing changes to merge."), "base": z.string().describe("The target branch to merge into.").default("main"), "draft": z.boolean().describe("Whether to create the PR as a draft.").default(false), "repo": z.union([z.string(), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1414
|
+
export const CreatePullRequestInputSchema = z.object({ "title": z.string().describe("PR Title."), "body": z.string().describe("Description of changes."), "head": z.string().describe("The branch containing changes to merge."), "base": z.string().describe("The target branch to merge into.").default("main"), "draft": z.boolean().describe("Whether to create the PR as a draft.").default(false), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1414
1415
|
|
|
1415
1416
|
export type CreatePullRequestInput = z.infer<typeof CreatePullRequestInputSchema>;
|
|
1416
1417
|
|
|
@@ -1446,6 +1447,7 @@ export const CreatePullRequestInputJsonSchema = {
|
|
|
1446
1447
|
"repo": {
|
|
1447
1448
|
"anyOf": [
|
|
1448
1449
|
{
|
|
1450
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
1449
1451
|
"type": "string"
|
|
1450
1452
|
},
|
|
1451
1453
|
{
|
|
@@ -1595,7 +1597,40 @@ export const GetPackageScriptsInputJsonSchema = {
|
|
|
1595
1597
|
"type": "object"
|
|
1596
1598
|
} as const;
|
|
1597
1599
|
|
|
1598
|
-
export const
|
|
1600
|
+
export const GetPrCommitsInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the PR to list commits for."), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1601
|
+
|
|
1602
|
+
export type GetPrCommitsInput = z.infer<typeof GetPrCommitsInputSchema>;
|
|
1603
|
+
|
|
1604
|
+
export const GetPrCommitsInputJsonSchema = {
|
|
1605
|
+
"properties": {
|
|
1606
|
+
"prNumber": {
|
|
1607
|
+
"description": "The number of the PR to list commits for.",
|
|
1608
|
+
"title": "Prnumber",
|
|
1609
|
+
"type": "integer"
|
|
1610
|
+
},
|
|
1611
|
+
"repo": {
|
|
1612
|
+
"anyOf": [
|
|
1613
|
+
{
|
|
1614
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
1615
|
+
"type": "string"
|
|
1616
|
+
},
|
|
1617
|
+
{
|
|
1618
|
+
"type": "null"
|
|
1619
|
+
}
|
|
1620
|
+
],
|
|
1621
|
+
"default": null,
|
|
1622
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
1623
|
+
"title": "Repo"
|
|
1624
|
+
}
|
|
1625
|
+
},
|
|
1626
|
+
"required": [
|
|
1627
|
+
"prNumber"
|
|
1628
|
+
],
|
|
1629
|
+
"title": "GetPrCommitsInput",
|
|
1630
|
+
"type": "object"
|
|
1631
|
+
} as const;
|
|
1632
|
+
|
|
1633
|
+
export const GetPrDiffInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the pull request to get the diff for."), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1599
1634
|
|
|
1600
1635
|
export type GetPrDiffInput = z.infer<typeof GetPrDiffInputSchema>;
|
|
1601
1636
|
|
|
@@ -1605,6 +1640,20 @@ export const GetPrDiffInputJsonSchema = {
|
|
|
1605
1640
|
"description": "The number of the pull request to get the diff for.",
|
|
1606
1641
|
"title": "Prnumber",
|
|
1607
1642
|
"type": "integer"
|
|
1643
|
+
},
|
|
1644
|
+
"repo": {
|
|
1645
|
+
"anyOf": [
|
|
1646
|
+
{
|
|
1647
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
1648
|
+
"type": "string"
|
|
1649
|
+
},
|
|
1650
|
+
{
|
|
1651
|
+
"type": "null"
|
|
1652
|
+
}
|
|
1653
|
+
],
|
|
1654
|
+
"default": null,
|
|
1655
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
1656
|
+
"title": "Repo"
|
|
1608
1657
|
}
|
|
1609
1658
|
},
|
|
1610
1659
|
"required": [
|
|
@@ -1614,7 +1663,7 @@ export const GetPrDiffInputJsonSchema = {
|
|
|
1614
1663
|
"type": "object"
|
|
1615
1664
|
} as const;
|
|
1616
1665
|
|
|
1617
|
-
export const GetPrInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the PR to view.") });
|
|
1666
|
+
export const GetPrInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the PR to view."), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1618
1667
|
|
|
1619
1668
|
export type GetPrInput = z.infer<typeof GetPrInputSchema>;
|
|
1620
1669
|
|
|
@@ -1624,6 +1673,20 @@ export const GetPrInputJsonSchema = {
|
|
|
1624
1673
|
"description": "The number of the PR to view.",
|
|
1625
1674
|
"title": "Prnumber",
|
|
1626
1675
|
"type": "integer"
|
|
1676
|
+
},
|
|
1677
|
+
"repo": {
|
|
1678
|
+
"anyOf": [
|
|
1679
|
+
{
|
|
1680
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
1681
|
+
"type": "string"
|
|
1682
|
+
},
|
|
1683
|
+
{
|
|
1684
|
+
"type": "null"
|
|
1685
|
+
}
|
|
1686
|
+
],
|
|
1687
|
+
"default": null,
|
|
1688
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
1689
|
+
"title": "Repo"
|
|
1627
1690
|
}
|
|
1628
1691
|
},
|
|
1629
1692
|
"required": [
|
|
@@ -1633,6 +1696,39 @@ export const GetPrInputJsonSchema = {
|
|
|
1633
1696
|
"type": "object"
|
|
1634
1697
|
} as const;
|
|
1635
1698
|
|
|
1699
|
+
export const GetPrReviewsInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the PR to view reviews for."), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1700
|
+
|
|
1701
|
+
export type GetPrReviewsInput = z.infer<typeof GetPrReviewsInputSchema>;
|
|
1702
|
+
|
|
1703
|
+
export const GetPrReviewsInputJsonSchema = {
|
|
1704
|
+
"properties": {
|
|
1705
|
+
"prNumber": {
|
|
1706
|
+
"description": "The number of the PR to view reviews for.",
|
|
1707
|
+
"title": "Prnumber",
|
|
1708
|
+
"type": "integer"
|
|
1709
|
+
},
|
|
1710
|
+
"repo": {
|
|
1711
|
+
"anyOf": [
|
|
1712
|
+
{
|
|
1713
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
1714
|
+
"type": "string"
|
|
1715
|
+
},
|
|
1716
|
+
{
|
|
1717
|
+
"type": "null"
|
|
1718
|
+
}
|
|
1719
|
+
],
|
|
1720
|
+
"default": null,
|
|
1721
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
1722
|
+
"title": "Repo"
|
|
1723
|
+
}
|
|
1724
|
+
},
|
|
1725
|
+
"required": [
|
|
1726
|
+
"prNumber"
|
|
1727
|
+
],
|
|
1728
|
+
"title": "GetPrReviewsInput",
|
|
1729
|
+
"type": "object"
|
|
1730
|
+
} as const;
|
|
1731
|
+
|
|
1636
1732
|
export const GetRouteMapInputSchema = z.object({ "includeStatic": z.union([z.boolean(), z.null()]).describe("Whether to include static assets in the route map.").default(null) });
|
|
1637
1733
|
|
|
1638
1734
|
export type GetRouteMapInput = z.infer<typeof GetRouteMapInputSchema>;
|
|
@@ -1657,6 +1753,57 @@ export const GetRouteMapInputJsonSchema = {
|
|
|
1657
1753
|
"type": "object"
|
|
1658
1754
|
} as const;
|
|
1659
1755
|
|
|
1756
|
+
export const GetWorkflowRunsInputSchema = z.object({ "branch": z.union([z.string(), z.null()]).describe("Filter workflow runs by branch name.").default(null), "event": z.union([z.string(), z.null()]).describe("Filter workflow runs by event (e.g. push, pull_request).").default(null), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1757
|
+
|
|
1758
|
+
export type GetWorkflowRunsInput = z.infer<typeof GetWorkflowRunsInputSchema>;
|
|
1759
|
+
|
|
1760
|
+
export const GetWorkflowRunsInputJsonSchema = {
|
|
1761
|
+
"properties": {
|
|
1762
|
+
"branch": {
|
|
1763
|
+
"anyOf": [
|
|
1764
|
+
{
|
|
1765
|
+
"type": "string"
|
|
1766
|
+
},
|
|
1767
|
+
{
|
|
1768
|
+
"type": "null"
|
|
1769
|
+
}
|
|
1770
|
+
],
|
|
1771
|
+
"default": null,
|
|
1772
|
+
"description": "Filter workflow runs by branch name.",
|
|
1773
|
+
"title": "Branch"
|
|
1774
|
+
},
|
|
1775
|
+
"event": {
|
|
1776
|
+
"anyOf": [
|
|
1777
|
+
{
|
|
1778
|
+
"type": "string"
|
|
1779
|
+
},
|
|
1780
|
+
{
|
|
1781
|
+
"type": "null"
|
|
1782
|
+
}
|
|
1783
|
+
],
|
|
1784
|
+
"default": null,
|
|
1785
|
+
"description": "Filter workflow runs by event (e.g. push, pull_request).",
|
|
1786
|
+
"title": "Event"
|
|
1787
|
+
},
|
|
1788
|
+
"repo": {
|
|
1789
|
+
"anyOf": [
|
|
1790
|
+
{
|
|
1791
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
1792
|
+
"type": "string"
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
"type": "null"
|
|
1796
|
+
}
|
|
1797
|
+
],
|
|
1798
|
+
"default": null,
|
|
1799
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
1800
|
+
"title": "Repo"
|
|
1801
|
+
}
|
|
1802
|
+
},
|
|
1803
|
+
"title": "GetWorkflowRunsInput",
|
|
1804
|
+
"type": "object"
|
|
1805
|
+
} as const;
|
|
1806
|
+
|
|
1660
1807
|
export const HealthCheckInputSchema = z.object({ "checkDeep": z.boolean().describe("Whether to perform a deep health check including external dependencies.").default(false) });
|
|
1661
1808
|
|
|
1662
1809
|
export type HealthCheckInput = z.infer<typeof HealthCheckInputSchema>;
|
|
@@ -1674,7 +1821,7 @@ export const HealthCheckInputJsonSchema = {
|
|
|
1674
1821
|
"type": "object"
|
|
1675
1822
|
} as const;
|
|
1676
1823
|
|
|
1677
|
-
export const IssueCommentInputSchema = z.object({ "issueNumber": z.number().int().describe("The number of the issue to comment on."), "body": z.string().describe("The content of the comment.") });
|
|
1824
|
+
export const IssueCommentInputSchema = z.object({ "issueNumber": z.number().int().describe("The number of the issue to comment on."), "body": z.string().describe("The content of the comment."), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1678
1825
|
|
|
1679
1826
|
export type IssueCommentInput = z.infer<typeof IssueCommentInputSchema>;
|
|
1680
1827
|
|
|
@@ -1689,6 +1836,20 @@ export const IssueCommentInputJsonSchema = {
|
|
|
1689
1836
|
"description": "The content of the comment.",
|
|
1690
1837
|
"title": "Body",
|
|
1691
1838
|
"type": "string"
|
|
1839
|
+
},
|
|
1840
|
+
"repo": {
|
|
1841
|
+
"anyOf": [
|
|
1842
|
+
{
|
|
1843
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
1844
|
+
"type": "string"
|
|
1845
|
+
},
|
|
1846
|
+
{
|
|
1847
|
+
"type": "null"
|
|
1848
|
+
}
|
|
1849
|
+
],
|
|
1850
|
+
"default": null,
|
|
1851
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
1852
|
+
"title": "Repo"
|
|
1692
1853
|
}
|
|
1693
1854
|
},
|
|
1694
1855
|
"required": [
|
|
@@ -1732,7 +1893,7 @@ export const IssueSummaryJsonSchema = {
|
|
|
1732
1893
|
"type": "object"
|
|
1733
1894
|
} as const;
|
|
1734
1895
|
|
|
1735
|
-
export const IssueUpdateInputSchema = z.object({ "issueNumber": z.number().int().describe("The number of the issue to update."), "body": z.union([z.string(), z.null()]).describe("The new body content for the issue.").default(null), "file": z.union([z.string(), z.null()]).describe("Path to file containing new issue body.").default(null), "labels": z.union([z.array(z.string()), z.null()]).describe("Comma-separated list of labels to set.").default(null), "addLabels": z.union([z.array(z.string()), z.null()]).describe("Comma-separated list of labels to add.").default(null), "removeLabels": z.union([z.array(z.string()), z.null()]).describe("Comma-separated list of labels to remove.").default(null), "state": z.union([z.enum(["open","closed"]), z.null()]).describe("The state to set the issue to.").default(null) });
|
|
1896
|
+
export const IssueUpdateInputSchema = z.object({ "issueNumber": z.number().int().describe("The number of the issue to update."), "body": z.union([z.string(), z.null()]).describe("The new body content for the issue.").default(null), "file": z.union([z.string(), z.null()]).describe("Path to file containing new issue body.").default(null), "labels": z.union([z.array(z.string()), z.null()]).describe("Comma-separated list of labels to set.").default(null), "addLabels": z.union([z.array(z.string()), z.null()]).describe("Comma-separated list of labels to add.").default(null), "removeLabels": z.union([z.array(z.string()), z.null()]).describe("Comma-separated list of labels to remove.").default(null), "state": z.union([z.enum(["open","closed"]), z.null()]).describe("The state to set the issue to.").default(null), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1736
1897
|
|
|
1737
1898
|
export type IssueUpdateInput = z.infer<typeof IssueUpdateInputSchema>;
|
|
1738
1899
|
|
|
@@ -1833,6 +1994,20 @@ export const IssueUpdateInputJsonSchema = {
|
|
|
1833
1994
|
"default": null,
|
|
1834
1995
|
"description": "The state to set the issue to.",
|
|
1835
1996
|
"title": "State"
|
|
1997
|
+
},
|
|
1998
|
+
"repo": {
|
|
1999
|
+
"anyOf": [
|
|
2000
|
+
{
|
|
2001
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
2002
|
+
"type": "string"
|
|
2003
|
+
},
|
|
2004
|
+
{
|
|
2005
|
+
"type": "null"
|
|
2006
|
+
}
|
|
2007
|
+
],
|
|
2008
|
+
"default": null,
|
|
2009
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
2010
|
+
"title": "Repo"
|
|
1836
2011
|
}
|
|
1837
2012
|
},
|
|
1838
2013
|
"required": [
|
|
@@ -1921,7 +2096,7 @@ export const IssueUpdateResponseJsonSchema = {
|
|
|
1921
2096
|
"type": "object"
|
|
1922
2097
|
} as const;
|
|
1923
2098
|
|
|
1924
|
-
export const IssueViewInputSchema = z.object({ "issueNumber": z.number().int().describe("The number of the issue to view.") });
|
|
2099
|
+
export const IssueViewInputSchema = z.object({ "issueNumber": z.number().int().describe("The number of the issue to view."), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
1925
2100
|
|
|
1926
2101
|
export type IssueViewInput = z.infer<typeof IssueViewInputSchema>;
|
|
1927
2102
|
|
|
@@ -1931,6 +2106,20 @@ export const IssueViewInputJsonSchema = {
|
|
|
1931
2106
|
"description": "The number of the issue to view.",
|
|
1932
2107
|
"title": "Issuenumber",
|
|
1933
2108
|
"type": "integer"
|
|
2109
|
+
},
|
|
2110
|
+
"repo": {
|
|
2111
|
+
"anyOf": [
|
|
2112
|
+
{
|
|
2113
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
2114
|
+
"type": "string"
|
|
2115
|
+
},
|
|
2116
|
+
{
|
|
2117
|
+
"type": "null"
|
|
2118
|
+
}
|
|
2119
|
+
],
|
|
2120
|
+
"default": null,
|
|
2121
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
2122
|
+
"title": "Repo"
|
|
1934
2123
|
}
|
|
1935
2124
|
},
|
|
1936
2125
|
"required": [
|
|
@@ -2270,7 +2459,7 @@ export const ReadAgentContextInputJsonSchema = {
|
|
|
2270
2459
|
"type": "object"
|
|
2271
2460
|
} as const;
|
|
2272
2461
|
|
|
2273
|
-
export const ReadCiLogsInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the pull request to read logs for."), "all": z.boolean().describe("Include logs for successful runs (default: false).").default(false) });
|
|
2462
|
+
export const ReadCiLogsInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the pull request to read logs for."), "all": z.boolean().describe("Include logs for successful runs (default: false).").default(false), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
2274
2463
|
|
|
2275
2464
|
export type ReadCiLogsInput = z.infer<typeof ReadCiLogsInputSchema>;
|
|
2276
2465
|
|
|
@@ -2286,6 +2475,20 @@ export const ReadCiLogsInputJsonSchema = {
|
|
|
2286
2475
|
"description": "Include logs for successful runs (default: false).",
|
|
2287
2476
|
"title": "All",
|
|
2288
2477
|
"type": "boolean"
|
|
2478
|
+
},
|
|
2479
|
+
"repo": {
|
|
2480
|
+
"anyOf": [
|
|
2481
|
+
{
|
|
2482
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
2483
|
+
"type": "string"
|
|
2484
|
+
},
|
|
2485
|
+
{
|
|
2486
|
+
"type": "null"
|
|
2487
|
+
}
|
|
2488
|
+
],
|
|
2489
|
+
"default": null,
|
|
2490
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
2491
|
+
"title": "Repo"
|
|
2289
2492
|
}
|
|
2290
2493
|
},
|
|
2291
2494
|
"required": [
|
|
@@ -2466,7 +2669,7 @@ export const ReadPRCommentsResponseJsonSchema = {
|
|
|
2466
2669
|
"type": "object"
|
|
2467
2670
|
} as const;
|
|
2468
2671
|
|
|
2469
|
-
export const RepoLogsInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the pull request to stream logs for."), "grep": z.union([z.string(), z.null()]).describe("Optional pattern to filter log lines.").default(null) });
|
|
2672
|
+
export const RepoLogsInputSchema = z.object({ "prNumber": z.number().int().describe("The number of the pull request to stream logs for."), "grep": z.union([z.string(), z.null()]).describe("Optional pattern to filter log lines.").default(null), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
2470
2673
|
|
|
2471
2674
|
export type RepoLogsInput = z.infer<typeof RepoLogsInputSchema>;
|
|
2472
2675
|
|
|
@@ -2489,6 +2692,20 @@ export const RepoLogsInputJsonSchema = {
|
|
|
2489
2692
|
"default": null,
|
|
2490
2693
|
"description": "Optional pattern to filter log lines.",
|
|
2491
2694
|
"title": "Grep"
|
|
2695
|
+
},
|
|
2696
|
+
"repo": {
|
|
2697
|
+
"anyOf": [
|
|
2698
|
+
{
|
|
2699
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
2700
|
+
"type": "string"
|
|
2701
|
+
},
|
|
2702
|
+
{
|
|
2703
|
+
"type": "null"
|
|
2704
|
+
}
|
|
2705
|
+
],
|
|
2706
|
+
"default": null,
|
|
2707
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
2708
|
+
"title": "Repo"
|
|
2492
2709
|
}
|
|
2493
2710
|
},
|
|
2494
2711
|
"required": [
|
|
@@ -2998,7 +3215,7 @@ export const SearchDdgsInputJsonSchema = {
|
|
|
2998
3215
|
"type": "object"
|
|
2999
3216
|
} as const;
|
|
3000
3217
|
|
|
3001
|
-
export const SearchPRsInputSchema = z.object({ "state": z.enum(["open","closed","all"]).describe("The state of the PRs to search for.").default("open"), "limit": z.number().int().gte(1).lte(100).describe("The maximum number of PRs to return (default: 100, range: 1-100).").default(100), "includeDrafts": z.boolean().describe("Whether to include draft PRs in the results.").default(true), "labels": z.union([z.array(z.string()), z.null()]).describe("Filter PRs by labels.").default(null) });
|
|
3218
|
+
export const SearchPRsInputSchema = z.object({ "state": z.enum(["open","closed","all"]).describe("The state of the PRs to search for.").default("open"), "limit": z.number().int().gte(1).lte(100).describe("The maximum number of PRs to return (default: 100, range: 1-100).").default(100), "includeDrafts": z.boolean().describe("Whether to include draft PRs in the results.").default(true), "labels": z.union([z.array(z.string()), z.null()]).describe("Filter PRs by labels.").default(null), "repo": z.union([z.string().regex(new RegExp("^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$")), z.null()]).describe("The target repository override (e.g. org/repo).").default(null) });
|
|
3002
3219
|
|
|
3003
3220
|
export type SearchPRsInput = z.infer<typeof SearchPRsInputSchema>;
|
|
3004
3221
|
|
|
@@ -3044,6 +3261,20 @@ export const SearchPRsInputJsonSchema = {
|
|
|
3044
3261
|
"default": null,
|
|
3045
3262
|
"description": "Filter PRs by labels.",
|
|
3046
3263
|
"title": "Labels"
|
|
3264
|
+
},
|
|
3265
|
+
"repo": {
|
|
3266
|
+
"anyOf": [
|
|
3267
|
+
{
|
|
3268
|
+
"pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
|
|
3269
|
+
"type": "string"
|
|
3270
|
+
},
|
|
3271
|
+
{
|
|
3272
|
+
"type": "null"
|
|
3273
|
+
}
|
|
3274
|
+
],
|
|
3275
|
+
"default": null,
|
|
3276
|
+
"description": "The target repository override (e.g. org/repo).",
|
|
3277
|
+
"title": "Repo"
|
|
3047
3278
|
}
|
|
3048
3279
|
},
|
|
3049
3280
|
"title": "SearchPRsInput",
|
|
@@ -27,6 +27,16 @@ describe("github.create_issue", () => {
|
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
const result = await createIssueHandler({ title: "Test Issue", body: "Test Body", file: null, repo: null });
|
|
30
|
+
expect(shell.runCommand).toHaveBeenCalledWith("td-cli", [
|
|
31
|
+
"gh",
|
|
32
|
+
"create-issue",
|
|
33
|
+
"--title",
|
|
34
|
+
"Test Issue",
|
|
35
|
+
"--body",
|
|
36
|
+
"Test Body",
|
|
37
|
+
"--repo",
|
|
38
|
+
expect.any(String)
|
|
39
|
+
]);
|
|
30
40
|
expect(result.status).toBe("success");
|
|
31
41
|
expect(result.issue?.number).toBe(123);
|
|
32
42
|
expect(result.issue?.title).toBe("Test Issue");
|