@arii/boomtick-mcp 0.6.1 → 0.7.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 +22 -3
- package/.mcp/schemas/boomtick_health.json +22 -3
- package/.mcp/schemas/github.checkout_branch.json +16 -3
- package/.mcp/schemas/github.comment_triage_summary.json +16 -3
- package/.mcp/schemas/github.create_issue.json +72 -3
- package/.mcp/schemas/github.create_pull_request.json +16 -3
- package/.mcp/schemas/github.get_merge_conflict_files.json +40 -3
- package/.mcp/schemas/github.get_pr.json +12 -3
- package/.mcp/schemas/github.get_pr_commits.json +12 -3
- package/.mcp/schemas/github.get_pr_diff.json +30 -3
- package/.mcp/schemas/github.get_pr_reviews.json +24 -3
- package/.mcp/schemas/github.issue_comment.json +19 -3
- package/.mcp/schemas/github.issue_update.json +72 -3
- package/.mcp/schemas/github.issue_view.json +17 -3
- package/.mcp/schemas/github.open_replacement_pr.json +16 -3
- package/.mcp/schemas/github.search_open_prs.json +130 -3
- package/.mcp/schemas/github_checkout_branch.json +16 -3
- package/.mcp/schemas/github_comment_triage_summary.json +16 -3
- package/.mcp/schemas/github_create_issue.json +72 -3
- package/.mcp/schemas/github_create_pull_request.json +16 -3
- package/.mcp/schemas/github_get_merge_conflict_files.json +40 -3
- package/.mcp/schemas/github_get_pr.json +12 -3
- package/.mcp/schemas/github_get_pr_commits.json +12 -3
- package/.mcp/schemas/github_get_pr_diff.json +30 -3
- package/.mcp/schemas/github_get_pr_reviews.json +24 -3
- package/.mcp/schemas/github_issue_comment.json +19 -3
- package/.mcp/schemas/github_issue_update.json +72 -3
- package/.mcp/schemas/github_issue_view.json +17 -3
- package/.mcp/schemas/github_open_replacement_pr.json +16 -3
- package/.mcp/schemas/github_search_open_prs.json +130 -3
- package/.mcp/schemas/jules.cancel_session.json +38 -3
- package/.mcp/schemas/jules.create_session.json +52 -3
- package/.mcp/schemas/jules.get_messages.json +19 -3
- package/.mcp/schemas/jules.get_pr.json +23 -3
- package/.mcp/schemas/jules.get_session.json +38 -3
- package/.mcp/schemas/jules.list_sessions.json +53 -3
- package/.mcp/schemas/jules.send_message.json +31 -3
- package/.mcp/schemas/jules.trigger_feedback.json +28 -3
- package/.mcp/schemas/jules_cancel_session.json +38 -3
- package/.mcp/schemas/jules_create_session.json +52 -3
- package/.mcp/schemas/jules_get_messages.json +19 -3
- package/.mcp/schemas/jules_get_pr.json +23 -3
- package/.mcp/schemas/jules_get_session.json +38 -3
- package/.mcp/schemas/jules_list_sessions.json +53 -3
- package/.mcp/schemas/jules_send_message.json +31 -3
- package/.mcp/schemas/jules_trigger_feedback.json +28 -3
- package/.mcp/schemas/repo.check_jules_status.json +128 -0
- package/.mcp/schemas/repo.commit_patch.json +23 -3
- package/.mcp/schemas/repo.create_branch.json +28 -3
- package/.mcp/schemas/repo.create_repair_branch.json +31 -3
- package/.mcp/schemas/repo.get_changed_files.json +11 -3
- package/.mcp/schemas/repo.get_command_schema.json +29 -3
- package/.mcp/schemas/repo.get_package_scripts.json +11 -3
- package/.mcp/schemas/repo.get_workflow_runs.json +12 -3
- package/.mcp/schemas/repo.logs.json +14 -3
- package/.mcp/schemas/repo.multi_exec.json +89 -0
- package/.mcp/schemas/repo.read_agent_context.json +117 -5
- package/.mcp/schemas/repo.read_ci_logs.json +46 -3
- package/.mcp/schemas/repo.run_tests.json +31 -3
- package/.mcp/schemas/repo_check_jules_status.json +128 -0
- package/.mcp/schemas/repo_commit_patch.json +23 -3
- package/.mcp/schemas/repo_create_branch.json +28 -3
- package/.mcp/schemas/repo_create_repair_branch.json +31 -3
- package/.mcp/schemas/repo_get_changed_files.json +11 -3
- package/.mcp/schemas/repo_get_command_schema.json +29 -3
- package/.mcp/schemas/repo_get_package_scripts.json +11 -3
- package/.mcp/schemas/repo_get_workflow_runs.json +12 -3
- package/.mcp/schemas/repo_logs.json +14 -3
- package/.mcp/schemas/repo_multi_exec.json +89 -0
- package/.mcp/schemas/repo_read_agent_context.json +117 -5
- package/.mcp/schemas/repo_read_ci_logs.json +46 -3
- package/.mcp/schemas/repo_run_tests.json +31 -3
- package/CHANGELOG.md +22 -0
- package/README.md +29 -6
- package/actions/run-project-gate/action.yml +1 -1
- package/dist/config/dynamic.js +34 -0
- package/dist/config/github.js +16 -0
- package/dist/config/repo.js +28 -0
- package/dist/config.js +16 -81
- package/dist/config.test.js +10 -3
- package/dist/http.js +10 -0
- package/dist/mcp/definitions.js +76 -41
- package/dist/mcp/http.js +32 -9
- package/dist/mcp/http.test.js +62 -4
- package/dist/mcp/server.js +69 -10
- package/dist/mcp/server.test.js +59 -1
- package/dist/tools/contract.js +1079 -45
- package/dist/tools/github.comment_triage_summary.js +3 -10
- package/dist/tools/github.get_merge_conflict_files.js +4 -2
- package/dist/tools/github.get_pr_diff.js +3 -11
- package/dist/tools/jules/cancel-session.js +2 -9
- package/dist/tools/jules/cli.js +31 -0
- package/dist/tools/jules/create-session.js +12 -2
- package/dist/tools/jules/create-session.test.js +7 -0
- package/dist/tools/jules/get-messages.js +2 -9
- package/dist/tools/jules/list-sessions.js +4 -35
- package/dist/tools/jules/send-message.js +2 -9
- package/dist/tools/jules/session.js +26 -0
- package/dist/tools/jules/shared.js +2 -50
- package/dist/tools/jules/trigger-feedback.js +2 -10
- package/dist/tools/repo.check_jules_status.js +148 -0
- package/dist/tools/repo.check_jules_status.test.js +47 -0
- package/dist/tools/repo.multi_exec.js +21 -0
- package/dist/tools/repo.multi_exec.test.js +13 -0
- package/dist/tools/repo.read_agent_context.js +65 -3
- package/dist/tools/repo.read_agent_context.test.js +30 -1
- package/dist/tools/repo.run_tests.js +13 -1
- package/package.json +3 -2
- package/scripts/sync-contracts.ts +11 -2
- package/src/config/dynamic.ts +37 -0
- package/src/config/github.ts +16 -0
- package/src/config/repo.ts +36 -0
- package/src/config.test.ts +11 -3
- package/src/config.ts +16 -89
- package/src/http.ts +13 -0
- package/src/mcp/definitions.ts +110 -41
- package/src/mcp/http.test.ts +75 -5
- package/src/mcp/http.ts +40 -14
- package/src/mcp/server.test.ts +72 -1
- package/src/mcp/server.ts +72 -11
- package/src/tools/contract.ts +1194 -36
- package/src/tools/github.comment_triage_summary.ts +3 -12
- package/src/tools/github.get_merge_conflict_files.ts +5 -2
- package/src/tools/github.get_pr_diff.ts +3 -13
- package/src/tools/jules/cancel-session.ts +2 -11
- package/src/tools/jules/cli.ts +42 -0
- package/src/tools/jules/create-session.test.ts +9 -0
- package/src/tools/jules/create-session.ts +13 -2
- package/src/tools/jules/get-messages.ts +2 -11
- package/src/tools/jules/list-sessions.ts +5 -39
- package/src/tools/jules/send-message.ts +2 -11
- package/src/tools/jules/session.ts +28 -0
- package/src/tools/jules/shared.ts +2 -63
- package/src/tools/jules/trigger-feedback.ts +2 -13
- package/src/tools/repo.check_jules_status.test.ts +55 -0
- package/src/tools/repo.check_jules_status.ts +176 -0
- package/src/tools/repo.multi_exec.test.ts +15 -0
- package/src/tools/repo.multi_exec.ts +23 -0
- package/src/tools/repo.read_agent_context.test.ts +35 -1
- package/src/tools/repo.read_agent_context.ts +68 -3
- package/src/tools/repo.run_tests.ts +14 -1
package/dist/mcp/server.test.js
CHANGED
|
@@ -79,12 +79,16 @@ describe("BoomtickMCPServer", () => {
|
|
|
79
79
|
});
|
|
80
80
|
});
|
|
81
81
|
describe("ListResources", () => {
|
|
82
|
-
it("should return resources list", async () => {
|
|
82
|
+
it("should return resources list containing workspace resources", async () => {
|
|
83
83
|
const handler = requestHandlers.get("resources/list");
|
|
84
84
|
expect(handler).toBeDefined();
|
|
85
85
|
const result = await handler({ method: "resources/list" });
|
|
86
86
|
expect(result.resources).toBeDefined();
|
|
87
87
|
expect(Array.isArray(result.resources)).toBe(true);
|
|
88
|
+
const uris = result.resources.map((r) => r.uri);
|
|
89
|
+
expect(uris).toContain("mcp://workspace/agent-contract");
|
|
90
|
+
expect(uris).toContain("mcp://git/changed-files");
|
|
91
|
+
expect(uris).toContain("mcp://ci/latest-run");
|
|
88
92
|
});
|
|
89
93
|
it("should return resource templates list", async () => {
|
|
90
94
|
const handler = requestHandlers.get("resources/templates/list");
|
|
@@ -150,6 +154,50 @@ describe("BoomtickMCPServer", () => {
|
|
|
150
154
|
expect(result.contents[0].uri).toBe("repo://ci/42");
|
|
151
155
|
expect(JSON.parse(result.contents[0].text)).toEqual({ status: "success" });
|
|
152
156
|
});
|
|
157
|
+
it("should handle mcp://git/changed-files", async () => {
|
|
158
|
+
const handler = requestHandlers.get("resources/read");
|
|
159
|
+
const changedFilesModule = await import("../tools/repo.get_changed_files.js");
|
|
160
|
+
vi.spyOn(changedFilesModule, "getChangedFilesHandler").mockResolvedValue({ files: ["src/index.ts"] });
|
|
161
|
+
const result = await handler({
|
|
162
|
+
method: "resources/read",
|
|
163
|
+
params: { uri: "mcp://git/changed-files" },
|
|
164
|
+
});
|
|
165
|
+
expect(result.contents[0].uri).toBe("mcp://git/changed-files");
|
|
166
|
+
expect(result.contents[0].mimeType).toBe("application/json");
|
|
167
|
+
expect(JSON.parse(result.contents[0].text)).toEqual({ files: ["src/index.ts"] });
|
|
168
|
+
});
|
|
169
|
+
it("should handle mcp://workspace/project-config", async () => {
|
|
170
|
+
const handler = requestHandlers.get("resources/read");
|
|
171
|
+
vi.mocked(fs.readFile).mockResolvedValue('{"packageName": "boomtick"}');
|
|
172
|
+
const result = await handler({
|
|
173
|
+
method: "resources/read",
|
|
174
|
+
params: { uri: "mcp://workspace/project-config" },
|
|
175
|
+
});
|
|
176
|
+
expect(result.contents[0].uri).toBe("mcp://workspace/project-config");
|
|
177
|
+
expect(result.contents[0].mimeType).toBe("application/json");
|
|
178
|
+
expect(JSON.parse(result.contents[0].text)).toEqual({ packageName: "boomtick" });
|
|
179
|
+
});
|
|
180
|
+
it("should handle mcp://git/status", async () => {
|
|
181
|
+
const handler = requestHandlers.get("resources/read");
|
|
182
|
+
const result = await handler({
|
|
183
|
+
method: "resources/read",
|
|
184
|
+
params: { uri: "mcp://git/status" },
|
|
185
|
+
});
|
|
186
|
+
expect(result.contents[0].uri).toBe("mcp://git/status");
|
|
187
|
+
expect(result.contents[0].mimeType).toBe("application/json");
|
|
188
|
+
expect(JSON.parse(result.contents[0].text)).toHaveProperty("status");
|
|
189
|
+
});
|
|
190
|
+
it("should handle mcp://ci/latest-run", async () => {
|
|
191
|
+
const handler = requestHandlers.get("resources/read");
|
|
192
|
+
vi.spyOn(workflowRunsModule, "getWorkflowRunsHandler").mockResolvedValue({ workflowRuns: [{ id: 1, status: "completed", conclusion: "success" }] });
|
|
193
|
+
const result = await handler({
|
|
194
|
+
method: "resources/read",
|
|
195
|
+
params: { uri: "mcp://ci/latest-run" },
|
|
196
|
+
});
|
|
197
|
+
expect(result.contents[0].uri).toBe("mcp://ci/latest-run");
|
|
198
|
+
expect(result.contents[0].mimeType).toBe("application/json");
|
|
199
|
+
expect(JSON.parse(result.contents[0].text)).toEqual({ workflowRuns: [{ id: 1, status: "completed", conclusion: "success" }] });
|
|
200
|
+
});
|
|
153
201
|
it("should throw when resource is unknown", async () => {
|
|
154
202
|
const handler = requestHandlers.get("resources/read");
|
|
155
203
|
await expect(handler({
|
|
@@ -166,6 +214,16 @@ describe("BoomtickMCPServer", () => {
|
|
|
166
214
|
expect(result.tools).toBeDefined();
|
|
167
215
|
expect(Array.isArray(result.tools)).toBe(true);
|
|
168
216
|
});
|
|
217
|
+
it("should ensure all tools have typed outputSchema and none are empty or untyped DEFAULT_OUTPUT_SCHEMA", async () => {
|
|
218
|
+
const handler = requestHandlers.get("tools/list");
|
|
219
|
+
const result = await handler({ method: "tools/list" });
|
|
220
|
+
for (const tool of result.tools) {
|
|
221
|
+
expect(tool.outputSchema).toBeDefined();
|
|
222
|
+
expect(tool.outputSchema.type).toBe("object");
|
|
223
|
+
expect(tool.outputSchema.properties).toBeDefined();
|
|
224
|
+
expect(Object.keys(tool.outputSchema.properties).length).toBeGreaterThan(0);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
169
227
|
});
|
|
170
228
|
describe("CallTool", () => {
|
|
171
229
|
it("should execute registered tool handler successfully", async () => {
|