@cyanheads/brapi-mcp-server 0.4.4 → 0.4.5

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 (75) hide show
  1. package/CLAUDE.md +4 -4
  2. package/README.md +12 -3
  3. package/changelog/0.4.x/0.4.5.md +25 -0
  4. package/dist/mcp-server/tools/definitions/brapi-connect.tool.d.ts +1 -0
  5. package/dist/mcp-server/tools/definitions/brapi-connect.tool.d.ts.map +1 -1
  6. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts.map +1 -1
  7. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js +13 -4
  8. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js.map +1 -1
  9. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts.map +1 -1
  10. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js +13 -4
  11. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js.map +1 -1
  12. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts.map +1 -1
  13. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js +13 -4
  14. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js.map +1 -1
  15. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts.map +1 -1
  16. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js +13 -4
  17. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js.map +1 -1
  18. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js +13 -4
  20. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js +12 -4
  23. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js +13 -4
  26. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js.map +1 -1
  27. package/dist/mcp-server/tools/definitions/brapi-server-info.tool.d.ts +1 -0
  28. package/dist/mcp-server/tools/definitions/brapi-server-info.tool.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/index.d.ts +2 -0
  30. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/shared/connect-auth-schema.js +2 -2
  32. package/dist/mcp-server/tools/shared/connect-auth-schema.js.map +1 -1
  33. package/dist/mcp-server/tools/shared/find-helpers.d.ts +35 -0
  34. package/dist/mcp-server/tools/shared/find-helpers.d.ts.map +1 -1
  35. package/dist/mcp-server/tools/shared/find-helpers.js +83 -12
  36. package/dist/mcp-server/tools/shared/find-helpers.js.map +1 -1
  37. package/dist/mcp-server/tools/shared/orientation-envelope.d.ts +2 -0
  38. package/dist/mcp-server/tools/shared/orientation-envelope.d.ts.map +1 -1
  39. package/dist/mcp-server/tools/shared/orientation-envelope.js +11 -0
  40. package/dist/mcp-server/tools/shared/orientation-envelope.js.map +1 -1
  41. package/dist/services/brapi-client/brapi-client.d.ts.map +1 -1
  42. package/dist/services/brapi-client/brapi-client.js +1 -1
  43. package/dist/services/brapi-client/brapi-client.js.map +1 -1
  44. package/dist/services/brapi-dialect/brapi-test-dialect.d.ts +13 -0
  45. package/dist/services/brapi-dialect/brapi-test-dialect.d.ts.map +1 -0
  46. package/dist/services/brapi-dialect/brapi-test-dialect.js +20 -0
  47. package/dist/services/brapi-dialect/brapi-test-dialect.js.map +1 -0
  48. package/dist/services/brapi-dialect/cassavabase-dialect.d.ts +5 -4
  49. package/dist/services/brapi-dialect/cassavabase-dialect.d.ts.map +1 -1
  50. package/dist/services/brapi-dialect/cassavabase-dialect.js +44 -36
  51. package/dist/services/brapi-dialect/cassavabase-dialect.js.map +1 -1
  52. package/dist/services/brapi-dialect/detect.d.ts +5 -3
  53. package/dist/services/brapi-dialect/detect.d.ts.map +1 -1
  54. package/dist/services/brapi-dialect/detect.js +21 -7
  55. package/dist/services/brapi-dialect/detect.js.map +1 -1
  56. package/dist/services/brapi-dialect/index.d.ts +2 -1
  57. package/dist/services/brapi-dialect/index.d.ts.map +1 -1
  58. package/dist/services/brapi-dialect/index.js +2 -1
  59. package/dist/services/brapi-dialect/index.js.map +1 -1
  60. package/dist/services/brapi-dialect/registry.d.ts.map +1 -1
  61. package/dist/services/brapi-dialect/registry.js +4 -1
  62. package/dist/services/brapi-dialect/registry.js.map +1 -1
  63. package/dist/services/brapi-dialect/types.d.ts +6 -0
  64. package/dist/services/brapi-dialect/types.d.ts.map +1 -1
  65. package/dist/services/capability-registry/capability-registry.d.ts.map +1 -1
  66. package/dist/services/capability-registry/capability-registry.js +30 -10
  67. package/dist/services/capability-registry/capability-registry.js.map +1 -1
  68. package/dist/services/capability-registry/types.d.ts +6 -0
  69. package/dist/services/capability-registry/types.d.ts.map +1 -1
  70. package/dist/services/server-registry/server-registry.d.ts +1 -0
  71. package/dist/services/server-registry/server-registry.d.ts.map +1 -1
  72. package/dist/services/server-registry/server-registry.js +31 -1
  73. package/dist/services/server-registry/server-registry.js.map +1 -1
  74. package/package.json +4 -4
  75. package/server.json +3 -3
@@ -1,14 +1,14 @@
1
1
  /**
2
- * @fileoverview Dialect for CassavaBase (and other CXGN / SGN-derived BrAPI
3
- * deployments — Sweetpotatobase, Yambase, Musabase, BananaBase, etc.). These
4
- * servers run the SGN BrAPI implementation, which predates the BrAPI v2.1
2
+ * @fileoverview Dialects for CassavaBase and broader CXGN / SGN-derived BrAPI
3
+ * deployments — Breedbase, Sweetpotatobase, Yambase, Musabase, BananaBase,
4
+ * T3, etc. These servers run the SGN BrAPI implementation, which predates the BrAPI v2.1
5
5
  * filter-name normalization and only honors the older **singular** query
6
6
  * parameters on GET list endpoints. Sending `commonCropNames=Cassava` is
7
7
  * silently ignored upstream — the singular `commonCropName=Cassava` works.
8
8
  * Empirically verified against `https://cassavabase.org/brapi/v2` on
9
9
  * 2026-04-30.
10
10
  *
11
- * The dialect:
11
+ * The dialects:
12
12
  * 1. Translates plural filter keys to their singular equivalents per
13
13
  * endpoint, downcasting array values to the first element with a loud
14
14
  * warning when more than one value was supplied (the GET surface can't
@@ -158,39 +158,47 @@ const DISABLED_SEARCH_ENDPOINTS = new Set([
158
158
  'samples',
159
159
  'callsets',
160
160
  ]);
161
- export const cassavabaseDialect = {
162
- id: 'cassavabase',
163
- disabledSearchEndpoints: DISABLED_SEARCH_ENDPOINTS,
164
- adaptGetFilters(endpoint, filters) {
165
- const mapping = PLURAL_TO_SINGULAR[endpoint] ?? {};
166
- const dropped = DROPPED_FILTERS[endpoint] ?? EMPTY_DROP_SET;
167
- const out = {};
168
- const warnings = [];
169
- for (const [key, value] of Object.entries(filters)) {
170
- if (value === undefined)
171
- continue;
172
- if (dropped.has(key)) {
173
- warnings.push(`Cassavabase dialect: dropped filter '${key}' — this server does not honor it. Adjust the query or omit the filter.`);
174
- continue;
175
- }
176
- const target = mapping[key];
177
- if (!target) {
178
- out[key] = value;
179
- continue;
180
- }
181
- if (Array.isArray(value)) {
182
- if (value.length === 0)
161
+ function createSgnFamilyDialect(id, label) {
162
+ return {
163
+ id,
164
+ disabledSearchEndpoints: DISABLED_SEARCH_ENDPOINTS,
165
+ notes: [
166
+ 'SGN/Breedbase-style GET filters use singular names for many fields; this dialect translates plural BrAPI v2.1 filters before sending requests.',
167
+ 'Several advertised POST /search routes are treated as unavailable because SGN-family deployments often expose them in /calls while serving broken or hanging responses.',
168
+ ],
169
+ adaptGetFilters(endpoint, filters) {
170
+ const mapping = PLURAL_TO_SINGULAR[endpoint] ?? {};
171
+ const dropped = DROPPED_FILTERS[endpoint] ?? EMPTY_DROP_SET;
172
+ const out = {};
173
+ const warnings = [];
174
+ for (const [key, value] of Object.entries(filters)) {
175
+ if (value === undefined)
176
+ continue;
177
+ if (dropped.has(key)) {
178
+ warnings.push(`${label} dialect: dropped filter '${key}' this server does not honor it. Adjust the query or omit the filter.`);
183
179
  continue;
184
- out[target] = value[0];
185
- if (value.length > 1) {
186
- warnings.push(`Cassavabase dialect: '${key}' downcast to '${target}'; only the first value (${JSON.stringify(value[0])}) was sent — Cassavabase's GET /${endpoint} accepts a single value per filter, not arrays. Run separate calls for the other values, or use a curated tool that paginates over them.`);
180
+ }
181
+ const target = mapping[key];
182
+ if (!target) {
183
+ out[key] = value;
184
+ continue;
185
+ }
186
+ if (Array.isArray(value)) {
187
+ if (value.length === 0)
188
+ continue;
189
+ out[target] = value[0];
190
+ if (value.length > 1) {
191
+ warnings.push(`${label} dialect: '${key}' downcast to '${target}'; only the first value (${JSON.stringify(value[0])}) was sent — this server's GET /${endpoint} accepts a single value per filter, not arrays. Run separate calls for the other values, or use a curated tool that paginates over them.`);
192
+ }
193
+ }
194
+ else {
195
+ out[target] = value;
187
196
  }
188
197
  }
189
- else {
190
- out[target] = value;
191
- }
192
- }
193
- return { filters: out, warnings };
194
- },
195
- };
198
+ return { filters: out, warnings };
199
+ },
200
+ };
201
+ }
202
+ export const cassavabaseDialect = createSgnFamilyDialect('cassavabase', 'CassavaBase');
203
+ export const breedbaseDialect = createSgnFamilyDialect('breedbase', 'Breedbase/SGN');
196
204
  //# sourceMappingURL=cassavabase-dialect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cassavabase-dialect.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/cassavabase-dialect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cassavabase-dialect.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/cassavabase-dialect.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  * override (`BRAPI_<ALIAS>_DIALECT`). Pure functions; the async lookup that
5
5
  * pulls the profile lives in `index.ts → resolveDialect`.
6
6
  *
7
- * Supported override values match registered dialect ids: `spec`, `cassavabase`.
7
+ * Supported override values match registered dialect ids: `spec`,
8
+ * `brapi-test`, `breedbase`, `cassavabase`.
8
9
  * `auto` (or unset) triggers detection from the profile.
9
10
  *
10
11
  * @module services/brapi-dialect/detect
@@ -37,8 +38,9 @@ export declare function readDialectOverride(alias: string, env?: NodeJS.ProcessE
37
38
  /**
38
39
  * Pattern-match a server name (or organization name) to a registered dialect
39
40
  * id. Falls back to `spec` when nothing matches. Match is case-insensitive
40
- * and substring-based — `CassavaBase`, `Sweetpotatobase`, etc. all share the
41
- * SGN BrAPI implementation and resolve to the `cassavabase` dialect.
41
+ * and substring-based — `CassavaBase` keeps its historical `cassavabase`
42
+ * dialect id, while sister SGN / Breedbase deployments resolve to the broader
43
+ * `breedbase` dialect.
42
44
  *
43
45
  * Returns both the matched id and which field triggered the match so callers
44
46
  * can surface that provenance to the agent.
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAKjF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAKpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,GACpC,gBAAgB,CAelB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,gBAAgB,CAIlB"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAKjF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAKpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,GACpC,gBAAgB,CAwBlB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,gBAAgB,CAIlB"}
@@ -4,7 +4,8 @@
4
4
  * override (`BRAPI_<ALIAS>_DIALECT`). Pure functions; the async lookup that
5
5
  * pulls the profile lives in `index.ts → resolveDialect`.
6
6
  *
7
- * Supported override values match registered dialect ids: `spec`, `cassavabase`.
7
+ * Supported override values match registered dialect ids: `spec`,
8
+ * `brapi-test`, `breedbase`, `cassavabase`.
8
9
  * `auto` (or unset) triggers detection from the profile.
9
10
  *
10
11
  * @module services/brapi-dialect/detect
@@ -30,8 +31,9 @@ export function readDialectOverride(alias, env = process.env) {
30
31
  /**
31
32
  * Pattern-match a server name (or organization name) to a registered dialect
32
33
  * id. Falls back to `spec` when nothing matches. Match is case-insensitive
33
- * and substring-based — `CassavaBase`, `Sweetpotatobase`, etc. all share the
34
- * SGN BrAPI implementation and resolve to the `cassavabase` dialect.
34
+ * and substring-based — `CassavaBase` keeps its historical `cassavabase`
35
+ * dialect id, while sister SGN / Breedbase deployments resolve to the broader
36
+ * `breedbase` dialect.
35
37
  *
36
38
  * Returns both the matched id and which field triggered the match so callers
37
39
  * can surface that provenance to the agent.
@@ -41,17 +43,29 @@ export function detectDialectFromName(name, organizationName) {
41
43
  const lowerOrg = (organizationName ?? '').toLowerCase();
42
44
  if (!lowerName.trim() && !lowerOrg.trim())
43
45
  return { id: 'spec', source: 'fallback' };
44
- const isSgnHost = (haystack) => haystack.includes('cassavabase') ||
45
- haystack.includes('sweetpotatobase') ||
46
+ const isCassavaBase = (haystack) => haystack.includes('cassavabase');
47
+ const isBreedbaseHost = (haystack) => haystack.includes('sweetpotatobase') ||
46
48
  haystack.includes('yambase') ||
47
49
  haystack.includes('musabase') ||
48
50
  haystack.includes('bananabase') ||
51
+ haystack.includes('breedbase') ||
52
+ haystack.includes('sol genomics') ||
53
+ haystack.includes('solgenomics') ||
49
54
  // Catches "BTI" / "Boyce Thompson Institute" hosts running the same SGN stack.
50
55
  haystack.includes('boyce thompson');
51
- if (isSgnHost(lowerName))
56
+ const isBrapiTestHost = (haystack) => haystack.includes('brapi test') || haystack.includes('community test server');
57
+ if (isCassavaBase(lowerName))
52
58
  return { id: 'cassavabase', source: 'server-name' };
53
- if (isSgnHost(lowerOrg))
59
+ if (isCassavaBase(lowerOrg))
54
60
  return { id: 'cassavabase', source: 'organization-name' };
61
+ if (isBreedbaseHost(lowerName))
62
+ return { id: 'breedbase', source: 'server-name' };
63
+ if (isBreedbaseHost(lowerOrg))
64
+ return { id: 'breedbase', source: 'organization-name' };
65
+ if (isBrapiTestHost(lowerName))
66
+ return { id: 'brapi-test', source: 'server-name' };
67
+ if (isBrapiTestHost(lowerOrg))
68
+ return { id: 'brapi-test', source: 'organization-name' };
55
69
  return { id: 'spec', source: 'fallback' };
56
70
  }
57
71
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,UAAU,GAAG,UAAU,CAAC;AAyB9B,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,EAAE,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO;IACzC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAwB,EACxB,gBAAqC;IAErC,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACrF,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE,CACrC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC/B,+EAA+E;QAC/E,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACtC,IAAI,SAAS,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC9E,IAAI,SAAS,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACnF,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,OAAsC,EACtC,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC9D,OAAO,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/detect.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,8 @@ import type { Context } from '@cyanheads/mcp-ts-core';
12
12
  import type { ResolvedAuth } from '../../services/brapi-client/index.js';
13
13
  import type { RegisteredServer } from '../../services/server-registry/index.js';
14
14
  import type { BrapiDialect } from './types.js';
15
- export { cassavabaseDialect } from './cassavabase-dialect.js';
15
+ export { brapiTestDialect } from './brapi-test-dialect.js';
16
+ export { breedbaseDialect, cassavabaseDialect } from './cassavabase-dialect.js';
16
17
  export { type DialectDetection, type DialectDetectionSource, detectDialectFromName, detectDialectId, dialectEnvVar, readDialectOverride, } from './detect.js';
17
18
  export { getDialectById, initBrapiDialectRegistry, listRegisteredDialectIds, registerDialect, resetBrapiDialectRegistry, } from './registry.js';
18
19
  export { specDialect } from './spec-dialect.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAAO,GAChD,OAAO,CAAC,YAAY,CAAC,CAKvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAAO,GAChD,OAAO,CAAC,YAAY,CAAC,CAKvB"}
@@ -11,7 +11,8 @@
11
11
  import { getCapabilityRegistry } from '../../services/capability-registry/index.js';
12
12
  import { detectDialectId } from './detect.js';
13
13
  import { getDialectById } from './registry.js';
14
- export { cassavabaseDialect } from './cassavabase-dialect.js';
14
+ export { brapiTestDialect } from './brapi-test-dialect.js';
15
+ export { breedbaseDialect, cassavabaseDialect } from './cassavabase-dialect.js';
15
16
  export { detectDialectFromName, detectDialectId, dialectEnvVar, readDialectOverride, } from './detect.js';
16
17
  export { getDialectById, initBrapiDialectRegistry, listRegisteredDialectIds, registerDialect, resetBrapiDialectRegistry, } from './registry.js';
17
18
  export { specDialect } from './spec-dialect.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAGL,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAA4B,EAC5B,GAAY,EACZ,UAA+C,EAAE;IAEjD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAGL,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAA4B,EAC5B,GAAY,EACZ,UAA+C,EAAE;IAEjD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAEvD;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,IAAI,IAAI,CAI/C;AAED,0DAA0D;AAC1D,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED,uCAAuC;AACvC,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAEvD;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C;AAED,0DAA0D;AAC1D,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED,uCAAuC;AACvC,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD"}
@@ -7,7 +7,8 @@
7
7
  *
8
8
  * @module services/brapi-dialect/registry
9
9
  */
10
- import { cassavabaseDialect } from './cassavabase-dialect.js';
10
+ import { brapiTestDialect } from './brapi-test-dialect.js';
11
+ import { breedbaseDialect, cassavabaseDialect } from './cassavabase-dialect.js';
11
12
  import { specDialect } from './spec-dialect.js';
12
13
  const REGISTRY = new Map();
13
14
  /** Register a dialect. Last-write-wins on id collision. */
@@ -26,6 +27,8 @@ export function getDialectById(id) {
26
27
  export function initBrapiDialectRegistry() {
27
28
  REGISTRY.clear();
28
29
  registerDialect(specDialect);
30
+ registerDialect(brapiTestDialect);
31
+ registerDialect(breedbaseDialect);
29
32
  registerDialect(cassavabaseDialect);
30
33
  }
31
34
  /** Test-only — clear all registrations between suites. */
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEjD,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,OAAqB;IACnD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC;AACzC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,wBAAwB;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,eAAe,CAAC,WAAW,CAAC,CAAC;IAC7B,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACtC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,yBAAyB;IACvC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,wBAAwB;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEjD,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,OAAqB;IACnD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC;AACzC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,wBAAwB;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,eAAe,CAAC,WAAW,CAAC,CAAC;IAC7B,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAClC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAClC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACtC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,yBAAyB;IACvC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,wBAAwB;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC"}
@@ -54,5 +54,11 @@ export interface BrapiDialect {
54
54
  */
55
55
  readonly disabledSearchEndpoints?: ReadonlySet<string>;
56
56
  readonly id: string;
57
+ /**
58
+ * Human-readable compatibility notes surfaced in brapi_connect /
59
+ * brapi_server_info. Use this for verified quirks that are handled outside
60
+ * `adaptGetFilters` (for example coordinate-axis recovery).
61
+ */
62
+ readonly notes?: readonly string[];
57
63
  }
58
64
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,iBAAiB,CAAC;IACjG;;;;;;;;;OASG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,iBAAiB,CAAC;IACjG;;;;;;;;;OASG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"capability-registry.d.ts","sourceRoot":"","sources":["../../../src/services/capability-registry/capability-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,mBAAmB,EAEzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,aAAa,EAGd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAChF,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAID,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,YAAY,EAAE,YAAY,EAC1B,MAAM,GAAE,MAAM,WAA4B;IAG7D;;;OAGG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,iBAAiB,CAAC;IAa7B;;;;;OAKG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,cAAc,CAAC;IA2B1B,2EAA2E;IACrE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAIhD,YAAY;IAkC1B;;;;;OAKG;YACW,kBAAkB;YAsBlB,UAAU;IAsBxB,OAAO,CAAC,QAAQ;CAGjB;AAoGD,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEvE;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAO1D;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
1
+ {"version":3,"file":"capability-registry.d.ts","sourceRoot":"","sources":["../../../src/services/capability-registry/capability-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,mBAAmB,EAEzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,aAAa,EAGd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAChF,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAID,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,YAAY,EAAE,YAAY,EAC1B,MAAM,GAAE,MAAM,WAA4B;IAG7D;;;OAGG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,iBAAiB,CAAC;IAa7B;;;;;OAKG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,cAAc,CAAC;IA2B1B,2EAA2E;IACrE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAIhD,YAAY;IAkD1B;;;;;OAKG;YACW,kBAAkB;YA2BlB,UAAU;IA2BxB,OAAO,CAAC,QAAQ;CAGjB;AAoGD,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEvE;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAO1D;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
@@ -68,21 +68,37 @@ export class CapabilityRegistry {
68
68
  async fetchProfile(baseUrl, ctx, options) {
69
69
  const client = this.client();
70
70
  const requestOptions = buildRequestOptions(options.auth);
71
- const serverInfoEnv = await client.get(baseUrl, '/serverinfo', ctx, requestOptions);
72
- const embeddedCalls = serverInfoEnv.result?.calls;
71
+ const warnings = [];
72
+ let serverInfo;
73
+ try {
74
+ const serverInfoEnv = await client.get(baseUrl, '/serverinfo', ctx, requestOptions);
75
+ serverInfo = serverInfoEnv.result;
76
+ }
77
+ catch (err) {
78
+ const message = err instanceof Error ? err.message : String(err);
79
+ ctx.log.warning('Failed to fetch /serverinfo; falling back to /calls-only profile', {
80
+ baseUrl,
81
+ error: message,
82
+ });
83
+ warnings.push(`/serverinfo was unavailable or malformed (${message}); capability discovery fell back to /calls.`);
84
+ }
85
+ const embeddedCalls = serverInfo?.calls;
73
86
  const calls = embeddedCalls?.length
74
87
  ? embeddedCalls
75
- : await this.fetchCallsFallback(baseUrl, ctx, options.auth);
76
- const crops = await this.fetchCrops(baseUrl, ctx, options.auth);
88
+ : await this.fetchCallsFallback(baseUrl, ctx, options.auth, warnings);
89
+ const crops = await this.fetchCrops(baseUrl, ctx, options.auth, warnings);
77
90
  const supported = indexCalls(calls);
78
- const server = normalizeIdentity(serverInfoEnv.result, calls);
79
- return {
91
+ const server = normalizeIdentity(serverInfo, calls);
92
+ const profile = {
80
93
  baseUrl,
81
94
  server,
82
95
  supported,
83
96
  crops,
84
97
  fetchedAt: new Date().toISOString(),
85
98
  };
99
+ if (warnings.length > 0)
100
+ profile.warnings = warnings;
101
+ return profile;
86
102
  }
87
103
  /**
88
104
  * `/calls` fallback — some servers don't embed calls in `/serverinfo` and
@@ -90,29 +106,33 @@ export class CapabilityRegistry {
90
106
  * if the server lacks this too; downstream `ensure()` will surface the
91
107
  * missing-capability error with a useful message.
92
108
  */
93
- async fetchCallsFallback(baseUrl, ctx, auth) {
109
+ async fetchCallsFallback(baseUrl, ctx, auth, warnings) {
94
110
  try {
95
111
  const env = await this.client().get(baseUrl, '/calls', ctx, buildRequestOptions(auth, { pageSize: 1000 }));
96
112
  return extractDataArray(env) ?? [];
97
113
  }
98
114
  catch (err) {
115
+ const message = err instanceof Error ? err.message : String(err);
99
116
  ctx.log.warning('Failed to fetch /calls fallback', {
100
117
  baseUrl,
101
- error: err instanceof Error ? err.message : String(err),
118
+ error: message,
102
119
  });
120
+ warnings.push(`/calls was unavailable or malformed (${message}); no capability list is known.`);
103
121
  return [];
104
122
  }
105
123
  }
106
- async fetchCrops(baseUrl, ctx, auth) {
124
+ async fetchCrops(baseUrl, ctx, auth, warnings) {
107
125
  try {
108
126
  const env = await this.client().get(baseUrl, '/commoncropnames', ctx, buildRequestOptions(auth, { pageSize: 1000 }));
109
127
  return extractDataArray(env) ?? [];
110
128
  }
111
129
  catch (err) {
130
+ const message = err instanceof Error ? err.message : String(err);
112
131
  ctx.log.warning('Failed to fetch /commoncropnames', {
113
132
  baseUrl,
114
- error: err instanceof Error ? err.message : String(err),
133
+ error: message,
115
134
  });
135
+ warnings.push(`/commoncropnames was unavailable or malformed (${message}); crop list omitted.`);
116
136
  return [];
117
137
  }
118
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capability-registry.js","sourceRoot":"","sources":["../../../src/services/capability-registry/capability-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capability-registry.js","sourceRoot":"","sources":["../../../src/services/capability-registry/capability-registry.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,12 @@ export interface CapabilityProfile {
55
55
  * segment (e.g. "studies", "search/observations") per BrAPI convention.
56
56
  */
57
57
  supported: Record<string, CallDescriptor>;
58
+ /**
59
+ * Non-fatal discovery degradations encountered while building this profile.
60
+ * These are surfaced in the orientation envelope so callers know when the
61
+ * profile was assembled from fallbacks instead of a complete /serverinfo.
62
+ */
63
+ warnings?: string[];
58
64
  }
59
65
  /**
60
66
  * Loose probe of a single endpoint. Most handlers only care whether the
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/capability-registry/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/capability-registry/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -35,6 +35,7 @@ export declare class ServerRegistry {
35
35
  unregister(ctx: Context, alias?: string): Promise<void>;
36
36
  private resolveAuth;
37
37
  private exchangeSgnToken;
38
+ private exchangeOAuth2Token;
38
39
  }
39
40
  /**
40
41
  * Swappable token-exchange fetcher. Production uses `fetchWithTimeout`; tests
@@ -1 +1 @@
1
- {"version":3,"file":"server-registry.d.ts","sourceRoot":"","sources":["../../../src/services/server-registry/server-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAStD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE1E,eAAO,MAAM,aAAa,YAAY,CAAC;AAIvC,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,YAAY,EAAE,YAAY,EAC1B,YAAY,GAAE,YAAkC;IAGnE;;;;OAIG;IACG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmB7E,yDAAyD;IACnD,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAWjF,qCAAqC;IACrC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAIpF,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAe/C,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;YAI9D,WAAW;YA6BX,gBAAgB;CAoC/B;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,KACtD,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA4FD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEnE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"server-registry.d.ts","sourceRoot":"","sources":["../../../src/services/server-registry/server-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAStD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE1E,eAAO,MAAM,aAAa,YAAY,CAAC;AAIvC,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,YAAY,EAAE,YAAY,EAC1B,YAAY,GAAE,YAAkC;IAGnE;;;;OAIG;IACG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmB7E,yDAAyD;IACnD,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAWjF,qCAAqC;IACrC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAIpF,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAe/C,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;YAI9D,WAAW;YA0BX,gBAAgB;YAqChB,mBAAmB;CAwClC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,KACtD,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA4FD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEnE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
@@ -86,7 +86,7 @@ export class ServerRegistry {
86
86
  case 'sgn':
87
87
  return await this.exchangeSgnToken(auth, baseUrl, ctx);
88
88
  case 'oauth2':
89
- throw validationError('OAuth2 auth is not yet implemented. Use mode="bearer" with a pre-obtained access token for now.', { mode: 'oauth2' });
89
+ return await this.exchangeOAuth2Token(auth, baseUrl, ctx);
90
90
  default: {
91
91
  const _exhaustive = auth;
92
92
  throw validationError('Unknown auth mode', { received: _exhaustive });
@@ -120,6 +120,36 @@ export class ServerRegistry {
120
120
  }
121
121
  return resolved;
122
122
  }
123
+ async exchangeOAuth2Token(auth, baseUrl, ctx) {
124
+ const tokenUrl = auth.tokenUrl ?? joinUrl(baseUrl, '/token');
125
+ const payload = await this.tokenFetcher(tokenUrl, {
126
+ client_id: auth.clientId,
127
+ client_secret: auth.clientSecret,
128
+ grant_type: 'client_credentials',
129
+ }, ctx, {
130
+ timeoutMs: this.serverConfig.requestTimeoutMs,
131
+ rejectPrivateIPs: !this.serverConfig.allowPrivateIps,
132
+ });
133
+ if (!payload.access_token) {
134
+ throw forbidden('OAuth2 token exchange returned no access_token', {
135
+ tokenUrl,
136
+ payloadKeys: Object.keys(payload),
137
+ reason: 'auth_no_access_token',
138
+ ...ctx.recoveryFor('auth_no_access_token'),
139
+ });
140
+ }
141
+ const tokenType = typeof payload.token_type === 'string' && payload.token_type.trim()
142
+ ? payload.token_type.trim()
143
+ : 'Bearer';
144
+ const resolved = {
145
+ headerName: 'Authorization',
146
+ headerValue: `${tokenType} ${payload.access_token}`,
147
+ };
148
+ if (payload.expires_in && Number.isFinite(payload.expires_in)) {
149
+ resolved.expiresAt = new Date(Date.now() + payload.expires_in * 1000).toISOString();
150
+ }
151
+ return resolved;
152
+ }
123
153
  }
124
154
  const defaultTokenFetcher = async (url, body, ctx, options) => {
125
155
  const form = new URLSearchParams();
@@ -1 +1 @@
1
- {"version":3,"file":"server-registry.js","sourceRoot":"","sources":["../../../src/services/server-registry/server-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-registry.js","sourceRoot":"","sources":["../../../src/services/server-registry/server-registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cyanheads/brapi-mcp-server",
3
3
  "mcpName": "io.github.cyanheads/brapi-mcp-server",
4
- "version": "0.4.4",
4
+ "version": "0.4.5",
5
5
  "description": "BrAPI v2.1 MCP server — studies, germplasm, observations, genotypes, images, and pedigrees.",
6
6
  "author": "Casey Hand @cyanheads (https://github.com/cyanheads/brapi-mcp-server#readme)",
7
7
  "type": "module",
@@ -71,15 +71,15 @@
71
71
  "access": "public"
72
72
  },
73
73
  "dependencies": {
74
- "@cyanheads/mcp-ts-core": "^0.8.7",
74
+ "@cyanheads/mcp-ts-core": "^0.8.8",
75
75
  "pino-pretty": "^13.1.3"
76
76
  },
77
77
  "devDependencies": {
78
- "@biomejs/biome": "^2.4.13",
78
+ "@biomejs/biome": "^2.4.14",
79
79
  "@types/node": "^25.6.0",
80
80
  "depcheck": "^1.4.7",
81
81
  "ignore": "^7.0.5",
82
- "tsc-alias": "^1.8.16",
82
+ "tsc-alias": "^1.8.17",
83
83
  "typescript": "^6.0.3",
84
84
  "vitest": "^4.1.5"
85
85
  }