@feeble/blay-mcp-server 0.1.0 → 0.2.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.
Files changed (66) hide show
  1. package/dist/backend.d.ts +78 -0
  2. package/dist/backend.js +19 -0
  3. package/dist/backend.js.map +1 -0
  4. package/dist/http-backend.d.ts +11 -0
  5. package/dist/http-backend.js +235 -0
  6. package/dist/http-backend.js.map +1 -0
  7. package/dist/index.d.ts +3 -1
  8. package/dist/index.js +22 -20
  9. package/dist/index.js.map +1 -1
  10. package/dist/register-tools.d.ts +7 -0
  11. package/dist/register-tools.js +41 -0
  12. package/dist/register-tools.js.map +1 -0
  13. package/dist/tools/action-items.d.ts +3 -2
  14. package/dist/tools/action-items.js +136 -41
  15. package/dist/tools/action-items.js.map +1 -1
  16. package/dist/tools/areas.d.ts +2 -1
  17. package/dist/tools/areas.js +51 -35
  18. package/dist/tools/areas.js.map +1 -1
  19. package/dist/tools/briefing.d.ts +3 -2
  20. package/dist/tools/briefing.js +40 -60
  21. package/dist/tools/briefing.js.map +1 -1
  22. package/dist/tools/collaborators.d.ts +2 -1
  23. package/dist/tools/collaborators.js +44 -32
  24. package/dist/tools/collaborators.js.map +1 -1
  25. package/dist/tools/comments.d.ts +2 -1
  26. package/dist/tools/comments.js +63 -50
  27. package/dist/tools/comments.js.map +1 -1
  28. package/dist/tools/context.d.ts +2 -1
  29. package/dist/tools/context.js +14 -10
  30. package/dist/tools/context.js.map +1 -1
  31. package/dist/tools/notifications.d.ts +2 -1
  32. package/dist/tools/notifications.js +33 -25
  33. package/dist/tools/notifications.js.map +1 -1
  34. package/dist/tools/org.d.ts +2 -1
  35. package/dist/tools/org.js +17 -14
  36. package/dist/tools/org.js.map +1 -1
  37. package/dist/tools/portal.d.ts +2 -1
  38. package/dist/tools/portal.js +70 -49
  39. package/dist/tools/portal.js.map +1 -1
  40. package/dist/tools/projects.d.ts +2 -1
  41. package/dist/tools/projects.js +61 -48
  42. package/dist/tools/projects.js.map +1 -1
  43. package/dist/tools/recurrence.d.ts +2 -1
  44. package/dist/tools/recurrence.js +42 -28
  45. package/dist/tools/recurrence.js.map +1 -1
  46. package/dist/tools/reminders.d.ts +2 -1
  47. package/dist/tools/reminders.js +57 -43
  48. package/dist/tools/reminders.js.map +1 -1
  49. package/dist/tools/resources.d.ts +2 -1
  50. package/dist/tools/resources.js +129 -97
  51. package/dist/tools/resources.js.map +1 -1
  52. package/dist/tools/search.d.ts +2 -1
  53. package/dist/tools/search.js +33 -29
  54. package/dist/tools/search.js.map +1 -1
  55. package/dist/tools/subscriptions.d.ts +2 -1
  56. package/dist/tools/subscriptions.js +42 -39
  57. package/dist/tools/subscriptions.js.map +1 -1
  58. package/dist/tools/tasks.d.ts +2 -1
  59. package/dist/tools/tasks.js +108 -90
  60. package/dist/tools/tasks.js.map +1 -1
  61. package/dist/tools/users.d.ts +2 -1
  62. package/dist/tools/users.js +20 -16
  63. package/dist/tools/users.js.map +1 -1
  64. package/dist/utils/formatting.js +1 -11
  65. package/dist/utils/formatting.js.map +1 -1
  66. package/package.json +23 -1
@@ -2,33 +2,32 @@
2
2
  * Reminder Tools — list_reminders, create_reminder, update_reminder, cancel_reminder, complete_reminder
3
3
  */
4
4
  import { z } from "zod";
5
- import { apiGet, apiPost, apiPatch, formatError } from "../client.js";
5
+ import { BackendError } from "../backend.js";
6
6
  import { formatReminder } from "../utils/formatting.js";
7
- export function registerReminderTools(server) {
7
+ export function registerReminderTools(server, backend) {
8
8
  server.tool("list_reminders", "List reminders with filtering by target user, status, or linked entity.", {
9
9
  targetUserId: z.string().optional().describe("Filter by reminder target user ID"),
10
10
  status: z.string().optional().describe("Filter by status: 'scheduled', 'fired', 'cancelled', 'completed'"),
11
11
  entityType: z.string().optional().describe("Filter by entity type"),
12
12
  entityId: z.string().optional().describe("Filter by entity ID"),
13
13
  }, async ({ targetUserId, status, entityType, entityId }) => {
14
- const res = await apiGet("/api/v1/reminders", {
15
- targetUserId,
16
- status,
17
- entityType,
18
- entityId,
19
- });
20
- if (!res.ok) {
21
- return { content: [{ type: "text", text: formatError(res) }] };
14
+ try {
15
+ const result = await backend.listReminders({ targetUserId, status, entityType, entityId });
16
+ const reminders = result.data ?? [];
17
+ if (reminders.length === 0) {
18
+ return { content: [{ type: "text", text: "No reminders found." }] };
19
+ }
20
+ return {
21
+ content: [
22
+ { type: "text", text: `# Reminders (${reminders.length})\n\n${reminders.map(formatReminder).join("\n")}` },
23
+ ],
24
+ };
22
25
  }
23
- const reminders = res.data.data ?? [];
24
- if (reminders.length === 0) {
25
- return { content: [{ type: "text", text: "No reminders found." }] };
26
+ catch (err) {
27
+ return {
28
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
29
+ };
26
30
  }
27
- return {
28
- content: [
29
- { type: "text", text: `# Reminders (${reminders.length})\n\n${reminders.map(formatReminder).join("\n")}` },
30
- ],
31
- };
32
31
  });
33
32
  server.tool("create_reminder", "Create a reminder linked to an entity. The reminder fires at the specified time and creates a notification.", {
34
33
  entityType: z.string().describe("Entity type: 'task', 'action_item', 'resource', or 'project'"),
@@ -38,14 +37,17 @@ export function registerReminderTools(server) {
38
37
  remindAt: z.number().describe("When to fire (Unix timestamp in milliseconds)"),
39
38
  targetUserId: z.string().optional().describe("Who to remind (defaults to current user)"),
40
39
  }, async (params) => {
41
- const res = await apiPost("/api/v1/reminders", params);
42
- if (!res.ok) {
43
- return { content: [{ type: "text", text: formatError(res) }] };
40
+ try {
41
+ const data = await backend.createReminder(params);
42
+ return {
43
+ content: [{ type: "text", text: `Reminder created (id: ${data.id}). Fires at ${new Date(params.remindAt).toISOString()}.` }],
44
+ };
45
+ }
46
+ catch (err) {
47
+ return {
48
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
49
+ };
44
50
  }
45
- const data = res.data;
46
- return {
47
- content: [{ type: "text", text: `Reminder created (id: ${data.id}). Fires at ${new Date(params.remindAt).toISOString()}.` }],
48
- };
49
51
  });
50
52
  server.tool("update_reminder", "Update a scheduled reminder's title, message, or time. If the time changes, a new reminder is created.", {
51
53
  reminderId: z.string().describe("The reminder ID"),
@@ -53,35 +55,47 @@ export function registerReminderTools(server) {
53
55
  message: z.string().optional().describe("New message"),
54
56
  remindAt: z.number().optional().describe("New fire time (Unix ms)"),
55
57
  }, async ({ reminderId, ...updates }) => {
56
- const res = await apiPatch(`/api/v1/reminders/${reminderId}`, updates);
57
- if (!res.ok) {
58
- return { content: [{ type: "text", text: formatError(res) }] };
58
+ try {
59
+ const data = await backend.updateReminder(reminderId, updates);
60
+ return {
61
+ content: [{ type: "text", text: `Reminder updated (id: ${data.id}).` }],
62
+ };
63
+ }
64
+ catch (err) {
65
+ return {
66
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
67
+ };
59
68
  }
60
- return {
61
- content: [{ type: "text", text: `Reminder updated (id: ${res.data.id}).` }],
62
- };
63
69
  });
64
70
  server.tool("cancel_reminder", "Cancel a scheduled reminder so it won't fire.", {
65
71
  reminderId: z.string().describe("The reminder ID to cancel"),
66
72
  }, async ({ reminderId }) => {
67
- const res = await apiPost(`/api/v1/reminders/${reminderId}/cancel`, {});
68
- if (!res.ok) {
69
- return { content: [{ type: "text", text: formatError(res) }] };
73
+ try {
74
+ await backend.cancelReminder(reminderId);
75
+ return {
76
+ content: [{ type: "text", text: `Reminder cancelled (id: ${reminderId}).` }],
77
+ };
78
+ }
79
+ catch (err) {
80
+ return {
81
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
82
+ };
70
83
  }
71
- return {
72
- content: [{ type: "text", text: `Reminder cancelled (id: ${reminderId}).` }],
73
- };
74
84
  });
75
85
  server.tool("complete_reminder", "Mark a reminder as completed.", {
76
86
  reminderId: z.string().describe("The reminder ID to complete"),
77
87
  }, async ({ reminderId }) => {
78
- const res = await apiPost(`/api/v1/reminders/${reminderId}/complete`, {});
79
- if (!res.ok) {
80
- return { content: [{ type: "text", text: formatError(res) }] };
88
+ try {
89
+ await backend.completeReminder(reminderId);
90
+ return {
91
+ content: [{ type: "text", text: `Reminder completed (id: ${reminderId}).` }],
92
+ };
93
+ }
94
+ catch (err) {
95
+ return {
96
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
97
+ };
81
98
  }
82
- return {
83
- content: [{ type: "text", text: `Reminder completed (id: ${reminderId}).` }],
84
- };
85
99
  });
86
100
  }
87
101
  //# sourceMappingURL=reminders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reminders.js","sourceRoot":"","sources":["../../src/tools/reminders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reminders.js","sourceRoot":"","sources":["../../src/tools/reminders.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,5 @@
4
4
  * complete_upload, update_resource_content
5
5
  */
6
6
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
- export declare function registerResourceTools(server: McpServer): void;
7
+ import type { BackendAdapter } from "../backend.js";
8
+ export declare function registerResourceTools(server: McpServer, backend: BackendAdapter): void;
@@ -4,47 +4,53 @@
4
4
  * complete_upload, update_resource_content
5
5
  */
6
6
  import { z } from "zod";
7
- import { apiGet, apiPost, apiPatch, apiPut, apiDelete, formatError } from "../client.js";
7
+ import { BackendError } from "../backend.js";
8
8
  import { formatResource, formatResourceDetail, formatConfirmation } from "../utils/formatting.js";
9
- export function registerResourceTools(server) {
9
+ export function registerResourceTools(server, backend) {
10
10
  server.tool("list_resources", "List resources (documents, links, files) with filtering. Filter by project, task, or type. Resources include links, collaborative documents, files, and more.", {
11
11
  projectId: z.string().optional().describe("Filter by project ID"),
12
12
  taskId: z.string().optional().describe("Filter by task ID"),
13
13
  type: z.string().optional().describe("Filter by type (link, collab_document, file, image, video)"),
14
14
  limit: z.number().optional().describe("Max results (default 50, max 100)"),
15
15
  }, async (params) => {
16
- const res = await apiGet("/api/v1/resources", {
17
- projectId: params.projectId,
18
- taskId: params.taskId,
19
- type: params.type,
20
- limit: params.limit?.toString(),
21
- });
22
- if (!res.ok) {
23
- return { content: [{ type: "text", text: formatError(res) }] };
24
- }
25
- const resources = res.data.data ?? [];
26
- if (resources.length === 0) {
27
- return { content: [{ type: "text", text: "No resources found matching your filters." }] };
28
- }
29
- return {
30
- content: [
31
- { type: "text", text: `# Resources (${resources.length})\n\n${resources.map(formatResource).join("\n")}` },
32
- ],
33
- };
16
+ try {
17
+ const result = await backend.listResources({
18
+ projectId: params.projectId,
19
+ taskId: params.taskId,
20
+ type: params.type,
21
+ limit: params.limit,
22
+ });
23
+ const resources = result.data ?? [];
24
+ if (resources.length === 0) {
25
+ return { content: [{ type: "text", text: "No resources found matching your filters." }] };
26
+ }
27
+ return {
28
+ content: [
29
+ { type: "text", text: `# Resources (${resources.length})\n\n${resources.map(formatResource).join("\n")}` },
30
+ ],
31
+ };
32
+ }
33
+ catch (err) {
34
+ return {
35
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
36
+ };
37
+ }
34
38
  });
35
39
  server.tool("get_resource", "Get full detail on a single resource including metadata and comments. Use this after finding a resource via list_resources or get_task with includeResources.", {
36
40
  resourceId: z.string().describe("The resource ID"),
37
41
  includeComments: z.boolean().optional().describe("Include comments on this resource"),
38
42
  }, async ({ resourceId, includeComments }) => {
39
- const res = await apiGet(`/api/v1/resources/${resourceId}`, {
40
- includeComments: includeComments ? "true" : undefined,
41
- });
42
- if (!res.ok) {
43
- return { content: [{ type: "text", text: formatError(res) }] };
44
- }
45
- return {
46
- content: [{ type: "text", text: formatResourceDetail(res.data) }],
47
- };
43
+ try {
44
+ const data = await backend.getResource(resourceId, { includeComments });
45
+ return {
46
+ content: [{ type: "text", text: formatResourceDetail(data) }],
47
+ };
48
+ }
49
+ catch (err) {
50
+ return {
51
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
52
+ };
53
+ }
48
54
  });
49
55
  server.tool("create_resource", "Create a new resource (link or document). For links, provide a URL. For collaborative documents, a new document will be created automatically.", {
50
56
  name: z.string().describe("Resource name"),
@@ -56,23 +62,27 @@ export function registerResourceTools(server) {
56
62
  description: z.string().optional().describe("Resource description"),
57
63
  tags: z.array(z.string()).optional().describe("Tags for categorization"),
58
64
  }, async (params) => {
59
- const format = params.type === "collab_document" ? (params.format || "markdown") : params.format;
60
- const res = await apiPost("/api/v1/resources", {
61
- name: params.name,
62
- type: params.type,
63
- url: params.url,
64
- projectId: params.projectId,
65
- taskId: params.taskId,
66
- format,
67
- description: params.description,
68
- tags: params.tags,
69
- });
70
- if (!res.ok) {
71
- return { content: [{ type: "text", text: formatError(res) }] };
72
- }
73
- return {
74
- content: [{ type: "text", text: formatConfirmation("Resource created", res.data) }],
75
- };
65
+ try {
66
+ const format = params.type === "collab_document" ? (params.format || "markdown") : params.format;
67
+ const data = await backend.createResource({
68
+ name: params.name,
69
+ type: params.type,
70
+ url: params.url,
71
+ projectId: params.projectId,
72
+ taskId: params.taskId,
73
+ format,
74
+ description: params.description,
75
+ tags: params.tags,
76
+ });
77
+ return {
78
+ content: [{ type: "text", text: formatConfirmation("Resource created", data) }],
79
+ };
80
+ }
81
+ catch (err) {
82
+ return {
83
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
84
+ };
85
+ }
76
86
  });
77
87
  server.tool("update_resource", "Update a resource's name, URL, description, or tags. Use get_resource first to confirm the current state.", {
78
88
  resourceId: z.string().describe("The resource ID to update"),
@@ -81,43 +91,54 @@ export function registerResourceTools(server) {
81
91
  description: z.string().optional().describe("New description"),
82
92
  tags: z.array(z.string()).optional().describe("New tags (replaces existing)"),
83
93
  }, async ({ resourceId, ...updates }) => {
84
- const body = {};
85
- for (const [key, value] of Object.entries(updates)) {
86
- if (value !== undefined)
87
- body[key] = value;
88
- }
89
- const res = await apiPatch(`/api/v1/resources/${resourceId}`, body);
90
- if (!res.ok) {
91
- return { content: [{ type: "text", text: formatError(res) }] };
92
- }
93
- return {
94
- content: [{ type: "text", text: formatConfirmation("Resource updated", res.data) }],
95
- };
94
+ try {
95
+ const body = {};
96
+ for (const [key, value] of Object.entries(updates)) {
97
+ if (value !== undefined)
98
+ body[key] = value;
99
+ }
100
+ const data = await backend.updateResource(resourceId, body);
101
+ return {
102
+ content: [{ type: "text", text: formatConfirmation("Resource updated", data) }],
103
+ };
104
+ }
105
+ catch (err) {
106
+ return {
107
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
108
+ };
109
+ }
96
110
  });
97
111
  server.tool("delete_resource", "Archive a resource. Use get_resource first to confirm you have the right resource.", {
98
112
  resourceId: z.string().describe("The resource ID to archive"),
99
113
  }, async ({ resourceId }) => {
100
- const res = await apiDelete(`/api/v1/resources/${resourceId}`);
101
- if (!res.ok) {
102
- return { content: [{ type: "text", text: formatError(res) }] };
114
+ try {
115
+ await backend.deleteResource(resourceId);
116
+ return {
117
+ content: [{ type: "text", text: `Resource archived (id: ${resourceId}).` }],
118
+ };
119
+ }
120
+ catch (err) {
121
+ return {
122
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
123
+ };
103
124
  }
104
- return {
105
- content: [{ type: "text", text: `Resource archived (id: ${resourceId}).` }],
106
- };
107
125
  });
108
126
  server.tool("get_resource_content", "Read the text content of a collaborative document. Only works for collab_document type resources. Returns the document's plain text content (truncated to ~10,000 characters).", {
109
127
  resourceId: z.string().describe("The resource ID of a collab_document"),
110
128
  }, async ({ resourceId }) => {
111
- const res = await apiGet(`/api/v1/resources/${resourceId}/content`);
112
- if (!res.ok) {
113
- return { content: [{ type: "text", text: formatError(res) }] };
114
- }
115
- const data = res.data;
116
- const header = `# Document: ${data.documentName}\n- **Format:** ${data.format}\n- **Content Length:** ${data.contentLength} characters\n\n`;
117
- const content = data.content || "(empty document)";
118
- return {
119
- content: [{ type: "text", text: header + content }],
120
- };
129
+ try {
130
+ const data = await backend.getResourceContent(resourceId);
131
+ const header = `# Document: ${data.documentName}\n- **Format:** ${data.format}\n- **Content Length:** ${data.contentLength} characters\n\n`;
132
+ const content = data.content || "(empty document)";
133
+ return {
134
+ content: [{ type: "text", text: header + content }],
135
+ };
136
+ }
137
+ catch (err) {
138
+ return {
139
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
140
+ };
141
+ }
121
142
  });
122
143
  server.tool("get_upload_url", "Get a presigned URL for uploading a file. The URL expires in 1 hour. Max file size: 100MB. After uploading the file to the URL, call complete_upload to register it.", {
123
144
  filename: z.string().describe("The filename (e.g. 'report.pdf')"),
@@ -126,17 +147,20 @@ export function registerResourceTools(server) {
126
147
  projectId: z.string().optional().describe("Project ID to associate with"),
127
148
  taskId: z.string().optional().describe("Task ID to associate with"),
128
149
  }, async (params) => {
129
- const res = await apiPost("/api/v1/resources/upload-url", params);
130
- if (!res.ok) {
131
- return { content: [{ type: "text", text: formatError(res) }] };
132
- }
133
- const data = res.data;
134
- return {
135
- content: [{
136
- type: "text",
137
- text: `Upload URL generated.\n- **Upload URL:** ${data.uploadUrl}\n- **R2 Key:** ${data.key}\n- **Public URL:** ${data.publicUrl}\n- **Content Type:** ${data.contentType}\n- **Resource Type:** ${data.resourceType}\n\nPUT the file to the upload URL, then call complete_upload with the key and public URL.`,
138
- }],
139
- };
150
+ try {
151
+ const data = await backend.getUploadUrl(params);
152
+ return {
153
+ content: [{
154
+ type: "text",
155
+ text: `Upload URL generated.\n- **Upload URL:** ${data.uploadUrl}\n- **R2 Key:** ${data.key}\n- **Public URL:** ${data.publicUrl}\n- **Content Type:** ${data.contentType}\n- **Resource Type:** ${data.resourceType}\n\nPUT the file to the upload URL, then call complete_upload with the key and public URL.`,
156
+ }],
157
+ };
158
+ }
159
+ catch (err) {
160
+ return {
161
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
162
+ };
163
+ }
140
164
  });
141
165
  server.tool("complete_upload", "Register a file that was uploaded via get_upload_url. Creates a resource record for the file.", {
142
166
  name: z.string().describe("Display name for the resource"),
@@ -151,26 +175,34 @@ export function registerResourceTools(server) {
151
175
  width: z.number().optional().describe("Image/video width in pixels"),
152
176
  height: z.number().optional().describe("Image/video height in pixels"),
153
177
  }, async (params) => {
154
- const res = await apiPost("/api/v1/resources/upload-complete", params);
155
- if (!res.ok) {
156
- return { content: [{ type: "text", text: formatError(res) }] };
178
+ try {
179
+ const data = await backend.completeUpload(params);
180
+ return {
181
+ content: [{ type: "text", text: formatConfirmation("File resource created", data) }],
182
+ };
183
+ }
184
+ catch (err) {
185
+ return {
186
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
187
+ };
157
188
  }
158
- return {
159
- content: [{ type: "text", text: formatConfirmation("File resource created", res.data) }],
160
- };
161
189
  });
162
190
  server.tool("update_resource_content", "Write or replace the text content of a collaborative document. Only works for plaintext or markdown format documents, not richtext.", {
163
191
  resourceId: z.string().describe("The resource ID of a collab_document"),
164
192
  content: z.string().describe("The new document content"),
165
193
  format: z.string().optional().describe("Content format: 'plaintext' or 'markdown' (default 'plaintext')"),
166
194
  }, async ({ resourceId, content, format }) => {
167
- const res = await apiPut(`/api/v1/resources/${resourceId}/content`, { content, format });
168
- if (!res.ok) {
169
- return { content: [{ type: "text", text: formatError(res) }] };
195
+ try {
196
+ await backend.updateResourceContent(resourceId, { content, format });
197
+ return {
198
+ content: [{ type: "text", text: `Document content updated (resource: ${resourceId}).` }],
199
+ };
200
+ }
201
+ catch (err) {
202
+ return {
203
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
204
+ };
170
205
  }
171
- return {
172
- content: [{ type: "text", text: `Document content updated (resource: ${resourceId}).` }],
173
- };
174
206
  });
175
207
  }
176
208
  //# sourceMappingURL=resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/tools/resources.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@
2
2
  * Search Tool — search
3
3
  */
4
4
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
- export declare function registerSearchTools(server: McpServer): void;
5
+ import type { BackendAdapter } from "../backend.js";
6
+ export declare function registerSearchTools(server: McpServer, backend: BackendAdapter): void;
@@ -2,8 +2,8 @@
2
2
  * Search Tool — search
3
3
  */
4
4
  import { z } from "zod";
5
- import { apiGet, formatError } from "../client.js";
6
- export function registerSearchTools(server) {
5
+ import { BackendError } from "../backend.js";
6
+ export function registerSearchTools(server, backend) {
7
7
  server.tool("search", "Full-text search across tasks, projects, and comments. Use this when you know part of a name or keyword but not the ID. Returns matching entities with their types and IDs. For browsing by filters, use list_tasks or list_projects instead.", {
8
8
  query: z.string().describe("Search query text"),
9
9
  entityTypes: z
@@ -12,37 +12,41 @@ export function registerSearchTools(server) {
12
12
  .describe("Comma-separated entity types to search (e.g. 'task,project'). Defaults to all."),
13
13
  limit: z.number().optional().describe("Max results to return"),
14
14
  }, async (params) => {
15
- const res = await apiGet("/api/v1/search", {
16
- q: params.query,
17
- entityTypes: params.entityTypes,
18
- limit: params.limit?.toString(),
19
- });
20
- if (!res.ok) {
21
- return { content: [{ type: "text", text: formatError(res) }] };
15
+ try {
16
+ const result = await backend.search({
17
+ q: params.query,
18
+ entityTypes: params.entityTypes,
19
+ limit: params.limit,
20
+ });
21
+ const results = result.data ?? [];
22
+ if (results.length === 0) {
23
+ return {
24
+ content: [{ type: "text", text: `No results found for "${params.query}".` }],
25
+ };
26
+ }
27
+ const formatted = results
28
+ .map((r) => {
29
+ const parts = [`- [${r.type}] **${r.name}**`];
30
+ if (r.projectName)
31
+ parts.push(`in "${r.projectName}"`);
32
+ parts.push(`(id: ${r.id})`);
33
+ return parts.join(" ");
34
+ })
35
+ .join("\n");
36
+ return {
37
+ content: [
38
+ {
39
+ type: "text",
40
+ text: `# Search Results for "${params.query}" (${results.length})\n\n${formatted}`,
41
+ },
42
+ ],
43
+ };
22
44
  }
23
- const results = res.data.data ?? [];
24
- if (results.length === 0) {
45
+ catch (err) {
25
46
  return {
26
- content: [{ type: "text", text: `No results found for "${params.query}".` }],
47
+ content: [{ type: "text", text: err instanceof BackendError ? err.message : "Unexpected error" }],
27
48
  };
28
49
  }
29
- const formatted = results
30
- .map((r) => {
31
- const parts = [`- [${r.type}] **${r.name}**`];
32
- if (r.projectName)
33
- parts.push(`in "${r.projectName}"`);
34
- parts.push(`(id: ${r.id})`);
35
- return parts.join(" ");
36
- })
37
- .join("\n");
38
- return {
39
- content: [
40
- {
41
- type: "text",
42
- text: `# Search Results for "${params.query}" (${results.length})\n\n${formatted}`,
43
- },
44
- ],
45
- };
46
50
  });
47
51
  }
48
52
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,+OAA+O,EAC/O;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC/C,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,gFAAgF,CAAC;QAC7F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAC/D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAsC,gBAAgB,EAAE;YAC9E,CAAC,EAAE,MAAM,CAAC,KAAK;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yBAAyB,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;aACtF,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,OAAO;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,yBAAyB,MAAM,CAAC,KAAK,MAAM,OAAO,CAAC,MAAM,QAAQ,SAAS,EAAE;iBACnF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,OAAuB;IAC5E,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,+OAA+O,EAC/O;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC/C,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,gFAAgF,CAAC;QAC7F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAC/D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;gBAClC,CAAC,EAAE,MAAM,CAAC,KAAK;gBACf,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yBAAyB,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;iBACtF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,OAAO;iBACtB,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;gBACd,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC9C,IAAI,CAAC,CAAC,WAAW;oBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,MAAM,CAAC,KAAK,MAAM,OAAO,CAAC,MAAM,QAAQ,SAAS,EAAE;qBACnF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;aAC3G,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}