basecamp-mcp 1.0.2 → 1.0.3

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/README.md CHANGED
@@ -129,10 +129,12 @@ npm run dev
129
129
  - `basecamp_list_kanban_columns` - List all columns in a kanban board
130
130
  - `basecamp_list_kanban_cards` - List cards in a column with steps and assignees
131
131
  - `basecamp_get_kanban_card` - Get complete details of a specific card
132
- - `basecamp_create_kanban_card` - Create new card with title and optional content
133
- - `basecamp_update_kanban_card` - Update card with advanced content editing (supports full replacement, append, prepend, search/replace, plus title, due date, assignees, notifications)
132
+ - `basecamp_create_kanban_card` - Create new card with title, content, and optional checklist steps
133
+ - `basecamp_update_kanban_card` - Update card with advanced content editing (supports full replacement, append, prepend, search/replace, plus title, due date, assignees, notifications, and complete step array management)
134
134
  - `basecamp_move_kanban_card` - Move a card to a different column and/or position
135
- - `basecamp_create_kanban_step` - Add checklist step to a card
135
+
136
+ #### Activity
137
+ - `basecamp_list_recordings` - Browse recent activity globally or across specific projects, with filtering by type, date range, person, and text search. All filters except text search support multiple values (e.g., multiple project IDs, person IDs, or types for OR-matching)
136
138
 
137
139
  ## Development
138
140
 
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@
9
9
  * - Comments (universal - work on any resource)
10
10
  * - People
11
11
  * - Kanban (cards, columns, steps)
12
+ * - Activity (recordings browsing)
12
13
  *
13
14
  * Environment variables required:
14
15
  * - BASECAMP_CLIENT_ID
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@
9
9
  * - Comments (universal - work on any resource)
10
10
  * - People
11
11
  * - Kanban (cards, columns, steps)
12
+ * - Activity (recordings browsing)
12
13
  *
13
14
  * Environment variables required:
14
15
  * - BASECAMP_CLIENT_ID
@@ -18,6 +19,7 @@
18
19
  */
19
20
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
20
21
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
22
+ import { registerActivityTools } from "./tools/activity.js";
21
23
  import { registerCommentTools } from "./tools/comments.js";
22
24
  import { registerKanbanTools } from "./tools/kanban.js";
23
25
  import { registerMessageTools } from "./tools/messages.js";
@@ -55,6 +57,7 @@ async function main() {
55
57
  registerCommentTools(server);
56
58
  registerPeopleTools(server);
57
59
  registerKanbanTools(server);
60
+ registerActivityTools(server);
58
61
  console.error("Tools registered successfully");
59
62
  // Create stdio transport
60
63
  const transport = new StdioServerTransport();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,qCAAqC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,0CAA0C;IAC1C,MAAM,eAAe,GAAG;QACtB,oBAAoB;QACpB,wBAAwB;QACxB,wBAAwB;QACxB,qBAAqB;KACtB,CAAC;IAEF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CACX,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvE,CAAC;QACF,OAAO,CAAC,KAAK,CACX,+EAA+E,CAChF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/C,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,8BAA8B;IAC9B,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACpD,CAAC;AAED,iBAAiB;AACjB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,qCAAqC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,0CAA0C;IAC1C,MAAM,eAAe,GAAG;QACtB,oBAAoB;QACpB,wBAAwB;QACxB,wBAAwB;QACxB,qBAAqB;KACtB,CAAC;IAEF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CACX,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvE,CAAC;QACF,OAAO,CAAC,KAAK,CACX,+EAA+E,CAChF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/C,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,8BAA8B;IAC9B,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACpD,CAAC;AAED,iBAAiB;AACjB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Activity browsing tools for Basecamp MCP server
3
+ *
4
+ * Uses the Basecamp recordings API to provide activity browsing:
5
+ * listing recent changes across projects with filtering by type,
6
+ * date range, person, project, and text search.
7
+ */
8
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
9
+ /**
10
+ * Register all activity-related tools with the MCP server
11
+ */
12
+ export declare function registerActivityTools(server: McpServer): void;
13
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/tools/activity.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuHzE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqQ7D"}
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Activity browsing tools for Basecamp MCP server
3
+ *
4
+ * Uses the Basecamp recordings API to provide activity browsing:
5
+ * listing recent changes across projects with filtering by type,
6
+ * date range, person, project, and text search.
7
+ */
8
+ import { asyncPagedIterator } from "basecamp-client";
9
+ import { z } from "zod";
10
+ import { CHARACTER_LIMIT, DEFAULT_LIMIT } from "../constants.js";
11
+ import { BasecampIdSchema } from "../schemas/common.js";
12
+ import { initializeBasecampClient } from "../utils/auth.js";
13
+ import { handleBasecampError } from "../utils/errorHandlers.js";
14
+ /** Default recording types to fetch when no type filter is specified */
15
+ const DEFAULT_RECORDING_TYPES = [
16
+ "Todo",
17
+ "Message",
18
+ "Document",
19
+ "Comment",
20
+ "Upload",
21
+ ];
22
+ /** Map of friendly type aliases to canonical Basecamp API type names */
23
+ const TYPE_ALIASES = {
24
+ todo: "Todo",
25
+ todos: "Todo",
26
+ message: "Message",
27
+ messages: "Message",
28
+ msg: "Message",
29
+ document: "Document",
30
+ doc: "Document",
31
+ docs: "Document",
32
+ comment: "Comment",
33
+ comments: "Comment",
34
+ upload: "Upload",
35
+ uploads: "Upload",
36
+ file: "Upload",
37
+ files: "Upload",
38
+ todolist: "Todolist",
39
+ question: "Question::Answer",
40
+ answer: "Question::Answer",
41
+ event: "Schedule::Entry",
42
+ schedule: "Schedule::Entry",
43
+ vault: "Vault",
44
+ card: "Kanban::Card",
45
+ cards: "Kanban::Card",
46
+ kanban: "Kanban::Card",
47
+ step: "Kanban::Step",
48
+ steps: "Kanban::Step",
49
+ };
50
+ /**
51
+ * Parse a "since" value into a Date object.
52
+ *
53
+ * Supports:
54
+ * - Relative durations: "24h", "7d", "2w"
55
+ * - Keywords: "today", "yesterday"
56
+ * - ISO 8601 dates: "2024-01-15", "2024-01-15T10:00:00Z"
57
+ */
58
+ function parseSince(value) {
59
+ const now = new Date();
60
+ const trimmed = value.trim();
61
+ const lower = trimmed.toLowerCase();
62
+ // Relative durations: Nh, Nd, Nw
63
+ const hourMatch = lower.match(/^(\d+)h$/);
64
+ if (hourMatch) {
65
+ return new Date(now.getTime() - Number.parseInt(hourMatch[1], 10) * 3600000);
66
+ }
67
+ const dayMatch = lower.match(/^(\d+)d$/);
68
+ if (dayMatch) {
69
+ return new Date(now.getTime() - Number.parseInt(dayMatch[1], 10) * 86400000);
70
+ }
71
+ const weekMatch = lower.match(/^(\d+)w$/);
72
+ if (weekMatch) {
73
+ return new Date(now.getTime() - Number.parseInt(weekMatch[1], 10) * 7 * 86400000);
74
+ }
75
+ // Keywords
76
+ if (lower === "today") {
77
+ const d = new Date(now);
78
+ d.setHours(0, 0, 0, 0);
79
+ return d;
80
+ }
81
+ if (lower === "yesterday") {
82
+ const d = new Date(now);
83
+ d.setDate(d.getDate() - 1);
84
+ d.setHours(0, 0, 0, 0);
85
+ return d;
86
+ }
87
+ // ISO 8601 / date string
88
+ const parsed = new Date(trimmed);
89
+ if (Number.isNaN(parsed.getTime())) {
90
+ throw new Error(`Invalid since value: "${value}". ` +
91
+ 'Use ISO 8601 (e.g., "2024-01-15"), relative duration (e.g., "24h", "7d", "2w"), ' +
92
+ 'or keyword ("today", "yesterday").');
93
+ }
94
+ return parsed;
95
+ }
96
+ /**
97
+ * Resolve an array of type strings (possibly using aliases)
98
+ * to deduplicated canonical Basecamp API type names.
99
+ */
100
+ function resolveTypes(types) {
101
+ const resolved = new Set();
102
+ for (const t of types) {
103
+ const lower = t.trim().toLowerCase();
104
+ resolved.add(TYPE_ALIASES[lower] || t.trim());
105
+ }
106
+ return [...resolved];
107
+ }
108
+ /**
109
+ * Register all activity-related tools with the MCP server
110
+ */
111
+ export function registerActivityTools(server) {
112
+ server.registerTool("basecamp_list_recordings", {
113
+ title: "List Basecamp Activity (Recordings)",
114
+ description: `Browse recent activity across Basecamp by listing recordings. Recordings represent all content in Basecamp: todos, messages, documents, comments, uploads, and more.
115
+
116
+ Use this tool to:
117
+ - See what's been happening across all projects or specific projects
118
+ - Find recent activity by one or more people
119
+ - Review changes since a specific date or time period
120
+ - Filter activity by content type (todos, messages, documents, etc.)
121
+ - Search activity by title text
122
+
123
+ All filters except query support multiple values for OR-matching.
124
+
125
+ Examples:
126
+ - "What happened in the last 24 hours?" → since: "24h"
127
+ - "Show recent todos in project 12345" → project_ids: [12345], type: ["todo"]
128
+ - "What did Alice and Bob do this week?" → person_ids: [111, 222], since: "7d"
129
+ - "Find messages mentioning launch across projects 1 and 2" → project_ids: [1, 2], type: ["message"], query: "launch"
130
+ - "List all messages across projects" → type: ["message"]`,
131
+ inputSchema: {
132
+ project_ids: z
133
+ .array(BasecampIdSchema)
134
+ .optional()
135
+ .describe("Filter to specific projects (bucket IDs). Supports multiple IDs for OR-matching. Omit to browse across all projects."),
136
+ type: z
137
+ .array(z.string())
138
+ .optional()
139
+ .describe('Recording type filter. Options: "todo", "message", "document", "comment", "upload", ' +
140
+ '"todolist", "question", "schedule", "vault". ' +
141
+ "Supports multiple values for OR-matching. " +
142
+ "Omit to fetch all common types (todo, message, document, comment, upload)."),
143
+ since: z
144
+ .string()
145
+ .optional()
146
+ .describe('Show activity since this time. Accepts ISO 8601 dates (e.g., "2024-01-15"), ' +
147
+ 'relative durations ("24h", "7d", "2w"), or keywords ("today", "yesterday").'),
148
+ person_ids: z
149
+ .array(BasecampIdSchema)
150
+ .optional()
151
+ .describe("Filter by creator person IDs. Supports multiple IDs for OR-matching. Use basecamp_list_people to find person IDs."),
152
+ query: z
153
+ .string()
154
+ .optional()
155
+ .describe("Case-insensitive text search against recording titles."),
156
+ sort: z
157
+ .enum(["created_at", "updated_at"])
158
+ .optional()
159
+ .describe('Sort field: "created_at" (default) or "updated_at".'),
160
+ direction: z
161
+ .enum(["desc", "asc"])
162
+ .optional()
163
+ .describe('Sort direction: "desc" (default, newest first) or "asc" (oldest first).'),
164
+ status: z
165
+ .enum(["active", "archived", "trashed"])
166
+ .optional()
167
+ .describe('Recording status filter: "active" (default), "archived", or "trashed".'),
168
+ limit: z
169
+ .number()
170
+ .min(1)
171
+ .max(100)
172
+ .optional()
173
+ .describe(`Maximum number of recordings to return (default: ${DEFAULT_LIMIT}, max: 100).`),
174
+ },
175
+ annotations: {
176
+ readOnlyHint: true,
177
+ destructiveHint: false,
178
+ idempotentHint: true,
179
+ openWorldHint: true,
180
+ },
181
+ }, async (params) => {
182
+ try {
183
+ const client = await initializeBasecampClient();
184
+ // Determine which types to fetch
185
+ const types = params.type
186
+ ? resolveTypes(params.type)
187
+ : DEFAULT_RECORDING_TYPES;
188
+ // Build shared query params
189
+ const baseQuery = {};
190
+ if (params.project_ids && params.project_ids.length > 0) {
191
+ baseQuery.bucket = params.project_ids.join(",");
192
+ }
193
+ if (params.sort) {
194
+ baseQuery.sort = params.sort;
195
+ }
196
+ if (params.direction) {
197
+ baseQuery.direction = params.direction;
198
+ }
199
+ if (params.status) {
200
+ baseQuery.status = params.status;
201
+ }
202
+ // Parse since date upfront if provided
203
+ const sinceDate = params.since ? parseSince(params.since) : null;
204
+ const sortField = params.sort || "created_at";
205
+ // Fetch recordings for each type in parallel, with early termination if since is set
206
+ const fetchPromises = types.map(async (type) => {
207
+ const items = [];
208
+ for await (const item of asyncPagedIterator({
209
+ fetchPage: client.recordings.list,
210
+ request: {
211
+ query: { type, ...baseQuery },
212
+ },
213
+ })) {
214
+ // If filtering by date and results are sorted desc (default),
215
+ // stop once we hit records older than the cutoff
216
+ if (sinceDate && params.direction !== "asc") {
217
+ const itemDate = new Date(sortField === "updated_at" ? item.updated_at : item.created_at);
218
+ if (itemDate < sinceDate) {
219
+ break;
220
+ }
221
+ }
222
+ items.push(item);
223
+ }
224
+ return items;
225
+ });
226
+ const results = await Promise.all(fetchPromises);
227
+ let filtered = results.flat();
228
+ // If direction is asc, we couldn't do early termination, so filter now
229
+ if (sinceDate && params.direction === "asc") {
230
+ filtered = filtered.filter((r) => {
231
+ const date = new Date(sortField === "updated_at" ? r.updated_at : r.created_at);
232
+ return date >= sinceDate;
233
+ });
234
+ }
235
+ // Filter by person IDs (OR-match)
236
+ if (params.person_ids && params.person_ids.length > 0) {
237
+ const personIdSet = new Set(params.person_ids);
238
+ filtered = filtered.filter((r) => r.creator && personIdSet.has(r.creator.id));
239
+ }
240
+ // Filter by text search (case-insensitive substring match on title)
241
+ if (params.query) {
242
+ const lowerQuery = params.query.toLowerCase();
243
+ filtered = filtered.filter((r) => r.title.toLowerCase().includes(lowerQuery));
244
+ }
245
+ // Sort merged results
246
+ const sortDir = params.direction || "desc";
247
+ filtered.sort((a, b) => {
248
+ const dateA = new Date(sortField === "updated_at" ? a.updated_at : a.created_at).getTime();
249
+ const dateB = new Date(sortField === "updated_at" ? b.updated_at : b.created_at).getTime();
250
+ return sortDir === "desc" ? dateB - dateA : dateA - dateB;
251
+ });
252
+ // Apply limit
253
+ const limit = params.limit || DEFAULT_LIMIT;
254
+ const total = filtered.length;
255
+ filtered = filtered.slice(0, limit);
256
+ // Serialize response
257
+ const serialized = filtered.map((r) => ({
258
+ id: r.id,
259
+ type: r.type,
260
+ title: r.title,
261
+ status: r.status,
262
+ created_at: r.created_at,
263
+ updated_at: r.updated_at,
264
+ url: r.app_url,
265
+ creator: r.creator
266
+ ? {
267
+ id: r.creator.id,
268
+ name: r.creator.name,
269
+ email: r.creator.email_address,
270
+ }
271
+ : null,
272
+ project: r.bucket
273
+ ? {
274
+ id: r.bucket.id,
275
+ name: r.bucket.name,
276
+ }
277
+ : null,
278
+ ...(r.parent
279
+ ? {
280
+ parent: {
281
+ id: r.parent.id,
282
+ title: r.parent.title,
283
+ type: r.parent.type,
284
+ },
285
+ }
286
+ : {}),
287
+ }));
288
+ const result = {
289
+ recordings: serialized,
290
+ total_fetched: total,
291
+ returned: serialized.length,
292
+ };
293
+ if (total > limit) {
294
+ result.truncated = true;
295
+ result.truncation_message = `Showing ${limit} of ${total} recordings. Increase limit or narrow filters to see more.`;
296
+ }
297
+ let jsonStr = JSON.stringify(result, null, 2);
298
+ // Handle response size limit
299
+ if (jsonStr.length > CHARACTER_LIMIT) {
300
+ const reducedLimit = Math.floor(serialized.length / 2);
301
+ const reduced = serialized.slice(0, reducedLimit);
302
+ jsonStr = JSON.stringify({
303
+ recordings: reduced,
304
+ total_fetched: total,
305
+ returned: reduced.length,
306
+ truncated: true,
307
+ truncation_message: `Response truncated to ${reduced.length} recordings due to size limits. Use more specific filters or a smaller limit.`,
308
+ }, null, 2);
309
+ }
310
+ return {
311
+ content: [{ type: "text", text: jsonStr }],
312
+ };
313
+ }
314
+ catch (error) {
315
+ return {
316
+ content: [{ type: "text", text: handleBasecampError(error) }],
317
+ };
318
+ }
319
+ });
320
+ }
321
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/tools/activity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/tools/kanban.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2b3D"}
1
+ {"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/tools/kanban.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwNzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4e3D"}
@@ -8,6 +8,146 @@ import { initializeBasecampClient } from "../utils/auth.js";
8
8
  import { applyContentOperations, ContentOperationFields, htmlRules, validateContentOperations, } from "../utils/contentOperations.js";
9
9
  import { handleBasecampError } from "../utils/errorHandlers.js";
10
10
  import { serializePerson } from "../utils/serializers.js";
11
+ /**
12
+ * Process step operations for a kanban card (create, update, delete, reposition, setCompletion)
13
+ * Uses complete array replacement approach - steps not in desired array will be deleted
14
+ */
15
+ async function processStepOperations(client, bucketId, cardId, currentSteps, desiredSteps) {
16
+ // ===== VALIDATION =====
17
+ // Validate new steps have titles
18
+ for (const step of desiredSteps) {
19
+ if (!step.id && !step.title) {
20
+ throw new Error("New steps (without id) must have a title");
21
+ }
22
+ }
23
+ // Check for duplicate IDs
24
+ const stepIds = desiredSteps.filter((s) => s.id).map((s) => s.id);
25
+ if (new Set(stepIds).size !== stepIds.length) {
26
+ throw new Error("Duplicate step IDs found in steps array");
27
+ }
28
+ // Validate all step IDs exist on current card
29
+ const currentStepIds = new Set(currentSteps.map((s) => s.id));
30
+ for (const id of stepIds) {
31
+ if (!currentStepIds.has(id)) {
32
+ const available = Array.from(currentStepIds).join(", ");
33
+ throw new Error(`Step ID ${id} not found on card. ${available
34
+ ? `Available IDs: ${available}`
35
+ : "No steps exist on this card."}`);
36
+ }
37
+ }
38
+ // ===== IDENTIFY OPERATIONS =====
39
+ const desiredStepIds = new Set(stepIds);
40
+ // Steps to delete: in current but not in desired
41
+ const toDelete = currentSteps.filter((s) => !desiredStepIds.has(s.id));
42
+ // Steps to create: no ID provided
43
+ const toCreate = desiredSteps.filter((s) => !s.id);
44
+ // Steps to update/reposition/complete
45
+ const toProcess = desiredSteps.filter((s) => s.id);
46
+ // ===== DELETE OPERATIONS =====
47
+ for (const step of toDelete) {
48
+ await client.recordings.trash({
49
+ params: { bucketId, recordingId: step.id },
50
+ });
51
+ }
52
+ // ===== CREATE OPERATIONS =====
53
+ const createdStepIds = []; // Track new IDs for repositioning
54
+ for (const step of toCreate) {
55
+ const response = await client.cardTableSteps.create({
56
+ params: { bucketId, cardId },
57
+ body: {
58
+ title: step.title,
59
+ ...(step.due_on !== undefined
60
+ ? { due_on: step.due_on || undefined }
61
+ : {}),
62
+ ...(step.assignee_ids
63
+ ? { assignees: step.assignee_ids.join(",") }
64
+ : {}),
65
+ },
66
+ });
67
+ if (response.status !== 201 || !response.body) {
68
+ throw new Error(`Failed to create step: ${step.title}`);
69
+ }
70
+ createdStepIds.push(response.body.id);
71
+ // Set completion if specified
72
+ if (step.completed !== undefined && step.completed) {
73
+ await client.cardTableSteps.setCompletion({
74
+ params: { bucketId, stepId: response.body.id },
75
+ body: { completion: "on" },
76
+ });
77
+ }
78
+ }
79
+ // ===== UPDATE OPERATIONS =====
80
+ // Build a map of current steps for comparison
81
+ const currentStepMap = new Map(currentSteps.map((s) => [s.id, s]));
82
+ for (const step of toProcess) {
83
+ const currentStep = currentStepMap.get(step.id);
84
+ if (!currentStep)
85
+ continue; // Should not happen due to validation
86
+ // Check what changed
87
+ const titleChanged = step.title && step.title !== currentStep.title;
88
+ const dueOnChanged = step.due_on !== undefined && step.due_on !== currentStep.due_on;
89
+ const currentAssigneeIds = currentStep.assignees?.map((a) => a.id) || [];
90
+ const desiredAssigneeIds = step.assignee_ids || [];
91
+ const assigneesChanged = step.assignee_ids !== undefined &&
92
+ (currentAssigneeIds.length !== desiredAssigneeIds.length ||
93
+ !currentAssigneeIds.every((id, i) => id === desiredAssigneeIds[i]));
94
+ // Only update if something changed
95
+ if (titleChanged || dueOnChanged || assigneesChanged) {
96
+ await client.cardTableSteps.update({
97
+ params: { bucketId, stepId: step.id },
98
+ body: {
99
+ ...(step.title ? { title: step.title } : {}),
100
+ ...(step.due_on !== undefined
101
+ ? { due_on: step.due_on || undefined }
102
+ : {}),
103
+ ...(step.assignee_ids
104
+ ? { assignees: step.assignee_ids.join(",") }
105
+ : {}),
106
+ },
107
+ });
108
+ }
109
+ // Handle completion status changes
110
+ if (step.completed !== undefined &&
111
+ step.completed !== currentStep.completed) {
112
+ await client.cardTableSteps.setCompletion({
113
+ params: { bucketId, stepId: step.id },
114
+ body: { completion: step.completed ? "on" : "off" },
115
+ });
116
+ }
117
+ }
118
+ // ===== REPOSITION OPERATIONS =====
119
+ // Build final list of step IDs in desired order (mix of existing and new)
120
+ const finalStepIds = [];
121
+ let createIndex = 0;
122
+ for (const step of desiredSteps) {
123
+ if (step.id) {
124
+ finalStepIds.push(step.id);
125
+ }
126
+ else {
127
+ // This was a created step, use the ID we tracked
128
+ if (createIndex < createdStepIds.length) {
129
+ finalStepIds.push(createdStepIds[createIndex++]);
130
+ }
131
+ }
132
+ }
133
+ // Get current positions after all operations
134
+ // We need to reposition if the order doesn't match
135
+ const currentPositions = new Map(currentSteps
136
+ .filter((s) => finalStepIds.includes(s.id))
137
+ .map((s, i) => [s.id, i]));
138
+ // Reposition each step to match the desired array order
139
+ for (let i = 0; i < finalStepIds.length; i++) {
140
+ const stepId = finalStepIds[i];
141
+ const currentPos = currentPositions.get(stepId);
142
+ // Only reposition if needed
143
+ if (currentPos !== undefined && currentPos !== i) {
144
+ await client.cardTableSteps.reposition({
145
+ params: { bucketId, cardId },
146
+ body: { source_id: stepId, position: i },
147
+ });
148
+ }
149
+ }
150
+ }
11
151
  export function registerKanbanTools(server) {
12
152
  server.registerTool("basecamp_list_kanban_columns", {
13
153
  title: "List Kanban Columns",
@@ -167,12 +307,37 @@ export function registerKanbanTools(server) {
167
307
  });
168
308
  server.registerTool("basecamp_create_kanban_card", {
169
309
  title: "Create Kanban Card",
170
- description: `Create a new card in a kanban column. ${htmlRules}`,
310
+ description: `Create a new card in a kanban column with optional checklist steps. ${htmlRules}`,
171
311
  inputSchema: {
172
312
  bucket_id: BasecampIdSchema,
173
313
  column_id: BasecampIdSchema,
174
314
  title: z.string().min(1),
175
315
  content: z.string().optional(),
316
+ due_on: z.string().optional().describe("Due date in YYYY-MM-DD format"),
317
+ assignee_ids: z
318
+ .array(z.number())
319
+ .optional()
320
+ .describe("Array of user IDs to assign to the card"),
321
+ notify: z.boolean().optional().describe("Whether to notify assignees"),
322
+ steps: z
323
+ .array(z.object({
324
+ title: z.string().describe("Step title"),
325
+ due_on: z
326
+ .string()
327
+ .nullable()
328
+ .optional()
329
+ .describe("Due date (YYYY-MM-DD) or null"),
330
+ assignee_ids: z
331
+ .array(z.number())
332
+ .optional()
333
+ .describe("Array of user IDs to assign"),
334
+ completed: z
335
+ .boolean()
336
+ .optional()
337
+ .describe("Whether step is completed"),
338
+ }))
339
+ .optional()
340
+ .describe("Array of steps to create. Array order defines position."),
176
341
  },
177
342
  annotations: {
178
343
  readOnlyHint: false,
@@ -185,11 +350,24 @@ export function registerKanbanTools(server) {
185
350
  const client = await initializeBasecampClient();
186
351
  const response = await client.cardTableCards.create({
187
352
  params: { bucketId: params.bucket_id, columnId: params.column_id },
188
- body: { title: params.title, content: params.content },
353
+ body: {
354
+ title: params.title,
355
+ content: params.content,
356
+ ...(params.due_on ? { due_on: params.due_on } : {}),
357
+ ...(params.assignee_ids
358
+ ? { assignee_ids: params.assignee_ids }
359
+ : {}),
360
+ ...(params.notify !== undefined ? { notify: params.notify } : {}),
361
+ },
189
362
  });
190
363
  if (response.status !== 201 || !response.body) {
191
364
  throw new Error("Failed to create card");
192
365
  }
366
+ // Process step operations if provided (for new card, currentSteps is empty)
367
+ if (params.steps) {
368
+ await processStepOperations(client, params.bucket_id, response.body.id, [], // No current steps for a new card
369
+ params.steps);
370
+ }
193
371
  return {
194
372
  content: [
195
373
  {
@@ -207,7 +385,7 @@ export function registerKanbanTools(server) {
207
385
  });
208
386
  server.registerTool("basecamp_update_kanban_card", {
209
387
  title: "Update Kanban Card",
210
- description: `Update a kanban card. At least one field (title, content, or partial content operations) must be provided. Use partial content operations when possible to save on token usage. ${htmlRules}`,
388
+ description: `Update a kanban card including its steps. At least one field (title, content, partial content operations, or steps) must be provided. Use partial content operations when possible to save on token usage. ${htmlRules}`,
211
389
  inputSchema: {
212
390
  bucket_id: BasecampIdSchema,
213
391
  card_id: BasecampIdSchema,
@@ -225,6 +403,29 @@ export function registerKanbanTools(server) {
225
403
  .array(z.number())
226
404
  .optional()
227
405
  .describe("Array of user IDs to assign to the card"),
406
+ steps: z
407
+ .array(z.object({
408
+ id: z
409
+ .number()
410
+ .optional()
411
+ .describe("Step ID for updates. Omit for new steps."),
412
+ title: z.string().describe("Step title. Required for new steps."),
413
+ due_on: z
414
+ .string()
415
+ .nullable()
416
+ .optional()
417
+ .describe("Due date (YYYY-MM-DD) or null to clear"),
418
+ assignee_ids: z
419
+ .array(z.number())
420
+ .optional()
421
+ .describe("Array of user IDs to assign"),
422
+ completed: z
423
+ .boolean()
424
+ .optional()
425
+ .describe("Whether step is completed"),
426
+ }))
427
+ .optional()
428
+ .describe("Complete array of desired steps. Array order defines position. Steps not in array will be deleted."),
228
429
  },
229
430
  annotations: {
230
431
  readOnlyHint: false,
@@ -240,16 +441,18 @@ export function registerKanbanTools(server) {
240
441
  "due_on",
241
442
  "notify",
242
443
  "assignee_ids",
444
+ "steps",
243
445
  ]);
244
446
  const client = await initializeBasecampClient();
245
447
  let finalContent;
448
+ let currentCard = null;
246
449
  // Check if we need to fetch current content for partial operations
247
450
  const hasPartialOps = params.content_append ||
248
451
  params.content_prepend ||
249
452
  params.search_replace;
250
- if (hasPartialOps || params.content !== undefined) {
251
- // Fetch current card if needed for partial operations
252
- if (hasPartialOps) {
453
+ if (hasPartialOps || params.content !== undefined || params.steps) {
454
+ // Fetch current card if needed for partial operations or steps
455
+ if (hasPartialOps || params.steps) {
253
456
  const currentResponse = await client.cardTableCards.get({
254
457
  params: {
255
458
  bucketId: params.bucket_id,
@@ -259,8 +462,11 @@ export function registerKanbanTools(server) {
259
462
  if (currentResponse.status !== 200 || !currentResponse.body) {
260
463
  throw new Error(`Failed to fetch current card: ${currentResponse.status}`);
261
464
  }
262
- const currentContent = currentResponse.body.content || "";
263
- finalContent = applyContentOperations(currentContent, params);
465
+ currentCard = currentResponse.body;
466
+ if (hasPartialOps) {
467
+ const currentContent = currentCard.content || "";
468
+ finalContent = applyContentOperations(currentContent, params);
469
+ }
264
470
  }
265
471
  else {
266
472
  // Full content replacement
@@ -282,6 +488,10 @@ export function registerKanbanTools(server) {
282
488
  if (response.status !== 200 || !response.body) {
283
489
  throw new Error("Failed to update card");
284
490
  }
491
+ // Process step operations if provided
492
+ if (params.steps) {
493
+ await processStepOperations(client, params.bucket_id, params.card_id, currentCard?.steps || [], params.steps);
494
+ }
285
495
  return {
286
496
  content: [
287
497
  {
@@ -336,46 +546,9 @@ export function registerKanbanTools(server) {
336
546
  content: [
337
547
  {
338
548
  type: "text",
339
- text: `Card moved successfully to column ${params.column_id}${params.position !== undefined ? ` at position ${params.position}` : ""}!`,
340
- },
341
- ],
342
- };
343
- }
344
- catch (error) {
345
- return {
346
- content: [{ type: "text", text: handleBasecampError(error) }],
347
- };
348
- }
349
- });
350
- server.registerTool("basecamp_create_kanban_step", {
351
- title: "Create Kanban Step",
352
- description: "Add a checklist step to a kanban card.",
353
- inputSchema: {
354
- bucket_id: BasecampIdSchema,
355
- card_id: BasecampIdSchema,
356
- title: z.string().min(1),
357
- },
358
- annotations: {
359
- readOnlyHint: false,
360
- destructiveHint: false,
361
- idempotentHint: false,
362
- openWorldHint: true,
363
- },
364
- }, async (params) => {
365
- try {
366
- const client = await initializeBasecampClient();
367
- const response = await client.cardTableSteps.create({
368
- params: { bucketId: params.bucket_id, cardId: params.card_id },
369
- body: { title: params.title },
370
- });
371
- if (response.status !== 201 || !response.body) {
372
- throw new Error("Failed to create step");
373
- }
374
- return {
375
- content: [
376
- {
377
- type: "text",
378
- text: `Step created!\n\nID: ${response.body.id}\nTitle: ${response.body.title}`,
549
+ text: `Card moved successfully to column ${params.column_id}${params.position !== undefined
550
+ ? ` at position ${params.position}`
551
+ : ""}!`,
379
552
  },
380
553
  ],
381
554
  };
@@ -1 +1 @@
1
- {"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/tools/kanban.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/tools/kanban.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,SAAS,EACT,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAoB1D;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAClC,MAA4D,EAC5D,QAAgB,EAChB,MAAc,EACd,YAA2B,EAC3B,YAAyB;IAEzB,yBAAyB;IAEzB,iCAAiC;IACjC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC;IACnE,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,8CAA8C;IAC9C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,WAAW,EAAE,uBACX,SAAS;gBACP,CAAC,CAAC,kBAAkB,SAAS,EAAE;gBAC/B,CAAC,CAAC,8BACN,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kCAAkC;IAElC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAExC,iDAAiD;IACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvE,kCAAkC;IAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnD,sCAAsC;IACtC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnD,gCAAgC;IAEhC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;YAC5B,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAEhC,MAAM,cAAc,GAAa,EAAE,CAAC,CAAC,kCAAkC;IAEvE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;YAClD,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC5B,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS;oBAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;oBACtC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,YAAY;oBACnB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBAC5C,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEtC,8BAA8B;QAC9B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnD,MAAM,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC;gBACxC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE;gBAC9C,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gCAAgC;IAEhC,8CAA8C;IAC9C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW;YAAE,SAAS,CAAC,sCAAsC;QAElE,qBAAqB;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC;QACpE,MAAM,YAAY,GAChB,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC;QAElE,MAAM,kBAAkB,GAAG,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACnD,MAAM,gBAAgB,GACpB,IAAI,CAAC,YAAY,KAAK,SAAS;YAC/B,CAAC,kBAAkB,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM;gBACtD,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAExE,mCAAmC;QACnC,IAAI,YAAY,IAAI,YAAY,IAAI,gBAAgB,EAAE,CAAC;YACrD,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;gBACjC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAG,EAAE;gBACtC,IAAI,EAAE;oBACJ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS;wBAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;wBACtC,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,IAAI,CAAC,YAAY;wBACnB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;wBAC5C,CAAC,CAAC,EAAE,CAAC;iBACR;aACF,CAAC,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,IACE,IAAI,CAAC,SAAS,KAAK,SAAS;YAC5B,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS,EACxC,CAAC;YACD,MAAM,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC;gBACxC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAG,EAAE;gBACtC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;aACpD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,oCAAoC;IAEpC,0EAA0E;IAC1E,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,iDAAiD;YACjD,IAAI,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;gBACxC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,mDAAmD;IACnD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,YAAY;SACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAC5B,CAAC;IAEF,wDAAwD;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhD,4BAA4B;QAC5B,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;gBACrC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;gBAC5B,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;aACzC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,8BAA8B,EAC9B;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE;YACX,SAAS,EAAE,gBAAgB;YAC3B,aAAa,EAAE,gBAAgB;SAChC;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;gBAC3C,MAAM,EAAE;oBACN,QAAQ,EAAE,MAAM,CAAC,SAAS;oBAC1B,WAAW,EAAE,MAAM,CAAC,aAAa;iBAClC;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAE1C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACpB,EAAE,EAAE,GAAG,CAAC,EAAE;4BACV,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;4BACtB,WAAW,EAAE,GAAG,CAAC,WAAW;4BAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,WAAW,EAAE,GAAG,CAAC,WAAW;yBAC7B,CAAC,CAAC,EACH,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,gCAAgC;QAC7C,WAAW,EAAE;YACX,SAAS,EAAE,gBAAgB;YAC3B,SAAS,EAAE,gBAAgB;SAC5B;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC;gBACpC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI;gBACrC,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE;oBAClE,KAAK,EAAE,EAAE;iBACV;aACF,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAChB,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,GAAG,EAAE,CAAC,CAAC,OAAO;4BACd,cAAc,EAAE,CAAC,CAAC,cAAc;4BAChC,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;4BACnC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;gCACd,SAAS,EAAE,CAAC,CAAC,SAAS;6BACvB,CAAC,CAAC;yBACJ,CAAC,CAAC,EACH,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE;YACX,SAAS,EAAE,gBAAgB;YAC3B,OAAO,EAAE,gBAAgB;SAC1B;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;gBAC/C,MAAM,EAAE;oBACN,QAAQ,EAAE,MAAM,CAAC,SAAS;oBAC1B,MAAM,EAAE,MAAM,CAAC,OAAO;iBACvB;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAE3B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,EAAE,EAAE,IAAI,CAAC,EAAE;4BACX,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,GAAG,EAAE,IAAI,CAAC,OAAO;4BACjB,cAAc,EAAE,IAAI,CAAC,cAAc;4BACnC,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;4BACtC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC9C,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;gCACR,KAAK,EAAE,CAAC,CAAC,KAAK;gCACd,SAAS,EAAE,CAAC,CAAC,SAAS;6BACvB,CAAC,CAAC;yBACJ,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,uEAAuE,SAAS,EAAE;QAC/F,WAAW,EAAE;YACX,SAAS,EAAE,gBAAgB;YAC3B,SAAS,EAAE,gBAAgB;YAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACvE,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACtE,KAAK,EAAE,CAAC;iBACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACxC,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,EAAE;qBACV,QAAQ,CAAC,+BAA+B,CAAC;gBAC5C,YAAY,EAAE,CAAC;qBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,QAAQ,EAAE;qBACV,QAAQ,CAAC,6BAA6B,CAAC;gBAC1C,SAAS,EAAE,CAAC;qBACT,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,2BAA2B,CAAC;aACzC,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;SACvE;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;gBAClD,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE;gBAClE,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,GAAG,CAAC,MAAM,CAAC,YAAY;wBACrB,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;wBACvC,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClE;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YAED,4EAA4E;YAC5E,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,qBAAqB,CACzB,MAAM,EACN,MAAM,CAAC,SAAS,EAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,EAChB,EAAE,EAAE,kCAAkC;gBACtC,MAAM,CAAC,KAAK,CACb,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;qBAChF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,8MAA8M,SAAS,EAAE;QACtO,WAAW,EAAE;YACX,SAAS,EAAE,gBAAgB;YAC3B,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC9D,GAAG,sBAAsB;YACzB,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,MAAM,EAAE,CAAC;iBACN,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,2CAA2C,CAAC;YACxD,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,KAAK,EAAE,CAAC;iBACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,EAAE,EAAE,CAAC;qBACF,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,0CAA0C,CAAC;gBACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;gBACjE,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,EAAE;qBACV,QAAQ,CAAC,wCAAwC,CAAC;gBACrD,YAAY,EAAE,CAAC;qBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,QAAQ,EAAE;qBACV,QAAQ,CAAC,6BAA6B,CAAC;gBAC1C,SAAS,EAAE,CAAC;qBACT,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,2BAA2B,CAAC;aACzC,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CACP,oGAAoG,CACrG;SACJ;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,8CAA8C;YAC9C,yBAAyB,CAAC,MAAM,EAAE;gBAChC,OAAO;gBACP,QAAQ;gBACR,QAAQ;gBACR,cAAc;gBACd,OAAO;aACR,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;YAChD,IAAI,YAAgC,CAAC;YACrC,IAAI,WAAW,GAAQ,IAAI,CAAC;YAE5B,mEAAmE;YACnE,MAAM,aAAa,GACjB,MAAM,CAAC,cAAc;gBACrB,MAAM,CAAC,eAAe;gBACtB,MAAM,CAAC,cAAc,CAAC;YAExB,IAAI,aAAa,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClE,+DAA+D;gBAC/D,IAAI,aAAa,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClC,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;wBACtD,MAAM,EAAE;4BACN,QAAQ,EAAE,MAAM,CAAC,SAAS;4BAC1B,MAAM,EAAE,MAAM,CAAC,OAAO;yBACvB;qBACF,CAAC,CAAC;oBAEH,IAAI,eAAe,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;wBAC5D,MAAM,IAAI,KAAK,CACb,iCAAiC,eAAe,CAAC,MAAM,EAAE,CAC1D,CAAC;oBACJ,CAAC;oBAED,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC;oBAEnC,IAAI,aAAa,EAAE,CAAC;wBAClB,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;wBACjD,YAAY,GAAG,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,2BAA2B;oBAC3B,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;gBAChC,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;gBAClD,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;gBAC9D,IAAI,EAAE;oBACJ,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;wBACnC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;wBACvC,CAAC,CAAC,EAAE,CAAC;iBACR;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YAED,sCAAsC;YACtC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,qBAAqB,CACzB,MAAM,EACN,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,EACd,WAAW,EAAE,KAAK,IAAI,EAAE,EACxB,MAAM,CAAC,KAAK,CACb,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,qCAAqC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;qBAC7F;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,8EAA8E;QAChF,WAAW,EAAE;YACX,SAAS,EAAE,gBAAgB;YAC3B,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,gBAAgB;YAC3B,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,WAAW,EAAE;iBACb,QAAQ,EAAE;iBACV,QAAQ,CACP,uHAAuH,CACxH;SACJ;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;gBAChD,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;gBAC9D,IAAI,EAAE;oBACJ,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;wBAC/B,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;wBAC/B,CAAC,CAAC,EAAE,CAAC;iBACR;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,qCAAqC,MAAM,CAAC,SAAS,GACzD,MAAM,CAAC,QAAQ,KAAK,SAAS;4BAC3B,CAAC,CAAC,gBAAgB,MAAM,CAAC,QAAQ,EAAE;4BACnC,CAAC,CAAC,EACN,GAAG;qBACJ;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "basecamp-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Model Context Protocol (MCP) server for Basecamp integration. Enables LLMs to interact with Basecamp projects, messages, todos, comments, people, and kanban boards.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -49,7 +49,7 @@
49
49
  "homepage": "https://github.com/stefanoverna/basecamp-mcp#readme",
50
50
  "dependencies": {
51
51
  "@modelcontextprotocol/sdk": "^1.6.1",
52
- "basecamp-client": "^1.0.7",
52
+ "basecamp-client": "^1.0.8",
53
53
  "zod": "^3.23.8"
54
54
  },
55
55
  "devDependencies": {