@cyanheads/brapi-mcp-server 0.6.4 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CLAUDE.md +11 -4
  2. package/README.md +10 -6
  3. package/changelog/0.7.x/0.7.0.md +23 -0
  4. package/changelog/0.7.x/0.7.1.md +17 -0
  5. package/dist/index.js +2 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/mcp-server/resources/definitions/brapi-variable.resource.d.ts +30 -0
  8. package/dist/mcp-server/resources/definitions/brapi-variable.resource.d.ts.map +1 -0
  9. package/dist/mcp-server/resources/definitions/brapi-variable.resource.js +78 -0
  10. package/dist/mcp-server/resources/definitions/brapi-variable.resource.js.map +1 -0
  11. package/dist/mcp-server/tools/definitions/brapi-build-phenotype-matrix.tool.d.ts +82 -0
  12. package/dist/mcp-server/tools/definitions/brapi-build-phenotype-matrix.tool.d.ts.map +1 -0
  13. package/dist/mcp-server/tools/definitions/brapi-build-phenotype-matrix.tool.js +366 -0
  14. package/dist/mcp-server/tools/definitions/brapi-build-phenotype-matrix.tool.js.map +1 -0
  15. package/dist/mcp-server/tools/definitions/brapi-export-genotype-matrix.tool.d.ts +89 -0
  16. package/dist/mcp-server/tools/definitions/brapi-export-genotype-matrix.tool.d.ts.map +1 -0
  17. package/dist/mcp-server/tools/definitions/brapi-export-genotype-matrix.tool.js +494 -0
  18. package/dist/mcp-server/tools/definitions/brapi-export-genotype-matrix.tool.js.map +1 -0
  19. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts +1 -0
  20. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js +17 -93
  22. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js.map +1 -1
  23. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts +1 -0
  24. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts +1 -0
  26. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts.map +1 -1
  27. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts +1 -0
  28. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts +1 -0
  30. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts +1 -0
  32. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts +1 -0
  34. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts.map +1 -1
  35. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts +1 -0
  36. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts.map +1 -1
  37. package/dist/mcp-server/tools/definitions/brapi-germplasm-performance.tool.d.ts +60 -0
  38. package/dist/mcp-server/tools/definitions/brapi-germplasm-performance.tool.d.ts.map +1 -0
  39. package/dist/mcp-server/tools/definitions/brapi-germplasm-performance.tool.js +416 -0
  40. package/dist/mcp-server/tools/definitions/brapi-germplasm-performance.tool.js.map +1 -0
  41. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.d.ts +1 -0
  42. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.d.ts.map +1 -1
  43. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts +1 -0
  44. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts.map +1 -1
  45. package/dist/mcp-server/tools/definitions/brapi-walk-pedigree.tool.d.ts.map +1 -1
  46. package/dist/mcp-server/tools/definitions/brapi-walk-pedigree.tool.js +19 -6
  47. package/dist/mcp-server/tools/definitions/brapi-walk-pedigree.tool.js.map +1 -1
  48. package/dist/mcp-server/tools/definitions/index.d.ts +160 -0
  49. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  50. package/dist/mcp-server/tools/definitions/index.js +6 -0
  51. package/dist/mcp-server/tools/definitions/index.js.map +1 -1
  52. package/dist/mcp-server/tools/shared/canvas-columns.d.ts +55 -0
  53. package/dist/mcp-server/tools/shared/canvas-columns.d.ts.map +1 -0
  54. package/dist/mcp-server/tools/shared/canvas-columns.js +151 -0
  55. package/dist/mcp-server/tools/shared/canvas-columns.js.map +1 -0
  56. package/dist/mcp-server/tools/shared/find-helpers.d.ts +1 -0
  57. package/dist/mcp-server/tools/shared/find-helpers.d.ts.map +1 -1
  58. package/dist/mcp-server/tools/shared/find-helpers.js +12 -0
  59. package/dist/mcp-server/tools/shared/find-helpers.js.map +1 -1
  60. package/dist/mcp-server/tools/shared/genotype-calls.d.ts +81 -0
  61. package/dist/mcp-server/tools/shared/genotype-calls.d.ts.map +1 -0
  62. package/dist/mcp-server/tools/shared/genotype-calls.js +172 -0
  63. package/dist/mcp-server/tools/shared/genotype-calls.js.map +1 -0
  64. package/dist/mcp-server/tools/shared/observations.d.ts +87 -0
  65. package/dist/mcp-server/tools/shared/observations.d.ts.map +1 -0
  66. package/dist/mcp-server/tools/shared/observations.js +285 -0
  67. package/dist/mcp-server/tools/shared/observations.js.map +1 -0
  68. package/dist/services/canvas-bridge/canvas-bridge.d.ts +6 -0
  69. package/dist/services/canvas-bridge/canvas-bridge.d.ts.map +1 -1
  70. package/dist/services/canvas-bridge/canvas-bridge.js +10 -2
  71. package/dist/services/canvas-bridge/canvas-bridge.js.map +1 -1
  72. package/manifest.json +1 -1
  73. package/package.json +3 -3
  74. package/server.json +3 -3
@@ -0,0 +1,416 @@
1
+ /**
2
+ * @fileoverview `brapi_germplasm_performance` — aggregate a single germplasm's
3
+ * observations across the studies it appears in, returning per-variable summary
4
+ * statistics (n, mean, median, sd, min, max) plus the contributing studies and
5
+ * seasons. Answers the breeder's primary question — "how does line X perform
6
+ * across the pool's history?" — in one call.
7
+ *
8
+ * Study-anchored by design: a naked `/observations?germplasmDbId=…` pull stalls
9
+ * on SGN/Breedbase deployments (the count-probe bailout). Instead the tool
10
+ * discovers the germplasm's studies via `/studies?germplasmDbIds=…` (with a
11
+ * dialect-honor cross-check, since some servers silently drop that filter and
12
+ * return the global list), then pulls observations per study through the shared
13
+ * `pullStudyObservations` machinery — the same `/observations` →
14
+ * `/observationunits` fallback chain `brapi_build_phenotype_matrix` uses.
15
+ *
16
+ * Returned rows are filtered to the iterated study and the target germplasm, so
17
+ * the aggregate stays correct even on servers that ignore the studyDbId filter
18
+ * on `/observations` (the BrAPI Community Test Server does) or over-return from
19
+ * the germplasm-anchored fallback.
20
+ *
21
+ * @module mcp-server/tools/definitions/brapi-germplasm-performance.tool
22
+ */
23
+ import { tool, z } from '@cyanheads/mcp-ts-core';
24
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
25
+ import { getServerConfig } from '../../../config/server-config.js';
26
+ import { getBrapiClient } from '../../../services/brapi-client/index.js';
27
+ import { resolveDialect } from '../../../services/brapi-dialect/index.js';
28
+ import { getCapabilityRegistry } from '../../../services/capability-registry/index.js';
29
+ import { AliasInput, asString, buildRequestOptions, extractRows, isUpstreamNotFound, requireRegisteredConnection, } from '../shared/find-helpers.js';
30
+ import { pullStudyObservations } from '../shared/observations.js';
31
+ /** Upper bound on studies discovered per germplasm (guards the filter-ignored case). */
32
+ const STUDY_DISCOVERY_CAP = 200;
33
+ const STUDY_DISCOVERY_PAGE_SIZE = 100;
34
+ // ---------------------------------------------------------------------------
35
+ // Output schema
36
+ // ---------------------------------------------------------------------------
37
+ const PerVariableSchema = z
38
+ .object({
39
+ observationVariableDbId: z.string().describe('Observation variable identifier.'),
40
+ observationVariableName: z.string().optional().describe('Display name of the variable.'),
41
+ n: z
42
+ .number()
43
+ .int()
44
+ .nonnegative()
45
+ .describe('Number of observations of this variable for the germplasm.'),
46
+ mean: z
47
+ .number()
48
+ .optional()
49
+ .describe('Arithmetic mean of numeric values (omitted for non-numeric traits).'),
50
+ median: z
51
+ .number()
52
+ .optional()
53
+ .describe('Median of numeric values (omitted for non-numeric traits).'),
54
+ sd: z
55
+ .number()
56
+ .optional()
57
+ .describe('Sample standard deviation (n−1) of numeric values; omitted when n < 2 or non-numeric.'),
58
+ min: z
59
+ .string()
60
+ .optional()
61
+ .describe('Minimum value — numeric min when numeric, else lexical min.'),
62
+ max: z
63
+ .string()
64
+ .optional()
65
+ .describe('Maximum value — numeric max when numeric, else lexical max.'),
66
+ studyCount: z
67
+ .number()
68
+ .int()
69
+ .nonnegative()
70
+ .describe('Number of distinct studies contributing observations of this variable.'),
71
+ studyDbIds: z
72
+ .array(z.string())
73
+ .describe('Distinct studyDbIds contributing observations of this variable.'),
74
+ seasons: z
75
+ .array(z.string())
76
+ .describe('Distinct season labels across the observations (empty when the server carries no season).'),
77
+ })
78
+ .describe('Aggregated statistics for one observation variable across the studies the germplasm appears in.');
79
+ const OutputSchema = z.object({
80
+ alias: z.string().describe('Alias of the registered BrAPI connection used.'),
81
+ germplasmDbId: z.string().describe('The germplasm that was analyzed.'),
82
+ germplasmName: z
83
+ .string()
84
+ .optional()
85
+ .describe('Display name of the germplasm, when the server provides one.'),
86
+ studyCount: z
87
+ .number()
88
+ .int()
89
+ .nonnegative()
90
+ .describe('Number of distinct studies that contributed any observation.'),
91
+ studyDbIds: z.array(z.string()).describe('Distinct studyDbIds that contributed observations.'),
92
+ perVariable: z
93
+ .array(PerVariableSchema)
94
+ .describe('Per-variable aggregates, sorted by observationVariableDbId.'),
95
+ warnings: z
96
+ .array(z.string())
97
+ .describe('Advisory messages (study-discovery limits, dropped filters, fallback paths, per-study failures).'),
98
+ });
99
+ // ---------------------------------------------------------------------------
100
+ // Tool definition
101
+ // ---------------------------------------------------------------------------
102
+ export const brapiGermplasmPerformance = tool('brapi_germplasm_performance', {
103
+ description: "Aggregate a single germplasm's observations across every study it appears in, returning per-variable summary statistics (n, mean, median, sd, min, max), the contributing studies, and seasons. Study-anchored: discovers the germplasm's studies first (with a dialect-honor cross-check), then pulls observations per study — avoids the unanchored germplasm-only pull that stalls on SGN/Breedbase. For the underlying observation matrix, use brapi_build_phenotype_matrix.",
104
+ annotations: { readOnlyHint: true, openWorldHint: true },
105
+ errors: [
106
+ {
107
+ reason: 'unknown_alias',
108
+ code: JsonRpcErrorCode.NotFound,
109
+ when: 'No connection has been registered under the requested alias',
110
+ recovery: 'Run brapi_connect with this alias (or omit `alias` to use the default connection) before calling brapi_germplasm_performance.',
111
+ },
112
+ {
113
+ reason: 'germplasm_not_found',
114
+ code: JsonRpcErrorCode.NotFound,
115
+ when: 'Upstream returned no germplasm record for the requested germplasmDbId',
116
+ recovery: 'Verify the germplasmDbId on the target server, or run brapi_find_germplasm to discover valid IDs.',
117
+ },
118
+ ],
119
+ input: z.object({
120
+ alias: AliasInput,
121
+ germplasmDbId: z.string().min(1).describe('The germplasmDbId to summarize performance for.'),
122
+ variables: z
123
+ .array(z.string())
124
+ .optional()
125
+ .describe('Optional subset of observationVariableDbIds to aggregate. Omit to include every variable observed for the germplasm.'),
126
+ }),
127
+ output: OutputSchema,
128
+ async handler(input, ctx) {
129
+ const client = getBrapiClient();
130
+ const config = getServerConfig();
131
+ const capabilities = getCapabilityRegistry();
132
+ const connection = await requireRegisteredConnection(ctx, input.alias);
133
+ const capabilityLookup = {};
134
+ if (connection.resolvedAuth)
135
+ capabilityLookup.auth = connection.resolvedAuth;
136
+ await capabilities.ensure(connection.baseUrl, { service: 'germplasm', method: 'GET' }, ctx, capabilityLookup);
137
+ // 1. Confirm the germplasm exists and capture its display name.
138
+ const germplasmName = await fetchGermplasmName(client, connection, input.germplasmDbId, ctx);
139
+ const profile = await capabilities.profile(connection.baseUrl, ctx, capabilityLookup);
140
+ const dialect = await resolveDialect(connection, ctx, capabilityLookup);
141
+ const loadLimit = config.loadLimit;
142
+ const warnings = [];
143
+ // 2. Discover the germplasm's studies (study-anchoring requirement).
144
+ const discovery = await discoverStudiesForGermplasm({
145
+ client,
146
+ connection,
147
+ dialect,
148
+ germplasmDbId: input.germplasmDbId,
149
+ ctx,
150
+ warnings,
151
+ });
152
+ if (discovery.studyDbIds.length === 0) {
153
+ warnings.push(`No studies discovered for germplasm '${input.germplasmDbId}'. It may not be associated with any study on this server, or /studies does not support a germplasm filter — use brapi_build_phenotype_matrix with explicit studies instead.`);
154
+ }
155
+ else if (discovery.studyDbIds.length >= STUDY_DISCOVERY_CAP) {
156
+ warnings.push(`Study discovery capped at ${STUDY_DISCOVERY_CAP} studies — aggregates may be incomplete. Narrow with brapi_build_phenotype_matrix on specific studies if needed.`);
157
+ }
158
+ // 3. Pull observations per study, scoped to the germplasm. Filter returned
159
+ // rows to the iterated study + target germplasm so the aggregate stays
160
+ // correct on servers that ignore the studyDbId filter or over-return.
161
+ const collected = [];
162
+ const wantVariables = input.variables?.length ? new Set(input.variables) : undefined;
163
+ for (const studyDbId of discovery.studyDbIds) {
164
+ let studyObs;
165
+ try {
166
+ studyObs = await pullStudyObservations({
167
+ studyDbId,
168
+ input: input.variables
169
+ ? { germplasm: [input.germplasmDbId], variables: input.variables }
170
+ : { germplasm: [input.germplasmDbId] },
171
+ client,
172
+ connection,
173
+ profile: profile.supported,
174
+ dialect,
175
+ config,
176
+ loadLimit,
177
+ warnings,
178
+ ctx,
179
+ });
180
+ }
181
+ catch (err) {
182
+ warnings.push(`Study '${studyDbId}': observation pull failed (${err instanceof Error ? err.message : String(err)}).`);
183
+ continue;
184
+ }
185
+ if (studyObs === null) {
186
+ warnings.push(`Study '${studyDbId}': no observation path (server exposes neither /observations nor /observationunits).`);
187
+ continue;
188
+ }
189
+ for (const o of studyObs) {
190
+ if (o.studyDbId !== studyDbId)
191
+ continue;
192
+ if (o.germplasmDbId !== input.germplasmDbId)
193
+ continue;
194
+ if (wantVariables && !wantVariables.has(o.observationVariableDbId))
195
+ continue;
196
+ collected.push(o);
197
+ }
198
+ }
199
+ // 4. Aggregate per variable.
200
+ const perVariable = aggregatePerVariable(collected);
201
+ const allStudyDbIds = [...new Set(collected.map((o) => o.studyDbId))].sort();
202
+ const result = {
203
+ alias: connection.alias,
204
+ germplasmDbId: input.germplasmDbId,
205
+ studyCount: allStudyDbIds.length,
206
+ studyDbIds: allStudyDbIds,
207
+ perVariable,
208
+ warnings,
209
+ };
210
+ if (germplasmName)
211
+ result.germplasmName = germplasmName;
212
+ return result;
213
+ },
214
+ format: (result) => {
215
+ const lines = [];
216
+ lines.push(`# Germplasm performance — ${result.germplasmName ?? result.germplasmDbId} — \`${result.alias}\``);
217
+ lines.push('');
218
+ lines.push(`germplasmDbId: \`${result.germplasmDbId}\` · studies: ${result.studyCount} · variables: ${result.perVariable.length}`);
219
+ lines.push(`studyDbIds: ${result.studyDbIds.join(', ') || '—'}`);
220
+ lines.push('');
221
+ if (result.perVariable.length === 0) {
222
+ lines.push('_No observations found for this germplasm across the discovered studies._');
223
+ }
224
+ else {
225
+ lines.push('## Per-variable aggregates');
226
+ for (const v of result.perVariable) {
227
+ const stats = [`n=${v.n}`];
228
+ if (v.mean !== undefined)
229
+ stats.push(`mean=${fmtNum(v.mean)}`);
230
+ if (v.median !== undefined)
231
+ stats.push(`median=${fmtNum(v.median)}`);
232
+ if (v.sd !== undefined)
233
+ stats.push(`sd=${fmtNum(v.sd)}`);
234
+ if (v.min !== undefined)
235
+ stats.push(`min=${v.min}`);
236
+ if (v.max !== undefined)
237
+ stats.push(`max=${v.max}`);
238
+ stats.push(`studies=${v.studyCount}`);
239
+ if (v.studyDbIds.length > 0)
240
+ stats.push(`studyDbIds=${v.studyDbIds.join(',')}`);
241
+ if (v.seasons.length > 0)
242
+ stats.push(`seasons=${v.seasons.join('/')}`);
243
+ lines.push(`- **${v.observationVariableName ?? v.observationVariableDbId}** (\`${v.observationVariableDbId}\`): ${stats.join(' · ')}`);
244
+ }
245
+ }
246
+ if (result.warnings.length > 0) {
247
+ lines.push('');
248
+ lines.push('## Warnings');
249
+ for (const w of result.warnings)
250
+ lines.push(`- ${w}`);
251
+ }
252
+ return [{ type: 'text', text: lines.join('\n') }];
253
+ },
254
+ });
255
+ // ---------------------------------------------------------------------------
256
+ // Germplasm existence
257
+ // ---------------------------------------------------------------------------
258
+ async function fetchGermplasmName(client, connection, germplasmDbId, ctx) {
259
+ const id = encodeURIComponent(germplasmDbId);
260
+ let env;
261
+ try {
262
+ env = await client.get(connection.baseUrl, `/germplasm/${id}`, ctx, buildRequestOptions(connection, undefined, { singleton: true }));
263
+ }
264
+ catch (err) {
265
+ if (isUpstreamNotFound(err))
266
+ throw germplasmNotFound(ctx, connection, germplasmDbId);
267
+ throw err;
268
+ }
269
+ const rec = env.result;
270
+ if (!rec || typeof rec !== 'object' || !rec.germplasmDbId) {
271
+ throw germplasmNotFound(ctx, connection, germplasmDbId);
272
+ }
273
+ return asString(rec.germplasmName);
274
+ }
275
+ function germplasmNotFound(ctx, connection, germplasmDbId) {
276
+ return ctx.fail('germplasm_not_found', `Germplasm '${germplasmDbId}' not found on ${connection.baseUrl}.`, {
277
+ germplasmDbId,
278
+ baseUrl: connection.baseUrl,
279
+ ...ctx.recoveryFor('germplasm_not_found'),
280
+ });
281
+ }
282
+ /**
283
+ * Discover the studies a germplasm appears in via `/studies?germplasmDbIds=…`,
284
+ * paging up to `STUDY_DISCOVERY_CAP`. Cross-checks the filtered total against an
285
+ * unfiltered baseline: when equal (and > 0) the server ignored the germplasm
286
+ * filter — the anchor set is over-broad, so it warns but still proceeds (the
287
+ * per-study observation pull remains germplasm-scoped). When the dialect drops
288
+ * the filter outright, returns an empty set with a warning.
289
+ */
290
+ async function discoverStudiesForGermplasm(args) {
291
+ const { client, connection, dialect, germplasmDbId, ctx, warnings } = args;
292
+ const adapted = dialect.adaptGetFilters('studies', { germplasmDbIds: [germplasmDbId] });
293
+ warnings.push(...adapted.warnings);
294
+ if (Object.keys(adapted.filters).length === 0) {
295
+ warnings.push('Study discovery skipped: the active dialect dropped the germplasm filter for /studies (server does not honor it).');
296
+ return { studyDbIds: [] };
297
+ }
298
+ const studyDbIds = [];
299
+ const seen = new Set();
300
+ let page = 0;
301
+ let totalPages = 1;
302
+ let filteredTotal;
303
+ while (page < totalPages && studyDbIds.length < STUDY_DISCOVERY_CAP && !ctx.signal.aborted) {
304
+ const env = await client.get(connection.baseUrl, '/studies', ctx, buildRequestOptions(connection, {
305
+ ...adapted.filters,
306
+ pageSize: STUDY_DISCOVERY_PAGE_SIZE,
307
+ page,
308
+ }));
309
+ const rows = extractRows(env.result);
310
+ for (const r of rows) {
311
+ const sid = asString(r.studyDbId);
312
+ if (sid && !seen.has(sid)) {
313
+ seen.add(sid);
314
+ studyDbIds.push(sid);
315
+ }
316
+ if (studyDbIds.length >= STUDY_DISCOVERY_CAP)
317
+ break;
318
+ }
319
+ if (page === 0) {
320
+ const tc = env.metadata?.pagination?.totalCount;
321
+ if (typeof tc === 'number')
322
+ filteredTotal = tc;
323
+ }
324
+ totalPages = env.metadata?.pagination?.totalPages ?? page + 1;
325
+ page++;
326
+ if (rows.length < STUDY_DISCOVERY_PAGE_SIZE)
327
+ break;
328
+ }
329
+ // Dialect-honor cross-check against an unfiltered baseline.
330
+ if (typeof filteredTotal === 'number') {
331
+ const baseline = await fetchStudyTotal(client, connection, ctx).catch(() => undefined);
332
+ if (typeof baseline === 'number' && baseline > 0 && filteredTotal === baseline) {
333
+ warnings.push(`/studies returned the same total (${baseline}) for the germplasm-filtered probe and an unfiltered baseline — the server appears to ignore the germplasm filter on /studies. Proceeding with the ${studyDbIds.length} discovered studies (per-study observation pulls remain germplasm-scoped), but coverage may be over-broad.`);
334
+ }
335
+ }
336
+ return { studyDbIds };
337
+ }
338
+ async function fetchStudyTotal(client, connection, ctx) {
339
+ const env = await client.get(connection.baseUrl, '/studies', ctx, buildRequestOptions(connection, { pageSize: 1 }));
340
+ const total = env.metadata?.pagination?.totalCount;
341
+ return typeof total === 'number' ? total : undefined;
342
+ }
343
+ // ---------------------------------------------------------------------------
344
+ // Aggregation
345
+ // ---------------------------------------------------------------------------
346
+ function aggregatePerVariable(obs) {
347
+ const byVar = new Map();
348
+ for (const o of obs) {
349
+ const arr = byVar.get(o.observationVariableDbId);
350
+ if (arr)
351
+ arr.push(o);
352
+ else
353
+ byVar.set(o.observationVariableDbId, [o]);
354
+ }
355
+ const out = [];
356
+ for (const [varId, rows] of byVar) {
357
+ const values = rows.map((r) => r.value);
358
+ const nums = values.map(Number).filter((n) => !Number.isNaN(n));
359
+ const studyDbIds = [...new Set(rows.map((r) => r.studyDbId))].sort();
360
+ const seasons = [
361
+ ...new Set(rows.map((r) => r.season).filter((s) => typeof s === 'string')),
362
+ ].sort();
363
+ const pv = {
364
+ observationVariableDbId: varId,
365
+ observationVariableName: rows[0]?.observationVariableName ?? varId,
366
+ n: rows.length,
367
+ studyCount: studyDbIds.length,
368
+ studyDbIds,
369
+ seasons,
370
+ };
371
+ if (nums.length > 0) {
372
+ pv.mean = mean(nums);
373
+ pv.median = median(nums);
374
+ pv.min = String(Math.min(...nums));
375
+ pv.max = String(Math.max(...nums));
376
+ if (nums.length >= 2)
377
+ pv.sd = sampleStdDev(nums);
378
+ }
379
+ else {
380
+ const sorted = [...values].sort();
381
+ const first = sorted[0];
382
+ const last = sorted[sorted.length - 1];
383
+ if (first !== undefined)
384
+ pv.min = first;
385
+ if (last !== undefined)
386
+ pv.max = last;
387
+ }
388
+ out.push(pv);
389
+ }
390
+ out.sort((a, b) => a.observationVariableDbId.localeCompare(b.observationVariableDbId));
391
+ return out;
392
+ }
393
+ function mean(nums) {
394
+ return nums.reduce((a, b) => a + b, 0) / nums.length;
395
+ }
396
+ function median(nums) {
397
+ const s = [...nums].sort((a, b) => a - b);
398
+ const mid = Math.floor(s.length / 2);
399
+ const hi = s[mid];
400
+ if (hi === undefined)
401
+ throw new Error('median of empty array');
402
+ if (s.length % 2 !== 0)
403
+ return hi;
404
+ const lo = s[mid - 1];
405
+ return lo === undefined ? hi : (lo + hi) / 2;
406
+ }
407
+ function sampleStdDev(nums) {
408
+ const m = mean(nums);
409
+ const variance = nums.reduce((a, b) => a + (b - m) ** 2, 0) / (nums.length - 1);
410
+ return Math.sqrt(variance);
411
+ }
412
+ /** Render a number compactly — integers bare, else rounded to 3 decimals. */
413
+ function fmtNum(n) {
414
+ return Number.isInteger(n) ? String(n) : String(Math.round(n * 1000) / 1000);
415
+ }
416
+ //# sourceMappingURL=brapi-germplasm-performance.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brapi-germplasm-performance.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-germplasm-performance.tool.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ export declare const brapiRawGet: import("@cyanheads/mcp-ts-core").ToolDefinitio
36
36
  tableName: z.ZodString;
37
37
  rowCount: z.ZodNumber;
38
38
  columns: z.ZodArray<z.ZodString>;
39
+ columnLegend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
39
40
  createdAt: z.ZodString;
40
41
  expiresAt: z.ZodString;
41
42
  truncated: z.ZodOptional<z.ZodBoolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"brapi-raw-get.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-get.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAuDjE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoItB,CAAC"}
1
+ {"version":3,"file":"brapi-raw-get.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-get.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAuDjE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoItB,CAAC"}
@@ -39,6 +39,7 @@ export declare const brapiRawSearch: import("@cyanheads/mcp-ts-core").ToolDefini
39
39
  tableName: z.ZodString;
40
40
  rowCount: z.ZodNumber;
41
41
  columns: z.ZodArray<z.ZodString>;
42
+ columnLegend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
42
43
  createdAt: z.ZodString;
43
44
  expiresAt: z.ZodString;
44
45
  truncated: z.ZodOptional<z.ZodBoolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"brapi-raw-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-search.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA6DjE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmKzB,CAAC"}
1
+ {"version":3,"file":"brapi-raw-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-search.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA6DjE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmKzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"brapi-walk-pedigree.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-walk-pedigree.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAmGjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkO5B,CAAC"}
1
+ {"version":3,"file":"brapi-walk-pedigree.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-walk-pedigree.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAmGjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmP5B,CAAC"}
@@ -150,8 +150,9 @@ export const brapiWalkPedigree = tool('brapi_walk_pedigree', {
150
150
  let cycleCount = 0;
151
151
  let deadEndCount = 0;
152
152
  let depthReached = 0;
153
- for (let depth = 1; depth <= input.maxDepth; depth++) {
153
+ depthLoop: for (let depth = 1; depth <= input.maxDepth; depth++) {
154
154
  if (state.nodes.size >= MAX_NODES) {
155
+ // Already at the cap from a prior depth — skip fetching another round.
155
156
  truncated = true;
156
157
  break;
157
158
  }
@@ -166,7 +167,6 @@ export const brapiWalkPedigree = tool('brapi_walk_pedigree', {
166
167
  walkAncestors: wantsAncestors && hasPedigree,
167
168
  walkDescendants: wantsDescendants && hasProgeny,
168
169
  })));
169
- let producedEdge = false;
170
170
  for (const result of exp) {
171
171
  if (result.kind === 'deadEnd') {
172
172
  deadEndCount++;
@@ -174,6 +174,14 @@ export const brapiWalkPedigree = tool('brapi_walk_pedigree', {
174
174
  continue;
175
175
  }
176
176
  for (const parent of result.parents) {
177
+ // Hard ceiling: one high-fertility germplasm can enumerate thousands
178
+ // of parents/children within a single depth, so enforce the cap
179
+ // per-registration — a depth-boundary check alone lets nodes.size
180
+ // overshoot MAX_NODES before the next iteration runs.
181
+ if (state.nodes.size >= MAX_NODES) {
182
+ truncated = true;
183
+ break depthLoop;
184
+ }
177
185
  const already = state.nodes.has(parent.germplasmDbId);
178
186
  registerNode(state, parent.germplasmDbId, parent.germplasmName, depth, 'ancestor');
179
187
  const edge = {
@@ -185,7 +193,7 @@ export const brapiWalkPedigree = tool('brapi_walk_pedigree', {
185
193
  edge.parentType = parent.parentType;
186
194
  const inverseKnown = isInverseEdgeKnown(state, edge);
187
195
  if (addEdge(state, edge))
188
- producedEdge = true;
196
+ depthReached = depth;
189
197
  if (already) {
190
198
  // direction='both' walks BFS in two directions concurrently — we
191
199
  // expect to re-encounter nodes via the inverse relationship as the
@@ -198,6 +206,10 @@ export const brapiWalkPedigree = tool('brapi_walk_pedigree', {
198
206
  }
199
207
  }
200
208
  for (const child of result.children) {
209
+ if (state.nodes.size >= MAX_NODES) {
210
+ truncated = true;
211
+ break depthLoop;
212
+ }
201
213
  const already = state.nodes.has(child.germplasmDbId);
202
214
  registerNode(state, child.germplasmDbId, child.germplasmName, depth, 'descendant');
203
215
  const edge = {
@@ -207,7 +219,7 @@ export const brapiWalkPedigree = tool('brapi_walk_pedigree', {
207
219
  };
208
220
  const inverseKnown = isInverseEdgeKnown(state, edge);
209
221
  if (addEdge(state, edge))
210
- producedEdge = true;
222
+ depthReached = depth;
211
223
  if (already) {
212
224
  if (!inverseKnown)
213
225
  cycleCount++;
@@ -217,11 +229,12 @@ export const brapiWalkPedigree = tool('brapi_walk_pedigree', {
217
229
  }
218
230
  }
219
231
  }
220
- if (producedEdge)
221
- depthReached = depth;
222
232
  if (state.frontier.size === 0)
223
233
  break;
224
234
  }
235
+ if (truncated) {
236
+ warnings.push(`Walk stopped at the ${MAX_NODES}-node safety cap; the returned DAG is partial. Re-run with fewer roots or a lower maxDepth to stay within the cap.`);
237
+ }
225
238
  const nodes = Array.from(state.nodes.values()).sort((a, b) => a.depth - b.depth || a.germplasmDbId.localeCompare(b.germplasmDbId));
226
239
  const edges = Array.from(state.edges.values());
227
240
  const leafCount = computeLeafCount(nodes, edges, input.direction);
@@ -1 +1 @@
1
- {"version":3,"file":"brapi-walk-pedigree.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-walk-pedigree.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brapi-walk-pedigree.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-walk-pedigree.tool.ts"],"names":[],"mappings":"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"}