babylitics-mcp 0.5.0 → 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 +0 -15
- package/dist/auth/device-flow.d.ts +11 -1
- package/dist/auth/device-flow.d.ts.map +1 -1
- package/dist/auth/device-flow.js +73 -43
- package/dist/auth/device-flow.js.map +1 -1
- package/dist/graphql/client.d.ts +2 -0
- package/dist/graphql/client.d.ts.map +1 -1
- package/dist/graphql/client.js +3 -0
- package/dist/graphql/client.js.map +1 -1
- package/dist/graphql/queries.d.ts +9 -9
- package/dist/graphql/queries.d.ts.map +1 -1
- package/dist/graphql/queries.js +84 -53
- package/dist/graphql/queries.js.map +1 -1
- package/dist/index.js +9 -14
- package/dist/index.js.map +1 -1
- package/dist/tools/babies.js +2 -2
- package/dist/tools/babies.js.map +1 -1
- package/dist/tools/dashboard.d.ts.map +1 -1
- package/dist/tools/dashboard.js +5 -4
- package/dist/tools/dashboard.js.map +1 -1
- package/dist/tools/feedings.d.ts.map +1 -1
- package/dist/tools/feedings.js +16 -12
- package/dist/tools/feedings.js.map +1 -1
- package/dist/tools/helpers.d.ts +7 -0
- package/dist/tools/helpers.d.ts.map +1 -1
- package/dist/tools/helpers.js +33 -0
- package/dist/tools/helpers.js.map +1 -1
- package/dist/tools/lengths.js +4 -4
- package/dist/tools/lengths.js.map +1 -1
- package/dist/tools/sleep.d.ts.map +1 -1
- package/dist/tools/sleep.js +16 -8
- package/dist/tools/sleep.js.map +1 -1
- package/dist/tools/temperatures.js +4 -4
- package/dist/tools/temperatures.js.map +1 -1
- package/dist/tools/weights.js +6 -6
- package/dist/tools/weights.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,21 +31,6 @@ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_
|
|
|
31
31
|
claude mcp add babylitics -- npx babylitics-mcp
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
### ChatGPT Desktop
|
|
35
|
-
|
|
36
|
-
Add to your ChatGPT Desktop config (`%APPDATA%\ChatGPT\config.json` on Windows or `~/Library/Application Support/ChatGPT/config.json` on macOS):
|
|
37
|
-
|
|
38
|
-
```json
|
|
39
|
-
{
|
|
40
|
-
"mcpServers": {
|
|
41
|
-
"babylitics": {
|
|
42
|
-
"command": "npx",
|
|
43
|
-
"args": ["babylitics-mcp"]
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
34
|
### Cursor
|
|
50
35
|
|
|
51
36
|
Add to your Cursor MCP settings:
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare class AuthRequiredError extends Error {
|
|
2
|
+
readonly verificationUri: string;
|
|
3
|
+
readonly userCode: string;
|
|
4
|
+
constructor(verificationUri: string, userCode: string);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Get a valid access token. If cached tokens exist and are valid, returns immediately.
|
|
8
|
+
* If refresh is needed, refreshes silently. If device flow is needed, starts background
|
|
9
|
+
* polling and throws AuthRequiredError with the URL and code so the agent can present
|
|
10
|
+
* them to the user.
|
|
11
|
+
*/
|
|
2
12
|
export declare function getAccessToken(): Promise<string>;
|
|
3
13
|
export declare function getScope(): string;
|
|
4
14
|
//# sourceMappingURL=device-flow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../../src/auth/device-flow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../../src/auth/device-flow.ts"],"names":[],"mappings":"AA8BA,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,eAAe,EAAE,MAAM;aACvB,QAAQ,EAAE,MAAM;gBADhB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM;CAOnC;AAsGD;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAqEtD;AAMD,wBAAgB,QAAQ,IAAI,MAAM,CAGjC"}
|
package/dist/auth/device-flow.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.AuthRequiredError = void 0;
|
|
4
4
|
exports.getAccessToken = getAccessToken;
|
|
5
5
|
exports.getScope = getScope;
|
|
6
6
|
const config_js_1 = require("../config.js");
|
|
7
7
|
const token_store_js_1 = require("./token-store.js");
|
|
8
|
+
class AuthRequiredError extends Error {
|
|
9
|
+
verificationUri;
|
|
10
|
+
userCode;
|
|
11
|
+
constructor(verificationUri, userCode) {
|
|
12
|
+
super(`Authentication required. Visit ${verificationUri} and enter code: ${userCode}`);
|
|
13
|
+
this.verificationUri = verificationUri;
|
|
14
|
+
this.userCode = userCode;
|
|
15
|
+
this.name = "AuthRequiredError";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.AuthRequiredError = AuthRequiredError;
|
|
8
19
|
function log(message) {
|
|
9
|
-
// MCP servers communicate via stdout, so logs go to stderr
|
|
10
20
|
process.stderr.write(`[babylitics-mcp] ${message}\n`);
|
|
11
21
|
}
|
|
12
22
|
async function requestDeviceCode() {
|
|
@@ -72,40 +82,9 @@ async function refreshAccessToken(refreshToken) {
|
|
|
72
82
|
return null;
|
|
73
83
|
}
|
|
74
84
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (cached) {
|
|
79
|
-
if (!(0, token_store_js_1.isTokenExpired)(cached)) {
|
|
80
|
-
return cached.access_token;
|
|
81
|
-
}
|
|
82
|
-
// Try to refresh
|
|
83
|
-
log("Access token expired, refreshing...");
|
|
84
|
-
const refreshed = await refreshAccessToken(cached.refresh_token);
|
|
85
|
-
if (refreshed) {
|
|
86
|
-
const tokens = {
|
|
87
|
-
access_token: refreshed.access_token,
|
|
88
|
-
refresh_token: refreshed.refresh_token,
|
|
89
|
-
expires_at: Math.floor(Date.now() / 1000) + refreshed.expires_in,
|
|
90
|
-
scope: refreshed.scope,
|
|
91
|
-
};
|
|
92
|
-
(0, token_store_js_1.saveTokens)(tokens);
|
|
93
|
-
log("Token refreshed successfully.");
|
|
94
|
-
return tokens.access_token;
|
|
95
|
-
}
|
|
96
|
-
// Refresh failed — clear and re-auth
|
|
97
|
-
log("Refresh token expired or revoked. Re-authorizing...");
|
|
98
|
-
(0, token_store_js_1.clearTokens)();
|
|
99
|
-
}
|
|
100
|
-
// Start device flow
|
|
101
|
-
log("Authorization required.");
|
|
102
|
-
const device = await requestDeviceCode();
|
|
103
|
-
log("");
|
|
104
|
-
log(` Visit: ${device.verification_uri}`);
|
|
105
|
-
log(` Enter code: ${device.user_code}`);
|
|
106
|
-
log("");
|
|
107
|
-
log("Waiting for authorization...");
|
|
108
|
-
const tokenResponse = await pollForToken(device.device_code, device.interval || config_js_1.CONFIG.deviceFlow.pollIntervalMs / 1000);
|
|
85
|
+
// Background polling state
|
|
86
|
+
let pendingAuthPromise = null;
|
|
87
|
+
function saveTokenResponse(tokenResponse) {
|
|
109
88
|
const tokens = {
|
|
110
89
|
access_token: tokenResponse.access_token,
|
|
111
90
|
refresh_token: tokenResponse.refresh_token,
|
|
@@ -113,19 +92,70 @@ async function authenticate() {
|
|
|
113
92
|
scope: tokenResponse.scope,
|
|
114
93
|
};
|
|
115
94
|
(0, token_store_js_1.saveTokens)(tokens);
|
|
116
|
-
log("Authorized successfully!");
|
|
117
|
-
return tokens.access_token;
|
|
118
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Get a valid access token. If cached tokens exist and are valid, returns immediately.
|
|
98
|
+
* If refresh is needed, refreshes silently. If device flow is needed, starts background
|
|
99
|
+
* polling and throws AuthRequiredError with the URL and code so the agent can present
|
|
100
|
+
* them to the user.
|
|
101
|
+
*/
|
|
119
102
|
async function getAccessToken() {
|
|
103
|
+
// 1. Try cached tokens
|
|
120
104
|
const cached = (0, token_store_js_1.loadTokens)();
|
|
121
|
-
if (!cached) {
|
|
122
|
-
return
|
|
105
|
+
if (cached && !(0, token_store_js_1.isTokenExpired)(cached)) {
|
|
106
|
+
return cached.access_token;
|
|
123
107
|
}
|
|
124
|
-
|
|
125
|
-
|
|
108
|
+
// 2. Try refresh
|
|
109
|
+
if (cached) {
|
|
110
|
+
log("Access token expired, refreshing...");
|
|
111
|
+
const refreshed = await refreshAccessToken(cached.refresh_token);
|
|
112
|
+
if (refreshed) {
|
|
113
|
+
saveTokenResponse(refreshed);
|
|
114
|
+
log("Token refreshed successfully.");
|
|
115
|
+
return refreshed.access_token;
|
|
116
|
+
}
|
|
117
|
+
log("Refresh token expired or revoked. Re-authorizing...");
|
|
118
|
+
(0, token_store_js_1.clearTokens)();
|
|
119
|
+
}
|
|
120
|
+
// 3. Check if background auth already completed
|
|
121
|
+
if (pendingAuthPromise) {
|
|
122
|
+
// Wait briefly for a pending auth to complete
|
|
123
|
+
const raceResult = await Promise.race([
|
|
124
|
+
pendingAuthPromise.then(() => "done"),
|
|
125
|
+
new Promise((resolve) => setTimeout(() => resolve("timeout"), 500)),
|
|
126
|
+
]);
|
|
127
|
+
if (raceResult === "done") {
|
|
128
|
+
pendingAuthPromise = null;
|
|
129
|
+
const freshTokens = (0, token_store_js_1.loadTokens)();
|
|
130
|
+
if (freshTokens && !(0, token_store_js_1.isTokenExpired)(freshTokens)) {
|
|
131
|
+
return freshTokens.access_token;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Still pending — throw auth required again so the agent can remind the user
|
|
135
|
+
throw new AuthRequiredError(pendingVerificationUri, pendingUserCode);
|
|
126
136
|
}
|
|
127
|
-
return
|
|
137
|
+
// 4. Start device flow — return instructions immediately, poll in background
|
|
138
|
+
log("Authorization required. Starting device flow...");
|
|
139
|
+
const device = await requestDeviceCode();
|
|
140
|
+
pendingVerificationUri = device.verification_uri;
|
|
141
|
+
pendingUserCode = device.user_code;
|
|
142
|
+
// Poll in the background — when user approves, tokens are saved automatically
|
|
143
|
+
pendingAuthPromise = pollForToken(device.device_code, device.interval || config_js_1.CONFIG.deviceFlow.pollIntervalMs / 1000)
|
|
144
|
+
.then((tokenResponse) => {
|
|
145
|
+
saveTokenResponse(tokenResponse);
|
|
146
|
+
log("Authorized successfully!");
|
|
147
|
+
pendingAuthPromise = null;
|
|
148
|
+
})
|
|
149
|
+
.catch((err) => {
|
|
150
|
+
log(`Authorization failed: ${err.message}`);
|
|
151
|
+
pendingAuthPromise = null;
|
|
152
|
+
});
|
|
153
|
+
// Throw so the agent can present the URL and code to the user
|
|
154
|
+
throw new AuthRequiredError(device.verification_uri, device.user_code);
|
|
128
155
|
}
|
|
156
|
+
// Store pending auth details so we can re-throw them
|
|
157
|
+
let pendingVerificationUri;
|
|
158
|
+
let pendingUserCode;
|
|
129
159
|
function getScope() {
|
|
130
160
|
const cached = (0, token_store_js_1.loadTokens)();
|
|
131
161
|
return cached?.scope || "read";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../../src/auth/device-flow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../../src/auth/device-flow.ts"],"names":[],"mappings":"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"}
|
package/dist/graphql/client.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AuthRequiredError } from "../auth/device-flow.js";
|
|
1
2
|
export interface GraphQLResponse<T = unknown> {
|
|
2
3
|
data?: T;
|
|
3
4
|
errors?: Array<{
|
|
@@ -6,4 +7,5 @@ export interface GraphQLResponse<T = unknown> {
|
|
|
6
7
|
}>;
|
|
7
8
|
}
|
|
8
9
|
export declare function graphqlRequest<T = unknown>(query: string, variables?: Record<string, unknown>): Promise<T>;
|
|
10
|
+
export { AuthRequiredError };
|
|
9
11
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/graphql/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/graphql/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CAgCZ;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/graphql/client.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthRequiredError = void 0;
|
|
3
4
|
exports.graphqlRequest = graphqlRequest;
|
|
4
5
|
const config_js_1 = require("../config.js");
|
|
5
6
|
const device_flow_js_1 = require("../auth/device-flow.js");
|
|
7
|
+
Object.defineProperty(exports, "AuthRequiredError", { enumerable: true, get: function () { return device_flow_js_1.AuthRequiredError; } });
|
|
6
8
|
async function graphqlRequest(query, variables) {
|
|
9
|
+
// Let AuthRequiredError propagate — tool handlers will catch it
|
|
7
10
|
const token = await (0, device_flow_js_1.getAccessToken)();
|
|
8
11
|
const url = `${config_js_1.CONFIG.apiUrl}${config_js_1.CONFIG.graphqlPath}`;
|
|
9
12
|
const response = await fetch(url, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/graphql/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/graphql/client.ts"],"names":[],"mappings":";;;AAQA,wCAmCC;AA3CD,4CAAsC;AACtC,2DAA2E;AA4ClE,kGA5CgB,kCAAiB,OA4ChB;AArCnB,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,SAAmC;IAEnC,gEAAgE;IAChE,MAAM,KAAK,GAAG,MAAM,IAAA,+BAAc,GAAE,CAAC;IACrC,MAAM,GAAG,GAAG,GAAG,kBAAM,CAAC,MAAM,GAAG,kBAAM,CAAC,WAAW,EAAE,CAAC;IAEpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,KAAK,EAAE;SACjC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KAC3C,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,2BAA2B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;IAE7D,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export declare const LIST_BABIES = "\n query ListBabies {\n babies {\n edges {\n node {\n id\n name\n dateOfBirth\n gender\n birthWeight\n birthWeightUnit\n birthHeight\n birthHeightUnit\n ageInDays\n ageInWeeks\n ageDisplay\n }\n }\n }\n }\n";
|
|
2
|
-
export declare const DASHBOARD_STATS = "\n query DashboardStats($babyId: ID
|
|
3
|
-
export declare const GET_FEEDINGS = "\n query GetFeedings($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n feedings(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n id\n
|
|
4
|
-
export declare const FEEDING_STATISTICS = "\n query FeedingStatistics($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n feedingStatistics(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n totalFeedingCount\n averageFeedingsPerDay\n formulaFeedingCount\n totalFormulaAmount\n totalFormulaUnit\n breastfeedingCount\n totalBreastfeedingMinutes\n solidsCount\n uniqueFoodsCount\n lastFeedingAt\n timeSinceLastFeeding\n }\n }\n";
|
|
5
|
-
export declare const GET_SLEEPS = "\n query GetSleeps($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n sleeps(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n id\n
|
|
6
|
-
export declare const SLEEP_STATISTICS = "\n query SleepStatistics($babyId: ID
|
|
7
|
-
export declare const GET_WEIGHTS = "\n query GetWeights($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n weights(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n id\n
|
|
8
|
-
export declare const WEIGHT_VS_GUIDELINE = "\n query WeightVsGuideline($babyId: ID!) {\n weightVsGuideline(babyId: $babyId) {\n
|
|
9
|
-
export declare const GET_LENGTHS = "\n query GetLengths($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n lengths(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n id\n
|
|
10
|
-
export declare const GET_TEMPERATURES = "\n query GetTemperatures($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n temperatures(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n id\n
|
|
2
|
+
export declare const DASHBOARD_STATS = "\n query DashboardStats($babyId: ID!, $date: ISO8601Date) {\n dashboardStats(babyId: $babyId, date: $date) {\n today {\n totalFormulaVolume\n totalFormulaUnit\n totalBreastfeedingMinutes\n feedingCount\n totalSleepMinutes\n sleepCount\n solidsCount\n }\n lastFeeding {\n feedingType\n fedAt\n amount\n foodName\n }\n lastSleep {\n sleepType\n startedAt\n endedAt\n durationMinutes\n }\n inProgressSleep {\n sleepType\n startedAt\n }\n weeklyAverage {\n avgFormulaVolume\n avgFormulaUnit\n avgBreastfeedingMinutes\n avgFeedingCount\n avgSleepMinutes\n }\n todayBreakdown {\n formulaCount\n breastfeedingCount\n solidsCount\n }\n }\n }\n";
|
|
3
|
+
export declare const GET_FEEDINGS = "\n query GetFeedings($babyId: ID!, $date: ISO8601Date, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n feedings(babyId: $babyId, date: $date, startDate: $startDate, endDate: $endDate) {\n nodes {\n id\n feedingType\n amount\n durationMinutes\n side\n foodName\n reaction\n notes\n fedAt\n }\n }\n }\n";
|
|
4
|
+
export declare const FEEDING_STATISTICS = "\n query FeedingStatistics($babyId: ID!, $date: ISO8601Date, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n feedingStatistics(babyId: $babyId, date: $date, startDate: $startDate, endDate: $endDate) {\n totalFeedingCount\n averageFeedingsPerDay\n formulaFeedingCount\n totalFormulaAmount\n totalFormulaUnit\n breastfeedingCount\n totalBreastfeedingMinutes\n solidsCount\n uniqueFoodsCount\n lastFeedingAt\n timeSinceLastFeeding\n }\n }\n";
|
|
5
|
+
export declare const GET_SLEEPS = "\n query GetSleeps($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n sleeps(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n nodes {\n id\n sleepType\n startedAt\n endedAt\n durationMinutes\n notes\n }\n }\n }\n";
|
|
6
|
+
export declare const SLEEP_STATISTICS = "\n query SleepStatistics($babyId: ID!, $date: ISO8601Date, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n sleepStatistics(babyId: $babyId, date: $date, startDate: $startDate, endDate: $endDate) {\n totalSleepMinutesToday\n totalNapMinutesToday\n totalNightMinutesToday\n averageSleepMinutesPerDay\n averageNapDuration\n averageNightDuration\n longestSleepMinutes\n sleepCountToday\n }\n }\n";
|
|
7
|
+
export declare const GET_WEIGHTS = "\n query GetWeights($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n weights(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n nodes {\n id\n weight\n unit\n measuredAt\n notes\n }\n }\n }\n";
|
|
8
|
+
export declare const WEIGHT_VS_GUIDELINE = "\n query WeightVsGuideline($babyId: ID!) {\n weightVsGuideline(babyId: $babyId) {\n guidelines {\n ageMonth\n sd3Neg\n sd2Neg\n sd1Neg\n median\n sd1\n sd2\n sd3\n actualWeight\n unit\n source\n genderNote\n }\n measurements {\n ageMonths\n value\n measuredAt\n isBirthValue\n }\n }\n }\n";
|
|
9
|
+
export declare const GET_LENGTHS = "\n query GetLengths($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n lengths(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n nodes {\n id\n length\n unit\n measuredAt\n notes\n }\n }\n }\n";
|
|
10
|
+
export declare const GET_TEMPERATURES = "\n query GetTemperatures($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {\n temperatures(babyId: $babyId, startDate: $startDate, endDate: $endDate) {\n nodes {\n id\n temperature\n unit\n feverStatus\n measuredAt\n notes\n }\n }\n }\n";
|
|
11
11
|
export declare const CREATE_FEEDING = "\n mutation CreateFeeding(\n $babyId: ID!,\n $feedingType: FeedingTypeEnum!,\n $amount: Float,\n $unit: UnitEnum,\n $durationMinutes: Int,\n $side: SideEnum,\n $foodName: String,\n $reaction: ReactionEnum,\n $notes: String,\n $fedAt: ISO8601DateTime\n ) {\n createFeeding(\n babyId: $babyId,\n feedingType: $feedingType,\n amount: $amount,\n unit: $unit,\n durationMinutes: $durationMinutes,\n side: $side,\n foodName: $foodName,\n reaction: $reaction,\n notes: $notes,\n fedAt: $fedAt\n ) {\n feeding {\n id\n feedingType\n amount\n fedAt\n }\n errors\n }\n }\n";
|
|
12
12
|
export declare const CREATE_SLEEP = "\n mutation CreateSleep(\n $babyId: ID!,\n $sleepType: SleepTypeEnum!,\n $startedAt: ISO8601DateTime!,\n $endedAt: ISO8601DateTime,\n $notes: String\n ) {\n createSleep(\n babyId: $babyId,\n sleepType: $sleepType,\n startedAt: $startedAt,\n endedAt: $endedAt,\n notes: $notes\n ) {\n sleep {\n id\n sleepType\n startedAt\n endedAt\n }\n errors\n }\n }\n";
|
|
13
13
|
export declare const CREATE_WEIGHT = "\n mutation CreateWeight(\n $babyId: ID!,\n $weight: Float!,\n $unit: WeightUnitEnum!,\n $measuredAt: ISO8601Date!,\n $notes: String\n ) {\n createWeight(\n babyId: $babyId,\n weight: $weight,\n unit: $unit,\n measuredAt: $measuredAt,\n notes: $notes\n ) {\n weight {\n id\n weight\n unit\n measuredAt\n }\n errors\n }\n }\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graphql/queries.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,sVAoBvB,CAAC;AAEF,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graphql/queries.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,sVAoBvB,CAAC;AAEF,eAAO,MAAM,eAAe,m3BA0C3B,CAAC;AAGF,eAAO,MAAM,YAAY,sYAgBxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,6fAgB9B,CAAC;AAGF,eAAO,MAAM,UAAU,kTAatB,CAAC;AAEF,eAAO,MAAM,gBAAgB,gcAa5B,CAAC;AAGF,eAAO,MAAM,WAAW,sRAYvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,ibAyB/B,CAAC;AAGF,eAAO,MAAM,WAAW,sRAYvB,CAAC;AAGF,eAAO,MAAM,gBAAgB,0TAa5B,CAAC;AAGF,eAAO,MAAM,cAAc,8rBAkC1B,CAAC;AAEF,eAAO,MAAM,YAAY,qcAwBxB,CAAC;AAEF,eAAO,MAAM,aAAa,waAwBzB,CAAC;AAEF,eAAO,MAAM,aAAa,waAwBzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,odAwB9B,CAAC;AAGF,eAAO,MAAM,iBAAiB,oOAY7B,CAAC"}
|
package/dist/graphql/queries.js
CHANGED
|
@@ -24,11 +24,16 @@ exports.LIST_BABIES = `
|
|
|
24
24
|
}
|
|
25
25
|
`;
|
|
26
26
|
exports.DASHBOARD_STATS = `
|
|
27
|
-
query DashboardStats($babyId: ID
|
|
28
|
-
dashboardStats(babyId: $babyId) {
|
|
27
|
+
query DashboardStats($babyId: ID!, $date: ISO8601Date) {
|
|
28
|
+
dashboardStats(babyId: $babyId, date: $date) {
|
|
29
29
|
today {
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
totalFormulaVolume
|
|
31
|
+
totalFormulaUnit
|
|
32
|
+
totalBreastfeedingMinutes
|
|
33
|
+
feedingCount
|
|
34
|
+
totalSleepMinutes
|
|
35
|
+
sleepCount
|
|
36
|
+
solidsCount
|
|
32
37
|
}
|
|
33
38
|
lastFeeding {
|
|
34
39
|
feedingType
|
|
@@ -47,36 +52,41 @@ exports.DASHBOARD_STATS = `
|
|
|
47
52
|
startedAt
|
|
48
53
|
}
|
|
49
54
|
weeklyAverage {
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
avgFormulaVolume
|
|
56
|
+
avgFormulaUnit
|
|
57
|
+
avgBreastfeedingMinutes
|
|
58
|
+
avgFeedingCount
|
|
59
|
+
avgSleepMinutes
|
|
52
60
|
}
|
|
53
61
|
todayBreakdown {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
62
|
+
formulaCount
|
|
63
|
+
breastfeedingCount
|
|
64
|
+
solidsCount
|
|
57
65
|
}
|
|
58
66
|
}
|
|
59
67
|
}
|
|
60
68
|
`;
|
|
61
69
|
// Feeding queries
|
|
62
70
|
exports.GET_FEEDINGS = `
|
|
63
|
-
query GetFeedings($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
64
|
-
feedings(babyId: $babyId, startDate: $startDate, endDate: $endDate) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
query GetFeedings($babyId: ID!, $date: ISO8601Date, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
72
|
+
feedings(babyId: $babyId, date: $date, startDate: $startDate, endDate: $endDate) {
|
|
73
|
+
nodes {
|
|
74
|
+
id
|
|
75
|
+
feedingType
|
|
76
|
+
amount
|
|
77
|
+
durationMinutes
|
|
78
|
+
side
|
|
79
|
+
foodName
|
|
80
|
+
reaction
|
|
81
|
+
notes
|
|
82
|
+
fedAt
|
|
83
|
+
}
|
|
74
84
|
}
|
|
75
85
|
}
|
|
76
86
|
`;
|
|
77
87
|
exports.FEEDING_STATISTICS = `
|
|
78
|
-
query FeedingStatistics($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
79
|
-
feedingStatistics(babyId: $babyId, startDate: $startDate, endDate: $endDate) {
|
|
88
|
+
query FeedingStatistics($babyId: ID!, $date: ISO8601Date, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
89
|
+
feedingStatistics(babyId: $babyId, date: $date, startDate: $startDate, endDate: $endDate) {
|
|
80
90
|
totalFeedingCount
|
|
81
91
|
averageFeedingsPerDay
|
|
82
92
|
formulaFeedingCount
|
|
@@ -95,18 +105,20 @@ exports.FEEDING_STATISTICS = `
|
|
|
95
105
|
exports.GET_SLEEPS = `
|
|
96
106
|
query GetSleeps($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
97
107
|
sleeps(babyId: $babyId, startDate: $startDate, endDate: $endDate) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
108
|
+
nodes {
|
|
109
|
+
id
|
|
110
|
+
sleepType
|
|
111
|
+
startedAt
|
|
112
|
+
endedAt
|
|
113
|
+
durationMinutes
|
|
114
|
+
notes
|
|
115
|
+
}
|
|
104
116
|
}
|
|
105
117
|
}
|
|
106
118
|
`;
|
|
107
119
|
exports.SLEEP_STATISTICS = `
|
|
108
|
-
query SleepStatistics($babyId: ID
|
|
109
|
-
sleepStatistics(babyId: $babyId) {
|
|
120
|
+
query SleepStatistics($babyId: ID!, $date: ISO8601Date, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
121
|
+
sleepStatistics(babyId: $babyId, date: $date, startDate: $startDate, endDate: $endDate) {
|
|
110
122
|
totalSleepMinutesToday
|
|
111
123
|
totalNapMinutesToday
|
|
112
124
|
totalNightMinutesToday
|
|
@@ -122,24 +134,39 @@ exports.SLEEP_STATISTICS = `
|
|
|
122
134
|
exports.GET_WEIGHTS = `
|
|
123
135
|
query GetWeights($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
124
136
|
weights(babyId: $babyId, startDate: $startDate, endDate: $endDate) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
137
|
+
nodes {
|
|
138
|
+
id
|
|
139
|
+
weight
|
|
140
|
+
unit
|
|
141
|
+
measuredAt
|
|
142
|
+
notes
|
|
143
|
+
}
|
|
130
144
|
}
|
|
131
145
|
}
|
|
132
146
|
`;
|
|
133
147
|
exports.WEIGHT_VS_GUIDELINE = `
|
|
134
148
|
query WeightVsGuideline($babyId: ID!) {
|
|
135
149
|
weightVsGuideline(babyId: $babyId) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
150
|
+
guidelines {
|
|
151
|
+
ageMonth
|
|
152
|
+
sd3Neg
|
|
153
|
+
sd2Neg
|
|
154
|
+
sd1Neg
|
|
155
|
+
median
|
|
156
|
+
sd1
|
|
157
|
+
sd2
|
|
158
|
+
sd3
|
|
159
|
+
actualWeight
|
|
160
|
+
unit
|
|
161
|
+
source
|
|
162
|
+
genderNote
|
|
163
|
+
}
|
|
164
|
+
measurements {
|
|
165
|
+
ageMonths
|
|
166
|
+
value
|
|
167
|
+
measuredAt
|
|
168
|
+
isBirthValue
|
|
169
|
+
}
|
|
143
170
|
}
|
|
144
171
|
}
|
|
145
172
|
`;
|
|
@@ -147,11 +174,13 @@ exports.WEIGHT_VS_GUIDELINE = `
|
|
|
147
174
|
exports.GET_LENGTHS = `
|
|
148
175
|
query GetLengths($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
149
176
|
lengths(babyId: $babyId, startDate: $startDate, endDate: $endDate) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
177
|
+
nodes {
|
|
178
|
+
id
|
|
179
|
+
length
|
|
180
|
+
unit
|
|
181
|
+
measuredAt
|
|
182
|
+
notes
|
|
183
|
+
}
|
|
155
184
|
}
|
|
156
185
|
}
|
|
157
186
|
`;
|
|
@@ -159,12 +188,14 @@ exports.GET_LENGTHS = `
|
|
|
159
188
|
exports.GET_TEMPERATURES = `
|
|
160
189
|
query GetTemperatures($babyId: ID!, $startDate: ISO8601Date, $endDate: ISO8601Date) {
|
|
161
190
|
temperatures(babyId: $babyId, startDate: $startDate, endDate: $endDate) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
191
|
+
nodes {
|
|
192
|
+
id
|
|
193
|
+
temperature
|
|
194
|
+
unit
|
|
195
|
+
feverStatus
|
|
196
|
+
measuredAt
|
|
197
|
+
notes
|
|
198
|
+
}
|
|
168
199
|
}
|
|
169
200
|
}
|
|
170
201
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/graphql/queries.ts"],"names":[],"mappings":";;;AAAA,eAAe;AACF,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;CAoB1B,CAAC;AAEW,QAAA,eAAe,GAAG
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/graphql/queries.ts"],"names":[],"mappings":";;;AAAA,eAAe;AACF,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;CAoB1B,CAAC;AAEW,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C9B,CAAC;AAEF,kBAAkB;AACL,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;CAgB3B,CAAC;AAEW,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;CAgBjC,CAAC;AAEF,gBAAgB;AACH,QAAA,UAAU,GAAG;;;;;;;;;;;;;CAazB,CAAC;AAEW,QAAA,gBAAgB,GAAG;;;;;;;;;;;;;CAa/B,CAAC;AAEF,iBAAiB;AACJ,QAAA,WAAW,GAAG;;;;;;;;;;;;CAY1B,CAAC;AAEW,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlC,CAAC;AAEF,iBAAiB;AACJ,QAAA,WAAW,GAAG;;;;;;;;;;;;CAY1B,CAAC;AAEF,sBAAsB;AACT,QAAA,gBAAgB,GAAG;;;;;;;;;;;;;CAa/B,CAAC;AAEF,qDAAqD;AACxC,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC7B,CAAC;AAEW,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB3B,CAAC;AAEW,QAAA,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB5B,CAAC;AAEW,QAAA,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB5B,CAAC;AAEW,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBjC,CAAC;AAEF,gBAAgB;AACH,QAAA,iBAAiB,GAAG;;;;;;;;;;;;CAYhC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
5
5
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
6
|
-
const device_flow_js_1 = require("./auth/device-flow.js");
|
|
7
6
|
const babies_js_1 = require("./tools/babies.js");
|
|
8
7
|
const dashboard_js_1 = require("./tools/dashboard.js");
|
|
9
8
|
const feedings_js_1 = require("./tools/feedings.js");
|
|
@@ -12,13 +11,12 @@ const weights_js_1 = require("./tools/weights.js");
|
|
|
12
11
|
const lengths_js_1 = require("./tools/lengths.js");
|
|
13
12
|
const temperatures_js_1 = require("./tools/temperatures.js");
|
|
14
13
|
async function main() {
|
|
15
|
-
// Authenticate before starting the server
|
|
16
|
-
await (0, device_flow_js_1.authenticate)();
|
|
17
14
|
const server = new mcp_js_1.McpServer({
|
|
18
15
|
name: "babylitics",
|
|
19
|
-
version: "0.
|
|
16
|
+
version: "0.9.0",
|
|
20
17
|
});
|
|
21
|
-
// Register
|
|
18
|
+
// Register all tools — auth happens lazily on first tool call.
|
|
19
|
+
// If auth is needed, the tool returns login instructions for the user.
|
|
22
20
|
(0, babies_js_1.registerBabyTools)(server);
|
|
23
21
|
(0, dashboard_js_1.registerDashboardTools)(server);
|
|
24
22
|
(0, feedings_js_1.registerFeedingReadTools)(server);
|
|
@@ -26,15 +24,12 @@ async function main() {
|
|
|
26
24
|
(0, weights_js_1.registerWeightReadTools)(server);
|
|
27
25
|
(0, lengths_js_1.registerLengthReadTools)(server);
|
|
28
26
|
(0, temperatures_js_1.registerTemperatureReadTools)(server);
|
|
29
|
-
// Register write tools
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
(0, lengths_js_1.registerLengthWriteTools)(server);
|
|
36
|
-
(0, temperatures_js_1.registerTemperatureWriteTools)(server);
|
|
37
|
-
}
|
|
27
|
+
// Register write tools unconditionally — scope is checked at auth time
|
|
28
|
+
(0, feedings_js_1.registerFeedingWriteTools)(server);
|
|
29
|
+
(0, sleep_js_1.registerSleepWriteTools)(server);
|
|
30
|
+
(0, weights_js_1.registerWeightWriteTools)(server);
|
|
31
|
+
(0, lengths_js_1.registerLengthWriteTools)(server);
|
|
32
|
+
(0, temperatures_js_1.registerTemperatureWriteTools)(server);
|
|
38
33
|
// Connect via stdio transport
|
|
39
34
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
40
35
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,oEAAoE;AACpE,wEAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,oEAAoE;AACpE,wEAAiF;AACjF,iDAAsD;AACtD,uDAA8D;AAC9D,qDAG6B;AAC7B,+CAG0B;AAC1B,mDAG4B;AAC5B,mDAG4B;AAC5B,6DAGiC;AAEjC,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC;QAC3B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,+DAA+D;IAC/D,uEAAuE;IACvE,IAAA,6BAAiB,EAAC,MAAM,CAAC,CAAC;IAC1B,IAAA,qCAAsB,EAAC,MAAM,CAAC,CAAC;IAC/B,IAAA,sCAAwB,EAAC,MAAM,CAAC,CAAC;IACjC,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAC;IAC/B,IAAA,oCAAuB,EAAC,MAAM,CAAC,CAAC;IAChC,IAAA,oCAAuB,EAAC,MAAM,CAAC,CAAC;IAChC,IAAA,8CAA4B,EAAC,MAAM,CAAC,CAAC;IAErC,uEAAuE;IACvE,IAAA,uCAAyB,EAAC,MAAM,CAAC,CAAC;IAClC,IAAA,kCAAuB,EAAC,MAAM,CAAC,CAAC;IAChC,IAAA,qCAAwB,EAAC,MAAM,CAAC,CAAC;IACjC,IAAA,qCAAwB,EAAC,MAAM,CAAC,CAAC;IACjC,IAAA,+CAA6B,EAAC,MAAM,CAAC,CAAC;IAEtC,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AAC7D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/tools/babies.js
CHANGED
|
@@ -7,11 +7,11 @@ function registerBabyTools(server) {
|
|
|
7
7
|
title: "List Babies",
|
|
8
8
|
description: "List all babies being tracked in the user's Babylitics account. Returns name, date of birth, age, and birth measurements.",
|
|
9
9
|
annotations: { readOnlyHint: true },
|
|
10
|
-
}, async () => {
|
|
10
|
+
}, (0, helpers_js_1.withAuth)(async () => {
|
|
11
11
|
const babies = await (0, helpers_js_1.fetchBabies)();
|
|
12
12
|
return {
|
|
13
13
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(babies) }],
|
|
14
14
|
};
|
|
15
|
-
});
|
|
15
|
+
}));
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=babies.js.map
|
package/dist/tools/babies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babies.js","sourceRoot":"","sources":["../../src/tools/babies.ts"],"names":[],"mappings":";;AAIA,8CAYC;AAdD,
|
|
1
|
+
{"version":3,"file":"babies.js","sourceRoot":"","sources":["../../src/tools/babies.ts"],"names":[],"mappings":";;AAIA,8CAYC;AAdD,6CAAuE;AAEvE,SAAgB,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE;QACjC,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,2HAA2H;QAC7H,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EAAE,IAAA,qBAAQ,EAAC,KAAK,IAAI,EAAE;QACrB,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAW,GAAE,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;SAC5D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiB9D"}
|
package/dist/tools/dashboard.js
CHANGED
|
@@ -8,17 +8,18 @@ const helpers_js_1 = require("./helpers.js");
|
|
|
8
8
|
function registerDashboardTools(server) {
|
|
9
9
|
server.registerTool("get_dashboard", {
|
|
10
10
|
title: "Get Dashboard",
|
|
11
|
-
description: "Get
|
|
11
|
+
description: "Get a dashboard summary for a baby, including feeding totals, sleep totals, current sleep status, and weekly averages. Defaults to today; pass a date to get a past day's summary.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
baby_name: zod_1.z.string().describe("The baby's name"),
|
|
14
|
+
date: zod_1.z.string().optional().describe("Date to get the summary for (ISO 8601, e.g. 2026-03-27). Defaults to today."),
|
|
14
15
|
},
|
|
15
16
|
annotations: { readOnlyHint: true },
|
|
16
|
-
}, async ({ baby_name }) => {
|
|
17
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, date }) => {
|
|
17
18
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
18
|
-
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.DASHBOARD_STATS, { babyId });
|
|
19
|
+
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.DASHBOARD_STATS, { babyId, date });
|
|
19
20
|
return {
|
|
20
21
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
21
22
|
};
|
|
22
|
-
});
|
|
23
|
+
}));
|
|
23
24
|
}
|
|
24
25
|
//# sourceMappingURL=dashboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":";;AAMA,wDAiBC;AAvBD,6BAAwB;AAExB,oDAAsD;AACtD,sDAAwD;AACxD,6CAAyE;AAEzE,SAAgB,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE;QACnC,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,oLAAoL;QACtL,WAAW,EAAE;YACX,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;SACpH;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EAAE,IAAA,qBAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,4BAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedings.d.ts","sourceRoot":"","sources":["../../src/tools/feedings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"feedings.d.ts","sourceRoot":"","sources":["../../src/tools/feedings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgDhE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2CjE"}
|
package/dist/tools/feedings.js
CHANGED
|
@@ -9,44 +9,48 @@ const helpers_js_1 = require("./helpers.js");
|
|
|
9
9
|
function registerFeedingReadTools(server) {
|
|
10
10
|
server.registerTool("get_feedings", {
|
|
11
11
|
title: "Get Feedings",
|
|
12
|
-
description: "Get feeding records for a baby. Optionally filter by date range.",
|
|
12
|
+
description: "Get feeding records for a baby. Optionally filter by a specific date or date range.",
|
|
13
13
|
inputSchema: {
|
|
14
14
|
baby_name: zod_1.z.string().describe("The baby's name"),
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
date: zod_1.z.string().optional().describe("Specific date (ISO 8601, e.g. 2026-03-27). Cannot be combined with start_date/end_date."),
|
|
16
|
+
start_date: zod_1.z.string().optional().describe("Start date (ISO 8601). Cannot be combined with date."),
|
|
17
|
+
end_date: zod_1.z.string().optional().describe("End date (ISO 8601). Cannot be combined with date."),
|
|
17
18
|
},
|
|
18
19
|
annotations: { readOnlyHint: true },
|
|
19
|
-
}, async ({ baby_name, start_date, end_date }) => {
|
|
20
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, date, start_date, end_date }) => {
|
|
20
21
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
21
22
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.GET_FEEDINGS, {
|
|
22
23
|
babyId,
|
|
24
|
+
date,
|
|
23
25
|
startDate: start_date,
|
|
24
26
|
endDate: end_date,
|
|
25
27
|
});
|
|
26
28
|
return {
|
|
27
29
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
28
30
|
};
|
|
29
|
-
});
|
|
31
|
+
}));
|
|
30
32
|
server.registerTool("get_feeding_stats", {
|
|
31
33
|
title: "Get Feeding Statistics",
|
|
32
|
-
description: "Get feeding statistics for a baby, including totals and averages by feeding type. Optionally filter by date range.",
|
|
34
|
+
description: "Get feeding statistics for a baby, including totals and averages by feeding type. Optionally filter by a specific date or date range.",
|
|
33
35
|
inputSchema: {
|
|
34
36
|
baby_name: zod_1.z.string().describe("The baby's name"),
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
date: zod_1.z.string().optional().describe("Specific date (ISO 8601, e.g. 2026-03-27). Cannot be combined with start_date/end_date."),
|
|
38
|
+
start_date: zod_1.z.string().optional().describe("Start date (ISO 8601). Cannot be combined with date."),
|
|
39
|
+
end_date: zod_1.z.string().optional().describe("End date (ISO 8601). Cannot be combined with date."),
|
|
37
40
|
},
|
|
38
41
|
annotations: { readOnlyHint: true },
|
|
39
|
-
}, async ({ baby_name, start_date, end_date }) => {
|
|
42
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, date, start_date, end_date }) => {
|
|
40
43
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
41
44
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.FEEDING_STATISTICS, {
|
|
42
45
|
babyId,
|
|
46
|
+
date,
|
|
43
47
|
startDate: start_date,
|
|
44
48
|
endDate: end_date,
|
|
45
49
|
});
|
|
46
50
|
return {
|
|
47
51
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
48
52
|
};
|
|
49
|
-
});
|
|
53
|
+
}));
|
|
50
54
|
}
|
|
51
55
|
function registerFeedingWriteTools(server) {
|
|
52
56
|
server.registerTool("log_feeding", {
|
|
@@ -76,7 +80,7 @@ function registerFeedingWriteTools(server) {
|
|
|
76
80
|
.describe("When the feeding occurred (ISO 8601 datetime). Defaults to now."),
|
|
77
81
|
},
|
|
78
82
|
annotations: { readOnlyHint: false },
|
|
79
|
-
}, async ({ baby_name, feeding_type, duration_minutes, food_name, fed_at, ...args }) => {
|
|
83
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, feeding_type, duration_minutes, food_name, fed_at, ...args }) => {
|
|
80
84
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
81
85
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.CREATE_FEEDING, {
|
|
82
86
|
babyId,
|
|
@@ -89,6 +93,6 @@ function registerFeedingWriteTools(server) {
|
|
|
89
93
|
return {
|
|
90
94
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
91
95
|
};
|
|
92
|
-
});
|
|
96
|
+
}));
|
|
93
97
|
}
|
|
94
98
|
//# sourceMappingURL=feedings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedings.js","sourceRoot":"","sources":["../../src/tools/feedings.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"feedings.js","sourceRoot":"","sources":["../../src/tools/feedings.ts"],"names":[],"mappings":";;AAUA,4DAgDC;AAED,8DA2CC;AAvGD,6BAAwB;AAExB,oDAAsD;AACtD,sDAI+B;AAC/B,6CAAyE;AAEzE,SAAgB,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE;QAClC,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,qFAAqF;QACvF,WAAW,EAAE;YACX,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yFAAyF,CAAC;YAC/H,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YAClG,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SAC/F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EAAE,IAAA,qBAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,yBAAY,EAAE;YAC9C,MAAM;YACN,IAAI;YACJ,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;QACvC,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,uIAAuI;QACzI,WAAW,EAAE;YACX,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yFAAyF,CAAC;YAC/H,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YAClG,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SAC/F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EAAE,IAAA,qBAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,+BAAkB,EAAE;YACpD,MAAM;YACN,IAAI;YACJ,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE;QACjC,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,8JAA8J;QAChK,WAAW,EAAE;YACX,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjD,YAAY,EAAE,OAAC;iBACZ,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;iBACpC,QAAQ,CAAC,iBAAiB,CAAC;YAC9B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC5D,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjE,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACvE,IAAI,EAAE,OAAC;iBACJ,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBACvB,QAAQ,EAAE;iBACV,QAAQ,CAAC,iCAAiC,CAAC;YAC9C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACnE,QAAQ,EAAE,OAAC;iBACR,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;iBACtC,QAAQ,EAAE;iBACV,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACvD,MAAM,EAAE,OAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EAAE,IAAA,qBAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QAC9F,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,2BAAc,EAAE;YAChD,MAAM;YACN,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,gBAAgB;YACjC,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,MAAM;YACb,GAAG,IAAI;SACR,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
package/dist/tools/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
1
2
|
interface BabyNode {
|
|
2
3
|
id: string;
|
|
3
4
|
name: string;
|
|
@@ -15,5 +16,11 @@ export declare function fetchBabies(): Promise<BabyNode[]>;
|
|
|
15
16
|
export declare function clearBabyCache(): void;
|
|
16
17
|
export declare function resolveBabyId(babyName: string): Promise<string>;
|
|
17
18
|
export declare function formatToolResult(data: unknown): string;
|
|
19
|
+
/**
|
|
20
|
+
* Wraps a tool handler to catch AuthRequiredError and return user-friendly
|
|
21
|
+
* login instructions instead of crashing. The agent receives these instructions
|
|
22
|
+
* and can present the URL and code to the user.
|
|
23
|
+
*/
|
|
24
|
+
export declare function withAuth<T extends Record<string, unknown>>(handler: (args: T) => Promise<CallToolResult>): (args: T) => Promise<CallToolResult>;
|
|
18
25
|
export {};
|
|
19
26
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD,wBAAsB,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAMvD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BrE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxD,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,GAC5C,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAyBtC"}
|
package/dist/tools/helpers.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.fetchBabies = fetchBabies;
|
|
|
4
4
|
exports.clearBabyCache = clearBabyCache;
|
|
5
5
|
exports.resolveBabyId = resolveBabyId;
|
|
6
6
|
exports.formatToolResult = formatToolResult;
|
|
7
|
+
exports.withAuth = withAuth;
|
|
7
8
|
const client_js_1 = require("../graphql/client.js");
|
|
8
9
|
const queries_js_1 = require("../graphql/queries.js");
|
|
9
10
|
let cachedBabies = null;
|
|
@@ -37,4 +38,36 @@ async function resolveBabyId(babyName) {
|
|
|
37
38
|
function formatToolResult(data) {
|
|
38
39
|
return JSON.stringify(data, null, 2);
|
|
39
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Wraps a tool handler to catch AuthRequiredError and return user-friendly
|
|
43
|
+
* login instructions instead of crashing. The agent receives these instructions
|
|
44
|
+
* and can present the URL and code to the user.
|
|
45
|
+
*/
|
|
46
|
+
function withAuth(handler) {
|
|
47
|
+
return async (args) => {
|
|
48
|
+
try {
|
|
49
|
+
return await handler(args);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error instanceof client_js_1.AuthRequiredError) {
|
|
53
|
+
return {
|
|
54
|
+
content: [
|
|
55
|
+
{
|
|
56
|
+
type: "text",
|
|
57
|
+
text: [
|
|
58
|
+
"🔐 Authentication required to access Babylitics.",
|
|
59
|
+
"",
|
|
60
|
+
`Please visit: ${error.verificationUri}`,
|
|
61
|
+
`Enter this code: **${error.userCode}**`,
|
|
62
|
+
"",
|
|
63
|
+
"Once you've approved access, try your request again.",
|
|
64
|
+
].join("\n"),
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
40
73
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":";;AA0BA,kCAMC;AAED,wCAEC;AAED,sCA2BC;AAED,4CAEC;AAOD,4BA2BC;AAvGD,oDAAyE;AACzE,sDAAoD;AAuBpD,IAAI,YAAY,GAAsB,IAAI,CAAC;AAEpC,KAAK,UAAU,WAAW;IAC/B,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAiB,wBAAW,CAAC,CAAC;IAC/D,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,cAAc;IAC5B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IAEnC,iCAAiC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CACvD,CAAC;IACF,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC;IAE3B,gBAAgB;IAChB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAClC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CACtD,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,2BAA2B,KAAK,GAAG,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,iBAAiB,QAAQ,EAAE,CAChE,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAa;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CACtB,OAA6C;IAE7C,OAAO,KAAK,EAAE,IAAO,EAA2B,EAAE;QAChD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,6BAAiB,EAAE,CAAC;gBACvC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE;gCACJ,kDAAkD;gCAClD,EAAE;gCACF,iBAAiB,KAAK,CAAC,eAAe,EAAE;gCACxC,sBAAsB,KAAK,CAAC,QAAQ,IAAI;gCACxC,EAAE;gCACF,sDAAsD;6BACvD,CAAC,IAAI,CAAC,IAAI,CAAC;yBACb;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/tools/lengths.js
CHANGED
|
@@ -16,7 +16,7 @@ function registerLengthReadTools(server) {
|
|
|
16
16
|
end_date: zod_1.z.string().optional().describe("End date (ISO 8601)"),
|
|
17
17
|
},
|
|
18
18
|
annotations: { readOnlyHint: true },
|
|
19
|
-
}, async ({ baby_name, start_date, end_date }) => {
|
|
19
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, start_date, end_date }) => {
|
|
20
20
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
21
21
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.GET_LENGTHS, {
|
|
22
22
|
babyId,
|
|
@@ -26,7 +26,7 @@ function registerLengthReadTools(server) {
|
|
|
26
26
|
return {
|
|
27
27
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
28
28
|
};
|
|
29
|
-
});
|
|
29
|
+
}));
|
|
30
30
|
}
|
|
31
31
|
function registerLengthWriteTools(server) {
|
|
32
32
|
server.registerTool("log_length", {
|
|
@@ -40,7 +40,7 @@ function registerLengthWriteTools(server) {
|
|
|
40
40
|
notes: zod_1.z.string().optional().describe("Optional notes"),
|
|
41
41
|
},
|
|
42
42
|
annotations: { readOnlyHint: false },
|
|
43
|
-
}, async ({ baby_name, measured_at, ...args }) => {
|
|
43
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, measured_at, ...args }) => {
|
|
44
44
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
45
45
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.CREATE_LENGTH, {
|
|
46
46
|
babyId,
|
|
@@ -50,6 +50,6 @@ function registerLengthWriteTools(server) {
|
|
|
50
50
|
return {
|
|
51
51
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
52
52
|
};
|
|
53
|
-
});
|
|
53
|
+
}));
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=lengths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lengths.js","sourceRoot":"","sources":["../../src/tools/lengths.ts"],"names":[],"mappings":";;AAMA,0DAsBC;AAED,4DAuBC;AArDD,6BAAwB;AAExB,oDAAsD;AACtD,sDAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"lengths.js","sourceRoot":"","sources":["../../src/tools/lengths.ts"],"names":[],"mappings":";;AAMA,0DAsBC;AAED,4DAuBC;AArDD,6BAAwB;AAExB,oDAAsD;AACtD,sDAAmE;AACnE,6CAAyE;AAEzE,SAAgB,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE;QACjC,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,oFAAoF;QACtF,WAAW,EAAE;YACX,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACnE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SAChE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EAAE,IAAA,qBAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,wBAAW,EAAE;YAC7C,MAAM;YACN,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;QAChC,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE;YACX,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAClD,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YAClD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YACxF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SACxD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EAAE,IAAA,qBAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,0BAAa,EAAE;YAC/C,MAAM;YACN,UAAU,EAAE,WAAW;YACvB,GAAG,IAAI;SACR,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/tools/sleep.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/tools/sleep.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8C9D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6B/D"}
|
package/dist/tools/sleep.js
CHANGED
|
@@ -16,7 +16,7 @@ function registerSleepReadTools(server) {
|
|
|
16
16
|
end_date: zod_1.z.string().optional().describe("End date (ISO 8601)"),
|
|
17
17
|
},
|
|
18
18
|
annotations: { readOnlyHint: true },
|
|
19
|
-
}, async ({ baby_name, start_date, end_date }) => {
|
|
19
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, start_date, end_date }) => {
|
|
20
20
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
21
21
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.GET_SLEEPS, {
|
|
22
22
|
babyId,
|
|
@@ -26,21 +26,29 @@ function registerSleepReadTools(server) {
|
|
|
26
26
|
return {
|
|
27
27
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
28
28
|
};
|
|
29
|
-
});
|
|
29
|
+
}));
|
|
30
30
|
server.registerTool("get_sleep_stats", {
|
|
31
31
|
title: "Get Sleep Statistics",
|
|
32
|
-
description: "Get sleep statistics for a baby, including total sleep time, nap counts, and average durations.",
|
|
32
|
+
description: "Get sleep statistics for a baby, including total sleep time, nap counts, and average durations. Optionally filter by a specific date or date range.",
|
|
33
33
|
inputSchema: {
|
|
34
34
|
baby_name: zod_1.z.string().describe("The baby's name"),
|
|
35
|
+
date: zod_1.z.string().optional().describe("Specific date (ISO 8601, e.g. 2026-03-27). Cannot be combined with start_date/end_date."),
|
|
36
|
+
start_date: zod_1.z.string().optional().describe("Start date (ISO 8601). Cannot be combined with date."),
|
|
37
|
+
end_date: zod_1.z.string().optional().describe("End date (ISO 8601). Cannot be combined with date."),
|
|
35
38
|
},
|
|
36
39
|
annotations: { readOnlyHint: true },
|
|
37
|
-
}, async ({ baby_name }) => {
|
|
40
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, date, start_date, end_date }) => {
|
|
38
41
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
39
|
-
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.SLEEP_STATISTICS, {
|
|
42
|
+
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.SLEEP_STATISTICS, {
|
|
43
|
+
babyId,
|
|
44
|
+
date,
|
|
45
|
+
startDate: start_date,
|
|
46
|
+
endDate: end_date,
|
|
47
|
+
});
|
|
40
48
|
return {
|
|
41
49
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
42
50
|
};
|
|
43
|
-
});
|
|
51
|
+
}));
|
|
44
52
|
}
|
|
45
53
|
function registerSleepWriteTools(server) {
|
|
46
54
|
server.registerTool("log_sleep", {
|
|
@@ -57,7 +65,7 @@ function registerSleepWriteTools(server) {
|
|
|
57
65
|
notes: zod_1.z.string().optional().describe("Optional notes"),
|
|
58
66
|
},
|
|
59
67
|
annotations: { readOnlyHint: false },
|
|
60
|
-
}, async ({ baby_name, sleep_type, started_at, ended_at, ...args }) => {
|
|
68
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, sleep_type, started_at, ended_at, ...args }) => {
|
|
61
69
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
62
70
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.CREATE_SLEEP, {
|
|
63
71
|
babyId,
|
|
@@ -69,6 +77,6 @@ function registerSleepWriteTools(server) {
|
|
|
69
77
|
return {
|
|
70
78
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
71
79
|
};
|
|
72
|
-
});
|
|
80
|
+
}));
|
|
73
81
|
}
|
|
74
82
|
//# sourceMappingURL=sleep.js.map
|
package/dist/tools/sleep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/tools/sleep.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/tools/sleep.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ function registerTemperatureReadTools(server) {
|
|
|
16
16
|
end_date: zod_1.z.string().optional().describe("End date (ISO 8601)"),
|
|
17
17
|
},
|
|
18
18
|
annotations: { readOnlyHint: true },
|
|
19
|
-
}, async ({ baby_name, start_date, end_date }) => {
|
|
19
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, start_date, end_date }) => {
|
|
20
20
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
21
21
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.GET_TEMPERATURES, {
|
|
22
22
|
babyId,
|
|
@@ -26,7 +26,7 @@ function registerTemperatureReadTools(server) {
|
|
|
26
26
|
return {
|
|
27
27
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
28
28
|
};
|
|
29
|
-
});
|
|
29
|
+
}));
|
|
30
30
|
}
|
|
31
31
|
function registerTemperatureWriteTools(server) {
|
|
32
32
|
server.registerTool("log_temperature", {
|
|
@@ -40,7 +40,7 @@ function registerTemperatureWriteTools(server) {
|
|
|
40
40
|
notes: zod_1.z.string().optional().describe("Optional notes"),
|
|
41
41
|
},
|
|
42
42
|
annotations: { readOnlyHint: false },
|
|
43
|
-
}, async ({ baby_name, measured_at, ...args }) => {
|
|
43
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, measured_at, ...args }) => {
|
|
44
44
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
45
45
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.CREATE_TEMPERATURE, {
|
|
46
46
|
babyId,
|
|
@@ -50,6 +50,6 @@ function registerTemperatureWriteTools(server) {
|
|
|
50
50
|
return {
|
|
51
51
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
52
52
|
};
|
|
53
|
-
});
|
|
53
|
+
}));
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=temperatures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temperatures.js","sourceRoot":"","sources":["../../src/tools/temperatures.ts"],"names":[],"mappings":";;AAMA,oEAsBC;AAED,sEAuBC;AArDD,6BAAwB;AAExB,oDAAsD;AACtD,sDAA6E;AAC7E,
|
|
1
|
+
{"version":3,"file":"temperatures.js","sourceRoot":"","sources":["../../src/tools/temperatures.ts"],"names":[],"mappings":";;AAMA,oEAsBC;AAED,sEAuBC;AArDD,6BAAwB;AAExB,oDAAsD;AACtD,sDAA6E;AAC7E,6CAAyE;AAEzE,SAAgB,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;QACtC,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,kFAAkF;QACpF,WAAW,EAAE;YACX,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACnE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SAChE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EAAE,IAAA,qBAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,6BAAgB,EAAE;YAClD,MAAM;YACN,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,6BAA6B,CAAC,MAAiB;IAC7D,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;QACrC,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,yDAAyD;QACtE,WAAW,EAAE;YACX,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACjD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACrD,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YAC7E,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YACtF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SACxD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EAAE,IAAA,qBAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,+BAAkB,EAAE;YACpD,MAAM;YACN,UAAU,EAAE,WAAW;YACvB,GAAG,IAAI;SACR,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
package/dist/tools/weights.js
CHANGED
|
@@ -16,7 +16,7 @@ function registerWeightReadTools(server) {
|
|
|
16
16
|
end_date: zod_1.z.string().optional().describe("End date (ISO 8601)"),
|
|
17
17
|
},
|
|
18
18
|
annotations: { readOnlyHint: true },
|
|
19
|
-
}, async ({ baby_name, start_date, end_date }) => {
|
|
19
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, start_date, end_date }) => {
|
|
20
20
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
21
21
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.GET_WEIGHTS, {
|
|
22
22
|
babyId,
|
|
@@ -26,7 +26,7 @@ function registerWeightReadTools(server) {
|
|
|
26
26
|
return {
|
|
27
27
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
28
28
|
};
|
|
29
|
-
});
|
|
29
|
+
}));
|
|
30
30
|
server.registerTool("get_weight_vs_guideline", {
|
|
31
31
|
title: "Get Weight vs WHO Guideline",
|
|
32
32
|
description: "Compare a baby's latest weight against WHO growth standards, showing percentile and standard deviation ranges.",
|
|
@@ -34,13 +34,13 @@ function registerWeightReadTools(server) {
|
|
|
34
34
|
baby_name: zod_1.z.string().describe("The baby's name"),
|
|
35
35
|
},
|
|
36
36
|
annotations: { readOnlyHint: true },
|
|
37
|
-
}, async ({ baby_name }) => {
|
|
37
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name }) => {
|
|
38
38
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
39
39
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.WEIGHT_VS_GUIDELINE, { babyId });
|
|
40
40
|
return {
|
|
41
41
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
42
42
|
};
|
|
43
|
-
});
|
|
43
|
+
}));
|
|
44
44
|
}
|
|
45
45
|
function registerWeightWriteTools(server) {
|
|
46
46
|
server.registerTool("log_weight", {
|
|
@@ -54,7 +54,7 @@ function registerWeightWriteTools(server) {
|
|
|
54
54
|
notes: zod_1.z.string().optional().describe("Optional notes"),
|
|
55
55
|
},
|
|
56
56
|
annotations: { readOnlyHint: false },
|
|
57
|
-
}, async ({ baby_name, measured_at, ...args }) => {
|
|
57
|
+
}, (0, helpers_js_1.withAuth)(async ({ baby_name, measured_at, ...args }) => {
|
|
58
58
|
const babyId = await (0, helpers_js_1.resolveBabyId)(baby_name);
|
|
59
59
|
const data = await (0, client_js_1.graphqlRequest)(queries_js_1.CREATE_WEIGHT, {
|
|
60
60
|
babyId,
|
|
@@ -64,6 +64,6 @@ function registerWeightWriteTools(server) {
|
|
|
64
64
|
return {
|
|
65
65
|
content: [{ type: "text", text: (0, helpers_js_1.formatToolResult)(data) }],
|
|
66
66
|
};
|
|
67
|
-
});
|
|
67
|
+
}));
|
|
68
68
|
}
|
|
69
69
|
//# sourceMappingURL=weights.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weights.js","sourceRoot":"","sources":["../../src/tools/weights.ts"],"names":[],"mappings":";;AAMA,0DAsCC;AAED,4DAuBC;AArED,6BAAwB;AAExB,oDAAsD;AACtD,sDAAwF;AACxF,
|
|
1
|
+
{"version":3,"file":"weights.js","sourceRoot":"","sources":["../../src/tools/weights.ts"],"names":[],"mappings":"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"}
|