@davidwoods/skylight-mcp 1.8.1 → 1.8.4
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 +34 -32
- package/dist/api/endpoints/chores.d.ts +63 -0
- package/dist/api/endpoints/chores.d.ts.map +1 -1
- package/dist/api/endpoints/chores.js +90 -0
- package/dist/api/endpoints/chores.js.map +1 -1
- package/dist/tools/calendar.d.ts.map +1 -1
- package/dist/tools/calendar.js +3 -1
- package/dist/tools/calendar.js.map +1 -1
- package/dist/tools/chores.d.ts.map +1 -1
- package/dist/tools/chores.js +215 -20
- package/dist/tools/chores.js.map +1 -1
- package/dist/tools/lists.d.ts.map +1 -1
- package/dist/tools/lists.js +16 -2
- package/dist/tools/lists.js.map +1 -1
- package/dist/tools/meals.d.ts.map +1 -1
- package/dist/tools/meals.js +8 -1
- package/dist/tools/meals.js.map +1 -1
- package/dist/tools/planning.js +1 -1
- package/dist/tools/planning.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +2 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/rewards.d.ts.map +1 -1
- package/dist/tools/rewards.js +22 -5
- package/dist/tools/rewards.js.map +1 -1
- package/dist/utils/redact.d.ts +9 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +24 -0
- package/dist/utils/redact.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ exposes every tool. The *hosted* server (a Cloudflare Worker) is optional. You
|
|
|
41
41
|
only need it if Claude Duet or Claude on another device has to reach Skylight
|
|
42
42
|
when this computer is off. It means cloning the repo, a free Cloudflare
|
|
43
43
|
account, `npx wrangler login`, `npm run worker:setup`, and a second sign-in,
|
|
44
|
-
and it exposes
|
|
44
|
+
and it exposes read and write tools plus a short list of deletes (chores, lists, list items, rewards, recipes, meal sittings, messages; not calendar events). Do the local
|
|
45
45
|
setup first; see
|
|
46
46
|
[Hosted server (Claude Duet, Claude on other devices)](#hosted-server-claude-duet-claude-on-other-devices)
|
|
47
47
|
if you need it later.
|
|
@@ -273,31 +273,29 @@ encrypted in the OAuth grant, not in a database you manage.
|
|
|
273
273
|
|
|
274
274
|
### Which tools the hosted server exposes, and why
|
|
275
275
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
276
|
+
The hosted server registers all **read and create/update tools**, plus these
|
|
277
|
+
deletes: `delete_chore`, `delete_list`, `delete_list_item`, `delete_reward`,
|
|
278
|
+
`delete_recipe`, `delete_meal_sitting` and `delete_message`. It does **not**
|
|
279
|
+
register `delete_calendar_event` or photo uploads. The local (stdio) server
|
|
280
|
+
registers everything. This is a deliberate choice, not a limitation of the Worker:
|
|
279
281
|
|
|
280
282
|
- The hosted server is what Claude Duet drives proactively, sometimes
|
|
281
|
-
unattended.
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
283
|
+
unattended. Every allowlisted delete previews and deletes nothing unless
|
|
284
|
+
`confirm: true`, so the model has to show the exact target and get a yes
|
|
285
|
+
first. Calendar events stay local-only because a wrong delete there is the
|
|
286
|
+
costliest to miss.
|
|
285
287
|
- Photo tools are uploads the Worker has no reason to carry.
|
|
286
288
|
|
|
287
|
-
|
|
288
|
-
`src/worker/mcp.ts
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
and set `photos: true` in the same file if you also want photo uploads.
|
|
295
|
-
Every tool's classification lives in `src/tools/registry.ts`, so you can also
|
|
296
|
-
carve out a profile of your own (read-only, for example, is `["read"]`).
|
|
289
|
+
The allowlist is one list, `HOSTED_DESTRUCTIVE_ALLOWLIST` in
|
|
290
|
+
`src/worker/mcp.ts`. Add or remove a tool name there and redeploy. For full
|
|
291
|
+
parity set `HOSTED_EFFECTS` to `["read", "write", "destructive"]` and
|
|
292
|
+
`photos: true` in the same file. Every tool's classification lives in
|
|
293
|
+
`src/tools/registry.ts`, so you can also carve out a profile of your own
|
|
294
|
+
(read-only, for example, is `["read"]`).
|
|
297
295
|
|
|
298
296
|
If you run both servers in the Claude desktop app, Claude sees two sets of
|
|
299
297
|
mostly duplicate tools and may use either for writes. Disable the local one
|
|
300
|
-
in Settings → Connectors when you do not need
|
|
298
|
+
in Settings → Connectors when you do not need calendar deletes or photo tools, or
|
|
301
299
|
say "use the local Skylight server" when you do.
|
|
302
300
|
|
|
303
301
|
### Deploy (once)
|
|
@@ -369,25 +367,26 @@ last captured are recorded in the repository's build log.
|
|
|
369
367
|
|
|
370
368
|
| Area | What works | Hosted server (Claude Duet) | Status |
|
|
371
369
|
|------|------------|------------------------------|--------|
|
|
372
|
-
| Calendar | Read events and source calendars; create (with profiles), update, delete events | Everything except delete | Read, create and delete live-tested; update inherited |
|
|
370
|
+
| Calendar | Read events and source calendars; create (with profiles), update, delete events | Everything except delete (local only) | Read, create and delete live-tested; update inherited |
|
|
373
371
|
| Planning | Week overview, conflicts, free slots, bulk meal plan | All four | Week overview live-tested; the rest mocked only |
|
|
374
|
-
| Meals (Plus) | Read categories and meals; create, rename, move, delete one-off meals |
|
|
375
|
-
| Recipes (Plus) | Read, create, update, delete recipes; push ingredients to the grocery list |
|
|
372
|
+
| Meals (Plus) | Read categories and meals; create, rename, move, delete one-off meals | All, delete included | Live-tested |
|
|
373
|
+
| Recipes (Plus) | Read, create, update, delete recipes; push ingredients to the grocery list | All, delete included | Inherited |
|
|
376
374
|
| Messages | Read; post to everyone or to named profiles (silent by default); edit text and sender (everyone-messages only); delete | All four, delete included | Live-tested |
|
|
377
|
-
| Chores | Read, create, update, delete |
|
|
378
|
-
| Task box |
|
|
379
|
-
| Lists | Read lists and items; create, update, delete lists and items |
|
|
375
|
+
| Chores and routines | Read (routines marked, Up for Grabs included); create, update, delete chores; mark one occurrence of a routine or recurring chore done or not done | All, delete included | Read live-tested; completion captured live, tool not yet run live; the rest inherited |
|
|
376
|
+
| Task box | List items; add a task | Yes | List live-tested; add inherited |
|
|
377
|
+
| Lists | Read lists and items; create, update, delete lists and items | All, delete included | Inherited |
|
|
380
378
|
| Family and devices | Profiles with IDs, avatars, colours, household info, devices | Yes | Profiles live-tested; the rest inherited |
|
|
381
|
-
| Rewards (Plus) | Read points and rewards; create, update, redeem, unredeem, delete |
|
|
379
|
+
| Rewards (Plus) | Read points (by profile) and rewards; create, update, redeem, unredeem, delete | All, delete included | Inherited; points read live-tested |
|
|
382
380
|
| Photos (Plus) | List albums | No | Inherited |
|
|
383
381
|
|
|
384
382
|
### Not supported
|
|
385
383
|
|
|
386
384
|
Nothing here is hidden behind a flag. It is either unavailable from Skylight or not yet captured.
|
|
387
385
|
|
|
388
|
-
- **Messages**:
|
|
386
|
+
- **Messages**: sending to specific devices, scheduling, repeating, voice notes, and read-aloud (the option exists on `send_message` but was not tested live). Deleting works but the app has no delete button.
|
|
389
387
|
- **Meals**: editing or deleting a repeating meal (it is refused, because the behaviour of changing one occurrence of a series was not captured), saving a meal to the recipe box from the edit form, and Skylight's own "Plan Meals" feature.
|
|
390
|
-
- **Task box**:
|
|
388
|
+
- **Task box**: editing or completing tasks, and saving a routine template to it.
|
|
389
|
+
- **Chores**: completing a one-off (non-recurring) chore, Skip, daily or monthly routine schedules (only the weekly format has been captured), and editing a recurring chore's date, time, assignee or stars. Un-completing a routine cannot reduce its `longest_streak`. Whether "this and future" from a later day keeps the earlier days has not been checked (the capture started from the first day).
|
|
391
390
|
- **Profiles**: creating or editing them. Read-only.
|
|
392
391
|
- **Settings, account, notifications, sleep schedule, device navigation**: none of these are exposed.
|
|
393
392
|
- **Photos**: uploads and anything beyond listing albums.
|
|
@@ -436,7 +435,7 @@ Messages are the notes shown on the frame (Skylight's web app calls them "nudges
|
|
|
436
435
|
| Tool | Effect | Description |
|
|
437
436
|
|------|--------|-------------|
|
|
438
437
|
| `get_calendar_events` | read | Events for a date range |
|
|
439
|
-
| `get_source_calendars` | read | Connected calendar sources (Google, iCloud, etc.) |
|
|
438
|
+
| `get_source_calendars` | read | Connected calendar sources (Google, iCloud, etc.), with each one's role and whether it is editable. Private feed addresses are hidden: only the host is shown |
|
|
440
439
|
| `create_calendar_event` | write | Add an event. `profiles` assigns it to named family members. Local times are sent with the frame's UTC offset. |
|
|
441
440
|
| `update_calendar_event` | write | Change an event, including who it is assigned to (`profiles`) |
|
|
442
441
|
| `delete_calendar_event` | destructive | Delete an event. Local server only. |
|
|
@@ -447,8 +446,10 @@ Messages are the notes shown on the frame (Skylight's web app calls them "nudges
|
|
|
447
446
|
|------|--------|-------------|
|
|
448
447
|
| `get_chores` | read | Chores with optional filters (date, assignee, status) |
|
|
449
448
|
| `create_chore` | write | Create a chore, optionally recurring |
|
|
450
|
-
| `update_chore` | write | Rename, reschedule, reassign
|
|
451
|
-
| `
|
|
449
|
+
| `update_chore` | write | Rename, reschedule, reassign a one-off chore. For recurring chores and routines only a rename and a weekly schedule (`days` + `timeOfDay`) are supported; a schedule change needs `acknowledgeReset: true` because it can reset streak history, and Skylight re-keys the chore (the reply gives the new id). Completion goes through `complete_chore`. |
|
|
450
|
+
| `create_routine` | write | Create a weekly routine (morning, afternoon or evening) for one or more profiles, via `create_multiple`. Optional habit tracking and stars. Weekly schedules only. |
|
|
451
|
+
| `complete_chore` | write | Mark one occurrence of a routine or recurring chore done, or undo it. Previews unless `confirm: true`; awards real stars and streaks on the family display. Recurring chores only. |
|
|
452
|
+
| `delete_chore` | destructive | Delete a chore. Previews unless `confirm: true`. Recurring chores and routines need `scope`: `future` (this day and later) or `all` (whole series), sent as `apply_to`. Reads back to confirm. Available on the hosted server too. |
|
|
452
453
|
|
|
453
454
|
### Task Tools
|
|
454
455
|
|
|
@@ -529,7 +530,8 @@ All calls go to `https://app.ourskylight.com/api` (pinned in code). `{f}` is the
|
|
|
529
530
|
| Meals | `GET /meals/categories`, `GET/POST /meals/sittings`, `PATCH/DELETE /meals/sittings/{id}/instances/{date}` (all live) |
|
|
530
531
|
| Recipes | `GET/POST /meals/recipes`, `GET/PATCH/DELETE /meals/recipes/{id}`, `POST /meals/recipes/{id}/add_to_grocery_list` |
|
|
531
532
|
| Profiles and family | `GET /frames/{f}/categories` (live), `GET /frames/{f}`, `GET /frames/{f}/devices`, `GET /api/avatars`, `GET /api/colors` |
|
|
532
|
-
| Chores and
|
|
533
|
+
| Chores and routines | `GET /frames/{f}/chores` (live; `include_up_for_grabs`), `POST /chores`, `PUT/DELETE /chores/{id}` (one-off), `PUT /chores/{occurrence id}` (flat `{summary}` or `{recurrence_set}`; re-keys the chore), `DELETE /chores/{occurrence id}?apply_to=future\|all`, `PUT /chores/{series id}/completions` (body `status` `complete`/`pending`, `instance_date`, `instance_time`), `POST /chores/create_multiple`. All routine calls captured from the web app; the tools are not yet run live |
|
|
534
|
+
| Task box | `GET /frames/{f}/task_box/items` (live), `POST /frames/{f}/task_box/items` |
|
|
533
535
|
| Lists | `GET/POST /lists`, `GET/PUT/DELETE /lists/{id}`, `POST /lists/{id}/list_items`, `PUT/DELETE /lists/{id}/list_items/{itemId}` |
|
|
534
536
|
| Rewards | `GET/POST /rewards`, `PATCH/DELETE /rewards/{id}`, `POST /rewards/{id}/redeem`, `POST /rewards/{id}/unredeem`, `GET /reward_points` |
|
|
535
537
|
| Photos | `GET /frames/{f}/albums` (local only) |
|
|
@@ -55,4 +55,67 @@ export declare function updateChore(choreId: string, options: UpdateChoreOptions
|
|
|
55
55
|
* Delete a chore
|
|
56
56
|
*/
|
|
57
57
|
export declare function deleteChore(choreId: string): Promise<void>;
|
|
58
|
+
export interface ChoreOccurrence {
|
|
59
|
+
seriesId: string;
|
|
60
|
+
instanceDate: string;
|
|
61
|
+
instanceTime: string;
|
|
62
|
+
}
|
|
63
|
+
/** Split an occurrence id from get_chores into the pieces the completions endpoint wants. Null for any other id (one-off chores, junk). */
|
|
64
|
+
export declare function parseOccurrenceId(id: string): ChoreOccurrence | null;
|
|
65
|
+
export interface CompletionResult {
|
|
66
|
+
summary: string | null;
|
|
67
|
+
status: string | null;
|
|
68
|
+
/** Points balance after the change, when Skylight reports it. */
|
|
69
|
+
pointsBalance: number | null;
|
|
70
|
+
pointsLifetime: number | null;
|
|
71
|
+
currentStreak: number | null;
|
|
72
|
+
longestStreak: number | null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Mark one occurrence of a recurring chore (routine) complete or pending.
|
|
76
|
+
* Verified live: the series id goes in the path, the occurrence date/time in the body.
|
|
77
|
+
*/
|
|
78
|
+
export declare function completeChoreOccurrence(occurrence: ChoreOccurrence, complete: boolean, completedOn: string): Promise<CompletionResult>;
|
|
79
|
+
export type DeleteScope = "future" | "all";
|
|
80
|
+
/**
|
|
81
|
+
* Delete a recurring chore or routine. The app sends `DELETE /chores/{occurrence id}?apply_to=future|all`
|
|
82
|
+
* (captured live; 200 with an empty body). "future" is "this and future tasks", "all" is the whole series.
|
|
83
|
+
*/
|
|
84
|
+
export declare function deleteChoreOccurrence(occurrenceId: string, scope: DeleteScope): Promise<void>;
|
|
85
|
+
export type TimeOfDay = "morning" | "afternoon" | "evening";
|
|
86
|
+
export type WeekDay = "MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU";
|
|
87
|
+
export declare const WEEK_DAYS: readonly WeekDay[];
|
|
88
|
+
/** The web app's "In the" choices: Morning 6, Afternoon 14, Evening 20 (all captured live). */
|
|
89
|
+
export declare const TIME_OF_DAY_HOUR: Record<TimeOfDay, number>;
|
|
90
|
+
/** A weekly routine rule exactly as the web app writes it. Only the weekly shape has been captured. */
|
|
91
|
+
export declare function buildWeeklyRule(days: readonly WeekDay[], timeOfDay: TimeOfDay): string;
|
|
92
|
+
export interface ChoreEditResult {
|
|
93
|
+
/** Skylight re-keys a chore on every edit: this is the id to use from now on. */
|
|
94
|
+
newId: string | null;
|
|
95
|
+
summary: string | null;
|
|
96
|
+
recurrenceSet: string[] | null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Edit a recurring chore or routine. The web app sends a flat body (not JSON:API) to
|
|
100
|
+
* `PUT /chores/{occurrence id}`; both a rename (`{summary}`) and a schedule change
|
|
101
|
+
* (`{recurrence_set}`) were captured live, and each returned a new series id.
|
|
102
|
+
*/
|
|
103
|
+
export declare function updateChoreOccurrence(occurrenceId: string, changes: {
|
|
104
|
+
summary?: string;
|
|
105
|
+
recurrenceSet?: string[];
|
|
106
|
+
}): Promise<ChoreEditResult>;
|
|
107
|
+
export interface CreateRoutineOptions {
|
|
108
|
+
summary: string;
|
|
109
|
+
start: string;
|
|
110
|
+
categoryIds: string[];
|
|
111
|
+
recurrenceSet: string[];
|
|
112
|
+
trackHabit: boolean;
|
|
113
|
+
rewardPoints: number | null;
|
|
114
|
+
emojiIcon: string | null;
|
|
115
|
+
}
|
|
116
|
+
/** Create a routine for one or more profiles: `POST /chores/create_multiple` (captured live), one chore per profile. */
|
|
117
|
+
export declare function createRoutine(options: CreateRoutineOptions): Promise<Array<{
|
|
118
|
+
id: string;
|
|
119
|
+
summary: string;
|
|
120
|
+
}>>;
|
|
58
121
|
//# sourceMappingURL=chores.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chores.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints/chores.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,aAAa,EACb,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsBxF;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAqCrF;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAqCxB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhE"}
|
|
1
|
+
{"version":3,"file":"chores.d.ts","sourceRoot":"","sources":["../../../src/api/endpoints/chores.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,4 +112,94 @@ export async function deleteChore(choreId) {
|
|
|
112
112
|
method: "DELETE",
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
|
+
/** A recurring-chore occurrence id: `{series id}-{YYYY-MM-DD}-{HHMM}`. */
|
|
116
|
+
const OCCURRENCE_ID = /^(\d+)-(\d{4}-\d{2}-\d{2})-(\d{2})(\d{2})$/;
|
|
117
|
+
/** Split an occurrence id from get_chores into the pieces the completions endpoint wants. Null for any other id (one-off chores, junk). */
|
|
118
|
+
export function parseOccurrenceId(id) {
|
|
119
|
+
const m = OCCURRENCE_ID.exec(id);
|
|
120
|
+
if (!m)
|
|
121
|
+
return null;
|
|
122
|
+
return { seriesId: m[1], instanceDate: m[2], instanceTime: `${m[3]}:${m[4]}` };
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Mark one occurrence of a recurring chore (routine) complete or pending.
|
|
126
|
+
* Verified live: the series id goes in the path, the occurrence date/time in the body.
|
|
127
|
+
*/
|
|
128
|
+
export async function completeChoreOccurrence(occurrence, complete, completedOn) {
|
|
129
|
+
const client = getClient();
|
|
130
|
+
const body = complete
|
|
131
|
+
? { status: "complete", instance_date: occurrence.instanceDate, instance_time: occurrence.instanceTime, completed_on: completedOn }
|
|
132
|
+
: { status: "pending", instance_date: occurrence.instanceDate, instance_time: occurrence.instanceTime };
|
|
133
|
+
const res = await client.request(`/api/frames/{frameId}/chores/${occurrence.seriesId}/completions`, { method: "PUT", body });
|
|
134
|
+
const tracker = res.included?.find((i) => i.type === "habit_tracker");
|
|
135
|
+
return {
|
|
136
|
+
summary: res.data?.attributes?.summary ?? null,
|
|
137
|
+
status: res.data?.attributes?.status ?? null,
|
|
138
|
+
pointsBalance: res.meta?.reward_points?.current_point_balance ?? null,
|
|
139
|
+
pointsLifetime: res.meta?.reward_points?.lifetime_points_earned ?? null,
|
|
140
|
+
currentStreak: tracker?.attributes?.current_streak ?? null,
|
|
141
|
+
longestStreak: tracker?.attributes?.longest_streak ?? null,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Delete a recurring chore or routine. The app sends `DELETE /chores/{occurrence id}?apply_to=future|all`
|
|
146
|
+
* (captured live; 200 with an empty body). "future" is "this and future tasks", "all" is the whole series.
|
|
147
|
+
*/
|
|
148
|
+
export async function deleteChoreOccurrence(occurrenceId, scope) {
|
|
149
|
+
const client = getClient();
|
|
150
|
+
await client.request(`/api/frames/{frameId}/chores/${occurrenceId}`, {
|
|
151
|
+
method: "DELETE",
|
|
152
|
+
params: { apply_to: scope },
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
export const WEEK_DAYS = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"];
|
|
156
|
+
/** The web app's "In the" choices: Morning 6, Afternoon 14, Evening 20 (all captured live). */
|
|
157
|
+
export const TIME_OF_DAY_HOUR = { morning: 6, afternoon: 14, evening: 20 };
|
|
158
|
+
/** A weekly routine rule exactly as the web app writes it. Only the weekly shape has been captured. */
|
|
159
|
+
export function buildWeeklyRule(days, timeOfDay) {
|
|
160
|
+
const ordered = WEEK_DAYS.filter((d) => days.includes(d));
|
|
161
|
+
return `RRULE:FREQ=WEEKLY;INTERVAL=1;WKST=SU;BYHOUR=${TIME_OF_DAY_HOUR[timeOfDay]};BYDAY=${ordered.join(",")}`;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Edit a recurring chore or routine. The web app sends a flat body (not JSON:API) to
|
|
165
|
+
* `PUT /chores/{occurrence id}`; both a rename (`{summary}`) and a schedule change
|
|
166
|
+
* (`{recurrence_set}`) were captured live, and each returned a new series id.
|
|
167
|
+
*/
|
|
168
|
+
export async function updateChoreOccurrence(occurrenceId, changes) {
|
|
169
|
+
const client = getClient();
|
|
170
|
+
const body = {};
|
|
171
|
+
if (changes.summary !== undefined)
|
|
172
|
+
body.summary = changes.summary;
|
|
173
|
+
if (changes.recurrenceSet !== undefined)
|
|
174
|
+
body.recurrence_set = changes.recurrenceSet;
|
|
175
|
+
const res = await client.request(`/api/frames/{frameId}/chores/${occurrenceId}`, { method: "PUT", body });
|
|
176
|
+
return {
|
|
177
|
+
newId: res.data?.id ?? null,
|
|
178
|
+
summary: res.data?.attributes?.summary ?? null,
|
|
179
|
+
recurrenceSet: res.data?.attributes?.recurrence_set ?? null,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/** Create a routine for one or more profiles: `POST /chores/create_multiple` (captured live), one chore per profile. */
|
|
183
|
+
export async function createRoutine(options) {
|
|
184
|
+
const client = getClient();
|
|
185
|
+
const res = await client.request("/api/frames/{frameId}/chores/create_multiple", {
|
|
186
|
+
method: "POST",
|
|
187
|
+
body: {
|
|
188
|
+
summary: options.summary,
|
|
189
|
+
start: options.start,
|
|
190
|
+
category_ids: options.categoryIds,
|
|
191
|
+
routine: true,
|
|
192
|
+
track_habit: options.trackHabit,
|
|
193
|
+
up_for_grabs: false,
|
|
194
|
+
emoji_icon: options.emojiIcon,
|
|
195
|
+
reward_points: options.rewardPoints,
|
|
196
|
+
recurrence_set: options.recurrenceSet,
|
|
197
|
+
recurring_until: null,
|
|
198
|
+
renewal_interval: null,
|
|
199
|
+
renewal_unit: null,
|
|
200
|
+
start_time: null,
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
return (res.data ?? []).map((c) => ({ id: c.id, summary: c.attributes?.summary ?? options.summary }));
|
|
204
|
+
}
|
|
115
205
|
//# sourceMappingURL=chores.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chores.js","sourceRoot":"","sources":["../../../src/api/endpoints/chores.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chores.js","sourceRoot":"","sources":["../../../src/api/endpoints/chores.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAezE,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,CA0T7D"}
|
package/dist/tools/calendar.js
CHANGED
|
@@ -2,6 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { getCalendarEvents, getSourceCalendars, createCalendarEvent, updateCalendarEvent, deleteCalendarEvent, withFrameOffset, } from "../api/endpoints/calendar.js";
|
|
3
3
|
import { getTodayDate, parseDate, formatDateForDisplay } from "../utils/dates.js";
|
|
4
4
|
import { formatErrorForMcp } from "../utils/errors.js";
|
|
5
|
+
import { redactFeedUrl } from "../utils/redact.js";
|
|
5
6
|
import { getConfig } from "../config.js";
|
|
6
7
|
import { getCategories, resolveProfileIds } from "../api/endpoints/categories.js";
|
|
7
8
|
// Fields the event listing carries that identify people or accounts and tell a model nothing it
|
|
@@ -145,7 +146,8 @@ Returns a list of connected calendar sources (Google, iCloud, etc.).`, {}, async
|
|
|
145
146
|
const parts = [`- Calendar (ID: ${cal.id})`];
|
|
146
147
|
for (const [key, value] of Object.entries(attrs)) {
|
|
147
148
|
if (value !== null && value !== undefined) {
|
|
148
|
-
|
|
149
|
+
// Feed URLs are bearer-like secrets; show only the host.
|
|
150
|
+
parts.push(` ${key}: ${typeof value === "string" ? redactFeedUrl(value) : value}`);
|
|
149
151
|
}
|
|
150
152
|
}
|
|
151
153
|
return parts.join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,CAgiB1D"}
|