@cpenned/mcp 0.7.0 → 0.7.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 +16 -1
- package/dist/tools/ai.js +1 -1
- package/dist/tools/ai.js.map +1 -1
- package/dist/tools/books.js +237 -0
- package/dist/tools/books.js.map +1 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/people.js +3 -2
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/schemas.js +2 -0
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/settings.js +9 -2
- package/dist/tools/settings.js.map +1 -1
- package/dist/tools/spotify.js +28 -0
- package/dist/tools/spotify.js.map +1 -0
- package/package.json +1 -1
- package/skills/open-brain-mcp/SKILL.md +66 -17
package/README.md
CHANGED
|
@@ -98,6 +98,20 @@ Point the `args` at the absolute `packages/mcp/dist/index.js` path with
|
|
|
98
98
|
backfill/fallback; real-time ingestion is a webhook). No create tool —
|
|
99
99
|
activities only arrive via webhook or sync. Requires connecting a Strava
|
|
100
100
|
account first, from the web app's Settings page.
|
|
101
|
+
- **Books** (a personal library, distinct from the reading list above):
|
|
102
|
+
`search_books` (`q` title/author or `isbn`), `create_book` (only `title`
|
|
103
|
+
required; `openLibraryWorkId`/`isbn` schedule background metadata + cover
|
|
104
|
+
enrichment from Open Library, fill-only-missing), `list_books` (filter by
|
|
105
|
+
`status[]`/`format[]`/`tagIds`/`personIds`/`query`, or multi-get via
|
|
106
|
+
`ids`), `get_book` (tags, people, linked habit, recent sessions),
|
|
107
|
+
`update_book` (drives status `want_to_read|reading|read|dnf`; null clears
|
|
108
|
+
a clearable field; `habitId: null` unlinks the page-goal habit;
|
|
109
|
+
`archived`/`deleted: false` restores), `delete_book` (soft delete, cover
|
|
110
|
+
blob kept), `add_book_tags`/`remove_book_tags`, `log_book_session`
|
|
111
|
+
(retroactive OK, multiple sessions per day, can check off a linked habit
|
|
112
|
+
for that day - never downgrading a manual completion),
|
|
113
|
+
`remove_book_session`, `refresh_book_metadata` (`overwrite?`).
|
|
114
|
+
`add_person_links`/`remove_person_links` take `bookIds`.
|
|
101
115
|
- **Views & reviews**: `get_view`, `get_reviews`, `review_garden`,
|
|
102
116
|
`request_garden_review`, `mark_task_reviewed`, `mark_project_reviewed`.
|
|
103
117
|
- **Settings**: `get_settings`, `update_settings` — the default review period
|
|
@@ -105,7 +119,8 @@ Point the `args` at the absolute `packages/mcp/dist/index.js` path with
|
|
|
105
119
|
`defaultReviewInterval: null` disables it, and `reviewInterval: null` on
|
|
106
120
|
`create_task`/`create_project` opts a single item out). `defaultTimezone`
|
|
107
121
|
(IANA string) is also settable - the vault timezone date-only deferDates/
|
|
108
|
-
deadlines resolve against.
|
|
122
|
+
deadlines resolve against. `yearlyBookGoal` sets the reading-challenge
|
|
123
|
+
target (books finished this calendar year); `null` clears it.
|
|
109
124
|
- **AI**: `find_tasks` (hybrid search), `ai_triage` (brain-dump triage).
|
|
110
125
|
- **UI (read-only MCPUI)**: `ui_view`, `ui_review_queue`, `ui_garden_board`,
|
|
111
126
|
`ui_habits`
|
package/dist/tools/ai.js
CHANGED
|
@@ -42,7 +42,7 @@ export function registerAiTools(server, client) {
|
|
|
42
42
|
}, (args) => runTool(() => findTasks(client, args)));
|
|
43
43
|
server.registerTool("ai_triage", {
|
|
44
44
|
title: "AI triage",
|
|
45
|
-
description: "Triage a brain dump into garden-assigned tasks
|
|
45
|
+
description: "Triage a brain dump into garden-assigned tasks, recurring habits, and books. Returns { created, clarifications, errors, readingItems: {created, updated, clarifications, errors}, habits: {created, clarifications, errors}, books: {created, clarifications, errors} }; resolve clarifications before re-submitting.",
|
|
46
46
|
inputSchema: aiTriageSchema.shape,
|
|
47
47
|
}, (args) => runTool(() => aiTriage(client, args)));
|
|
48
48
|
}
|
package/dist/tools/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/tools/ai.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,6EAA6E;AAG7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,sFAAsF,CACvF;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uEAAuE,CAAC;CACrF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS,CAAC,MAAuB,EAAE,IAAmB;IACpE,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;QAClC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,qEAAqE,CAAC;IAClF,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,MAAuB,EAAE,IAAkB;IAClE,OAAO,MAAM,CAAC,IAAI,CAChB,eAAe,EACf,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EACrB,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,MAAuB;IACxE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,+FAA+F;QACjG,WAAW,EAAE,eAAe,CAAC,KAAK;KACnC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CACjD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/tools/ai.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,6EAA6E;AAG7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,sFAAsF,CACvF;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uEAAuE,CAAC;CACrF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS,CAAC,MAAuB,EAAE,IAAmB;IACpE,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;QAClC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,qEAAqE,CAAC;IAClF,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,MAAuB,EAAE,IAAkB;IAClE,OAAO,MAAM,CAAC,IAAI,CAChB,eAAe,EACf,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EACrB,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,MAAuB;IACxE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,+FAA+F;QACjG,WAAW,EAAE,eAAe,CAAC,KAAK;KACnC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CACjD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,uTAAuT;QACzT,WAAW,EAAE,cAAc,CAAC,KAAK;KAClC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAChD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
// Book tracker tools: a personal library (Goodreads-style). status tracks
|
|
2
|
+
// want_to_read/reading/read/dnf; moving to "reading" stamps startedDay and
|
|
3
|
+
// moving to "read" stamps finishedDay (kept on read -> reading, cleared on
|
|
4
|
+
// read -> want_to_read). Reading sessions are a log (multiple per day
|
|
5
|
+
// allowed); logging pages or finishing a book can check off a linked
|
|
6
|
+
// page-goal habit (habitId), never downgrading a manual check-in. Metadata
|
|
7
|
+
// (pages, publisher, description, cover) is fetched from Open Library in the
|
|
8
|
+
// background and only fills fields the user hasn't set; refresh_book_metadata
|
|
9
|
+
// can force an overwrite. Person links live on the person side
|
|
10
|
+
// (add_person_links/remove_person_links), not here.
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { runTool } from "../result.js";
|
|
13
|
+
import { bookFormatEnum, bookStatusEnum, idempotencyKey } from "./schemas.js";
|
|
14
|
+
const createBookSchema = z.object({
|
|
15
|
+
title: z.string(),
|
|
16
|
+
subtitle: z.string().optional(),
|
|
17
|
+
authors: z.array(z.string()).optional(),
|
|
18
|
+
isbn: z.string().optional(),
|
|
19
|
+
openLibraryWorkId: z.string().optional().describe('e.g. "/works/OL...W"'),
|
|
20
|
+
openLibraryEditionId: z.string().optional().describe('e.g. "/books/OL...M"'),
|
|
21
|
+
pageCount: z.number().int().positive().optional(),
|
|
22
|
+
publishedYear: z.number().int().optional(),
|
|
23
|
+
publisher: z.string().optional(),
|
|
24
|
+
description: z.string().optional(),
|
|
25
|
+
notes: z.string().optional(),
|
|
26
|
+
status: bookStatusEnum.optional().describe("Defaults to want_to_read"),
|
|
27
|
+
format: bookFormatEnum.optional(),
|
|
28
|
+
location: z.string().optional().describe('Free text, e.g. "Office shelf 2", "Kindle"'),
|
|
29
|
+
currentPage: z.number().int().positive().optional(),
|
|
30
|
+
rating: z.number().min(0.5).max(5).optional().describe("0.5 to 5 in half-star steps"),
|
|
31
|
+
coverUrl: z.string().optional(),
|
|
32
|
+
tagIds: z.array(z.string()).optional(),
|
|
33
|
+
personIds: z.array(z.string()).optional(),
|
|
34
|
+
idempotencyKey,
|
|
35
|
+
});
|
|
36
|
+
export function createBook(client, args) {
|
|
37
|
+
const { idempotencyKey: key, ...body } = args;
|
|
38
|
+
return client.post("/v1/books", body, { idempotencyKey: key });
|
|
39
|
+
}
|
|
40
|
+
const searchBooksSchema = z.object({
|
|
41
|
+
q: z
|
|
42
|
+
.string()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe("Title/author search; at least one of q or isbn required"),
|
|
45
|
+
isbn: z.string().optional().describe("Resolve one edition candidate by ISBN"),
|
|
46
|
+
limit: z.number().int().positive().optional(),
|
|
47
|
+
});
|
|
48
|
+
export function searchBooks(client, args) {
|
|
49
|
+
return client.get("/v1/books/search", {
|
|
50
|
+
q: args.q,
|
|
51
|
+
isbn: args.isbn,
|
|
52
|
+
limit: args.limit,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const listBooksSchema = z.object({
|
|
56
|
+
ids: z.array(z.string()).optional(),
|
|
57
|
+
status: z.array(bookStatusEnum).optional(),
|
|
58
|
+
format: z.array(bookFormatEnum).optional(),
|
|
59
|
+
tagIds: z.array(z.string()).optional(),
|
|
60
|
+
personIds: z.array(z.string()).optional(),
|
|
61
|
+
query: z
|
|
62
|
+
.string()
|
|
63
|
+
.optional()
|
|
64
|
+
.describe("Case-insensitive substring search over title/authors/notes/location/tags"),
|
|
65
|
+
limit: z.number().int().positive().optional(),
|
|
66
|
+
includeArchived: z
|
|
67
|
+
.boolean()
|
|
68
|
+
.optional()
|
|
69
|
+
.describe("Include archived books. Defaults to false"),
|
|
70
|
+
});
|
|
71
|
+
export function listBooks(client, args) {
|
|
72
|
+
return client.get("/v1/books", {
|
|
73
|
+
ids: args.ids?.length ? args.ids.join(",") : undefined,
|
|
74
|
+
status: args.status?.length ? args.status.join(",") : undefined,
|
|
75
|
+
format: args.format?.length ? args.format.join(",") : undefined,
|
|
76
|
+
tag: args.tagIds?.length ? args.tagIds.join(",") : undefined,
|
|
77
|
+
person: args.personIds?.length ? args.personIds.join(",") : undefined,
|
|
78
|
+
q: args.query,
|
|
79
|
+
limit: args.limit,
|
|
80
|
+
includeArchived: args.includeArchived,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const getBookSchema = z.object({ id: z.string() });
|
|
84
|
+
export function getBook(client, args) {
|
|
85
|
+
return client.get(`/v1/books/${args.id}`);
|
|
86
|
+
}
|
|
87
|
+
const updateBookSchema = z.object({
|
|
88
|
+
id: z.string(),
|
|
89
|
+
title: z.string().optional(),
|
|
90
|
+
subtitle: z.string().nullable().optional().describe("null clears"),
|
|
91
|
+
authors: z.array(z.string()).optional(),
|
|
92
|
+
isbn: z.string().nullable().optional().describe("null clears"),
|
|
93
|
+
openLibraryWorkId: z.string().nullable().optional().describe("null clears"),
|
|
94
|
+
openLibraryEditionId: z.string().nullable().optional().describe("null clears"),
|
|
95
|
+
pageCount: z.number().int().positive().nullable().optional().describe("null clears"),
|
|
96
|
+
publishedYear: z.number().int().nullable().optional().describe("null clears"),
|
|
97
|
+
publisher: z.string().nullable().optional().describe("null clears"),
|
|
98
|
+
description: z.string().nullable().optional().describe("null clears"),
|
|
99
|
+
notes: z.string().optional(),
|
|
100
|
+
status: bookStatusEnum
|
|
101
|
+
.optional()
|
|
102
|
+
.describe('Moving to "reading" stamps startedDay if empty; moving to "read" stamps finishedDay; "read" -> "reading" keeps finishedDay; "read" -> "want_to_read" clears it.'),
|
|
103
|
+
format: bookFormatEnum.nullable().optional().describe("null clears"),
|
|
104
|
+
location: z.string().nullable().optional().describe("null clears"),
|
|
105
|
+
currentPage: z.number().int().positive().nullable().optional().describe("null clears"),
|
|
106
|
+
startedDay: z.string().nullable().optional().describe('"YYYY-MM-DD"; null clears'),
|
|
107
|
+
finishedDay: z.string().nullable().optional().describe('"YYYY-MM-DD"; null clears'),
|
|
108
|
+
rating: z
|
|
109
|
+
.number()
|
|
110
|
+
.min(0.5)
|
|
111
|
+
.max(5)
|
|
112
|
+
.nullable()
|
|
113
|
+
.optional()
|
|
114
|
+
.describe("0.5 to 5 in half-star steps; null clears"),
|
|
115
|
+
coverUrl: z.string().nullable().optional().describe("null clears"),
|
|
116
|
+
habitId: z
|
|
117
|
+
.string()
|
|
118
|
+
.nullable()
|
|
119
|
+
.optional()
|
|
120
|
+
.describe("Linked page-goal habit; null unlinks"),
|
|
121
|
+
archived: z
|
|
122
|
+
.boolean()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe("true archives (hidden from default list unless includeArchived); false restores."),
|
|
125
|
+
deleted: z
|
|
126
|
+
.boolean()
|
|
127
|
+
.optional()
|
|
128
|
+
.describe("true deletes (hidden everywhere); false restores."),
|
|
129
|
+
});
|
|
130
|
+
export function updateBook(client, args) {
|
|
131
|
+
const { id, ...patch } = args;
|
|
132
|
+
return client.patch(`/v1/books/${id}`, patch);
|
|
133
|
+
}
|
|
134
|
+
const deleteBookSchema = z.object({ id: z.string() });
|
|
135
|
+
export function deleteBook(client, args) {
|
|
136
|
+
return client.del(`/v1/books/${args.id}`);
|
|
137
|
+
}
|
|
138
|
+
const bookTagsSchema = z.object({ id: z.string(), tagIds: z.array(z.string()) });
|
|
139
|
+
export function addBookTags(client, args) {
|
|
140
|
+
return client.post(`/v1/books/${args.id}/tags`, { tagIds: args.tagIds });
|
|
141
|
+
}
|
|
142
|
+
export function removeBookTags(client, args) {
|
|
143
|
+
return client.request("DELETE", `/v1/books/${args.id}/tags`, {
|
|
144
|
+
body: { tagIds: args.tagIds },
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const logBookSessionSchema = z.object({
|
|
148
|
+
id: z.string().describe("Book id"),
|
|
149
|
+
day: z
|
|
150
|
+
.string()
|
|
151
|
+
.optional()
|
|
152
|
+
.describe('Calendar day "YYYY-MM-DD"; defaults to today in vault timezone'),
|
|
153
|
+
pagesRead: z.number().int().positive().optional(),
|
|
154
|
+
minutes: z.number().int().positive().optional(),
|
|
155
|
+
endPage: z.number().int().positive().optional(),
|
|
156
|
+
notes: z.string().optional(),
|
|
157
|
+
});
|
|
158
|
+
export function logBookSession(client, args) {
|
|
159
|
+
const { id, ...body } = args;
|
|
160
|
+
return client.post(`/v1/books/${id}/sessions`, body);
|
|
161
|
+
}
|
|
162
|
+
const removeBookSessionSchema = z.object({
|
|
163
|
+
id: z.string().describe("Book id"),
|
|
164
|
+
sessionId: z.string(),
|
|
165
|
+
});
|
|
166
|
+
export function removeBookSession(client, args) {
|
|
167
|
+
return client.del(`/v1/books/${args.id}/sessions/${args.sessionId}`);
|
|
168
|
+
}
|
|
169
|
+
const refreshBookMetadataSchema = z.object({
|
|
170
|
+
id: z.string(),
|
|
171
|
+
overwrite: z
|
|
172
|
+
.boolean()
|
|
173
|
+
.optional()
|
|
174
|
+
.describe("Overwrite non-empty fields instead of filling only missing ones"),
|
|
175
|
+
});
|
|
176
|
+
export function refreshBookMetadata(client, args) {
|
|
177
|
+
const { id, ...body } = args;
|
|
178
|
+
return client.post(`/v1/books/${id}/metadata`, body);
|
|
179
|
+
}
|
|
180
|
+
export function registerBookTools(server, client) {
|
|
181
|
+
server.registerTool("search_books", {
|
|
182
|
+
title: "Search books",
|
|
183
|
+
description: "Search Open Library by title/author (q) or resolve an edition by isbn. At least one of q/isbn is required.",
|
|
184
|
+
inputSchema: searchBooksSchema.shape,
|
|
185
|
+
}, (args) => runTool(() => searchBooks(client, args)));
|
|
186
|
+
server.registerTool("create_book", {
|
|
187
|
+
title: "Create book",
|
|
188
|
+
description: "Add a book to the library. Only title is required. Passing openLibraryWorkId or isbn schedules background metadata/cover enrichment that only fills fields you leave empty.",
|
|
189
|
+
inputSchema: createBookSchema.shape,
|
|
190
|
+
}, (args) => runTool(() => createBook(client, args)));
|
|
191
|
+
server.registerTool("list_books", {
|
|
192
|
+
title: "List books",
|
|
193
|
+
description: "List books, multi-get by ids, or filter by status/format/tags/people/query. Archived books are excluded unless includeArchived is set.",
|
|
194
|
+
inputSchema: listBooksSchema.shape,
|
|
195
|
+
}, (args) => runTool(() => listBooks(client, args)));
|
|
196
|
+
server.registerTool("get_book", {
|
|
197
|
+
title: "Get book",
|
|
198
|
+
description: "Fetch one book with tags, linked people, the linked page-goal habit, and recent reading sessions.",
|
|
199
|
+
inputSchema: getBookSchema.shape,
|
|
200
|
+
}, (args) => runTool(() => getBook(client, args)));
|
|
201
|
+
server.registerTool("update_book", {
|
|
202
|
+
title: "Update book",
|
|
203
|
+
description: "Update any subset of a book's fields. null clears a clearable field; habitId: null unlinks the page-goal habit; archived/deleted: false restores.",
|
|
204
|
+
inputSchema: updateBookSchema.shape,
|
|
205
|
+
}, (args) => runTool(() => updateBook(client, args)));
|
|
206
|
+
server.registerTool("delete_book", {
|
|
207
|
+
title: "Delete book",
|
|
208
|
+
description: "Soft-delete a book (hidden everywhere; its cover blob is kept). Restore with update_book {deleted: false}.",
|
|
209
|
+
inputSchema: deleteBookSchema.shape,
|
|
210
|
+
}, (args) => runTool(() => deleteBook(client, args)));
|
|
211
|
+
server.registerTool("add_book_tags", {
|
|
212
|
+
title: "Tag book",
|
|
213
|
+
description: "Attach tags to a book.",
|
|
214
|
+
inputSchema: bookTagsSchema.shape,
|
|
215
|
+
}, (args) => runTool(() => addBookTags(client, args)));
|
|
216
|
+
server.registerTool("remove_book_tags", {
|
|
217
|
+
title: "Untag book",
|
|
218
|
+
description: "Detach tags from a book.",
|
|
219
|
+
inputSchema: bookTagsSchema.shape,
|
|
220
|
+
}, (args) => runTool(() => removeBookTags(client, args)));
|
|
221
|
+
server.registerTool("log_book_session", {
|
|
222
|
+
title: "Log reading session",
|
|
223
|
+
description: "Log pages/minutes read for a day (retroactive OK, multiple sessions per day allowed). Auto-promotes want_to_read to reading and can check off a linked page-goal habit for that day.",
|
|
224
|
+
inputSchema: logBookSessionSchema.shape,
|
|
225
|
+
}, (args) => runTool(() => logBookSession(client, args)));
|
|
226
|
+
server.registerTool("remove_book_session", {
|
|
227
|
+
title: "Remove reading session",
|
|
228
|
+
description: "Delete a logged reading session. Cannot retroactively un-satisfy a linked habit day (never-downgrade sync).",
|
|
229
|
+
inputSchema: removeBookSessionSchema.shape,
|
|
230
|
+
}, (args) => runTool(() => removeBookSession(client, args)));
|
|
231
|
+
server.registerTool("refresh_book_metadata", {
|
|
232
|
+
title: "Refresh book metadata",
|
|
233
|
+
description: "Re-fetch metadata/cover from Open Library. Fills only missing fields by default; overwrite: true replaces non-empty fields too.",
|
|
234
|
+
inputSchema: refreshBookMetadataSchema.shape,
|
|
235
|
+
}, (args) => runTool(() => refreshBookMetadata(client, args)));
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=books.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"books.js","sourceRoot":"","sources":["../../src/tools/books.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { registerAiTools } from "./ai.js";
|
|
2
|
+
import { registerBookTools } from "./books.js";
|
|
2
3
|
import { registerGardenTools } from "./gardens.js";
|
|
3
4
|
import { registerHabitTools } from "./habits.js";
|
|
4
5
|
import { registerKeyTools } from "./keys.js";
|
|
@@ -20,6 +21,7 @@ export function registerAllTools(server, client) {
|
|
|
20
21
|
registerPeopleTools(server, client);
|
|
21
22
|
registerReadingTools(server, client);
|
|
22
23
|
registerHabitTools(server, client);
|
|
24
|
+
registerBookTools(server, client);
|
|
23
25
|
registerStravaTools(server, client);
|
|
24
26
|
registerListTools(server, client);
|
|
25
27
|
registerViewTools(server, client);
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAuB;IACzE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAuB;IACzE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC"}
|
package/dist/tools/people.js
CHANGED
|
@@ -116,6 +116,7 @@ const personLinksSchema = z.object({
|
|
|
116
116
|
projectIds: z.array(z.string()).optional(),
|
|
117
117
|
gardenIds: z.array(z.string()).optional(),
|
|
118
118
|
readingListItemIds: z.array(z.string()).optional(),
|
|
119
|
+
bookIds: z.array(z.string()).optional(),
|
|
119
120
|
people: z
|
|
120
121
|
.array(z.object({
|
|
121
122
|
id: z.string().describe("The other person's id"),
|
|
@@ -169,12 +170,12 @@ export function registerPeopleTools(server, client) {
|
|
|
169
170
|
}, (args) => runTool(() => markContacted(client, args)));
|
|
170
171
|
server.registerTool("add_person_links", {
|
|
171
172
|
title: "Link person",
|
|
172
|
-
description: "Link a person to tasks, projects, gardens, reading list items, and/or other people (e.g. after resolving a mentioned name). Person-to-person connections take an optional relationship label and are symmetric.",
|
|
173
|
+
description: "Link a person to tasks, projects, gardens, reading list items, books, and/or other people (e.g. after resolving a mentioned name). Person-to-person connections take an optional relationship label and are symmetric.",
|
|
173
174
|
inputSchema: personLinksSchema.shape,
|
|
174
175
|
}, (args) => runTool(() => addPersonLinks(client, args)));
|
|
175
176
|
server.registerTool("remove_person_links", {
|
|
176
177
|
title: "Unlink person",
|
|
177
|
-
description: "Remove a person's links to tasks, projects, gardens, reading list items, and/or other people.",
|
|
178
|
+
description: "Remove a person's links to tasks, projects, gardens, reading list items, books, and/or other people.",
|
|
178
179
|
inputSchema: personLinksSchema.shape,
|
|
179
180
|
}, (args) => runTool(() => removePersonLinks(client, args)));
|
|
180
181
|
}
|
package/dist/tools/people.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"people.js","sourceRoot":"","sources":["../../src/tools/people.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"people.js","sourceRoot":"","sources":["../../src/tools/people.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/schemas.js
CHANGED
|
@@ -7,6 +7,8 @@ export const statusEnum = z.enum(["backlog", "todo", "in_progress", "done", "can
|
|
|
7
7
|
export const priorityEnum = z.enum(["none", "low", "medium", "high"]);
|
|
8
8
|
export const readingStatusEnum = z.enum(["unread", "reading", "read"]);
|
|
9
9
|
export const habitStatusEnum = z.enum(["active", "paused"]);
|
|
10
|
+
export const bookStatusEnum = z.enum(["want_to_read", "reading", "read", "dnf"]);
|
|
11
|
+
export const bookFormatEnum = z.enum(["physical", "digital", "audiobook"]);
|
|
10
12
|
export const habitScheduleSchema = z.union([
|
|
11
13
|
z.object({ kind: z.literal("daily") }),
|
|
12
14
|
z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/settings.js
CHANGED
|
@@ -15,6 +15,13 @@ const updateSettingsSchema = z.object({
|
|
|
15
15
|
.string()
|
|
16
16
|
.optional()
|
|
17
17
|
.describe('IANA timezone (e.g. "America/Denver") that date-only deferDates/deadlines resolve against when a client sends no timezone (Linear sync, bare API calls)'),
|
|
18
|
+
yearlyBookGoal: z
|
|
19
|
+
.number()
|
|
20
|
+
.int()
|
|
21
|
+
.positive()
|
|
22
|
+
.nullable()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("Yearly reading-challenge target (books finished this calendar year); null clears it"),
|
|
18
25
|
});
|
|
19
26
|
export function updateSettings(client, args) {
|
|
20
27
|
return client.patch("/v1/settings", args);
|
|
@@ -22,12 +29,12 @@ export function updateSettings(client, args) {
|
|
|
22
29
|
export function registerSettingsTools(server, client) {
|
|
23
30
|
server.registerTool("get_settings", {
|
|
24
31
|
title: "Get settings",
|
|
25
|
-
description: "Vault settings: name, default timezone,
|
|
32
|
+
description: "Vault settings: name, default timezone, the default review period for new tasks/projects, and the yearly reading-challenge goal.",
|
|
26
33
|
inputSchema: z.object({}).shape,
|
|
27
34
|
}, () => runTool(() => getSettings(client)));
|
|
28
35
|
server.registerTool("update_settings", {
|
|
29
36
|
title: "Update settings",
|
|
30
|
-
description: "Change vault settings: the default review period for new tasks/projects (null = no default)
|
|
37
|
+
description: "Change vault settings: the default review period for new tasks/projects (null = no default), the vault timezone date-only dates resolve against, and/or the yearly reading-challenge goal (null clears it).",
|
|
31
38
|
inputSchema: updateSettingsSchema.shape,
|
|
32
39
|
}, (args) => runTool(() => updateSettings(client, args)));
|
|
33
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/tools/settings.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,0DAA0D;AAG1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,qBAAqB,EAAE,oBAAoB;SACxC,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,2HAA2H,CAC5H;IACH,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yJAAyJ,CAC1J;CACJ,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,MAAuB,EAAE,IAAwB;IAC9E,OAAO,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAuB;IAC9E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/tools/settings.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,0DAA0D;AAG1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,qBAAqB,EAAE,oBAAoB;SACxC,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,2HAA2H,CAC5H;IACH,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yJAAyJ,CAC1J;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,qFAAqF,CACtF;CACJ,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,MAAuB,EAAE,IAAwB;IAC9E,OAAO,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAuB;IAC9E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,kIAAkI;QACpI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK;KAChC,EACD,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CACzC,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,6MAA6M;QAC/M,WAAW,EAAE,oBAAoB,CAAC,KAAK;KACxC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Spotify audiobook sync. Synced audiobooks land in the books domain
|
|
2
|
+
// (get_book/list_book etc.) - this only covers connection status + manual
|
|
3
|
+
// sync. No connect/disconnect tools: those are OAuth redirect flows meant for
|
|
4
|
+
// a browser, driven from the web app's Settings page.
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { runTool } from "../result.js";
|
|
7
|
+
import { idempotencyKey } from "./schemas.js";
|
|
8
|
+
const getSpotifyStatusSchema = z.object({});
|
|
9
|
+
export function getSpotifyStatus(client, _args) {
|
|
10
|
+
return client.get("/v1/spotify/status");
|
|
11
|
+
}
|
|
12
|
+
const syncSpotifyAudiobooksSchema = z.object({ idempotencyKey });
|
|
13
|
+
export function syncSpotifyAudiobooks(client, args) {
|
|
14
|
+
return client.post("/v1/spotify/sync", {}, { idempotencyKey: args.idempotencyKey });
|
|
15
|
+
}
|
|
16
|
+
export function registerSpotifyTools(server, client) {
|
|
17
|
+
server.registerTool("get_spotify_status", {
|
|
18
|
+
title: "Get Spotify connection status",
|
|
19
|
+
description: "Check whether a Spotify account is connected, plus last sync time and last error, if any.",
|
|
20
|
+
inputSchema: getSpotifyStatusSchema.shape,
|
|
21
|
+
}, (args) => runTool(() => getSpotifyStatus(client, args)));
|
|
22
|
+
server.registerTool("sync_spotify_audiobooks", {
|
|
23
|
+
title: "Sync Spotify audiobooks",
|
|
24
|
+
description: "Manually pull the connected Spotify account's audiobook library and listening progress into Books (also runs automatically every hour). Requires a Spotify account already connected from the web app's Settings page.",
|
|
25
|
+
inputSchema: syncSpotifyAudiobooksSchema.shape,
|
|
26
|
+
}, (args) => runTool(() => syncSpotifyAudiobooks(client, args)));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=spotify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spotify.js","sourceRoot":"","sources":["../../src/tools/spotify.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,0EAA0E;AAC1E,8EAA8E;AAC9E,sDAAsD;AAGtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5C,MAAM,UAAU,gBAAgB,CAAC,MAAuB,EAAE,KAA2B;IACnF,OAAO,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;AAEjE,MAAM,UAAU,qBAAqB,CACnC,MAAuB,EACvB,IAA+B;IAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAuB;IAC7E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,2FAA2F;QAC7F,WAAW,EAAE,sBAAsB,CAAC,KAAK;KAC1C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CACxD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,wNAAwN;QAC1N,WAAW,EAAE,2BAA2B,CAAC,KAAK;KAC/C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAC7D,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -59,6 +59,20 @@ pre-guessing constraints.
|
|
|
59
59
|
`add_reading_tags`/`remove_reading_tags`; person links live on the person
|
|
60
60
|
side (`add_person_links`/`remove_person_links` with `readingListItemIds`),
|
|
61
61
|
not here.
|
|
62
|
+
- **Book** = a personal library entry (Goodreads-style), distinct from the
|
|
63
|
+
reading list (which saves URLs/articles). `status`
|
|
64
|
+
(`want_to_read|reading|read|dnf`) stamps `startedDay` on the move to
|
|
65
|
+
`reading` and `finishedDay` on the move to `read`; `read → reading` keeps
|
|
66
|
+
`finishedDay` (re-read in progress), `read → want_to_read` clears it.
|
|
67
|
+
Reading sessions (`log_book_session`) are a log, multiple per day allowed,
|
|
68
|
+
and bump `currentPage`. A book can link one page-goal habit (`habitId` on
|
|
69
|
+
`update_book`); logging pages or finishing the book can check off that
|
|
70
|
+
habit for the day, but the sync **never downgrades** a manual completion
|
|
71
|
+
or removes one. Metadata (page count, publisher, description) and the
|
|
72
|
+
cover are fetched from Open Library in the background after
|
|
73
|
+
`create_book`/`refresh_book_metadata` and only fill fields you left empty.
|
|
74
|
+
`archived`/`deleted` are independent reversible booleans, same pattern as
|
|
75
|
+
reading list items.
|
|
62
76
|
- **Strava activity** = a GPS-tracked activity mirrored in from Strava
|
|
63
77
|
(real-time webhook, plus `sync_strava_activities` for backfill/fallback).
|
|
64
78
|
Never created here — every field except `notes`, `archived`, `deleted`, and
|
|
@@ -88,12 +102,12 @@ pre-guessing constraints.
|
|
|
88
102
|
(null clears a field, e.g. `contactInterval: null`; `archived: false`
|
|
89
103
|
restores), `delete_person` (archives, links kept), `mark_contacted`
|
|
90
104
|
(optional `at` backdates the touch), `add_person_links`/`remove_person_links`
|
|
91
|
-
(`{id, taskIds?, projectIds?, gardenIds?,
|
|
92
|
-
`[{id, label?}]` for person-to-person connections;
|
|
93
|
-
people, re-link with a new label to change it or
|
|
94
|
-
unlink takes the same
|
|
95
|
-
|
|
96
|
-
|
|
105
|
+
(`{id, taskIds?, projectIds?, gardenIds?, readingListItemIds?, bookIds?,
|
|
106
|
+
people?}` — `people` is `[{id, label?}]` for person-to-person connections;
|
|
107
|
+
symmetric, shown on both people, re-link with a new label to change it or
|
|
108
|
+
`label: null` to clear it; unlink takes the same shape, ids only for
|
|
109
|
+
`people`). `create_task(s)` accept `personIds` inline; `list_tasks` filters
|
|
110
|
+
by `person` ids.
|
|
97
111
|
- **Reading list**: `create_reading_item` (`{url, title?, description?,
|
|
98
112
|
status?, tagIds?, personIds?}` — only `url` is required), `list_reading_items`
|
|
99
113
|
(filter by `status[]`/`tagIds`/`personIds`/`query`, or multi-get via `ids`;
|
|
@@ -118,32 +132,49 @@ pre-guessing constraints.
|
|
|
118
132
|
`add_strava_activity_tags`/`remove_strava_activity_tags`,
|
|
119
133
|
`sync_strava_activities` (manual backfill; optional `sinceDays`; capped per
|
|
120
134
|
call — re-run to pull further back in history).
|
|
135
|
+
- **Books**: `search_books` (`q` title/author or `isbn`, at least one
|
|
136
|
+
required), `create_book` (only `title` required; `openLibraryWorkId`/`isbn`
|
|
137
|
+
schedule background metadata + cover enrichment), `list_books` (filter by
|
|
138
|
+
`status[]`/`format[]`/`tagIds`/`personIds`/`query`, or multi-get via `ids`;
|
|
139
|
+
archived excluded unless `includeArchived`), `get_book` (tags, people,
|
|
140
|
+
linked habit, recent sessions), `update_book` (null clears a clearable
|
|
141
|
+
field; `habitId: null` unlinks; `archived`/`deleted: false` restores),
|
|
142
|
+
`delete_book` (soft delete, cover blob kept, restore with `{deleted:
|
|
143
|
+
false}`), `add_book_tags`/`remove_book_tags`, `log_book_session` (`day?`,
|
|
144
|
+
`pagesRead?`, `minutes?`, `endPage?`, `notes?`; retroactive OK, multiple
|
|
145
|
+
sessions per day), `remove_book_session` (never retroactively un-satisfies
|
|
146
|
+
a habit day), `refresh_book_metadata` (`overwrite?` to replace non-empty
|
|
147
|
+
fields). Person links via `add_person_links`/`remove_person_links` with
|
|
148
|
+
`bookIds`.
|
|
121
149
|
- **Saved lists** (named, reusable task-list filters): `list_saved_lists`,
|
|
122
150
|
`create_saved_list`, `update_saved_list`, `delete_saved_list`.
|
|
123
151
|
- **Views & reviews**: `get_view` (today/upcoming/overdue, timezone-aware),
|
|
124
152
|
`get_reviews` (due queue), `review_garden` (deep review),
|
|
125
153
|
`request_garden_review`, `mark_task_reviewed`, `mark_project_reviewed`.
|
|
126
154
|
- **AI**: `find_tasks` (hybrid keyword + semantic search), `ai_triage`
|
|
127
|
-
(brain dump → garden-assigned tasks
|
|
128
|
-
saves/edits/cancels - see Workflows).
|
|
155
|
+
(brain dump → garden-assigned tasks, recurring habits, reading-list
|
|
156
|
+
saves/edits/cancels, and books - see Workflows).
|
|
129
157
|
- **UI (read-only)**: `ui_view`, `ui_review_queue`, `ui_garden_board` return
|
|
130
158
|
`ui://` HTML resources.
|
|
131
159
|
- **Settings**: `get_settings`, `update_settings` (the default review period
|
|
132
160
|
applied to new tasks/projects; `defaultReviewInterval: null` disables it;
|
|
133
161
|
`defaultTimezone`, an IANA string, is also settable - it's what date-only
|
|
134
|
-
deadlines/deferDates from integrations like Linear resolve against
|
|
162
|
+
deadlines/deferDates from integrations like Linear resolve against;
|
|
163
|
+
`yearlyBookGoal`, the reading-challenge target for books finished this
|
|
164
|
+
calendar year - `null` clears it).
|
|
135
165
|
- **Keys**: `create_key`, `list_keys`, `rotate_key`, `revoke_key`.
|
|
136
166
|
|
|
137
167
|
## Workflows
|
|
138
168
|
|
|
139
169
|
- **Capture a brain dump** → `ai_triage` with the raw text. It returns
|
|
140
|
-
`{ created, clarifications, errors, readingItems: { created, updated, clarifications, errors }, habits: { created, clarifications, errors } }`.
|
|
170
|
+
`{ created, clarifications, errors, readingItems: { created, updated, clarifications, errors }, habits: { created, clarifications, errors }, books: { created, clarifications, errors } }`.
|
|
141
171
|
If any `clarifications` array is non-empty, ask the user those questions
|
|
142
172
|
and re-run with the answers folded in — do not guess. `ai_triage` also
|
|
143
173
|
recognizes recurring habits ("meditate daily", "work out 3x/week"), URLs to
|
|
144
|
-
save ("save this for later: https://..."),
|
|
145
|
-
|
|
146
|
-
|
|
174
|
+
save ("save this for later: https://..."), books to add ("add Project
|
|
175
|
+
Hail Mary to my library"), and references to existing saved items ("I
|
|
176
|
+
finished reading X" → marks it read; "remove Y from my reading list" →
|
|
177
|
+
archives it, reversibly, independent of status) — it matches existing
|
|
147
178
|
items by exact title, so an unmatched or ambiguous reference comes back as a
|
|
148
179
|
reading-list clarification rather than a silent no-op or a task.
|
|
149
180
|
- **Plan today** → `get_view today`. Pass the user's IANA `tz` if known so the
|
|
@@ -186,6 +217,12 @@ pre-guessing constraints.
|
|
|
186
217
|
`{id: <chrisId>, people: [{id: <christinaId>, label: "wife"}]}`. The
|
|
187
218
|
connection is symmetric — `get_person` on either shows the other under
|
|
188
219
|
`people`. Unlink with `remove_person_links`; self-links are rejected.
|
|
220
|
+
- **Search, add, and track a book** → `search_books {q}` (or `{isbn}` to
|
|
221
|
+
resolve one edition) → `create_book {title, openLibraryWorkId, ...}` from a
|
|
222
|
+
result (metadata/cover enrich in the background) → `log_book_session {id,
|
|
223
|
+
pagesRead}` as pages are read (auto-promotes `want_to_read` to `reading`)
|
|
224
|
+
→ `update_book {id, status: "read"}` when finished (stamps `finishedDay`
|
|
225
|
+
and force-completes a linked page-goal habit for that day).
|
|
189
226
|
- **Find something** → `find_tasks` (handles fuzzy/semantic queries; narrow to a
|
|
190
227
|
due window with `deadlineBefore` / `deadlineAfter`, inclusive day bounds,
|
|
191
228
|
e.g. `"2026-07-10"` or `"+1w"`).
|
|
@@ -201,10 +238,14 @@ pre-guessing constraints.
|
|
|
201
238
|
from the web app's Settings page, not `apiKeys:bootstrap`.
|
|
202
239
|
- Scopes gate tools: resource tools need `<resource>:read|write` (people tools
|
|
203
240
|
`people:read|write`, settings tools `settings:read|write`, reading list tools
|
|
204
|
-
`reading:read|write`, Strava tools `strava:read|write
|
|
205
|
-
`reviews:*`, `find_tasks`/`ai_triage` need
|
|
206
|
-
need `keys:manage`. A missing scope returns a
|
|
207
|
-
before a feature shipped won't carry its scope
|
|
241
|
+
`reading:read|write`, Strava tools `strava:read|write`, book tools
|
|
242
|
+
`books:read|write`), review tools `reviews:*`, `find_tasks`/`ai_triage` need
|
|
243
|
+
`ai:invoke`, the `*_key` tools need `keys:manage`. A missing scope returns a
|
|
244
|
+
403 tool error. Keys minted before a feature shipped won't carry its scope
|
|
245
|
+
unless they hold `*`. There is no upload tool here (cover uploads are a
|
|
246
|
+
web-only flow, `POST /v1/uploads` before setting `coverStorageId`), but a
|
|
247
|
+
key used for that flow needs `books:write` alongside `tasks:write`/
|
|
248
|
+
`projects:write`.
|
|
208
249
|
- `sync_strava_activities` requires a Strava account already connected (via
|
|
209
250
|
the web UI's Settings page) — it does nothing useful if nobody has
|
|
210
251
|
authorized the app yet.
|
|
@@ -215,6 +256,14 @@ pre-guessing constraints.
|
|
|
215
256
|
- `ai_triage`'s reading-list edits match an existing saved item by its EXACT
|
|
216
257
|
title (from the list the model is given), so a vague reference comes back as
|
|
217
258
|
a `readingItems.clarifications` entry rather than editing the wrong item.
|
|
259
|
+
- `create_book`'s metadata/cover enrichment is best-effort and asynchronous —
|
|
260
|
+
a `get_book` right after `create_book` may still show `metadataStatus:
|
|
261
|
+
"pending"` and no cover; enrichment only fills fields you left empty, so
|
|
262
|
+
user-supplied values always win (`refresh_book_metadata {overwrite: true}`
|
|
263
|
+
to force a re-fetch to overwrite them). The linked-habit sync
|
|
264
|
+
never downgrades: removing a reading session or checking a habit manually
|
|
265
|
+
can never lower or delete an existing completion, so unlogging a session
|
|
266
|
+
cannot retroactively un-satisfy a day that's already checked off.
|
|
218
267
|
- `delete_person` archives (links kept); restore with `update_person
|
|
219
268
|
{archived: false}`. Birthdays/anniversaries are `"YYYY-MM-DD"` or `"MM-DD"`
|
|
220
269
|
strings, not timestamps. `mark_contacted` also works with a `reviews:write`
|