@kajidog/connpass-mcp-server 0.3.0 → 0.4.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/README.md +72 -149
- package/dist/index.d.ts +0 -2
- package/dist/index.js +4749 -162
- package/dist/index.js.map +1 -1
- package/dist/mcp-app.html +139 -0
- package/dist/stdio.d.ts +1 -0
- package/dist/stdio.js +2140 -0
- package/dist/stdio.js.map +1 -0
- package/package.json +18 -18
- package/dist/apps-sdk.d.ts +0 -8
- package/dist/apps-sdk.d.ts.map +0 -1
- package/dist/apps-sdk.js +0 -93
- package/dist/apps-sdk.js.map +0 -1
- package/dist/config.d.ts +0 -7
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -82
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/tools/events.d.ts +0 -74
- package/dist/tools/events.d.ts.map +0 -1
- package/dist/tools/events.js +0 -413
- package/dist/tools/events.js.map +0 -1
- package/dist/tools/formatting.d.ts +0 -74
- package/dist/tools/formatting.d.ts.map +0 -1
- package/dist/tools/formatting.js +0 -222
- package/dist/tools/formatting.js.map +0 -1
- package/dist/tools/groups.d.ts +0 -48
- package/dist/tools/groups.d.ts.map +0 -1
- package/dist/tools/groups.js +0 -106
- package/dist/tools/groups.js.map +0 -1
- package/dist/tools/index.d.ts +0 -54
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -21
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/shared.d.ts +0 -24
- package/dist/tools/shared.d.ts.map +0 -1
- package/dist/tools/shared.js +0 -113
- package/dist/tools/shared.js.map +0 -1
- package/dist/tools/users.d.ts +0 -51
- package/dist/tools/users.d.ts.map +0 -1
- package/dist/tools/users.js +0 -239
- package/dist/tools/users.js.map +0 -1
- package/dist/transports/http.d.ts +0 -17
- package/dist/transports/http.d.ts.map +0 -1
- package/dist/transports/http.js +0 -185
- package/dist/transports/http.js.map +0 -1
- package/dist/transports/sse.d.ts +0 -21
- package/dist/transports/sse.d.ts.map +0 -1
- package/dist/transports/sse.js +0 -161
- package/dist/transports/sse.js.map +0 -1
- package/dist/widgets/connpass-events.d.ts +0 -41
- package/dist/widgets/connpass-events.d.ts.map +0 -1
- package/dist/widgets/connpass-events.js +0 -68
- package/dist/widgets/connpass-events.js.map +0 -1
- package/dist/widgets/connpass-schedule.d.ts +0 -41
- package/dist/widgets/connpass-schedule.d.ts.map +0 -1
- package/dist/widgets/connpass-schedule.js +0 -68
- package/dist/widgets/connpass-schedule.js.map +0 -1
- package/dist/widgets/index.d.ts +0 -6
- package/dist/widgets/index.d.ts.map +0 -1
- package/dist/widgets/index.js +0 -39
- package/dist/widgets/index.js.map +0 -1
package/dist/config.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDefaultUserId = getDefaultUserId;
|
|
4
|
-
exports.getDefaultIncludePresentations = getDefaultIncludePresentations;
|
|
5
|
-
exports.isAppsSdkOutputEnabled = isAppsSdkOutputEnabled;
|
|
6
|
-
exports.getRateLimitEnabled = getRateLimitEnabled;
|
|
7
|
-
exports.getRateLimitDelayMs = getRateLimitDelayMs;
|
|
8
|
-
exports.getMcpBasePath = getMcpBasePath;
|
|
9
|
-
const BOOLEAN_TRUE_VALUES = new Set(["1", "true", "yes", "y", "on"]);
|
|
10
|
-
const BOOLEAN_FALSE_VALUES = new Set(["0", "false", "no", "n", "off"]);
|
|
11
|
-
function parseOptionalBooleanEnv(raw, envName) {
|
|
12
|
-
if (!raw) {
|
|
13
|
-
return undefined;
|
|
14
|
-
}
|
|
15
|
-
const normalized = raw.trim().toLowerCase();
|
|
16
|
-
if (BOOLEAN_TRUE_VALUES.has(normalized)) {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
if (BOOLEAN_FALSE_VALUES.has(normalized)) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
console.warn(`[mcp-server] ${envName} is set but not a recognizable boolean. It will be ignored.`);
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
|
-
const RAW_DEFAULT_USER_ID = process.env.CONNPASS_DEFAULT_USER_ID;
|
|
26
|
-
const RAW_INCLUDE_PRESENTATIONS_DEFAULT = process.env.CONNPASS_INCLUDE_PRESENTATIONS_DEFAULT;
|
|
27
|
-
const RAW_ENABLE_APPS_SDK_OUTPUT = process.env.CONNPASS_ENABLE_APPS_SDK_OUTPUT;
|
|
28
|
-
const RAW_RATE_LIMIT_ENABLED = process.env.CONNPASS_RATE_LIMIT_ENABLED;
|
|
29
|
-
const RAW_RATE_LIMIT_DELAY_MS = process.env.CONNPASS_RATE_LIMIT_DELAY_MS;
|
|
30
|
-
const RAW_MCP_BASE_PATH = process.env.MCP_BASE_PATH;
|
|
31
|
-
const parsedDefaultUserId = (() => {
|
|
32
|
-
if (!RAW_DEFAULT_USER_ID) {
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
35
|
-
const numeric = Number(RAW_DEFAULT_USER_ID);
|
|
36
|
-
if (!Number.isFinite(numeric) || numeric <= 0) {
|
|
37
|
-
console.warn("[mcp-server] CONNPASS_DEFAULT_USER_ID is set but not a positive number. It will be ignored.");
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
return Math.trunc(numeric);
|
|
41
|
-
})();
|
|
42
|
-
const parsedIncludePresentationsDefault = parseOptionalBooleanEnv(RAW_INCLUDE_PRESENTATIONS_DEFAULT, "CONNPASS_INCLUDE_PRESENTATIONS_DEFAULT");
|
|
43
|
-
const parsedEnableAppsSdkOutput = parseOptionalBooleanEnv(RAW_ENABLE_APPS_SDK_OUTPUT, "CONNPASS_ENABLE_APPS_SDK_OUTPUT");
|
|
44
|
-
const parsedRateLimitEnabled = parseOptionalBooleanEnv(RAW_RATE_LIMIT_ENABLED, "CONNPASS_RATE_LIMIT_ENABLED");
|
|
45
|
-
const parsedRateLimitDelayMs = (() => {
|
|
46
|
-
if (!RAW_RATE_LIMIT_DELAY_MS) {
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
const numeric = Number(RAW_RATE_LIMIT_DELAY_MS);
|
|
50
|
-
if (!Number.isFinite(numeric) || numeric < 0) {
|
|
51
|
-
console.warn("[mcp-server] CONNPASS_RATE_LIMIT_DELAY_MS is set but not a non-negative number. It will be ignored.");
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
return Math.trunc(numeric);
|
|
55
|
-
})();
|
|
56
|
-
function getDefaultUserId() {
|
|
57
|
-
return parsedDefaultUserId;
|
|
58
|
-
}
|
|
59
|
-
function getDefaultIncludePresentations() {
|
|
60
|
-
return parsedIncludePresentationsDefault;
|
|
61
|
-
}
|
|
62
|
-
function isAppsSdkOutputEnabled() {
|
|
63
|
-
return parsedEnableAppsSdkOutput ?? false;
|
|
64
|
-
}
|
|
65
|
-
function getRateLimitEnabled() {
|
|
66
|
-
return parsedRateLimitEnabled;
|
|
67
|
-
}
|
|
68
|
-
function getRateLimitDelayMs() {
|
|
69
|
-
return parsedRateLimitDelayMs;
|
|
70
|
-
}
|
|
71
|
-
function getMcpBasePath() {
|
|
72
|
-
const raw = RAW_MCP_BASE_PATH?.trim();
|
|
73
|
-
if (!raw) {
|
|
74
|
-
return "/mcp";
|
|
75
|
-
}
|
|
76
|
-
if (raw === "/") {
|
|
77
|
-
return raw;
|
|
78
|
-
}
|
|
79
|
-
const ensureLeadingSlash = raw.startsWith("/") ? raw : `/${raw}`;
|
|
80
|
-
return ensureLeadingSlash.replace(/\/+$/, "");
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/tools/events.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { ConnpassClient } from "@kajidog/connpass-api-client";
|
|
2
|
-
declare const eventHandlers: {
|
|
3
|
-
search_events(args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedEventsResponse>;
|
|
4
|
-
get_event_presentations(args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedPresentationsResponse>;
|
|
5
|
-
search_schedule(args: unknown, connpassClient: ConnpassClient): Promise<{
|
|
6
|
-
userId: number;
|
|
7
|
-
sections: {
|
|
8
|
-
date: string;
|
|
9
|
-
events: import("./formatting.js").FormattedEvent[];
|
|
10
|
-
}[];
|
|
11
|
-
metadata: {
|
|
12
|
-
fromDate: string;
|
|
13
|
-
toDate: string;
|
|
14
|
-
inspected: number;
|
|
15
|
-
limit: number;
|
|
16
|
-
};
|
|
17
|
-
}>;
|
|
18
|
-
};
|
|
19
|
-
export type EventToolName = keyof typeof eventHandlers;
|
|
20
|
-
export declare const eventTools: {
|
|
21
|
-
[x: string]: unknown;
|
|
22
|
-
name: string;
|
|
23
|
-
inputSchema: {
|
|
24
|
-
[x: string]: unknown;
|
|
25
|
-
type: "object";
|
|
26
|
-
properties?: {
|
|
27
|
-
[x: string]: unknown;
|
|
28
|
-
} | undefined;
|
|
29
|
-
required?: string[] | undefined;
|
|
30
|
-
};
|
|
31
|
-
title?: string | undefined;
|
|
32
|
-
description?: string | undefined;
|
|
33
|
-
_meta?: {
|
|
34
|
-
[x: string]: unknown;
|
|
35
|
-
} | undefined;
|
|
36
|
-
icons?: {
|
|
37
|
-
[x: string]: unknown;
|
|
38
|
-
src: string;
|
|
39
|
-
mimeType?: string | undefined;
|
|
40
|
-
sizes?: string[] | undefined;
|
|
41
|
-
}[] | undefined;
|
|
42
|
-
outputSchema?: {
|
|
43
|
-
[x: string]: unknown;
|
|
44
|
-
type: "object";
|
|
45
|
-
properties?: {
|
|
46
|
-
[x: string]: unknown;
|
|
47
|
-
} | undefined;
|
|
48
|
-
required?: string[] | undefined;
|
|
49
|
-
} | undefined;
|
|
50
|
-
annotations?: {
|
|
51
|
-
[x: string]: unknown;
|
|
52
|
-
title?: string | undefined;
|
|
53
|
-
readOnlyHint?: boolean | undefined;
|
|
54
|
-
destructiveHint?: boolean | undefined;
|
|
55
|
-
idempotentHint?: boolean | undefined;
|
|
56
|
-
openWorldHint?: boolean | undefined;
|
|
57
|
-
} | undefined;
|
|
58
|
-
}[];
|
|
59
|
-
export declare function isEventTool(name: string): name is EventToolName;
|
|
60
|
-
export declare function handleEventTool(name: EventToolName, args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedEventsResponse | import("./formatting.js").FormattedPresentationsResponse | {
|
|
61
|
-
userId: number;
|
|
62
|
-
sections: {
|
|
63
|
-
date: string;
|
|
64
|
-
events: import("./formatting.js").FormattedEvent[];
|
|
65
|
-
}[];
|
|
66
|
-
metadata: {
|
|
67
|
-
fromDate: string;
|
|
68
|
-
toDate: string;
|
|
69
|
-
inspected: number;
|
|
70
|
-
limit: number;
|
|
71
|
-
};
|
|
72
|
-
}>;
|
|
73
|
-
export {};
|
|
74
|
-
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAkY9D,QAAA,MAAM,aAAa;wBACS,OAAO,kBAAkB,cAAc;kCAM7B,OAAO,kBAAkB,cAAc;0BAK/C,OAAO,kBAAkB,cAAc;;;;;;;;;;;;;CAkGpE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC;AAEvD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAqB,CAAC;AAE7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,aAAa,CAE/D;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,cAAc;;;;;;;;;;;;GAG/B"}
|
package/dist/tools/events.js
DELETED
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.eventTools = void 0;
|
|
4
|
-
exports.isEventTool = isEventTool;
|
|
5
|
-
exports.handleEventTool = handleEventTool;
|
|
6
|
-
const zod_1 = require("zod");
|
|
7
|
-
const config_js_1 = require("../config.js");
|
|
8
|
-
const connpass_events_js_1 = require("../widgets/connpass-events.js");
|
|
9
|
-
const connpass_schedule_js_1 = require("../widgets/connpass-schedule.js");
|
|
10
|
-
const formatting_js_1 = require("./formatting.js");
|
|
11
|
-
const shared_js_1 = require("./shared.js");
|
|
12
|
-
function buildEventsWidgetMeta() {
|
|
13
|
-
return {
|
|
14
|
-
"openai/outputTemplate": connpass_events_js_1.CONNPASS_EVENTS_WIDGET_URI,
|
|
15
|
-
"openai/resultCanProduceWidget": true,
|
|
16
|
-
"openai/widgetAccessible": true,
|
|
17
|
-
"openai/widgetCategory": "carousel",
|
|
18
|
-
"openai/toolInvocation/invoking": "Connpassイベントを検索中…",
|
|
19
|
-
"openai/toolInvocation/invoked": "Connpassイベントを表示しました",
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
function buildScheduleWidgetMeta() {
|
|
23
|
-
return {
|
|
24
|
-
"openai/outputTemplate": connpass_schedule_js_1.CONNPASS_SCHEDULE_WIDGET_URI,
|
|
25
|
-
"openai/resultCanProduceWidget": true,
|
|
26
|
-
"openai/widgetAccessible": true,
|
|
27
|
-
"openai/widgetCategory": "list",
|
|
28
|
-
"openai/toolInvocation/invoking": "スケジュールを取得中…",
|
|
29
|
-
"openai/toolInvocation/invoked": "スケジュールを表示しました",
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const EventSearchInputSchema = zod_1.z.object({
|
|
33
|
-
query: zod_1.z
|
|
34
|
-
.string()
|
|
35
|
-
.min(1)
|
|
36
|
-
.describe("Search for events that match ALL of these keywords")
|
|
37
|
-
.optional(),
|
|
38
|
-
anyQuery: zod_1.z
|
|
39
|
-
.string()
|
|
40
|
-
.min(1)
|
|
41
|
-
.describe("Search for events that match ANY of these keywords (comma separated is ok)")
|
|
42
|
-
.optional(),
|
|
43
|
-
on: zod_1.z
|
|
44
|
-
.union([zod_1.z.string().min(1), zod_1.z.array(zod_1.z.string().min(1))])
|
|
45
|
-
.describe("Specific date(s) to match. Format: YYYY-MM-DD or YYYYMMDD (e.g., '2024-12-24' or '20241224')")
|
|
46
|
-
.optional(),
|
|
47
|
-
from: zod_1.z
|
|
48
|
-
.string()
|
|
49
|
-
.min(1)
|
|
50
|
-
.describe("Start of the date range (inclusive). Format: YYYY-MM-DD or YYYYMMDD (e.g., '2024-12-01')")
|
|
51
|
-
.optional(),
|
|
52
|
-
to: zod_1.z
|
|
53
|
-
.string()
|
|
54
|
-
.min(1)
|
|
55
|
-
.describe("End of the date range (inclusive). Format: YYYY-MM-DD or YYYYMMDD. Use together with 'from' for a window")
|
|
56
|
-
.optional(),
|
|
57
|
-
participantNickname: zod_1.z
|
|
58
|
-
.string()
|
|
59
|
-
.min(1)
|
|
60
|
-
.describe("Filter by participant nickname")
|
|
61
|
-
.optional(),
|
|
62
|
-
hostNickname: zod_1.z
|
|
63
|
-
.string()
|
|
64
|
-
.min(1)
|
|
65
|
-
.describe("Filter by host / owner nickname")
|
|
66
|
-
.optional(),
|
|
67
|
-
groupIds: zod_1.z
|
|
68
|
-
.array(zod_1.z.number())
|
|
69
|
-
.describe("Limit results to specific Connpass group IDs")
|
|
70
|
-
.optional(),
|
|
71
|
-
prefectures: zod_1.z
|
|
72
|
-
.union([zod_1.z.string().min(1), zod_1.z.array(zod_1.z.string().min(1))])
|
|
73
|
-
.describe("Prefecture name(s) to filter by")
|
|
74
|
-
.optional(),
|
|
75
|
-
page: zod_1.z
|
|
76
|
-
.number()
|
|
77
|
-
.int()
|
|
78
|
-
.min(1)
|
|
79
|
-
.describe("1-based page number. Each page contains 'pageSize' items")
|
|
80
|
-
.optional(),
|
|
81
|
-
pageSize: zod_1.z
|
|
82
|
-
.number()
|
|
83
|
-
.int()
|
|
84
|
-
.min(1)
|
|
85
|
-
.max(100)
|
|
86
|
-
.describe("How many events per page (default 20, Connpass max 100)")
|
|
87
|
-
.optional(),
|
|
88
|
-
sort: zod_1.z
|
|
89
|
-
.enum(shared_js_1.EVENT_SORT_KEYS)
|
|
90
|
-
.describe("Sort order: soonest first, latest first, or newly added")
|
|
91
|
-
.optional(),
|
|
92
|
-
});
|
|
93
|
-
const EventPresentationsInputSchema = zod_1.z.object({
|
|
94
|
-
eventId: zod_1.z
|
|
95
|
-
.union([zod_1.z.number().int().positive(), zod_1.z.string().min(1)])
|
|
96
|
-
.describe("Connpass event ID")
|
|
97
|
-
.transform((value) => Number(value))
|
|
98
|
-
.refine((value) => Number.isFinite(value), "eventId must be a number"),
|
|
99
|
-
});
|
|
100
|
-
const MyUpcomingEventsInputSchema = zod_1.z.object({
|
|
101
|
-
userId: zod_1.z
|
|
102
|
-
.number()
|
|
103
|
-
.int()
|
|
104
|
-
.positive()
|
|
105
|
-
.describe("Connpass user ID. If omitted, uses CONNPASS_DEFAULT_USER_ID")
|
|
106
|
-
.optional(),
|
|
107
|
-
nickname: zod_1.z
|
|
108
|
-
.string()
|
|
109
|
-
.min(1)
|
|
110
|
-
.describe("Connpass user nickname. If specified, searches for the user by this nickname")
|
|
111
|
-
.optional(),
|
|
112
|
-
fromDate: zod_1.z
|
|
113
|
-
.string()
|
|
114
|
-
.min(1)
|
|
115
|
-
.describe("Start date of the range (inclusive). Format: YYYY-MM-DD or YYYYMMDD (e.g., '2024-12-01'). If omitted, defaults to today.")
|
|
116
|
-
.optional(),
|
|
117
|
-
toDate: zod_1.z
|
|
118
|
-
.string()
|
|
119
|
-
.min(1)
|
|
120
|
-
.describe("End date of the range (inclusive). Format: YYYY-MM-DD or YYYYMMDD (e.g., '2024-12-31'). If omitted, defaults to 7 days from fromDate.")
|
|
121
|
-
.optional(),
|
|
122
|
-
maxEvents: zod_1.z
|
|
123
|
-
.number()
|
|
124
|
-
.int()
|
|
125
|
-
.min(1)
|
|
126
|
-
.max(100)
|
|
127
|
-
.describe("Maximum number of attended events to examine (default 30)")
|
|
128
|
-
.optional(),
|
|
129
|
-
});
|
|
130
|
-
function buildEventSearchParams(input, options) {
|
|
131
|
-
const pagination = (0, shared_js_1.applyPagination)(input.page, input.pageSize, options);
|
|
132
|
-
return {
|
|
133
|
-
keyword: input.query,
|
|
134
|
-
keywordOr: input.anyQuery,
|
|
135
|
-
ymd: (0, shared_js_1.toYmdArray)(input.on),
|
|
136
|
-
ymdFrom: input.from ? (0, shared_js_1.parseHyphenatedDate)(input.from) : undefined,
|
|
137
|
-
ymdTo: input.to ? (0, shared_js_1.parseHyphenatedDate)(input.to) : undefined,
|
|
138
|
-
nickname: input.participantNickname,
|
|
139
|
-
ownerNickname: input.hostNickname,
|
|
140
|
-
groupId: input.groupIds,
|
|
141
|
-
prefecture: (0, shared_js_1.normalizeStringArray)(input.prefectures),
|
|
142
|
-
order: input.sort ? shared_js_1.EVENT_SORT_MAP[input.sort] : undefined,
|
|
143
|
-
...pagination,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
function startOfDay(date) {
|
|
147
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
148
|
-
}
|
|
149
|
-
function formatDateLabel(date) {
|
|
150
|
-
const year = date.getFullYear();
|
|
151
|
-
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
152
|
-
const day = String(date.getDate()).padStart(2, "0");
|
|
153
|
-
return `${year}-${month}-${day}`;
|
|
154
|
-
}
|
|
155
|
-
const DEFAULT_EVENT_FORMAT_OPTIONS = {
|
|
156
|
-
descriptionLimit: 300,
|
|
157
|
-
catchPhraseLimit: 150,
|
|
158
|
-
};
|
|
159
|
-
/**
|
|
160
|
-
* Format options for carousel widgets (e.g. search_events).
|
|
161
|
-
* Carousel widgets can handle larger payloads.
|
|
162
|
-
*/
|
|
163
|
-
function resolveFormatOptions() {
|
|
164
|
-
if ((0, config_js_1.isAppsSdkOutputEnabled)()) {
|
|
165
|
-
return {
|
|
166
|
-
...DEFAULT_EVENT_FORMAT_OPTIONS,
|
|
167
|
-
descriptionLimit: undefined,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
return DEFAULT_EVENT_FORMAT_OPTIONS;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Format options for schedule/list widgets.
|
|
174
|
-
* Completely exclude description to minimize payload size and prevent
|
|
175
|
-
* ChatGPT from freezing. Users can view full details on Connpass directly.
|
|
176
|
-
*/
|
|
177
|
-
const SCHEDULE_FORMAT_OPTIONS = {
|
|
178
|
-
descriptionLimit: 0, // Exclude description entirely
|
|
179
|
-
catchPhraseLimit: 100, // Brief summary only
|
|
180
|
-
};
|
|
181
|
-
async function maybeAttachPresentations(events, includePresentations, connpassClient) {
|
|
182
|
-
if (!includePresentations || events.length === 0) {
|
|
183
|
-
return events;
|
|
184
|
-
}
|
|
185
|
-
return Promise.all(events.map(async (event) => {
|
|
186
|
-
const presentationsResponse = await connpassClient.getEventPresentations(event.id);
|
|
187
|
-
return {
|
|
188
|
-
...event,
|
|
189
|
-
presentations: presentationsResponse.presentations,
|
|
190
|
-
};
|
|
191
|
-
}));
|
|
192
|
-
}
|
|
193
|
-
const eventToolsInternal = [
|
|
194
|
-
{
|
|
195
|
-
name: "search_events",
|
|
196
|
-
description: "Find Connpass events using date filters and simple search criteria",
|
|
197
|
-
inputSchema: {
|
|
198
|
-
type: "object",
|
|
199
|
-
properties: {
|
|
200
|
-
query: {
|
|
201
|
-
type: "string",
|
|
202
|
-
description: "All keywords that must appear in the event title / description",
|
|
203
|
-
},
|
|
204
|
-
anyQuery: {
|
|
205
|
-
type: "string",
|
|
206
|
-
description: "Any of these keywords may match (OR search, comma separated is ok)",
|
|
207
|
-
},
|
|
208
|
-
on: {
|
|
209
|
-
description: "Specific date(s) in YYYY-MM-DD or YYYYMMDD format (e.g., '2024-12-24' or '20241224'). Accepts a single string or an array",
|
|
210
|
-
oneOf: [
|
|
211
|
-
{ type: "string" },
|
|
212
|
-
{ type: "array", items: { type: "string" }, minItems: 1 },
|
|
213
|
-
],
|
|
214
|
-
},
|
|
215
|
-
from: {
|
|
216
|
-
type: "string",
|
|
217
|
-
description: "Inclusive start date in YYYY-MM-DD or YYYYMMDD format (e.g., '2024-12-01')",
|
|
218
|
-
},
|
|
219
|
-
to: {
|
|
220
|
-
type: "string",
|
|
221
|
-
description: "Inclusive end date in YYYY-MM-DD or YYYYMMDD format for the date range",
|
|
222
|
-
},
|
|
223
|
-
participantNickname: {
|
|
224
|
-
type: "string",
|
|
225
|
-
description: "Limit to events joined by this participant nickname",
|
|
226
|
-
},
|
|
227
|
-
hostNickname: {
|
|
228
|
-
type: "string",
|
|
229
|
-
description: "Filter by the host / organiser nickname",
|
|
230
|
-
},
|
|
231
|
-
groupIds: {
|
|
232
|
-
type: "array",
|
|
233
|
-
items: { type: "number" },
|
|
234
|
-
description: "Only show events from these Connpass group IDs",
|
|
235
|
-
},
|
|
236
|
-
prefectures: {
|
|
237
|
-
description: "Prefecture name(s) to match. Single string or array",
|
|
238
|
-
oneOf: [
|
|
239
|
-
{ type: "string" },
|
|
240
|
-
{ type: "array", items: { type: "string" }, minItems: 1 },
|
|
241
|
-
],
|
|
242
|
-
},
|
|
243
|
-
page: {
|
|
244
|
-
type: "integer",
|
|
245
|
-
minimum: 1,
|
|
246
|
-
description: "1-based page number (default 1)",
|
|
247
|
-
},
|
|
248
|
-
pageSize: {
|
|
249
|
-
type: "integer",
|
|
250
|
-
minimum: 1,
|
|
251
|
-
maximum: 100,
|
|
252
|
-
description: "How many events per page (default 20, Connpass max 100)",
|
|
253
|
-
},
|
|
254
|
-
sort: {
|
|
255
|
-
type: "string",
|
|
256
|
-
enum: [...shared_js_1.EVENT_SORT_KEYS],
|
|
257
|
-
description: "Sort by soonest, latest, or newly created events",
|
|
258
|
-
},
|
|
259
|
-
},
|
|
260
|
-
},
|
|
261
|
-
_meta: buildEventsWidgetMeta(),
|
|
262
|
-
},
|
|
263
|
-
{
|
|
264
|
-
name: "get_event_presentations",
|
|
265
|
-
description: "Look up presentation details for a specific event",
|
|
266
|
-
inputSchema: {
|
|
267
|
-
type: "object",
|
|
268
|
-
properties: {
|
|
269
|
-
eventId: {
|
|
270
|
-
type: "integer",
|
|
271
|
-
description: "Connpass event ID (either number or numeric string)",
|
|
272
|
-
},
|
|
273
|
-
},
|
|
274
|
-
required: ["eventId"],
|
|
275
|
-
},
|
|
276
|
-
},
|
|
277
|
-
{
|
|
278
|
-
name: "search_schedule",
|
|
279
|
-
description: "Search user's schedule - Connpass events within a specified date range. Use this when asking about schedules, appointments, or what events are coming up.",
|
|
280
|
-
inputSchema: {
|
|
281
|
-
type: "object",
|
|
282
|
-
properties: {
|
|
283
|
-
userId: {
|
|
284
|
-
type: "integer",
|
|
285
|
-
description: "Connpass user ID to inspect. Falls back to CONNPASS_DEFAULT_USER_ID",
|
|
286
|
-
},
|
|
287
|
-
nickname: {
|
|
288
|
-
type: "string",
|
|
289
|
-
description: "Connpass user nickname. If specified, searches for the user by this nickname",
|
|
290
|
-
},
|
|
291
|
-
fromDate: {
|
|
292
|
-
type: "string",
|
|
293
|
-
description: "Start date of the range (inclusive) in YYYY-MM-DD or YYYYMMDD format (e.g., '2024-12-01'). If omitted, defaults to today.",
|
|
294
|
-
},
|
|
295
|
-
toDate: {
|
|
296
|
-
type: "string",
|
|
297
|
-
description: "End date of the range (inclusive) in YYYY-MM-DD or YYYYMMDD format (e.g., '2024-12-31'). If omitted, defaults to 7 days from fromDate.",
|
|
298
|
-
},
|
|
299
|
-
maxEvents: {
|
|
300
|
-
type: "integer",
|
|
301
|
-
minimum: 1,
|
|
302
|
-
maximum: 100,
|
|
303
|
-
description: "Maximum attended events to check (default 30)",
|
|
304
|
-
},
|
|
305
|
-
},
|
|
306
|
-
},
|
|
307
|
-
_meta: buildScheduleWidgetMeta(),
|
|
308
|
-
},
|
|
309
|
-
];
|
|
310
|
-
const eventHandlers = {
|
|
311
|
-
async search_events(args, connpassClient) {
|
|
312
|
-
const params = EventSearchInputSchema.parse(args ?? {});
|
|
313
|
-
const searchParams = buildEventSearchParams(params);
|
|
314
|
-
const response = await connpassClient.searchEvents(searchParams);
|
|
315
|
-
return (0, formatting_js_1.formatEventsResponse)(response, resolveFormatOptions());
|
|
316
|
-
},
|
|
317
|
-
async get_event_presentations(args, connpassClient) {
|
|
318
|
-
const { eventId } = EventPresentationsInputSchema.parse(args ?? {});
|
|
319
|
-
const response = await connpassClient.getEventPresentations(eventId);
|
|
320
|
-
return (0, formatting_js_1.formatPresentationsResponse)(response, resolveFormatOptions());
|
|
321
|
-
},
|
|
322
|
-
async search_schedule(args, connpassClient) {
|
|
323
|
-
const parsed = MyUpcomingEventsInputSchema.parse(args ?? {});
|
|
324
|
-
let resolvedUserId = parsed.userId ?? (0, config_js_1.getDefaultUserId)();
|
|
325
|
-
let userNickname;
|
|
326
|
-
// If nickname is provided, search for the user by nickname
|
|
327
|
-
if (parsed.nickname) {
|
|
328
|
-
const userSearchResponse = await connpassClient.searchUsers({
|
|
329
|
-
nickname: parsed.nickname,
|
|
330
|
-
});
|
|
331
|
-
if (userSearchResponse.users.length === 0) {
|
|
332
|
-
throw new Error(`User with nickname "${parsed.nickname}" not found.`);
|
|
333
|
-
}
|
|
334
|
-
const foundUser = userSearchResponse.users[0];
|
|
335
|
-
resolvedUserId = foundUser.id;
|
|
336
|
-
userNickname = foundUser.nickname;
|
|
337
|
-
}
|
|
338
|
-
if (!resolvedUserId) {
|
|
339
|
-
throw new Error("User ID or nickname is required. Pass 'userId', 'nickname', or set CONNPASS_DEFAULT_USER_ID in the environment.");
|
|
340
|
-
}
|
|
341
|
-
const maxEventsToFetch = parsed.maxEvents ?? 30;
|
|
342
|
-
// Parse date range
|
|
343
|
-
const today = startOfDay(new Date());
|
|
344
|
-
const rangeStart = parsed.fromDate
|
|
345
|
-
? startOfDay(new Date((0, shared_js_1.parseHyphenatedDate)(parsed.fromDate)))
|
|
346
|
-
: today;
|
|
347
|
-
const rangeEnd = parsed.toDate
|
|
348
|
-
? startOfDay(new Date((0, shared_js_1.parseHyphenatedDate)(parsed.toDate)))
|
|
349
|
-
: (() => {
|
|
350
|
-
const defaultEnd = new Date(rangeStart);
|
|
351
|
-
defaultEnd.setDate(defaultEnd.getDate() + 7);
|
|
352
|
-
return defaultEnd;
|
|
353
|
-
})();
|
|
354
|
-
rangeEnd.setHours(23, 59, 59, 999);
|
|
355
|
-
// If nickname was not already resolved, fetch user info by ID
|
|
356
|
-
if (!userNickname) {
|
|
357
|
-
const userResponse = await connpassClient.searchUsers({
|
|
358
|
-
userId: [resolvedUserId],
|
|
359
|
-
});
|
|
360
|
-
if (userResponse.users.length === 0) {
|
|
361
|
-
throw new Error(`User with ID ${resolvedUserId} not found.`);
|
|
362
|
-
}
|
|
363
|
-
const user = userResponse.users.find((u) => u.id === resolvedUserId);
|
|
364
|
-
if (!user) {
|
|
365
|
-
throw new Error(`User with ID ${resolvedUserId} not found.`);
|
|
366
|
-
}
|
|
367
|
-
userNickname = user.nickname;
|
|
368
|
-
}
|
|
369
|
-
const searchResponse = await connpassClient.searchEvents({
|
|
370
|
-
nickname: userNickname,
|
|
371
|
-
ymdFrom: formatDateLabel(rangeStart),
|
|
372
|
-
ymdTo: formatDateLabel(rangeEnd),
|
|
373
|
-
order: shared_js_1.EVENT_SORT_MAP["start-date-asc"],
|
|
374
|
-
count: maxEventsToFetch,
|
|
375
|
-
});
|
|
376
|
-
// Group events by date
|
|
377
|
-
const eventsByDate = new Map();
|
|
378
|
-
for (const event of searchResponse.events) {
|
|
379
|
-
const eventDate = formatDateLabel(startOfDay(new Date(event.startedAt)));
|
|
380
|
-
if (!eventsByDate.has(eventDate)) {
|
|
381
|
-
eventsByDate.set(eventDate, []);
|
|
382
|
-
}
|
|
383
|
-
eventsByDate.get(eventDate).push(event);
|
|
384
|
-
}
|
|
385
|
-
// Create sections for each date, sorted chronologically
|
|
386
|
-
const sortedDates = Array.from(eventsByDate.keys()).sort();
|
|
387
|
-
const sections = await Promise.all(sortedDates.map((date) => {
|
|
388
|
-
const events = eventsByDate.get(date);
|
|
389
|
-
return {
|
|
390
|
-
date,
|
|
391
|
-
events: (0, formatting_js_1.formatEventList)(events, SCHEDULE_FORMAT_OPTIONS),
|
|
392
|
-
};
|
|
393
|
-
}));
|
|
394
|
-
return {
|
|
395
|
-
userId: resolvedUserId,
|
|
396
|
-
sections,
|
|
397
|
-
metadata: {
|
|
398
|
-
fromDate: formatDateLabel(rangeStart),
|
|
399
|
-
toDate: formatDateLabel(rangeEnd),
|
|
400
|
-
inspected: searchResponse.eventsReturned,
|
|
401
|
-
limit: maxEventsToFetch,
|
|
402
|
-
},
|
|
403
|
-
};
|
|
404
|
-
},
|
|
405
|
-
};
|
|
406
|
-
exports.eventTools = eventToolsInternal;
|
|
407
|
-
function isEventTool(name) {
|
|
408
|
-
return name in eventHandlers;
|
|
409
|
-
}
|
|
410
|
-
async function handleEventTool(name, args, connpassClient) {
|
|
411
|
-
return eventHandlers[name](args, connpassClient);
|
|
412
|
-
}
|
|
413
|
-
//# sourceMappingURL=events.js.map
|
package/dist/tools/events.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"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"}
|