basecamp-mcp 1.1.2 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -7
- package/dist/index.js.map +1 -1
- package/dist/schemas/common.d.ts +9 -1
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +10 -2
- package/dist/schemas/common.js.map +1 -1
- package/dist/tools/activity.d.ts +6 -4
- package/dist/tools/activity.d.ts.map +1 -1
- package/dist/tools/activity.js +13 -285
- package/dist/tools/activity.js.map +1 -1
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +5 -11
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/campfires.d.ts +13 -0
- package/dist/tools/campfires.d.ts.map +1 -0
- package/dist/tools/campfires.js +221 -0
- package/dist/tools/campfires.js.map +1 -0
- package/dist/tools/checkins.d.ts.map +1 -1
- package/dist/tools/checkins.js +10 -74
- package/dist/tools/checkins.js.map +1 -1
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +9 -44
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/files.d.ts +21 -0
- package/dist/tools/files.d.ts.map +1 -0
- package/dist/tools/files.js +659 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/kanban.d.ts.map +1 -1
- package/dist/tools/kanban.js +84 -146
- package/dist/tools/kanban.js.map +1 -1
- package/dist/tools/messages.d.ts.map +1 -1
- package/dist/tools/messages.js +31 -71
- package/dist/tools/messages.js.map +1 -1
- package/dist/tools/people.d.ts.map +1 -1
- package/dist/tools/people.js +5 -19
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +4 -16
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/todos.d.ts.map +1 -1
- package/dist/tools/todos.js +82 -86
- package/dist/tools/todos.js.map +1 -1
- package/dist/utils/auth.d.ts +7 -2
- package/dist/utils/auth.d.ts.map +1 -1
- package/dist/utils/auth.js +19 -11
- package/dist/utils/auth.js.map +1 -1
- package/dist/utils/contentOperations.d.ts +2 -2
- package/dist/utils/credentials.d.ts.map +1 -1
- package/dist/utils/credentials.js.map +1 -1
- package/dist/utils/errorHandlers.d.ts.map +1 -1
- package/dist/utils/errorHandlers.js +53 -29
- package/dist/utils/errorHandlers.js.map +1 -1
- package/dist/utils/oauth.d.ts +1 -0
- package/dist/utils/oauth.d.ts.map +1 -1
- package/dist/utils/oauth.js +18 -0
- package/dist/utils/oauth.js.map +1 -1
- package/dist/utils/pagination.d.ts +43 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +72 -0
- package/dist/utils/pagination.js.map +1 -0
- package/dist/utils/parseSince.d.ts +11 -0
- package/dist/utils/parseSince.d.ts.map +1 -0
- package/dist/utils/parseSince.js +48 -0
- package/dist/utils/parseSince.js.map +1 -0
- package/dist/utils/serializers.d.ts +17 -2
- package/dist/utils/serializers.d.ts.map +1 -1
- package/dist/utils/serializers.js +16 -0
- package/dist/utils/serializers.js.map +1 -1
- package/package.json +5 -3
- package/dist/tools/documents.d.ts +0 -11
- package/dist/tools/documents.d.ts.map +0 -1
- package/dist/tools/documents.js +0 -453
- package/dist/tools/documents.js.map +0 -1
- package/dist/tools/uploads.d.ts +0 -9
- package/dist/tools/uploads.d.ts.map +0 -1
- package/dist/tools/uploads.js +0 -319
- package/dist/tools/uploads.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
/**
|
|
4
|
+
* Build an McpServer with every Basecamp tool registered. Shared by the stdio
|
|
5
|
+
* entrypoint (`main`) and the integration test harness so both exercise the
|
|
6
|
+
* exact same tool set.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildServer(): McpServer;
|
|
3
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAcpE;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,SAAS,CAmBvC"}
|
package/dist/index.js
CHANGED
|
@@ -3,21 +3,25 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { registerActivityTools } from "./tools/activity.js";
|
|
5
5
|
import { registerAuthTools } from "./tools/auth.js";
|
|
6
|
+
import { registerCampfireTools } from "./tools/campfires.js";
|
|
7
|
+
import { registerCheckinTools } from "./tools/checkins.js";
|
|
6
8
|
import { registerCommentTools } from "./tools/comments.js";
|
|
7
|
-
import {
|
|
9
|
+
import { registerFilesTools } from "./tools/files.js";
|
|
8
10
|
import { registerKanbanTools } from "./tools/kanban.js";
|
|
9
11
|
import { registerMessageTools } from "./tools/messages.js";
|
|
10
12
|
import { registerPeopleTools } from "./tools/people.js";
|
|
11
13
|
import { registerProjectTools } from "./tools/projects.js";
|
|
12
14
|
import { registerTodoTools } from "./tools/todos.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Build an McpServer with every Basecamp tool registered. Shared by the stdio
|
|
17
|
+
* entrypoint (`main`) and the integration test harness so both exercise the
|
|
18
|
+
* exact same tool set.
|
|
19
|
+
*/
|
|
20
|
+
export function buildServer() {
|
|
16
21
|
const server = new McpServer({
|
|
17
22
|
name: "basecamp-mcp-server",
|
|
18
23
|
version: "1.0.0",
|
|
19
24
|
});
|
|
20
|
-
console.error("Registering tools...");
|
|
21
25
|
registerAuthTools(server);
|
|
22
26
|
registerProjectTools(server);
|
|
23
27
|
registerMessageTools(server);
|
|
@@ -26,9 +30,14 @@ async function main() {
|
|
|
26
30
|
registerPeopleTools(server);
|
|
27
31
|
registerKanbanTools(server);
|
|
28
32
|
registerActivityTools(server);
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
registerCampfireTools(server);
|
|
34
|
+
registerFilesTools(server);
|
|
31
35
|
registerCheckinTools(server);
|
|
36
|
+
return server;
|
|
37
|
+
}
|
|
38
|
+
async function main() {
|
|
39
|
+
console.error("Registering tools...");
|
|
40
|
+
const server = buildServer();
|
|
32
41
|
console.error("Tools registered successfully");
|
|
33
42
|
const transport = new StdioServerTransport();
|
|
34
43
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,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,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,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,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,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,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,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,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxD,CAAC;AAED,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"}
|
package/dist/schemas/common.d.ts
CHANGED
|
@@ -3,7 +3,15 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
/**
|
|
6
|
-
* Basecamp ID parameter schema
|
|
6
|
+
* Basecamp ID parameter schema.
|
|
7
|
+
*
|
|
8
|
+
* Uses `z.coerce.number()` rather than `z.number()` so that IDs arriving as
|
|
9
|
+
* strings are accepted. Some MCP clients (e.g. Claude Desktop / Cowork)
|
|
10
|
+
* serialize tool arguments as strings — a bare `z.number()` then rejects them
|
|
11
|
+
* with "Expected number, received string" (see GitHub issue #5). Coercion
|
|
12
|
+
* keeps the generated JSON Schema as `{"type":"number"}` while still accepting
|
|
13
|
+
* the stringified form; a non-numeric value coerces to NaN and is rejected
|
|
14
|
+
* with a clear error.
|
|
7
15
|
*/
|
|
8
16
|
export declare const BasecampIdSchema: z.ZodNumber;
|
|
9
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,aAEc,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAM3B,CAAC"}
|
package/dist/schemas/common.js
CHANGED
|
@@ -3,9 +3,17 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
/**
|
|
6
|
-
* Basecamp ID parameter schema
|
|
6
|
+
* Basecamp ID parameter schema.
|
|
7
|
+
*
|
|
8
|
+
* Uses `z.coerce.number()` rather than `z.number()` so that IDs arriving as
|
|
9
|
+
* strings are accepted. Some MCP clients (e.g. Claude Desktop / Cowork)
|
|
10
|
+
* serialize tool arguments as strings — a bare `z.number()` then rejects them
|
|
11
|
+
* with "Expected number, received string" (see GitHub issue #5). Coercion
|
|
12
|
+
* keeps the generated JSON Schema as `{"type":"number"}` while still accepting
|
|
13
|
+
* the stringified form; a non-numeric value coerces to NaN and is rejected
|
|
14
|
+
* with a clear error.
|
|
7
15
|
*/
|
|
8
|
-
export const BasecampIdSchema = z
|
|
16
|
+
export const BasecampIdSchema = z.coerce
|
|
9
17
|
.number()
|
|
10
18
|
.describe("Basecamp resource identifier");
|
|
11
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM;KACrC,MAAM,EAAE;KACR,QAAQ,CAAC,8BAA8B,CAAC,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,GAAG,EAAE;KACL,UAAU,CAAC,yBAAyB,EAAE,8BAA8B,CAAC;KACrE,QAAQ,CACP,mGAAmG,CACpG,CAAC"}
|
package/dist/tools/activity.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Activity
|
|
2
|
+
* Activity feed tool for Basecamp MCP server.
|
|
3
3
|
*
|
|
4
|
-
* Uses the Basecamp recordings API to provide activity
|
|
5
|
-
* listing recent changes across projects with filtering by type,
|
|
6
|
-
*
|
|
4
|
+
* Uses the Basecamp recordings API to provide a cross-project activity feed:
|
|
5
|
+
* listing recent changes across projects with filtering by type, date range,
|
|
6
|
+
* person, project, and text search. Campfire chat browsing lives in
|
|
7
|
+
* `campfires.ts` — chat lines are not recordings and share only the shared
|
|
8
|
+
* pagination/since helpers.
|
|
7
9
|
*/
|
|
8
10
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
11
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/tools/activity.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/tools/activity.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8DzE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkQ7D"}
|
package/dist/tools/activity.js
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Activity
|
|
2
|
+
* Activity feed tool for Basecamp MCP server.
|
|
3
3
|
*
|
|
4
|
-
* Uses the Basecamp recordings API to provide activity
|
|
5
|
-
* listing recent changes across projects with filtering by type,
|
|
6
|
-
*
|
|
4
|
+
* Uses the Basecamp recordings API to provide a cross-project activity feed:
|
|
5
|
+
* listing recent changes across projects with filtering by type, date range,
|
|
6
|
+
* person, project, and text search. Campfire chat browsing lives in
|
|
7
|
+
* `campfires.ts` — chat lines are not recordings and share only the shared
|
|
8
|
+
* pagination/since helpers.
|
|
7
9
|
*/
|
|
8
|
-
import { asyncPagedIterator } from "basecamp-client";
|
|
9
10
|
import { z } from "zod";
|
|
10
11
|
import { CHARACTER_LIMIT, DEFAULT_LIMIT } from "../constants.js";
|
|
11
12
|
import { BasecampIdSchema } from "../schemas/common.js";
|
|
12
13
|
import { initializeBasecampClient } from "../utils/auth.js";
|
|
13
14
|
import { handleBasecampError } from "../utils/errorHandlers.js";
|
|
15
|
+
import { paginate } from "../utils/pagination.js";
|
|
16
|
+
import { parseSince } from "../utils/parseSince.js";
|
|
17
|
+
import { serializeCreator } from "../utils/serializers.js";
|
|
14
18
|
/** Default recording types to fetch when no type filter is specified */
|
|
15
19
|
const DEFAULT_RECORDING_TYPES = [
|
|
16
20
|
"Todo",
|
|
@@ -48,52 +52,6 @@ const TYPE_ALIASES = {
|
|
|
48
52
|
step: "Kanban::Step",
|
|
49
53
|
steps: "Kanban::Step",
|
|
50
54
|
};
|
|
51
|
-
/**
|
|
52
|
-
* Parse a "since" value into a Date object.
|
|
53
|
-
*
|
|
54
|
-
* Supports:
|
|
55
|
-
* - Relative durations: "24h", "7d", "2w"
|
|
56
|
-
* - Keywords: "today", "yesterday"
|
|
57
|
-
* - ISO 8601 dates: "2024-01-15", "2024-01-15T10:00:00Z"
|
|
58
|
-
*/
|
|
59
|
-
function parseSince(value) {
|
|
60
|
-
const now = new Date();
|
|
61
|
-
const trimmed = value.trim();
|
|
62
|
-
const lower = trimmed.toLowerCase();
|
|
63
|
-
// Relative durations: Nh, Nd, Nw
|
|
64
|
-
const hourMatch = lower.match(/^(\d+)h$/);
|
|
65
|
-
if (hourMatch) {
|
|
66
|
-
return new Date(now.getTime() - Number.parseInt(hourMatch[1], 10) * 3600000);
|
|
67
|
-
}
|
|
68
|
-
const dayMatch = lower.match(/^(\d+)d$/);
|
|
69
|
-
if (dayMatch) {
|
|
70
|
-
return new Date(now.getTime() - Number.parseInt(dayMatch[1], 10) * 86400000);
|
|
71
|
-
}
|
|
72
|
-
const weekMatch = lower.match(/^(\d+)w$/);
|
|
73
|
-
if (weekMatch) {
|
|
74
|
-
return new Date(now.getTime() - Number.parseInt(weekMatch[1], 10) * 7 * 86400000);
|
|
75
|
-
}
|
|
76
|
-
// Keywords
|
|
77
|
-
if (lower === "today") {
|
|
78
|
-
const d = new Date(now);
|
|
79
|
-
d.setHours(0, 0, 0, 0);
|
|
80
|
-
return d;
|
|
81
|
-
}
|
|
82
|
-
if (lower === "yesterday") {
|
|
83
|
-
const d = new Date(now);
|
|
84
|
-
d.setDate(d.getDate() - 1);
|
|
85
|
-
d.setHours(0, 0, 0, 0);
|
|
86
|
-
return d;
|
|
87
|
-
}
|
|
88
|
-
// ISO 8601 / date string
|
|
89
|
-
const parsed = new Date(trimmed);
|
|
90
|
-
if (Number.isNaN(parsed.getTime())) {
|
|
91
|
-
throw new Error(`Invalid since value: "${value}". ` +
|
|
92
|
-
'Use ISO 8601 (e.g., "2024-01-15"), relative duration (e.g., "24h", "7d", "2w"), ' +
|
|
93
|
-
'or keyword ("today", "yesterday").');
|
|
94
|
-
}
|
|
95
|
-
return parsed;
|
|
96
|
-
}
|
|
97
55
|
/**
|
|
98
56
|
* Resolve an array of type strings (possibly using aliases)
|
|
99
57
|
* to deduplicated canonical Basecamp API type names.
|
|
@@ -121,6 +79,8 @@ Use this tool to:
|
|
|
121
79
|
- Filter activity by content type (todos, messages, documents, etc.)
|
|
122
80
|
- Search activity by title text
|
|
123
81
|
|
|
82
|
+
When to use this vs. the per-resource list tools: use the per-project list tools (basecamp_list_messages, basecamp_list_todos, basecamp_list_documents, basecamp_list_comments, basecamp_list_kanban_cards) to browse items WITHIN a single project; use basecamp_list_recordings for CROSS-project, time-based, or multi-type activity browsing.
|
|
83
|
+
|
|
124
84
|
All filters support multiple values for OR-matching.
|
|
125
85
|
|
|
126
86
|
Examples:
|
|
@@ -207,12 +167,7 @@ Examples:
|
|
|
207
167
|
// Fetch recordings for each type in parallel, with early termination if since is set
|
|
208
168
|
const fetchPromises = types.map(async (type) => {
|
|
209
169
|
const items = [];
|
|
210
|
-
for await (const item of
|
|
211
|
-
fetchPage: client.recordings.list,
|
|
212
|
-
request: {
|
|
213
|
-
query: { type, ...baseQuery },
|
|
214
|
-
},
|
|
215
|
-
})) {
|
|
170
|
+
for await (const item of paginate(client, "/projects/recordings.json", { query: { type, ...baseQuery } })) {
|
|
216
171
|
// If filtering by date and results are sorted desc (default),
|
|
217
172
|
// stop once we hit records older than the cutoff
|
|
218
173
|
if (sinceDate && params.direction !== "asc") {
|
|
@@ -267,13 +222,7 @@ Examples:
|
|
|
267
222
|
created_at: r.created_at,
|
|
268
223
|
updated_at: r.updated_at,
|
|
269
224
|
url: r.app_url,
|
|
270
|
-
creator: r.creator
|
|
271
|
-
? {
|
|
272
|
-
id: r.creator.id,
|
|
273
|
-
name: r.creator.name,
|
|
274
|
-
email: r.creator.email_address,
|
|
275
|
-
}
|
|
276
|
-
: null,
|
|
225
|
+
creator: serializeCreator(r.creator),
|
|
277
226
|
project: r.bucket
|
|
278
227
|
? {
|
|
279
228
|
id: r.bucket.id,
|
|
@@ -322,226 +271,5 @@ Examples:
|
|
|
322
271
|
};
|
|
323
272
|
}
|
|
324
273
|
});
|
|
325
|
-
server.registerTool("basecamp_list_campfire_messages", {
|
|
326
|
-
title: "List Campfire Messages",
|
|
327
|
-
description: `Browse chat messages from Basecamp Campfires. Campfires are real-time chat rooms within projects.
|
|
328
|
-
|
|
329
|
-
Use this tool to:
|
|
330
|
-
- See recent chat activity across all campfires or specific ones
|
|
331
|
-
- Find messages from specific people
|
|
332
|
-
- Search message content for keywords
|
|
333
|
-
- Review chat history since a specific date or time period
|
|
334
|
-
|
|
335
|
-
All filters support multiple values for OR-matching.
|
|
336
|
-
|
|
337
|
-
Examples:
|
|
338
|
-
- "What's been discussed in chat today?" → since: "today"
|
|
339
|
-
- "Show messages from Alice and Bob" → person_ids: [111, 222]
|
|
340
|
-
- "Find chat messages mentioning deploy or release" → query: ["deploy", "release"]
|
|
341
|
-
- "Recent messages in campfire 12345" → campfire_ids: [12345]`,
|
|
342
|
-
inputSchema: {
|
|
343
|
-
campfire_ids: z
|
|
344
|
-
.array(BasecampIdSchema)
|
|
345
|
-
.optional()
|
|
346
|
-
.describe("Filter to specific campfires by ID. Supports multiple IDs for OR-matching. Omit to browse all campfires."),
|
|
347
|
-
person_ids: z
|
|
348
|
-
.array(BasecampIdSchema)
|
|
349
|
-
.optional()
|
|
350
|
-
.describe("Filter by sender person IDs. Supports multiple IDs for OR-matching. Use basecamp_list_people to find person IDs."),
|
|
351
|
-
query: z
|
|
352
|
-
.array(z.string())
|
|
353
|
-
.optional()
|
|
354
|
-
.describe("Case-insensitive text search against message content. Supports multiple terms for OR-matching."),
|
|
355
|
-
since: z
|
|
356
|
-
.string()
|
|
357
|
-
.optional()
|
|
358
|
-
.describe('Show messages since this time. Accepts ISO 8601 dates (e.g., "2024-01-15"), ' +
|
|
359
|
-
'relative durations ("24h", "7d", "2w"), or keywords ("today", "yesterday").'),
|
|
360
|
-
limit: z
|
|
361
|
-
.number()
|
|
362
|
-
.min(1)
|
|
363
|
-
.max(100)
|
|
364
|
-
.optional()
|
|
365
|
-
.describe(`Maximum number of messages to return (default: ${DEFAULT_LIMIT}, max: 100).`),
|
|
366
|
-
},
|
|
367
|
-
annotations: {
|
|
368
|
-
readOnlyHint: true,
|
|
369
|
-
destructiveHint: false,
|
|
370
|
-
idempotentHint: true,
|
|
371
|
-
openWorldHint: true,
|
|
372
|
-
},
|
|
373
|
-
}, async (params) => {
|
|
374
|
-
try {
|
|
375
|
-
const client = await initializeBasecampClient();
|
|
376
|
-
// Parse since date upfront if provided
|
|
377
|
-
const sinceDate = params.since ? parseSince(params.since) : null;
|
|
378
|
-
// Determine which campfires to fetch from
|
|
379
|
-
let campfiresToFetch = [];
|
|
380
|
-
if (params.campfire_ids && params.campfire_ids.length > 0) {
|
|
381
|
-
// Fetch all campfires to get bucket IDs for the requested campfire IDs
|
|
382
|
-
const allCampfires = [];
|
|
383
|
-
for await (const campfire of asyncPagedIterator({
|
|
384
|
-
fetchPage: client.campfires.list,
|
|
385
|
-
request: {},
|
|
386
|
-
})) {
|
|
387
|
-
allCampfires.push(campfire);
|
|
388
|
-
}
|
|
389
|
-
const campfireIdSet = new Set(params.campfire_ids);
|
|
390
|
-
campfiresToFetch = allCampfires
|
|
391
|
-
.filter((c) => campfireIdSet.has(c.id))
|
|
392
|
-
.map((c) => ({
|
|
393
|
-
bucketId: c.bucket.id,
|
|
394
|
-
campfireId: c.id,
|
|
395
|
-
campfireName: c.title,
|
|
396
|
-
projectName: c.bucket.name,
|
|
397
|
-
}));
|
|
398
|
-
if (campfiresToFetch.length === 0) {
|
|
399
|
-
return {
|
|
400
|
-
content: [
|
|
401
|
-
{
|
|
402
|
-
type: "text",
|
|
403
|
-
text: JSON.stringify({
|
|
404
|
-
error: "No campfires found matching the provided IDs.",
|
|
405
|
-
provided_ids: params.campfire_ids,
|
|
406
|
-
}, null, 2),
|
|
407
|
-
},
|
|
408
|
-
],
|
|
409
|
-
};
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
// Fetch all campfires, filtering by updated_at if since is provided
|
|
414
|
-
for await (const campfire of asyncPagedIterator({
|
|
415
|
-
fetchPage: client.campfires.list,
|
|
416
|
-
request: {},
|
|
417
|
-
})) {
|
|
418
|
-
// Skip campfires that haven't been updated since the filter date
|
|
419
|
-
if (sinceDate) {
|
|
420
|
-
const campfireUpdatedAt = new Date(campfire.updated_at);
|
|
421
|
-
if (campfireUpdatedAt < sinceDate) {
|
|
422
|
-
continue;
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
campfiresToFetch.push({
|
|
426
|
-
bucketId: campfire.bucket.id,
|
|
427
|
-
campfireId: campfire.id,
|
|
428
|
-
campfireName: campfire.title,
|
|
429
|
-
projectName: campfire.bucket.name,
|
|
430
|
-
});
|
|
431
|
-
}
|
|
432
|
-
if (campfiresToFetch.length === 0) {
|
|
433
|
-
return {
|
|
434
|
-
content: [
|
|
435
|
-
{
|
|
436
|
-
type: "text",
|
|
437
|
-
text: JSON.stringify({ messages: [], total_fetched: 0, returned: 0 }, null, 2),
|
|
438
|
-
},
|
|
439
|
-
],
|
|
440
|
-
};
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
// Fetch lines from each campfire in parallel
|
|
444
|
-
const fetchPromises = campfiresToFetch.map(async ({ bucketId, campfireId, campfireName, projectName }) => {
|
|
445
|
-
const lines = [];
|
|
446
|
-
for await (const line of asyncPagedIterator({
|
|
447
|
-
fetchPage: client.campfires.listLines,
|
|
448
|
-
request: {
|
|
449
|
-
params: { bucketId, campfireId },
|
|
450
|
-
},
|
|
451
|
-
})) {
|
|
452
|
-
// API returns newest first - early termination if since is set
|
|
453
|
-
if (sinceDate) {
|
|
454
|
-
const lineDate = new Date(line.created_at);
|
|
455
|
-
if (lineDate < sinceDate) {
|
|
456
|
-
break;
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
lines.push({
|
|
460
|
-
...line,
|
|
461
|
-
campfire_name: campfireName,
|
|
462
|
-
project_name: projectName,
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
return lines;
|
|
466
|
-
});
|
|
467
|
-
const results = await Promise.all(fetchPromises);
|
|
468
|
-
let allLines = results.flat();
|
|
469
|
-
// Filter by person IDs (OR-match)
|
|
470
|
-
if (params.person_ids && params.person_ids.length > 0) {
|
|
471
|
-
const personIdSet = new Set(params.person_ids);
|
|
472
|
-
allLines = allLines.filter((line) => line.creator && personIdSet.has(line.creator.id));
|
|
473
|
-
}
|
|
474
|
-
// Filter by text search (case-insensitive substring match on content, OR-matching)
|
|
475
|
-
if (params.query && params.query.length > 0) {
|
|
476
|
-
const lowerQueries = params.query.map((q) => q.toLowerCase());
|
|
477
|
-
allLines = allLines.filter((line) => {
|
|
478
|
-
const lowerContent = line.content.toLowerCase();
|
|
479
|
-
return lowerQueries.some((q) => lowerContent.includes(q));
|
|
480
|
-
});
|
|
481
|
-
}
|
|
482
|
-
// Sort all messages by created_at desc (newest first)
|
|
483
|
-
allLines.sort((a, b) => {
|
|
484
|
-
const dateA = new Date(a.created_at).getTime();
|
|
485
|
-
const dateB = new Date(b.created_at).getTime();
|
|
486
|
-
return dateB - dateA;
|
|
487
|
-
});
|
|
488
|
-
// Apply limit
|
|
489
|
-
const limit = params.limit || DEFAULT_LIMIT;
|
|
490
|
-
const total = allLines.length;
|
|
491
|
-
allLines = allLines.slice(0, limit);
|
|
492
|
-
// Serialize response
|
|
493
|
-
const serialized = allLines.map((line) => ({
|
|
494
|
-
id: line.id,
|
|
495
|
-
content: line.content,
|
|
496
|
-
created_at: line.created_at,
|
|
497
|
-
url: line.app_url,
|
|
498
|
-
creator: line.creator
|
|
499
|
-
? {
|
|
500
|
-
id: line.creator.id,
|
|
501
|
-
name: line.creator.name,
|
|
502
|
-
email: line.creator.email_address,
|
|
503
|
-
}
|
|
504
|
-
: null,
|
|
505
|
-
campfire: {
|
|
506
|
-
id: line.parent?.id,
|
|
507
|
-
name: line.campfire_name,
|
|
508
|
-
},
|
|
509
|
-
project: {
|
|
510
|
-
id: line.bucket.id,
|
|
511
|
-
name: line.project_name,
|
|
512
|
-
},
|
|
513
|
-
}));
|
|
514
|
-
const result = {
|
|
515
|
-
messages: serialized,
|
|
516
|
-
total_fetched: total,
|
|
517
|
-
returned: serialized.length,
|
|
518
|
-
};
|
|
519
|
-
if (total > limit) {
|
|
520
|
-
result.truncated = true;
|
|
521
|
-
result.truncation_message = `Showing ${limit} of ${total} messages. Increase limit or narrow filters to see more.`;
|
|
522
|
-
}
|
|
523
|
-
let jsonStr = JSON.stringify(result, null, 2);
|
|
524
|
-
// Handle response size limit
|
|
525
|
-
if (jsonStr.length > CHARACTER_LIMIT) {
|
|
526
|
-
const reducedLimit = Math.floor(serialized.length / 2);
|
|
527
|
-
const reduced = serialized.slice(0, reducedLimit);
|
|
528
|
-
jsonStr = JSON.stringify({
|
|
529
|
-
messages: reduced,
|
|
530
|
-
total_fetched: total,
|
|
531
|
-
returned: reduced.length,
|
|
532
|
-
truncated: true,
|
|
533
|
-
truncation_message: `Response truncated to ${reduced.length} messages due to size limits. Use more specific filters or a smaller limit.`,
|
|
534
|
-
}, null, 2);
|
|
535
|
-
}
|
|
536
|
-
return {
|
|
537
|
-
content: [{ type: "text", text: jsonStr }],
|
|
538
|
-
};
|
|
539
|
-
}
|
|
540
|
-
catch (error) {
|
|
541
|
-
return {
|
|
542
|
-
content: [{ type: "text", text: handleBasecampError(error) }],
|
|
543
|
-
};
|
|
544
|
-
}
|
|
545
|
-
});
|
|
546
274
|
}
|
|
547
275
|
//# sourceMappingURL=activity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/tools/activity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/tools/activity.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgLzD"}
|
package/dist/tools/auth.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { clearTokenCache, initializeBasecampClient } from "../utils/auth.js";
|
|
3
3
|
import { deleteCredentials, getCredentialsPath, readCredentials, writeCredentials, } from "../utils/credentials.js";
|
|
4
4
|
import { handleBasecampError } from "../utils/errorHandlers.js";
|
|
5
|
-
import { fetchBasecampAccounts, performBasecampOAuthLogin } from "../utils/oauth.js";
|
|
5
|
+
import { fetchBasecampAccounts, performBasecampOAuthLogin, } from "../utils/oauth.js";
|
|
6
6
|
export function registerAuthTools(server) {
|
|
7
7
|
server.registerTool("basecamp_login", {
|
|
8
8
|
title: "Login to Basecamp",
|
|
@@ -108,7 +108,7 @@ export function registerAuthTools(server) {
|
|
|
108
108
|
});
|
|
109
109
|
server.registerTool("basecamp_whoami", {
|
|
110
110
|
title: "Who Am I (Basecamp)",
|
|
111
|
-
description: "
|
|
111
|
+
description: "Check login state: show whether you're authenticated and, if so, the basic Basecamp user + account id. For your full profile (id, title, attachable_sgid) use basecamp_get_me.",
|
|
112
112
|
annotations: {
|
|
113
113
|
readOnlyHint: true,
|
|
114
114
|
destructiveHint: false,
|
|
@@ -129,11 +129,7 @@ export function registerAuthTools(server) {
|
|
|
129
129
|
}
|
|
130
130
|
try {
|
|
131
131
|
const client = await initializeBasecampClient();
|
|
132
|
-
const
|
|
133
|
-
if (response.status !== 200 || !response.body) {
|
|
134
|
-
throw new Error("Failed to get profile");
|
|
135
|
-
}
|
|
136
|
-
const me = response.body;
|
|
132
|
+
const me = await client.people.me();
|
|
137
133
|
return {
|
|
138
134
|
content: [
|
|
139
135
|
{
|
|
@@ -150,9 +146,7 @@ export function registerAuthTools(server) {
|
|
|
150
146
|
}
|
|
151
147
|
catch (error) {
|
|
152
148
|
return {
|
|
153
|
-
content: [
|
|
154
|
-
{ type: "text", text: handleBasecampError(error) },
|
|
155
|
-
],
|
|
149
|
+
content: [{ type: "text", text: handleBasecampError(error) }],
|
|
156
150
|
};
|
|
157
151
|
}
|
|
158
152
|
});
|
package/dist/tools/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,kFAAkF;YAClF,yFAAyF;YACzF,8CAA8C;QAChD,WAAW,EAAE;YACX,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,yBAAyB,EAAE,CAAC;YAExE,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAE1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,6CAA6C;yBACpD;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,SAAiB,CAAC;YAEtB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,cAAc,MAAM,CAAC,UAAU,oCAAoC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;6BACvG;yBACF;qBACF,CAAC;gBACJ,CAAC;gBACD,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,sGAAsG,iBAAiB,CAAC,QAAQ,CAAC,EAAE;yBAC1I;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,eAAe,EAAE,CAAC;YAElB,MAAM,gBAAgB,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;YAEpD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0CAA0C,kBAAkB,EAAE,iBAAiB,SAAS,GAAG;qBAClG;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iBAAiB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBAChF;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,eAAe,EAAE,CAAC;QAClB,MAAM,iBAAiB,EAAE,CAAC;QAE1B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,wCAAwC,kBAAkB,EAAE,GAAG;iBACtE;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,gLAAgL;QAClL,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;QAEtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oDAAoD;qBAC3D;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;YAChD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAEpC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,IAAI,EAAE,EAAE,CAAC,IAAI;4BACb,KAAK,EAAE,EAAE,CAAC,aAAa;4BACvB,KAAK,EAAE,EAAE,CAAC,KAAK;4BACf,UAAU,EAAE,KAAK,CAAC,SAAS;yBAC5B,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;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAwC;IACjE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Campfire (chat) browsing tool for Basecamp MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Campfires are real-time chat rooms within projects. Chat lines are NOT
|
|
5
|
+
* recordings, so this lives separately from the activity/recordings feed; it
|
|
6
|
+
* only shares the cross-cutting pagination/since helpers.
|
|
7
|
+
*/
|
|
8
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
|
+
/**
|
|
10
|
+
* Register campfire (chat) browsing tools with the MCP server
|
|
11
|
+
*/
|
|
12
|
+
export declare function registerCampfireTools(server: McpServer): void;
|
|
13
|
+
//# sourceMappingURL=campfires.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campfires.d.ts","sourceRoot":"","sources":["../../src/tools/campfires.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqQ7D"}
|