@cpenned/mcp 0.8.4 → 0.9.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/README.md +34 -7
- package/dist/client.js +40 -6
- package/dist/client.js.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/server.js +16 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/api.js +41 -0
- package/dist/tools/api.js.map +1 -0
- package/dist/tools/attachments.js +43 -0
- package/dist/tools/attachments.js.map +1 -0
- package/dist/tools/books.js +24 -18
- package/dist/tools/books.js.map +1 -1
- package/dist/tools/comments.js +63 -0
- package/dist/tools/comments.js.map +1 -0
- package/dist/tools/gardens.js +8 -7
- package/dist/tools/gardens.js.map +1 -1
- package/dist/tools/habits.js +26 -18
- package/dist/tools/habits.js.map +1 -1
- package/dist/tools/index.js +2 -34
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/keys.js +23 -7
- package/dist/tools/keys.js.map +1 -1
- package/dist/tools/lists.js +6 -5
- package/dist/tools/lists.js.map +1 -1
- package/dist/tools/people.js +17 -15
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/profile.js +18 -6
- package/dist/tools/profile.js.map +1 -1
- package/dist/tools/projects.js +14 -8
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/reading.js +11 -10
- package/dist/tools/reading.js.map +1 -1
- package/dist/tools/render.js +11 -2
- package/dist/tools/render.js.map +1 -1
- package/dist/tools/schemas.js +6 -1
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/shares.js +4 -3
- package/dist/tools/shares.js.map +1 -1
- package/dist/tools/strava.js +13 -9
- package/dist/tools/strava.js.map +1 -1
- package/dist/tools/tags.js +8 -7
- package/dist/tools/tags.js.map +1 -1
- package/dist/tools/tasks.js +17 -11
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/ui.js +34 -13
- package/dist/tools/ui.js.map +1 -1
- package/dist/tools/views.js +12 -10
- package/dist/tools/views.js.map +1 -1
- package/package.json +1 -1
- package/skills/open-brain-mcp/SKILL.md +61 -18
package/README.md
CHANGED
|
@@ -21,6 +21,11 @@ additionally need the key to have been minted with `includeGrants: true` (via
|
|
|
21
21
|
`create_key`'s `includeGrants` flag or the web app) - without it, a key only
|
|
22
22
|
ever sees the vault's own data, even with `*`.
|
|
23
23
|
|
|
24
|
+
The stdio server sends the machine's IANA timezone as `X-Timezone` on every
|
|
25
|
+
request, so relative dates (`today`, `+3d`) and views resolve in your zone.
|
|
26
|
+
The hosted server does not (it would send the server's zone), so it falls
|
|
27
|
+
back to the vault's `defaultTimezone`.
|
|
28
|
+
|
|
24
29
|
## Run
|
|
25
30
|
|
|
26
31
|
The package is published to npm, so the simplest path needs no clone or build -
|
|
@@ -84,14 +89,19 @@ Point the `args` at the absolute `packages/mcp/dist/index.js` path with
|
|
|
84
89
|
`update_task(s)` as a user id, `"me"`, or `null` to unassign - only
|
|
85
90
|
meaningful in a garden shared with another user, see Mind Meld below);
|
|
86
91
|
`list_tasks` filters by `assignee: "me"|"unassigned"|<userId>`.
|
|
92
|
+
`create_task(s)` and `create_project(s)` accept an initial `status`
|
|
93
|
+
(`backlog|todo|in_progress|done|canceled`, default `todo`). Path ids are
|
|
94
|
+
validated (`[A-Za-z0-9_-]`) and URL-encoded. Read tools carry
|
|
95
|
+
`readOnlyHint` and delete/remove/revoke/rotate tools `destructiveHint`
|
|
96
|
+
annotations.
|
|
87
97
|
- **People** (personal CRM): `create_person`, `list_people` (`query` searches
|
|
88
98
|
name, aliases, company, notes, and more), `get_person`,
|
|
89
99
|
`update_person` (null clears fields; `archived: false` restores),
|
|
90
100
|
`delete_person` (archives), `mark_contacted` (optional `at` backdates),
|
|
91
101
|
`add_person_links`/`remove_person_links` (link people to tasks, projects,
|
|
92
102
|
gardens, and other people — person-to-person connections are symmetric and
|
|
93
|
-
take an optional label like "spouse", plus `readingListItemIds`
|
|
94
|
-
side). People with an elapsed contact cadence appear in `get_reviews`
|
|
103
|
+
take an optional label like "spouse", plus `readingListItemIds` and
|
|
104
|
+
`habitIds` on either side). People with an elapsed contact cadence appear in `get_reviews`
|
|
95
105
|
and `ui_review_queue`; `list_tasks` filters by `person` ids.
|
|
96
106
|
- **Reading list**: `create_reading_item` (only `url` is required; title/
|
|
97
107
|
description are fetched from the page in the background), `list_reading_items`,
|
|
@@ -100,7 +110,7 @@ Point the `args` at the absolute `packages/mcp/dist/index.js` path with
|
|
|
100
110
|
independently of status), `delete_reading_item` (true soft delete, hidden
|
|
101
111
|
everywhere; restore with `{deleted: false}`), `add_reading_tags`/
|
|
102
112
|
`remove_reading_tags`.
|
|
103
|
-
- **Habits**: `create_habit`, `list_habits
|
|
113
|
+
- **Habits**: `create_habit`, `list_habits` (pass `cursor` for the next page), `get_habit`, `update_habit`,
|
|
104
114
|
`archive_habit`, `unarchive_habit`, `complete_habit`,
|
|
105
115
|
`remove_habit_completion`, `reorder_habits`, `add_habit_tags`, and
|
|
106
116
|
`remove_habit_tags`. Habits support daily, weekly, monthly, and every-N-days
|
|
@@ -135,8 +145,22 @@ Point the `args` at the absolute `packages/mcp/dist/index.js` path with
|
|
|
135
145
|
for that day - never downgrading a manual completion),
|
|
136
146
|
`remove_book_session`, `refresh_book_metadata` (`overwrite?`).
|
|
137
147
|
`add_person_links`/`remove_person_links` take `bookIds`.
|
|
148
|
+
- **Attachments** (read-only; upload is web/app-only): `list_task_attachments`,
|
|
149
|
+
`get_attachment`, `get_attachment_url` (short-lived signed URL, optional
|
|
150
|
+
`variant` served/original/thumbnail). Needs `tasks:read`.
|
|
151
|
+
- **Comments**: `list_task_comments` (oldest first, plus the `participants`
|
|
152
|
+
who can be @mentioned), `add_task_comment` / `edit_task_comment`
|
|
153
|
+
(`{taskId, [commentId,] body, mentions?}`), `delete_task_comment`. `body` is
|
|
154
|
+
Markdown; mention inline with `@[Display Name](userId)`, or pass `mentions`
|
|
155
|
+
as user ids or display names and the server places the token. Anyone who can
|
|
156
|
+
see the task can comment (shared tasks need an `includeGrants` key); only the
|
|
157
|
+
author edits, the author or garden owner deletes. Mentioned people get an
|
|
158
|
+
email per their prefs. Tasks carry `commentCount` (omitted when 0), which
|
|
159
|
+
the UI tools show. Needs `tasks:read` / `tasks:write`.
|
|
138
160
|
- **Views & reviews**: `get_view`, `get_reviews`, `review_garden`,
|
|
139
161
|
`request_garden_review`, `mark_task_reviewed`, `mark_project_reviewed`.
|
|
162
|
+
Views resolve "today" in the timezone of the machine running the server
|
|
163
|
+
unless you pass `tz`.
|
|
140
164
|
- **Settings**: `get_settings`, `update_settings` — the default review period
|
|
141
165
|
applied to new tasks/projects (2 weeks out of the box;
|
|
142
166
|
`defaultReviewInterval: null` disables it, and `reviewInterval: null` on
|
|
@@ -147,7 +171,8 @@ Point the `args` at the absolute `packages/mcp/dist/index.js` path with
|
|
|
147
171
|
- **AI**: `find_tasks` (hybrid search), `ai_triage` (brain-dump triage).
|
|
148
172
|
- **UI (read-only MCPUI)**: `ui_view`, `ui_review_queue`, `ui_garden_board`,
|
|
149
173
|
`ui_habits`
|
|
150
|
-
return `ui://` HTML resources.
|
|
174
|
+
return `ui://` HTML resources. `ui_view` and `ui_habits` take a `cursor` and
|
|
175
|
+
say when a page was cut short.
|
|
151
176
|
- **Mind Meld** (shared gardens, guest side - sharing/invites/revoke are
|
|
152
177
|
web-app-only): `list_shares` (gardens shared with the caller: capabilities,
|
|
153
178
|
owner, participants - empty unless the key has `includeGrants`),
|
|
@@ -158,12 +183,14 @@ Point the `args` at the absolute `packages/mcp/dist/index.js` path with
|
|
|
158
183
|
capability grant rather than the usual status machine: `complete` only
|
|
159
184
|
moves an open task to `done`; any other move (including reopening `done`/
|
|
160
185
|
`canceled`) needs `edit`; `canceled` needs `cancel`.
|
|
161
|
-
- **Profile**: `get_profile`, `update_profile` (`displayName`, 1-60 chars
|
|
162
|
-
|
|
186
|
+
- **Profile**: `get_profile`, `update_profile` (`displayName`, 1-60 chars,
|
|
187
|
+
and/or `notifications: {emailOnMention?, emailOnAssign?}` to turn mention and
|
|
188
|
+
assignment emails on or off; avatar upload is web-only).
|
|
163
189
|
- **Key management**: `create_key` (optional `includeGrants` so the minted key
|
|
164
190
|
can see gardens shared with its owner - only settable if the calling key
|
|
165
191
|
itself has it), `list_keys`, `rotate_key`, `revoke_key`
|
|
166
|
-
(require the configured key to hold `keys:manage`).
|
|
192
|
+
(require the configured key to hold `keys:manage`). `rotate_key` and
|
|
193
|
+
`revoke_key` refuse the key the server itself is configured with. A key can only grant
|
|
167
194
|
scopes it itself holds; secrets are returned once. Grant `keys:manage`
|
|
168
195
|
deliberately - it lets the agent mint and revoke keys.
|
|
169
196
|
- **Skills**: `install_skills` copies the bundled `open-brain-mcp` agent skill
|
package/dist/client.js
CHANGED
|
@@ -6,6 +6,29 @@ export class ApiError extends Error {
|
|
|
6
6
|
this.name = "ApiError";
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
+
// Builds an API path with every interpolated value percent-encoded, so an id
|
|
10
|
+
// like "../keys/x" stays one segment instead of resolving to another route.
|
|
11
|
+
export function apiPath(strings, ...segments) {
|
|
12
|
+
return strings.reduce((out, literal, i) => {
|
|
13
|
+
if (i >= segments.length)
|
|
14
|
+
return out + literal;
|
|
15
|
+
const segment = String(segments[i]);
|
|
16
|
+
if (segment === "" || segment === "." || segment === "..") {
|
|
17
|
+
throw new Error(`Invalid path segment: "${segment}"`);
|
|
18
|
+
}
|
|
19
|
+
return out + literal + encodeURIComponent(segment);
|
|
20
|
+
}, "");
|
|
21
|
+
}
|
|
22
|
+
function parseBody(text) {
|
|
23
|
+
if (!text)
|
|
24
|
+
return { ok: true, data: null };
|
|
25
|
+
try {
|
|
26
|
+
return { ok: true, data: JSON.parse(text) };
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return { ok: false };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
9
32
|
export class OpenBrainClient {
|
|
10
33
|
config;
|
|
11
34
|
fetchFn;
|
|
@@ -31,20 +54,31 @@ export class OpenBrainClient {
|
|
|
31
54
|
headers["Content-Type"] = "application/json";
|
|
32
55
|
if (opts.idempotencyKey)
|
|
33
56
|
headers["Idempotency-Key"] = opts.idempotencyKey;
|
|
34
|
-
|
|
35
|
-
|
|
57
|
+
const timezone = opts.timezone ?? this.config.timezone;
|
|
58
|
+
if (timezone)
|
|
59
|
+
headers["X-Timezone"] = timezone;
|
|
36
60
|
const res = await this.fetchFn(url.toString(), {
|
|
37
61
|
method,
|
|
38
62
|
headers,
|
|
39
63
|
body: opts.body !== undefined ? JSON.stringify(opts.body) : undefined,
|
|
40
64
|
});
|
|
41
65
|
const text = await res.text();
|
|
42
|
-
const
|
|
66
|
+
const parsed = parseBody(text);
|
|
43
67
|
if (!res.ok) {
|
|
44
|
-
const
|
|
45
|
-
|
|
68
|
+
const apiMessage = parsed.ok
|
|
69
|
+
? parsed.data?.error?.message
|
|
70
|
+
: undefined;
|
|
71
|
+
throw new ApiError(res.status, apiMessage || res.statusText || `HTTP ${res.status}`);
|
|
72
|
+
}
|
|
73
|
+
if (!parsed.ok) {
|
|
74
|
+
throw new ApiError(res.status, "Response was not valid JSON");
|
|
46
75
|
}
|
|
47
|
-
return data;
|
|
76
|
+
return parsed.data;
|
|
77
|
+
}
|
|
78
|
+
// Whether this client authenticates with the key whose public prefix is given
|
|
79
|
+
// (GET /v1/keys exposes only the prefix, never the secret).
|
|
80
|
+
usesKey(prefix) {
|
|
81
|
+
return prefix.length > 0 && this.config.apiKey.startsWith(prefix);
|
|
48
82
|
}
|
|
49
83
|
get(path, query) {
|
|
50
84
|
return this.request("GET", path, { query });
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEf;IADlB,YACkB,MAAc,EAC9B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QAI9B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAmBA,uEAAuE;AACvE,qBAAqB;AACrB,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO;QACL,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAClC,MAAM;QACN,UAAU,EAAE,GAAG,CAAC,sBAAsB,IAAI,KAAK;QAC/C,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;KAC3D,CAAC;AACJ,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -14,9 +14,25 @@ function buildInstructions(localSkills) {
|
|
|
14
14
|
return (`${base} The bundled agent skill (${missing.map((s) => s.name).join(", ")}) is not installed on this machine. ` +
|
|
15
15
|
"Early in the first conversation, offer once to install it with the install_skills tool (a local copy into ~/.claude/skills) so future sessions drive these tools well; respect the user's answer and don't re-offer.");
|
|
16
16
|
}
|
|
17
|
+
const READ_ONLY_TOOL = /^(get|list|find|search|ui)_|^review_garden$/;
|
|
18
|
+
const DESTRUCTIVE_TOOL = /^(delete|revoke|rotate|remove)_/;
|
|
19
|
+
// Derived from the tool naming convention so every new tool is annotated
|
|
20
|
+
// without per-registration boilerplate. Unmatched tools keep the SDK defaults.
|
|
21
|
+
export function toolAnnotations(name) {
|
|
22
|
+
if (READ_ONLY_TOOL.test(name))
|
|
23
|
+
return { readOnlyHint: true };
|
|
24
|
+
if (DESTRUCTIVE_TOOL.test(name))
|
|
25
|
+
return { destructiveHint: true };
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
function annotateRegistrations(server) {
|
|
29
|
+
const register = server.registerTool.bind(server);
|
|
30
|
+
server.registerTool = ((name, config, cb) => register(name, { ...config, annotations: { ...toolAnnotations(name), ...config.annotations } }, cb));
|
|
31
|
+
}
|
|
17
32
|
export function createServer(client, options = {}) {
|
|
18
33
|
const localSkills = options.localSkills ?? true;
|
|
19
34
|
const server = new McpServer({ name: "open-brain", version: "0.1.0" }, { instructions: buildInstructions(localSkills) });
|
|
35
|
+
annotateRegistrations(server);
|
|
20
36
|
registerAllTools(server, client);
|
|
21
37
|
if (localSkills)
|
|
22
38
|
registerSkillTools(server);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErE,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,SAAS,iBAAiB,CAAC,WAAoB;IAC7C,MAAM,IAAI,GACR,8GAA8G,CAAC;IACjH,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,CACL,GAAG,IAAI,6BAA6B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC;QAC/G,sNAAsN,CACvN,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,6CAA6C,CAAC;AACrE,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAE3D,yEAAyE;AACzE,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAClE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAiB;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAIN,CAAC;IAC3C,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAC1C,QAAQ,CACN,IAAI,EACJ,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,EAC/E,EAAE,CACH,CAA8B,CAAC;AACpC,CAAC;AAQD,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,UAA+B,EAAE;IAEjC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,EACxC,EAAE,YAAY,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAAE,CACjD,CAAC;IACF,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,WAAW;QAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { registerAiTools } from "./ai.js";
|
|
2
|
+
import { registerAttachmentTools } from "./attachments.js";
|
|
3
|
+
import { registerBookTools } from "./books.js";
|
|
4
|
+
import { registerCalendarTools } from "./calendar.js";
|
|
5
|
+
import { registerCommentTools } from "./comments.js";
|
|
6
|
+
import { registerGardenTools } from "./gardens.js";
|
|
7
|
+
import { registerHabitTools } from "./habits.js";
|
|
8
|
+
import { registerKeyTools } from "./keys.js";
|
|
9
|
+
import { registerListTools } from "./lists.js";
|
|
10
|
+
import { registerPeopleTools } from "./people.js";
|
|
11
|
+
import { registerProfileTools } from "./profile.js";
|
|
12
|
+
import { registerProjectTools } from "./projects.js";
|
|
13
|
+
import { registerReadingTools } from "./reading.js";
|
|
14
|
+
import { registerSettingsTools } from "./settings.js";
|
|
15
|
+
import { registerShareTools } from "./shares.js";
|
|
16
|
+
import { registerStravaTools } from "./strava.js";
|
|
17
|
+
import { registerTagTools } from "./tags.js";
|
|
18
|
+
import { registerTaskTools } from "./tasks.js";
|
|
19
|
+
import { registerViewTools } from "./views.js";
|
|
20
|
+
export function registerApiTools(server, client) {
|
|
21
|
+
registerTaskTools(server, client);
|
|
22
|
+
registerCommentTools(server, client);
|
|
23
|
+
registerAttachmentTools(server, client);
|
|
24
|
+
registerProjectTools(server, client);
|
|
25
|
+
registerGardenTools(server, client);
|
|
26
|
+
registerTagTools(server, client);
|
|
27
|
+
registerPeopleTools(server, client);
|
|
28
|
+
registerReadingTools(server, client);
|
|
29
|
+
registerHabitTools(server, client);
|
|
30
|
+
registerBookTools(server, client);
|
|
31
|
+
registerStravaTools(server, client);
|
|
32
|
+
registerCalendarTools(server, client);
|
|
33
|
+
registerListTools(server, client);
|
|
34
|
+
registerViewTools(server, client);
|
|
35
|
+
registerAiTools(server, client);
|
|
36
|
+
registerKeyTools(server, client);
|
|
37
|
+
registerSettingsTools(server, client);
|
|
38
|
+
registerShareTools(server, client);
|
|
39
|
+
registerProfileTools(server, client);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/tools/api.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,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,cAAc,CAAC;AACpD,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,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,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,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,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,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,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Attachment read tools: a task's attached files and a short-lived download URL
|
|
2
|
+
// for one. Access follows the parent entity (tasks:read for task attachments).
|
|
3
|
+
// Uploading stays in the web app and native apps.
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { apiPath } from "../client.js";
|
|
6
|
+
import { runTool } from "../result.js";
|
|
7
|
+
import { idField } from "./schemas.js";
|
|
8
|
+
const listTaskAttachmentsSchema = z.object({ taskId: idField });
|
|
9
|
+
export function listTaskAttachments(client, args) {
|
|
10
|
+
return client.get(apiPath `/v1/tasks/${args.taskId}/attachments`);
|
|
11
|
+
}
|
|
12
|
+
const getAttachmentSchema = z.object({ id: idField.describe("Attachment id") });
|
|
13
|
+
export function getAttachment(client, args) {
|
|
14
|
+
return client.get(apiPath `/v1/attachments/${args.id}`);
|
|
15
|
+
}
|
|
16
|
+
const getAttachmentUrlSchema = z.object({
|
|
17
|
+
id: idField.describe("Attachment id"),
|
|
18
|
+
variant: z
|
|
19
|
+
.enum(["served", "original", "thumbnail"])
|
|
20
|
+
.optional()
|
|
21
|
+
.describe("served (default) is the stored file; original is the pre-processing upload; thumbnail is the preview image, when one exists"),
|
|
22
|
+
});
|
|
23
|
+
export function getAttachmentUrl(client, args) {
|
|
24
|
+
return client.get(apiPath `/v1/attachments/${args.id}/url`, { variant: args.variant });
|
|
25
|
+
}
|
|
26
|
+
export function registerAttachmentTools(server, client) {
|
|
27
|
+
server.registerTool("list_task_attachments", {
|
|
28
|
+
title: "List task attachments",
|
|
29
|
+
description: "List the files attached to a task (metadata only, no contents).",
|
|
30
|
+
inputSchema: listTaskAttachmentsSchema.shape,
|
|
31
|
+
}, (args) => runTool(() => listTaskAttachments(client, args)));
|
|
32
|
+
server.registerTool("get_attachment", {
|
|
33
|
+
title: "Get attachment",
|
|
34
|
+
description: "Fetch one attachment's metadata.",
|
|
35
|
+
inputSchema: getAttachmentSchema.shape,
|
|
36
|
+
}, (args) => runTool(() => getAttachment(client, args)));
|
|
37
|
+
server.registerTool("get_attachment_url", {
|
|
38
|
+
title: "Get attachment URL",
|
|
39
|
+
description: "A short-lived signed download URL for an attachment ({ url }; url is null when the variant does not exist).",
|
|
40
|
+
inputSchema: getAttachmentUrlSchema.shape,
|
|
41
|
+
}, (args) => runTool(() => getAttachmentUrl(client, args)));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=attachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/tools/attachments.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,kDAAkD;AAGlD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAwB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAEhE,MAAM,UAAU,mBAAmB,CACjC,MAAuB,EACvB,IAA6B;IAE7B,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAA,aAAa,IAAI,CAAC,MAAM,cAAc,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAEhF,MAAM,UAAU,aAAa,CAAC,MAAuB,EAAE,IAAuB;IAC5E,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAA,mBAAmB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACrC,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;SACzC,QAAQ,EAAE;SACV,QAAQ,CACP,6HAA6H,CAC9H;CACJ,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAAC,MAAuB,EAAE,IAA0B;IAClF,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAA,mBAAmB,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,MAAuB;IAEvB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,yBAAyB,CAAC,KAAK;KAC7C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAC3D,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE,mBAAmB,CAAC,KAAK;KACvC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CACrD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,6GAA6G;QAC/G,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;AACJ,CAAC"}
|
package/dist/tools/books.js
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
// can force an overwrite. Person links live on the person side
|
|
10
10
|
// (add_person_links/remove_person_links), not here.
|
|
11
11
|
import { z } from "zod";
|
|
12
|
+
import { apiPath } from "../client.js";
|
|
12
13
|
import { runTool } from "../result.js";
|
|
13
|
-
import { bookFormatEnum, bookStatusEnum, idempotencyKey } from "./schemas.js";
|
|
14
|
+
import { bookFormatEnum, bookStatusEnum, idempotencyKey, idField } from "./schemas.js";
|
|
14
15
|
const createBookSchema = z.object({
|
|
15
16
|
title: z.string(),
|
|
16
17
|
subtitle: z.string().optional(),
|
|
@@ -80,12 +81,12 @@ export function listBooks(client, args) {
|
|
|
80
81
|
includeArchived: args.includeArchived,
|
|
81
82
|
});
|
|
82
83
|
}
|
|
83
|
-
const getBookSchema = z.object({ id:
|
|
84
|
+
const getBookSchema = z.object({ id: idField });
|
|
84
85
|
export function getBook(client, args) {
|
|
85
|
-
return client.get(`/v1/books/${args.id}`);
|
|
86
|
+
return client.get(apiPath `/v1/books/${args.id}`);
|
|
86
87
|
}
|
|
87
88
|
const updateBookSchema = z.object({
|
|
88
|
-
id:
|
|
89
|
+
id: idField,
|
|
89
90
|
title: z.string().optional(),
|
|
90
91
|
subtitle: z.string().nullable().optional().describe("null clears"),
|
|
91
92
|
authors: z.array(z.string()).optional(),
|
|
@@ -129,45 +130,50 @@ const updateBookSchema = z.object({
|
|
|
129
130
|
});
|
|
130
131
|
export function updateBook(client, args) {
|
|
131
132
|
const { id, ...patch } = args;
|
|
132
|
-
return client.patch(`/v1/books/${id}`, patch);
|
|
133
|
+
return client.patch(apiPath `/v1/books/${id}`, patch);
|
|
133
134
|
}
|
|
134
|
-
const deleteBookSchema = z.object({ id:
|
|
135
|
+
const deleteBookSchema = z.object({ id: idField });
|
|
135
136
|
export function deleteBook(client, args) {
|
|
136
|
-
return client.del(`/v1/books/${args.id}`);
|
|
137
|
+
return client.del(apiPath `/v1/books/${args.id}`);
|
|
137
138
|
}
|
|
138
|
-
const bookTagsSchema = z.object({ id:
|
|
139
|
+
const bookTagsSchema = z.object({ id: idField, tagIds: z.array(z.string()) });
|
|
139
140
|
export function addBookTags(client, args) {
|
|
140
|
-
return client.post(`/v1/books/${args.id}/tags`, { tagIds: args.tagIds });
|
|
141
|
+
return client.post(apiPath `/v1/books/${args.id}/tags`, { tagIds: args.tagIds });
|
|
141
142
|
}
|
|
142
143
|
export function removeBookTags(client, args) {
|
|
143
|
-
return client.request("DELETE", `/v1/books/${args.id}/tags`, {
|
|
144
|
+
return client.request("DELETE", apiPath `/v1/books/${args.id}/tags`, {
|
|
144
145
|
body: { tagIds: args.tagIds },
|
|
145
146
|
});
|
|
146
147
|
}
|
|
147
148
|
const logBookSessionSchema = z.object({
|
|
148
|
-
id:
|
|
149
|
+
id: idField.describe("Book id"),
|
|
149
150
|
day: z
|
|
150
151
|
.string()
|
|
151
152
|
.optional()
|
|
152
153
|
.describe('Calendar day "YYYY-MM-DD"; defaults to today in vault timezone'),
|
|
153
|
-
pagesRead: z
|
|
154
|
+
pagesRead: z
|
|
155
|
+
.number()
|
|
156
|
+
.int()
|
|
157
|
+
.positive()
|
|
158
|
+
.optional()
|
|
159
|
+
.describe("Pages read; without endPage the session continues from the current page and moves it forward"),
|
|
154
160
|
minutes: z.number().int().positive().optional(),
|
|
155
161
|
endPage: z.number().int().positive().optional(),
|
|
156
162
|
notes: z.string().optional(),
|
|
157
163
|
});
|
|
158
164
|
export function logBookSession(client, args) {
|
|
159
165
|
const { id, ...body } = args;
|
|
160
|
-
return client.post(`/v1/books/${id}/sessions`, body);
|
|
166
|
+
return client.post(apiPath `/v1/books/${id}/sessions`, body);
|
|
161
167
|
}
|
|
162
168
|
const removeBookSessionSchema = z.object({
|
|
163
|
-
id:
|
|
164
|
-
sessionId:
|
|
169
|
+
id: idField.describe("Book id"),
|
|
170
|
+
sessionId: idField,
|
|
165
171
|
});
|
|
166
172
|
export function removeBookSession(client, args) {
|
|
167
|
-
return client.del(`/v1/books/${args.id}/sessions/${args.sessionId}`);
|
|
173
|
+
return client.del(apiPath `/v1/books/${args.id}/sessions/${args.sessionId}`);
|
|
168
174
|
}
|
|
169
175
|
const refreshBookMetadataSchema = z.object({
|
|
170
|
-
id:
|
|
176
|
+
id: idField,
|
|
171
177
|
overwrite: z
|
|
172
178
|
.boolean()
|
|
173
179
|
.optional()
|
|
@@ -175,7 +181,7 @@ const refreshBookMetadataSchema = z.object({
|
|
|
175
181
|
});
|
|
176
182
|
export function refreshBookMetadata(client, args) {
|
|
177
183
|
const { id, ...body } = args;
|
|
178
|
-
return client.post(`/v1/books/${id}/metadata`, body);
|
|
184
|
+
return client.post(apiPath `/v1/books/${id}/metadata`, body);
|
|
179
185
|
}
|
|
180
186
|
export function registerBookTools(server, client) {
|
|
181
187
|
server.registerTool("search_books", {
|
package/dist/tools/books.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"books.js","sourceRoot":"","sources":["../../src/tools/books.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"books.js","sourceRoot":"","sources":["../../src/tools/books.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Task comment tools. Anyone who can see a task can comment on it (home tasks,
|
|
2
|
+
// and shared tasks with an includeGrants key). Only the author edits; the author
|
|
3
|
+
// or the garden owner deletes.
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { apiPath } from "../client.js";
|
|
6
|
+
import { runTool } from "../result.js";
|
|
7
|
+
import { idField } from "./schemas.js";
|
|
8
|
+
const commentBody = z
|
|
9
|
+
.string()
|
|
10
|
+
.describe("Markdown, 1-10000 chars. Mention someone inline with the token @[Display Name](userId); a token for someone outside the task's garden becomes plain @Name text.");
|
|
11
|
+
const mentions = z
|
|
12
|
+
.array(z.string())
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("People to @mention, as participant userIds or display names (case-insensitive, leading @ ok). A plain @Name already in the body becomes a token; otherwise the token is prepended. Unknown names are an error.");
|
|
15
|
+
const listTaskCommentsSchema = z.object({ taskId: idField });
|
|
16
|
+
export function listTaskComments(client, args) {
|
|
17
|
+
return client.get(apiPath `/v1/tasks/${args.taskId}/comments`);
|
|
18
|
+
}
|
|
19
|
+
const addTaskCommentSchema = z.object({ taskId: idField, body: commentBody, mentions });
|
|
20
|
+
export function addTaskComment(client, args) {
|
|
21
|
+
const { taskId, ...body } = args;
|
|
22
|
+
return client.post(apiPath `/v1/tasks/${taskId}/comments`, body);
|
|
23
|
+
}
|
|
24
|
+
const editTaskCommentSchema = z.object({
|
|
25
|
+
taskId: idField,
|
|
26
|
+
commentId: idField.describe("Comment id"),
|
|
27
|
+
body: commentBody,
|
|
28
|
+
mentions,
|
|
29
|
+
});
|
|
30
|
+
export function editTaskComment(client, args) {
|
|
31
|
+
const { taskId, commentId, ...body } = args;
|
|
32
|
+
return client.patch(apiPath `/v1/tasks/${taskId}/comments/${commentId}`, body);
|
|
33
|
+
}
|
|
34
|
+
const deleteTaskCommentSchema = z.object({
|
|
35
|
+
taskId: idField,
|
|
36
|
+
commentId: idField.describe("Comment id"),
|
|
37
|
+
});
|
|
38
|
+
export function deleteTaskComment(client, args) {
|
|
39
|
+
return client.del(apiPath `/v1/tasks/${args.taskId}/comments/${args.commentId}`);
|
|
40
|
+
}
|
|
41
|
+
export function registerCommentTools(server, client) {
|
|
42
|
+
server.registerTool("list_task_comments", {
|
|
43
|
+
title: "List task comments",
|
|
44
|
+
description: "A task's comments, oldest first (max 200), plus participants: the people in the task's garden who can be @mentioned ({ userId, displayName, avatarUrl, role }). Each comment has body (with mention tokens), text (tokens rendered as @Name), mentions, canEdit and canDelete.",
|
|
45
|
+
inputSchema: listTaskCommentsSchema.shape,
|
|
46
|
+
}, (args) => runTool(() => listTaskComments(client, args)));
|
|
47
|
+
server.registerTool("add_task_comment", {
|
|
48
|
+
title: "Add task comment",
|
|
49
|
+
description: "Comment on a task (home or shared with the caller). Mentioned people get an email, per their notification prefs; never the caller.",
|
|
50
|
+
inputSchema: addTaskCommentSchema.shape,
|
|
51
|
+
}, (args) => runTool(() => addTaskComment(client, args)));
|
|
52
|
+
server.registerTool("edit_task_comment", {
|
|
53
|
+
title: "Edit task comment",
|
|
54
|
+
description: "Replace a comment's body. Only the comment's author may edit (403 otherwise).",
|
|
55
|
+
inputSchema: editTaskCommentSchema.shape,
|
|
56
|
+
}, (args) => runTool(() => editTaskComment(client, args)));
|
|
57
|
+
server.registerTool("delete_task_comment", {
|
|
58
|
+
title: "Delete task comment",
|
|
59
|
+
description: "Delete a comment. Allowed for its author or the garden owner.",
|
|
60
|
+
inputSchema: deleteTaskCommentSchema.shape,
|
|
61
|
+
}, (args) => runTool(() => deleteTaskComment(client, args)));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/tools/comments.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/gardens.js
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
// them (soft-delete). The Markdown `context` is what AI triage reads to assign
|
|
3
3
|
// tasks, so it is a first-class field here.
|
|
4
4
|
import { z } from "zod";
|
|
5
|
+
import { apiPath } from "../client.js";
|
|
5
6
|
import { runTool } from "../result.js";
|
|
6
|
-
import { idempotencyKey } from "./schemas.js";
|
|
7
|
+
import { idempotencyKey, idField } from "./schemas.js";
|
|
7
8
|
const gardenFields = {
|
|
8
9
|
name: z.string(),
|
|
9
10
|
notes: z.string().optional(),
|
|
@@ -31,12 +32,12 @@ export function listGardens(client, args) {
|
|
|
31
32
|
limit: args.limit,
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
|
-
const getGardenSchema = z.object({ id:
|
|
35
|
+
const getGardenSchema = z.object({ id: idField });
|
|
35
36
|
export function getGarden(client, args) {
|
|
36
|
-
return client.get(`/v1/gardens/${args.id}`);
|
|
37
|
+
return client.get(apiPath `/v1/gardens/${args.id}`);
|
|
37
38
|
}
|
|
38
39
|
const updateGardenSchema = z.object({
|
|
39
|
-
id:
|
|
40
|
+
id: idField,
|
|
40
41
|
name: z.string().optional(),
|
|
41
42
|
notes: z.string().optional(),
|
|
42
43
|
context: z.string().optional(),
|
|
@@ -46,11 +47,11 @@ const updateGardenSchema = z.object({
|
|
|
46
47
|
});
|
|
47
48
|
export function updateGarden(client, args) {
|
|
48
49
|
const { id, ...patch } = args;
|
|
49
|
-
return client.patch(`/v1/gardens/${id}`, patch);
|
|
50
|
+
return client.patch(apiPath `/v1/gardens/${id}`, patch);
|
|
50
51
|
}
|
|
51
|
-
const deleteGardenSchema = z.object({ id:
|
|
52
|
+
const deleteGardenSchema = z.object({ id: idField });
|
|
52
53
|
export function deleteGarden(client, args) {
|
|
53
|
-
return client.del(`/v1/gardens/${args.id}`);
|
|
54
|
+
return client.del(apiPath `/v1/gardens/${args.id}`);
|
|
54
55
|
}
|
|
55
56
|
export function registerGardenTools(server, client) {
|
|
56
57
|
server.registerTool("create_garden", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gardens.js","sourceRoot":"","sources":["../../src/tools/gardens.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,+EAA+E;AAC/E,4CAA4C;AAG5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"gardens.js","sourceRoot":"","sources":["../../src/tools/gardens.ts"],"names":[],"mappings":"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"}
|