@davidwoods/skylight-mcp 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -22
- package/README.md +633 -584
- package/THIRD_PARTY_NOTICES.md +38 -38
- package/dist/api/credential-store.d.ts.map +1 -1
- package/dist/api/credential-store.js +2 -1
- package/dist/api/credential-store.js.map +1 -1
- package/dist/api/endpoints/categories.d.ts +6 -6
- package/dist/api/endpoints/categories.d.ts.map +1 -1
- package/dist/api/endpoints/categories.js +6 -13
- package/dist/api/endpoints/categories.js.map +1 -1
- package/dist/api/endpoints/chores.d.ts +8 -0
- package/dist/api/endpoints/chores.d.ts.map +1 -1
- package/dist/api/endpoints/chores.js +9 -0
- package/dist/api/endpoints/chores.js.map +1 -1
- package/dist/api/endpoints/taskbox.d.ts +8 -0
- package/dist/api/endpoints/taskbox.d.ts.map +1 -1
- package/dist/api/endpoints/taskbox.js +17 -0
- package/dist/api/endpoints/taskbox.js.map +1 -1
- package/dist/api/types.d.ts +14 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -8
- package/dist/cli.js.map +1 -1
- package/dist/config.js +23 -23
- package/dist/doctor.d.ts +10 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +23 -7
- package/dist/doctor.js.map +1 -1
- package/dist/tools/calendar.d.ts +5 -0
- package/dist/tools/calendar.d.ts.map +1 -1
- package/dist/tools/calendar.js +107 -71
- package/dist/tools/calendar.js.map +1 -1
- package/dist/tools/chores.d.ts.map +1 -1
- package/dist/tools/chores.js +53 -81
- package/dist/tools/chores.js.map +1 -1
- package/dist/tools/family.js +17 -17
- package/dist/tools/lists.js +85 -85
- package/dist/tools/meals.js +102 -102
- package/dist/tools/messages.d.ts.map +1 -1
- package/dist/tools/messages.js +37 -49
- package/dist/tools/messages.js.map +1 -1
- package/dist/tools/misc.js +14 -14
- package/dist/tools/photos.js +6 -6
- package/dist/tools/planning.d.ts.map +1 -1
- package/dist/tools/planning.js +24 -23
- package/dist/tools/planning.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +1 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/rewards.d.ts.map +1 -1
- package/dist/tools/rewards.js +74 -90
- package/dist/tools/rewards.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +45 -10
- package/dist/tools/tasks.js.map +1 -1
- package/dist/utils/errors.js +16 -16
- package/package.json +78 -78
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAwB,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/calendar.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { CalendarEventResource } from "../api/types.js";
|
|
3
|
+
/** Profile names an event is assigned to, or [] when none or not determinable. */
|
|
4
|
+
export declare function eventProfileNames(event: CalendarEventResource, labelById: Map<string, string>): string[];
|
|
5
|
+
/** One event as text: no emails, calendar ids or UIDs, and the assigned profiles when known. */
|
|
6
|
+
export declare function formatEventForTool(event: CalendarEventResource, labelById: Map<string, string>): string;
|
|
2
7
|
export declare function registerCalendarTools(server: McpServer): void;
|
|
3
8
|
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAa7D,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,qBAAqB,EAC5B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,EAAE,CAQV;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CASvG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyT7D"}
|
package/dist/tools/calendar.js
CHANGED
|
@@ -3,16 +3,55 @@ import { getCalendarEvents, getSourceCalendars, createCalendarEvent, updateCalen
|
|
|
3
3
|
import { getTodayDate, parseDate, formatDateForDisplay } from "../utils/dates.js";
|
|
4
4
|
import { formatErrorForMcp } from "../utils/errors.js";
|
|
5
5
|
import { getConfig } from "../config.js";
|
|
6
|
-
import { resolveProfileIds } from "../api/endpoints/categories.js";
|
|
6
|
+
import { getCategories, resolveProfileIds } from "../api/endpoints/categories.js";
|
|
7
|
+
// Fields the event listing carries that identify people or accounts and tell a model nothing it
|
|
8
|
+
// can act on. Everything else is still printed, so new Skylight fields show up without a code change.
|
|
9
|
+
const HIDDEN_EVENT_FIELDS = new Set([
|
|
10
|
+
"owner_email",
|
|
11
|
+
"calendar_id",
|
|
12
|
+
"calendar_account_id",
|
|
13
|
+
"invited_emails",
|
|
14
|
+
"uid",
|
|
15
|
+
"supports_notification_settings",
|
|
16
|
+
]);
|
|
17
|
+
/** Profile names an event is assigned to, or [] when none or not determinable. */
|
|
18
|
+
export function eventProfileNames(event, labelById) {
|
|
19
|
+
const ids = new Set();
|
|
20
|
+
for (const ref of event.relationships?.categories?.data ?? [])
|
|
21
|
+
if (ref?.id)
|
|
22
|
+
ids.add(String(ref.id));
|
|
23
|
+
const single = event.relationships?.category?.data?.id;
|
|
24
|
+
if (single)
|
|
25
|
+
ids.add(String(single));
|
|
26
|
+
const fromAttrs = event.attributes.category_ids;
|
|
27
|
+
if (Array.isArray(fromAttrs))
|
|
28
|
+
for (const id of fromAttrs)
|
|
29
|
+
ids.add(String(id));
|
|
30
|
+
return [...ids].map((id) => labelById.get(id)).filter((n) => Boolean(n));
|
|
31
|
+
}
|
|
32
|
+
/** One event as text: no emails, calendar ids or UIDs, and the assigned profiles when known. */
|
|
33
|
+
export function formatEventForTool(event, labelById) {
|
|
34
|
+
const parts = [];
|
|
35
|
+
const who = eventProfileNames(event, labelById);
|
|
36
|
+
if (who.length)
|
|
37
|
+
parts.push(` profiles: ${who.join(", ")}`);
|
|
38
|
+
for (const [key, value] of Object.entries(event.attributes)) {
|
|
39
|
+
if (HIDDEN_EVENT_FIELDS.has(key))
|
|
40
|
+
continue;
|
|
41
|
+
if (value !== null && value !== undefined)
|
|
42
|
+
parts.push(` ${key}: ${value}`);
|
|
43
|
+
}
|
|
44
|
+
return `- Event (ID: ${event.id})\n${parts.join("\n")}`;
|
|
45
|
+
}
|
|
7
46
|
export function registerCalendarTools(server) {
|
|
8
47
|
// get_calendar_events tool
|
|
9
|
-
server.tool("get_calendar_events", `Get calendar events from Skylight.
|
|
10
|
-
|
|
11
|
-
Use this to answer questions like:
|
|
12
|
-
- "What's on my calendar today?"
|
|
13
|
-
- "What do we have scheduled this weekend?"
|
|
14
|
-
- "Are there any events on Friday?"
|
|
15
|
-
|
|
48
|
+
server.tool("get_calendar_events", `Get calendar events from Skylight.
|
|
49
|
+
|
|
50
|
+
Use this to answer questions like:
|
|
51
|
+
- "What's on my calendar today?"
|
|
52
|
+
- "What do we have scheduled this weekend?"
|
|
53
|
+
- "Are there any events on Friday?"
|
|
54
|
+
|
|
16
55
|
Returns a list of events with their titles, times, and details.`, {
|
|
17
56
|
date: z
|
|
18
57
|
.string()
|
|
@@ -45,20 +84,17 @@ Returns a list of events with their titles, times, and details.`, {
|
|
|
45
84
|
],
|
|
46
85
|
};
|
|
47
86
|
}
|
|
48
|
-
//
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return `- Event (ID: ${event.id})\n${parts.join("\n")}`;
|
|
60
|
-
})
|
|
61
|
-
.join("\n\n");
|
|
87
|
+
// Profile names are a best-effort extra: a failed lookup must not hide the events.
|
|
88
|
+
const labelById = new Map();
|
|
89
|
+
try {
|
|
90
|
+
for (const c of await getCategories())
|
|
91
|
+
if (c.attributes.label)
|
|
92
|
+
labelById.set(String(c.id), c.attributes.label);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
/* leave empty */
|
|
96
|
+
}
|
|
97
|
+
const eventList = events.map((event) => formatEventForTool(event, labelById)).join("\n\n");
|
|
62
98
|
const dateRange = startDate === endDate
|
|
63
99
|
? formatDateForDisplay(startDate)
|
|
64
100
|
: `${formatDateForDisplay(startDate)} to ${formatDateForDisplay(endDate)}`;
|
|
@@ -84,12 +120,12 @@ Returns a list of events with their titles, times, and details.`, {
|
|
|
84
120
|
}
|
|
85
121
|
});
|
|
86
122
|
// get_source_calendars tool
|
|
87
|
-
server.tool("get_source_calendars", `Get connected calendar sources synced to Skylight.
|
|
88
|
-
|
|
89
|
-
Use this to answer:
|
|
90
|
-
- "Which calendars are synced to Skylight?"
|
|
91
|
-
- "What calendar accounts are connected?"
|
|
92
|
-
|
|
123
|
+
server.tool("get_source_calendars", `Get connected calendar sources synced to Skylight.
|
|
124
|
+
|
|
125
|
+
Use this to answer:
|
|
126
|
+
- "Which calendars are synced to Skylight?"
|
|
127
|
+
- "What calendar accounts are connected?"
|
|
128
|
+
|
|
93
129
|
Returns a list of connected calendar sources (Google, iCloud, etc.).`, {}, async () => {
|
|
94
130
|
try {
|
|
95
131
|
const calendars = await getSourceCalendars();
|
|
@@ -137,24 +173,24 @@ Returns a list of connected calendar sources (Google, iCloud, etc.).`, {}, async
|
|
|
137
173
|
}
|
|
138
174
|
});
|
|
139
175
|
// create_calendar_event tool
|
|
140
|
-
server.tool("create_calendar_event", `Create a new calendar event in Skylight.
|
|
141
|
-
|
|
142
|
-
Use this when:
|
|
143
|
-
- Scheduling a new event: "Add a dentist appointment on Friday at 2pm"
|
|
144
|
-
- Creating family activities: "Schedule soccer practice every Saturday at 10am"
|
|
145
|
-
- Adding reminders: "Put Mom's birthday on the calendar"
|
|
146
|
-
|
|
147
|
-
Parameters:
|
|
148
|
-
- summary (required): Event title (e.g., "Dentist Appointment")
|
|
149
|
-
- startsAt (required): Start time in ISO format or natural language
|
|
150
|
-
- endsAt (required): End time in ISO format or natural language
|
|
151
|
-
- allDay: Set to true for all-day events
|
|
152
|
-
- description: Additional notes for the event
|
|
153
|
-
- location: Where the event takes place
|
|
154
|
-
- profiles: Profile names to assign (e.g. ["Alex"]); categoryIds is the ID fallback
|
|
155
|
-
|
|
156
|
-
Returns: The created event details.
|
|
157
|
-
|
|
176
|
+
server.tool("create_calendar_event", `Create a new calendar event in Skylight.
|
|
177
|
+
|
|
178
|
+
Use this when:
|
|
179
|
+
- Scheduling a new event: "Add a dentist appointment on Friday at 2pm"
|
|
180
|
+
- Creating family activities: "Schedule soccer practice every Saturday at 10am"
|
|
181
|
+
- Adding reminders: "Put Mom's birthday on the calendar"
|
|
182
|
+
|
|
183
|
+
Parameters:
|
|
184
|
+
- summary (required): Event title (e.g., "Dentist Appointment")
|
|
185
|
+
- startsAt (required): Start time in ISO format or natural language
|
|
186
|
+
- endsAt (required): End time in ISO format or natural language
|
|
187
|
+
- allDay: Set to true for all-day events
|
|
188
|
+
- description: Additional notes for the event
|
|
189
|
+
- location: Where the event takes place
|
|
190
|
+
- profiles: Profile names to assign (e.g. ["Alex"]); categoryIds is the ID fallback
|
|
191
|
+
|
|
192
|
+
Returns: The created event details.
|
|
193
|
+
|
|
158
194
|
Related: get_family_members lists the profile names and IDs.`, {
|
|
159
195
|
summary: z.string().describe("Event title (e.g., 'Dentist Appointment')"),
|
|
160
196
|
startsAt: z.string().describe("Start time (ISO format like '2025-01-15T14:00:00')"),
|
|
@@ -198,22 +234,22 @@ Related: get_family_members lists the profile names and IDs.`, {
|
|
|
198
234
|
}
|
|
199
235
|
});
|
|
200
236
|
// update_calendar_event tool
|
|
201
|
-
server.tool("update_calendar_event", `Update an existing calendar event.
|
|
202
|
-
|
|
203
|
-
Use this when:
|
|
204
|
-
- Changing event time: "Move the dentist appointment to 3pm"
|
|
205
|
-
- Updating event details: "Add location to the meeting"
|
|
206
|
-
- Renaming an event: "Change 'Doctor' to 'Dr. Smith checkup'"
|
|
207
|
-
|
|
208
|
-
Parameters:
|
|
209
|
-
- eventId (required): ID of the event to update (from get_calendar_events)
|
|
210
|
-
- summary: New title for the event
|
|
211
|
-
- startsAt: New start time (ISO format)
|
|
212
|
-
- endsAt: New end time (ISO format)
|
|
213
|
-
- description: Updated notes
|
|
214
|
-
- location: Updated location
|
|
215
|
-
- categoryIds: Updated family member assignments
|
|
216
|
-
|
|
237
|
+
server.tool("update_calendar_event", `Update an existing calendar event.
|
|
238
|
+
|
|
239
|
+
Use this when:
|
|
240
|
+
- Changing event time: "Move the dentist appointment to 3pm"
|
|
241
|
+
- Updating event details: "Add location to the meeting"
|
|
242
|
+
- Renaming an event: "Change 'Doctor' to 'Dr. Smith checkup'"
|
|
243
|
+
|
|
244
|
+
Parameters:
|
|
245
|
+
- eventId (required): ID of the event to update (from get_calendar_events)
|
|
246
|
+
- summary: New title for the event
|
|
247
|
+
- startsAt: New start time (ISO format)
|
|
248
|
+
- endsAt: New end time (ISO format)
|
|
249
|
+
- description: Updated notes
|
|
250
|
+
- location: Updated location
|
|
251
|
+
- categoryIds: Updated family member assignments
|
|
252
|
+
|
|
217
253
|
Returns: The updated event details.`, {
|
|
218
254
|
eventId: z.string().describe("ID of the event to update"),
|
|
219
255
|
summary: z.string().optional().describe("New event title"),
|
|
@@ -264,15 +300,15 @@ Returns: The updated event details.`, {
|
|
|
264
300
|
}
|
|
265
301
|
});
|
|
266
302
|
// delete_calendar_event tool
|
|
267
|
-
server.tool("delete_calendar_event", `Delete a calendar event from Skylight.
|
|
268
|
-
|
|
269
|
-
Use this when:
|
|
270
|
-
- Canceling an event: "Remove the dentist appointment"
|
|
271
|
-
- Deleting old events: "Delete the meeting from yesterday"
|
|
272
|
-
|
|
273
|
-
Parameters:
|
|
274
|
-
- eventId (required): ID of the event to delete (from get_calendar_events)
|
|
275
|
-
|
|
303
|
+
server.tool("delete_calendar_event", `Delete a calendar event from Skylight.
|
|
304
|
+
|
|
305
|
+
Use this when:
|
|
306
|
+
- Canceling an event: "Remove the dentist appointment"
|
|
307
|
+
- Deleting old events: "Delete the meeting from yesterday"
|
|
308
|
+
|
|
309
|
+
Parameters:
|
|
310
|
+
- eventId (required): ID of the event to delete (from get_calendar_events)
|
|
311
|
+
|
|
276
312
|
Note: This permanently removes the event. For recurring events, this may only delete one instance.`, {
|
|
277
313
|
eventId: z.string().describe("ID of the event to delete"),
|
|
278
314
|
}, async ({ eventId }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGlF,gGAAgG;AAChG,sGAAsG;AACtG,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,gBAAgB;IAChB,KAAK;IACL,gCAAgC;CACjC,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAC/B,KAA4B,EAC5B,SAA8B;IAE9B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE;QAAE,IAAI,GAAG,EAAE,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IACvD,IAAI,MAAM;QAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,KAAK,MAAM,EAAE,IAAI,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,kBAAkB,CAAC,KAA4B,EAAE,SAA8B;IAC7F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAChD,IAAI,GAAG,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,gBAAgB,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB;;;;;;;gEAO4D,EAC5D;QACE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8EAA8E,CAAC;QAC3F,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wDAAwD,CAAC;KACtE,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE1E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,SAAS,GACb,SAAS,KAAK,OAAO;oBACnB,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC;oBACjC,CAAC,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/E,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,gCAAgC,SAAS,GAAG;yBACnD;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,mFAAmF;YACnF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC5C,IAAI,CAAC;gBACH,KAAK,MAAM,CAAC,IAAI,MAAM,aAAa,EAAE;oBAAE,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK;wBAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjH,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3F,MAAM,SAAS,GACb,SAAS,KAAK,OAAO;gBACnB,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC;gBACjC,CAAC,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;YAE/E,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uBAAuB,SAAS,QAAQ,SAAS,EAAE;qBAC1D;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;qBAC/B;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,4BAA4B;IAC5B,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB;;;;;;qEAMiE,EACjE,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAE7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,gDAAgD;yBACvD;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,SAAS;iBAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;gBAC7B,MAAM,KAAK,GAAa,CAAC,mBAAmB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBAEvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,kCAAkC,YAAY,EAAE;qBACvD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;qBAC/B;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB;;;;;;;;;;;;;;;;;;6DAkByD,EACzD;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACzE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAC/E,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC1D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;QACnI,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KAChG,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,QAAQ,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACxG,MAAM,QAAQ,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;YAC1F,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC;gBACtC,OAAO;gBACP,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;gBACrD,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;gBACjD,OAAO,EAAE,MAAM;gBACf,WAAW;gBACX,QAAQ;gBACR,YAAY,EAAE,QAAQ;gBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,2BAA2B,OAAO,UAAU,KAAK,CAAC,EAAE,GAAG;qBAC9D;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB;;;;;;;;;;;;;;;;oCAgBgC,EAChC;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACzD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC1D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACnE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC5D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC5D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;QAC1H,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KAChG,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;QACrG,IAAI,CAAC;YACH,IAAI,QAAQ,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACxG,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YACrD,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC;YAChC,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC9E,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;YACnD,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;YACjE,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACxD,IAAI,QAAQ,EAAE,MAAM;gBAAE,OAAO,CAAC,YAAY,GAAG,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;iBAChF,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC;YAEvE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE1D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,+BAA+B,KAAK,CAAC,EAAE,GAAG;qBACjD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB;;;;;;;;;mGAS+F,EAC/F;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAC1D,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,+BAA+B,OAAO,GAAG;qBAChD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chores.d.ts","sourceRoot":"","sources":["../../src/tools/chores.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"chores.d.ts","sourceRoot":"","sources":["../../src/tools/chores.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwV1D"}
|
package/dist/tools/chores.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { getChores, createChore, updateChore, deleteChore } from "../api/endpoints/chores.js";
|
|
3
|
-
import {
|
|
2
|
+
import { getChores, createChore, updateChore, deleteChore, isChoreDone } from "../api/endpoints/chores.js";
|
|
3
|
+
import { resolveProfile } from "../api/endpoints/categories.js";
|
|
4
4
|
import { getTodayDate, getDateOffset, parseDate, parseTime, formatDateForDisplay } from "../utils/dates.js";
|
|
5
5
|
import { formatErrorForMcp } from "../utils/errors.js";
|
|
6
6
|
import { getConfig } from "../config.js";
|
|
7
7
|
export function registerChoreTools(server) {
|
|
8
8
|
// get_chores tool
|
|
9
|
-
server.tool("get_chores", `Get chores from Skylight.
|
|
10
|
-
|
|
11
|
-
Use this to answer:
|
|
12
|
-
- "What chores do I need to do today?"
|
|
13
|
-
- "Show me this week's chores"
|
|
14
|
-
- "What's on the chore chart?"
|
|
15
|
-
- "What chores does [name] have?"
|
|
16
|
-
|
|
9
|
+
server.tool("get_chores", `Get chores from Skylight.
|
|
10
|
+
|
|
11
|
+
Use this to answer:
|
|
12
|
+
- "What chores do I need to do today?"
|
|
13
|
+
- "Show me this week's chores"
|
|
14
|
+
- "What's on the chore chart?"
|
|
15
|
+
- "What chores does [name] have?"
|
|
16
|
+
|
|
17
17
|
Returns chores with their assignees, due dates, and completion status.`, {
|
|
18
18
|
date: z
|
|
19
19
|
.string()
|
|
@@ -46,24 +46,20 @@ Returns chores with their assignees, due dates, and completion status.`, {
|
|
|
46
46
|
after: startDate,
|
|
47
47
|
before: endDate,
|
|
48
48
|
includeLate: includeLate ?? true,
|
|
49
|
+
includeUpForGrabs: true,
|
|
49
50
|
});
|
|
50
51
|
let chores = result.chores;
|
|
51
52
|
// Filter by status
|
|
52
53
|
if (status !== "all") {
|
|
53
|
-
|
|
54
|
+
const wantDone = status === "completed";
|
|
55
|
+
chores = chores.filter((chore) => isChoreDone(chore.attributes.status) === wantDone);
|
|
54
56
|
}
|
|
55
57
|
// Build category lookup for assignee names
|
|
56
58
|
const categoryMap = new Map(result.categories.map((c) => [c.id, c.attributes.label ?? "Unknown"]));
|
|
57
|
-
// Filter by assignee if specified
|
|
59
|
+
// Filter by assignee if specified: exact profile name, so "Ben" never matches "Benjamin"
|
|
58
60
|
if (assignee) {
|
|
59
|
-
const
|
|
60
|
-
chores = chores.filter((chore) =>
|
|
61
|
-
const categoryId = chore.relationships?.category?.data?.id;
|
|
62
|
-
if (!categoryId)
|
|
63
|
-
return false;
|
|
64
|
-
const categoryName = categoryMap.get(categoryId)?.toLowerCase();
|
|
65
|
-
return categoryName && categoryName.includes(lowerAssignee);
|
|
66
|
-
});
|
|
61
|
+
const wanted = (await resolveProfile(assignee)).id;
|
|
62
|
+
chores = chores.filter((chore) => chore.relationships?.category?.data?.id === wanted);
|
|
67
63
|
}
|
|
68
64
|
if (chores.length === 0) {
|
|
69
65
|
return {
|
|
@@ -89,6 +85,9 @@ Returns chores with their assignees, due dates, and completion status.`, {
|
|
|
89
85
|
if (assigneeName) {
|
|
90
86
|
parts.push(` Assigned to: ${assigneeName}`);
|
|
91
87
|
}
|
|
88
|
+
else if (attrs.up_for_grabs) {
|
|
89
|
+
parts.push(` Assigned to: nobody (up for grabs)`);
|
|
90
|
+
}
|
|
92
91
|
if (attrs.recurring) {
|
|
93
92
|
parts.push(` Recurring: Yes${attrs.recurrence_set ? ` (${attrs.recurrence_set})` : ""}`);
|
|
94
93
|
}
|
|
@@ -120,13 +119,13 @@ Returns chores with their assignees, due dates, and completion status.`, {
|
|
|
120
119
|
}
|
|
121
120
|
});
|
|
122
121
|
// create_chore tool
|
|
123
|
-
server.tool("create_chore", `Add a new chore to Skylight.
|
|
124
|
-
|
|
125
|
-
Use this when the user wants to:
|
|
126
|
-
- Add a new task like "empty the dishwasher"
|
|
127
|
-
- Assign chores to family members
|
|
128
|
-
- Create recurring chores
|
|
129
|
-
|
|
122
|
+
server.tool("create_chore", `Add a new chore to Skylight.
|
|
123
|
+
|
|
124
|
+
Use this when the user wants to:
|
|
125
|
+
- Add a new task like "empty the dishwasher"
|
|
126
|
+
- Assign chores to family members
|
|
127
|
+
- Create recurring chores
|
|
128
|
+
|
|
130
129
|
The chore will appear on the Skylight display.`, {
|
|
131
130
|
summary: z.string().describe("Chore description (e.g., 'Empty the dishwasher')"),
|
|
132
131
|
date: z
|
|
@@ -160,23 +159,8 @@ The chore will appear on the Skylight display.`, {
|
|
|
160
159
|
const choreDate = date ? parseDate(date, config.timezone) : getTodayDate(config.timezone);
|
|
161
160
|
// Resolve assignee to category ID
|
|
162
161
|
let categoryId;
|
|
163
|
-
if (assignee)
|
|
164
|
-
|
|
165
|
-
if (category) {
|
|
166
|
-
categoryId = category.id;
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
return {
|
|
170
|
-
content: [
|
|
171
|
-
{
|
|
172
|
-
type: "text",
|
|
173
|
-
text: `Could not find a family member named "${assignee}". Use get_family_members to see available family members.`,
|
|
174
|
-
},
|
|
175
|
-
],
|
|
176
|
-
isError: true,
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
}
|
|
162
|
+
if (assignee)
|
|
163
|
+
categoryId = (await resolveProfile(assignee)).id;
|
|
180
164
|
// Convert simple recurrence patterns to RRULE
|
|
181
165
|
let recurrenceSet;
|
|
182
166
|
if (recurring && recurrencePattern) {
|
|
@@ -238,21 +222,21 @@ The chore will appear on the Skylight display.`, {
|
|
|
238
222
|
}
|
|
239
223
|
});
|
|
240
224
|
// update_chore tool
|
|
241
|
-
server.tool("update_chore", `Update an existing chore in Skylight.
|
|
242
|
-
|
|
243
|
-
Use this when:
|
|
244
|
-
- Marking a chore as complete: "Mark 'dishes' as done"
|
|
245
|
-
- Changing chore assignment: "Reassign the trash to Casey"
|
|
246
|
-
- Updating chore details: "Change the time for the homework chore"
|
|
247
|
-
|
|
248
|
-
Parameters:
|
|
249
|
-
- choreId (required): ID of the chore (from get_chores)
|
|
250
|
-
- summary: New description for the chore
|
|
251
|
-
- status: "completed" to mark done, "pending" to mark incomplete
|
|
252
|
-
- date: New due date
|
|
253
|
-
- time: New due time
|
|
254
|
-
- assignee: New family member assignment
|
|
255
|
-
|
|
225
|
+
server.tool("update_chore", `Update an existing chore in Skylight.
|
|
226
|
+
|
|
227
|
+
Use this when:
|
|
228
|
+
- Marking a chore as complete: "Mark 'dishes' as done"
|
|
229
|
+
- Changing chore assignment: "Reassign the trash to Casey"
|
|
230
|
+
- Updating chore details: "Change the time for the homework chore"
|
|
231
|
+
|
|
232
|
+
Parameters:
|
|
233
|
+
- choreId (required): ID of the chore (from get_chores)
|
|
234
|
+
- summary: New description for the chore
|
|
235
|
+
- status: "completed" to mark done, "pending" to mark incomplete
|
|
236
|
+
- date: New due date
|
|
237
|
+
- time: New due time
|
|
238
|
+
- assignee: New family member assignment
|
|
239
|
+
|
|
256
240
|
Returns: The updated chore details.`, {
|
|
257
241
|
choreId: z.string().describe("ID of the chore to update"),
|
|
258
242
|
summary: z.string().optional().describe("New chore description"),
|
|
@@ -281,19 +265,7 @@ Returns: The updated chore details.`, {
|
|
|
281
265
|
updates.categoryId = null;
|
|
282
266
|
}
|
|
283
267
|
else {
|
|
284
|
-
|
|
285
|
-
if (!category) {
|
|
286
|
-
return {
|
|
287
|
-
content: [
|
|
288
|
-
{
|
|
289
|
-
type: "text",
|
|
290
|
-
text: `Could not find family member "${assignee}". Use get_family_members to see available members.`,
|
|
291
|
-
},
|
|
292
|
-
],
|
|
293
|
-
isError: true,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
updates.categoryId = category.id;
|
|
268
|
+
updates.categoryId = (await resolveProfile(assignee)).id;
|
|
297
269
|
}
|
|
298
270
|
}
|
|
299
271
|
const chore = await updateChore(choreId, updates);
|
|
@@ -315,15 +287,15 @@ Returns: The updated chore details.`, {
|
|
|
315
287
|
}
|
|
316
288
|
});
|
|
317
289
|
// delete_chore tool
|
|
318
|
-
server.tool("delete_chore", `Delete a chore from Skylight.
|
|
319
|
-
|
|
320
|
-
Use this when:
|
|
321
|
-
- Removing an old or irrelevant chore
|
|
322
|
-
- Deleting a chore that was added by mistake
|
|
323
|
-
|
|
324
|
-
Parameters:
|
|
325
|
-
- choreId (required): ID of the chore to delete (from get_chores)
|
|
326
|
-
|
|
290
|
+
server.tool("delete_chore", `Delete a chore from Skylight.
|
|
291
|
+
|
|
292
|
+
Use this when:
|
|
293
|
+
- Removing an old or irrelevant chore
|
|
294
|
+
- Deleting a chore that was added by mistake
|
|
295
|
+
|
|
296
|
+
Parameters:
|
|
297
|
+
- choreId (required): ID of the chore to delete (from get_chores)
|
|
298
|
+
|
|
327
299
|
Note: This permanently removes the chore. For recurring chores, this may only delete one instance.`, {
|
|
328
300
|
choreId: z.string().describe("ID of the chore to delete"),
|
|
329
301
|
}, async ({ choreId }) => {
|
package/dist/tools/chores.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chores.js","sourceRoot":"","sources":["../../src/tools/chores.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"chores.js","sourceRoot":"","sources":["../../src/tools/chores.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/family.js
CHANGED
|
@@ -4,13 +4,13 @@ import { getDevices } from "../api/endpoints/devices.js";
|
|
|
4
4
|
import { formatErrorForMcp } from "../utils/errors.js";
|
|
5
5
|
export function registerFamilyTools(server) {
|
|
6
6
|
// get_family_members tool
|
|
7
|
-
server.tool("get_family_members", `Get family members/profiles from Skylight.
|
|
8
|
-
|
|
9
|
-
Shows who can be assigned chores and their profile details.
|
|
10
|
-
|
|
11
|
-
Use this to answer:
|
|
12
|
-
- "Who's in our family on Skylight?"
|
|
13
|
-
- "What family members are set up?"
|
|
7
|
+
server.tool("get_family_members", `Get family members/profiles from Skylight.
|
|
8
|
+
|
|
9
|
+
Shows who can be assigned chores and their profile details.
|
|
10
|
+
|
|
11
|
+
Use this to answer:
|
|
12
|
+
- "Who's in our family on Skylight?"
|
|
13
|
+
- "What family members are set up?"
|
|
14
14
|
- "Who can I assign chores to?"`, {}, async () => {
|
|
15
15
|
try {
|
|
16
16
|
const members = await getFamilyMembers();
|
|
@@ -86,12 +86,12 @@ Use this to answer:
|
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
// get_frame_info tool
|
|
89
|
-
server.tool("get_frame_info", `Get Skylight household/frame information.
|
|
90
|
-
|
|
91
|
-
Useful for setup verification and debugging.
|
|
92
|
-
|
|
93
|
-
Use this to answer:
|
|
94
|
-
- "Show Skylight household info"
|
|
89
|
+
server.tool("get_frame_info", `Get Skylight household/frame information.
|
|
90
|
+
|
|
91
|
+
Useful for setup verification and debugging.
|
|
92
|
+
|
|
93
|
+
Use this to answer:
|
|
94
|
+
- "Show Skylight household info"
|
|
95
95
|
- "What's my frame ID?"`, {}, async () => {
|
|
96
96
|
try {
|
|
97
97
|
const frame = await getFrame();
|
|
@@ -128,10 +128,10 @@ Use this to answer:
|
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
130
|
// get_devices tool
|
|
131
|
-
server.tool("get_devices", `List Skylight devices in the household.
|
|
132
|
-
|
|
133
|
-
Use this to answer:
|
|
134
|
-
- "What Skylight devices do we have?"
|
|
131
|
+
server.tool("get_devices", `List Skylight devices in the household.
|
|
132
|
+
|
|
133
|
+
Use this to answer:
|
|
134
|
+
- "What Skylight devices do we have?"
|
|
135
135
|
- "How many Skylight frames are connected?"`, {}, async () => {
|
|
136
136
|
try {
|
|
137
137
|
const devices = await getDevices();
|