@lerianstudio/matcher-mcp 5.0.0-beta.65 → 5.0.0-beta.67

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 (177) hide show
  1. package/dist/auth/request-token.js +11 -69
  2. package/dist/auth/request-token.js.map +1 -1
  3. package/dist/config.js +5 -20
  4. package/dist/config.js.map +1 -1
  5. package/dist/copilot/agent.js +5 -9
  6. package/dist/copilot/agent.js.map +1 -1
  7. package/dist/copilot/provider-anthropic.js +2 -16
  8. package/dist/copilot/provider-anthropic.js.map +1 -1
  9. package/dist/copilot/provider-openrouter.js +5 -18
  10. package/dist/copilot/provider-openrouter.js.map +1 -1
  11. package/dist/copilot/provider-shared.js +11 -0
  12. package/dist/copilot/provider-shared.js.map +1 -1
  13. package/dist/copilot/speech-provider.js +84 -0
  14. package/dist/copilot/speech-provider.js.map +1 -0
  15. package/dist/copilot/sse.js +5 -0
  16. package/dist/copilot/sse.js.map +1 -1
  17. package/dist/copilot/test_helpers.js +50 -0
  18. package/dist/copilot/test_helpers.js.map +1 -0
  19. package/dist/copilot/tools.js +14 -65
  20. package/dist/copilot/tools.js.map +1 -1
  21. package/dist/copilot/transcribe-handler.js +8 -93
  22. package/dist/copilot/transcribe-handler.js.map +1 -1
  23. package/dist/copilot/turn-request.js +76 -0
  24. package/dist/copilot/turn-request.js.map +1 -0
  25. package/dist/copilot/turns-handler.js +11 -102
  26. package/dist/copilot/turns-handler.js.map +1 -1
  27. package/dist/observability/otel.js +7 -29
  28. package/dist/observability/otel.js.map +1 -1
  29. package/dist/server.js +12 -81
  30. package/dist/server.js.map +1 -1
  31. package/dist/spec/enum-policy.js +9 -41
  32. package/dist/spec/enum-policy.js.map +1 -1
  33. package/dist/spec/schema-parity.js +4 -18
  34. package/dist/spec/schema-parity.js.map +1 -1
  35. package/dist/tools/context/list.js +7 -34
  36. package/dist/tools/context/list.js.map +1 -1
  37. package/dist/tools/context/shared.js +3 -29
  38. package/dist/tools/context/shared.js.map +1 -1
  39. package/dist/tools/context/update.js +2 -3
  40. package/dist/tools/context/update.js.map +1 -1
  41. package/dist/tools/dashboard/aggregates.js +2 -8
  42. package/dist/tools/dashboard/aggregates.js.map +1 -1
  43. package/dist/tools/dashboard/cash-impact.js +2 -8
  44. package/dist/tools/dashboard/cash-impact.js.map +1 -1
  45. package/dist/tools/dashboard/match-rate.js +2 -8
  46. package/dist/tools/dashboard/match-rate.js.map +1 -1
  47. package/dist/tools/dashboard/metrics.js +2 -8
  48. package/dist/tools/dashboard/metrics.js.map +1 -1
  49. package/dist/tools/dashboard/shared.js +5 -26
  50. package/dist/tools/dashboard/shared.js.map +1 -1
  51. package/dist/tools/dashboard/sla.js +2 -8
  52. package/dist/tools/dashboard/sla.js.map +1 -1
  53. package/dist/tools/dashboard/source-breakdown.js +2 -8
  54. package/dist/tools/dashboard/source-breakdown.js.map +1 -1
  55. package/dist/tools/dashboard/volume.js +2 -8
  56. package/dist/tools/dashboard/volume.js.map +1 -1
  57. package/dist/tools/dispute/close.js +2 -3
  58. package/dist/tools/dispute/close.js.map +1 -1
  59. package/dist/tools/dispute/list.js +16 -46
  60. package/dist/tools/dispute/list.js.map +1 -1
  61. package/dist/tools/dispute/shared.js +3 -29
  62. package/dist/tools/dispute/shared.js.map +1 -1
  63. package/dist/tools/dispute/submit-evidence.js +2 -3
  64. package/dist/tools/dispute/submit-evidence.js.map +1 -1
  65. package/dist/tools/exception/adjust-entry.js +2 -3
  66. package/dist/tools/exception/adjust-entry.js.map +1 -1
  67. package/dist/tools/exception/history.js +6 -23
  68. package/dist/tools/exception/history.js.map +1 -1
  69. package/dist/tools/exception/list.js +9 -53
  70. package/dist/tools/exception/list.js.map +1 -1
  71. package/dist/tools/exception/shared.js +3 -29
  72. package/dist/tools/exception/shared.js.map +1 -1
  73. package/dist/tools/fee-rule/create.js +2 -3
  74. package/dist/tools/fee-rule/create.js.map +1 -1
  75. package/dist/tools/fee-rule/list.js +7 -28
  76. package/dist/tools/fee-rule/list.js.map +1 -1
  77. package/dist/tools/fee-rule/shared.js +3 -29
  78. package/dist/tools/fee-rule/shared.js.map +1 -1
  79. package/dist/tools/fee-rule/update.js +2 -3
  80. package/dist/tools/fee-rule/update.js.map +1 -1
  81. package/dist/tools/fee-schedule/list.js +6 -23
  82. package/dist/tools/fee-schedule/list.js.map +1 -1
  83. package/dist/tools/fee-schedule/shared.js +3 -29
  84. package/dist/tools/fee-schedule/shared.js.map +1 -1
  85. package/dist/tools/fee-schedule/simulate.js +2 -3
  86. package/dist/tools/fee-schedule/simulate.js.map +1 -1
  87. package/dist/tools/fee-schedule/update.js +2 -3
  88. package/dist/tools/fee-schedule/update.js.map +1 -1
  89. package/dist/tools/field-map/get.js +2 -5
  90. package/dist/tools/field-map/get.js.map +1 -1
  91. package/dist/tools/field-map/list.js +7 -28
  92. package/dist/tools/field-map/list.js.map +1 -1
  93. package/dist/tools/field-map/shared.js +3 -29
  94. package/dist/tools/field-map/shared.js.map +1 -1
  95. package/dist/tools/generic/invoke.js +4 -26
  96. package/dist/tools/generic/invoke.js.map +1 -1
  97. package/dist/tools/ingestion/job-errors-list.js +2 -5
  98. package/dist/tools/ingestion/job-errors-list.js.map +1 -1
  99. package/dist/tools/ingestion/job-get.js +2 -5
  100. package/dist/tools/ingestion/job-get.js.map +1 -1
  101. package/dist/tools/ingestion/job-transactions-list.js +8 -39
  102. package/dist/tools/ingestion/job-transactions-list.js.map +1 -1
  103. package/dist/tools/ingestion/jobs-list.js +7 -34
  104. package/dist/tools/ingestion/jobs-list.js.map +1 -1
  105. package/dist/tools/ingestion/shared.js +3 -29
  106. package/dist/tools/ingestion/shared.js.map +1 -1
  107. package/dist/tools/ingestion/transaction-ignore.js +2 -5
  108. package/dist/tools/ingestion/transaction-ignore.js.map +1 -1
  109. package/dist/tools/ingestion/transactions-search.js +7 -43
  110. package/dist/tools/ingestion/transactions-search.js.map +1 -1
  111. package/dist/tools/input-fields.js +36 -0
  112. package/dist/tools/input-fields.js.map +1 -0
  113. package/dist/tools/match-rule/delete.js +2 -4
  114. package/dist/tools/match-rule/delete.js.map +1 -1
  115. package/dist/tools/match-rule/get.js +2 -4
  116. package/dist/tools/match-rule/get.js.map +1 -1
  117. package/dist/tools/match-rule/list.js +7 -31
  118. package/dist/tools/match-rule/list.js.map +1 -1
  119. package/dist/tools/match-rule/shared.js +3 -29
  120. package/dist/tools/match-rule/shared.js.map +1 -1
  121. package/dist/tools/match-rule/update.js +4 -8
  122. package/dist/tools/match-rule/update.js.map +1 -1
  123. package/dist/tools/matching/groups.js +3 -12
  124. package/dist/tools/matching/groups.js.map +1 -1
  125. package/dist/tools/matching/list.js +7 -31
  126. package/dist/tools/matching/list.js.map +1 -1
  127. package/dist/tools/matching/shared.js +3 -31
  128. package/dist/tools/matching/shared.js.map +1 -1
  129. package/dist/tools/query-handler.js +8 -0
  130. package/dist/tools/query-handler.js.map +1 -0
  131. package/dist/tools/report/count-exceptions.js +2 -8
  132. package/dist/tools/report/count-exceptions.js.map +1 -1
  133. package/dist/tools/report/count-matched.js +2 -8
  134. package/dist/tools/report/count-matched.js.map +1 -1
  135. package/dist/tools/report/count-transactions.js +2 -8
  136. package/dist/tools/report/count-transactions.js.map +1 -1
  137. package/dist/tools/report/count-unmatched.js +2 -8
  138. package/dist/tools/report/count-unmatched.js.map +1 -1
  139. package/dist/tools/report/export-exceptions.js +2 -8
  140. package/dist/tools/report/export-exceptions.js.map +1 -1
  141. package/dist/tools/report/export-matched.js +2 -8
  142. package/dist/tools/report/export-matched.js.map +1 -1
  143. package/dist/tools/report/export-summary.js +2 -8
  144. package/dist/tools/report/export-summary.js.map +1 -1
  145. package/dist/tools/report/export-unmatched.js +2 -8
  146. package/dist/tools/report/export-unmatched.js.map +1 -1
  147. package/dist/tools/report/export-variance.js +2 -8
  148. package/dist/tools/report/export-variance.js.map +1 -1
  149. package/dist/tools/report/matched.js +2 -8
  150. package/dist/tools/report/matched.js.map +1 -1
  151. package/dist/tools/report/shared.js +9 -55
  152. package/dist/tools/report/shared.js.map +1 -1
  153. package/dist/tools/report/summary.js +2 -8
  154. package/dist/tools/report/summary.js.map +1 -1
  155. package/dist/tools/report/unmatched.js +2 -8
  156. package/dist/tools/report/unmatched.js.map +1 -1
  157. package/dist/tools/report/variance.js +2 -8
  158. package/dist/tools/report/variance.js.map +1 -1
  159. package/dist/tools/request-fields.js +17 -0
  160. package/dist/tools/request-fields.js.map +1 -0
  161. package/dist/tools/shared-dispatch.js +38 -0
  162. package/dist/tools/shared-dispatch.js.map +1 -0
  163. package/dist/tools/source/archive.js +2 -5
  164. package/dist/tools/source/archive.js.map +1 -1
  165. package/dist/tools/source/create.js +2 -3
  166. package/dist/tools/source/create.js.map +1 -1
  167. package/dist/tools/source/get.js +2 -5
  168. package/dist/tools/source/get.js.map +1 -1
  169. package/dist/tools/source/list.js +7 -31
  170. package/dist/tools/source/list.js.map +1 -1
  171. package/dist/tools/source/restore.js +2 -5
  172. package/dist/tools/source/restore.js.map +1 -1
  173. package/dist/tools/source/shared.js +3 -29
  174. package/dist/tools/source/shared.js.map +1 -1
  175. package/dist/tools/source/update.js +4 -9
  176. package/dist/tools/source/update.js.map +1 -1
  177. package/package.json +1 -1
@@ -4,13 +4,11 @@
4
4
  // path params (UUIDs). The rule must belong to a context owned by the relayed
5
5
  // token's tenant — matcher enforces that; no tenant field is accepted.
6
6
  import { z } from 'zod';
7
+ import { contextRoutingId } from '../input-fields.js';
7
8
  import { contextRulePath, dispatchMatchRule } from './shared.js';
8
9
  /** Zod raw shape for `match_rule_get` input — context id + rule id (both path). */
9
10
  export const getMatchRuleInputShape = {
10
- contextId: z
11
- .string()
12
- .min(1)
13
- .describe('The reconciliation context id (UUID). Routing path param, not a tenant field.'),
11
+ contextId: contextRoutingId,
14
12
  ruleId: z.string().min(1).describe('The match rule id (UUID) to fetch.'),
15
13
  };
16
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/tools/match-rule/get.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,uEAAuE;AAEvE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEhE,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,+EAA+E,CAChF;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACzE,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,uEAAuE;YACvE,wEAAwE;YACxE,0EAA0E;YAC1E,SAAS;QACX,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,iBAAiB,CACtB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EACrE,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/tools/match-rule/get.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,uEAAuE;AAEvE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAIrD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEhE,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACzE,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,uEAAuE;YACvE,wEAAwE;YACxE,0EAA0E;YAC1E,SAAS;QACX,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,iBAAiB,CACtB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EACrE,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -7,6 +7,9 @@
7
7
  // tenant-scoped by the relayed token; `contextId` is a routing path param and no
8
8
  // tenant field is accepted.
9
9
  import { z } from 'zod';
10
+ import { nextCursor, pageLimit } from '../input-fields.js';
11
+ import { queryHandler } from '../query-handler.js';
12
+ import { pickQuery } from '../request-fields.js';
10
13
  import { MATCH_RULE_TYPES } from './create.js';
11
14
  import { contextRulesPath, dispatchMatchRule } from './shared.js';
12
15
  /** Zod raw shape for `match_rule_list` input — context, optional type filter, pagination. */
@@ -20,32 +23,12 @@ export const listMatchRulesInputShape = {
20
23
  .enum(MATCH_RULE_TYPES)
21
24
  .optional()
22
25
  .describe('Optional filter by rule type (EXACT|TOLERANCE|DATE_LAG|FUZZY). Omit to list all.'),
23
- limit: z
24
- .number()
25
- .int()
26
- .min(1)
27
- .max(200)
28
- .optional()
29
- .describe('Maximum number of records to return (1–200, default 20).'),
30
- cursor: z
31
- .string()
32
- .optional()
33
- .describe('Opaque pagination cursor from a prior response. Re-call with the ' +
34
- 'returned nextCursor to page forward (there is no auto-pagination).'),
26
+ limit: pageLimit,
27
+ cursor: nextCursor,
35
28
  };
36
29
  /** Build the list query, omitting unset knobs so the request stays minimal. */
37
30
  function buildListQuery(args) {
38
- const query = {};
39
- if (args.type !== undefined) {
40
- query.type = args.type;
41
- }
42
- if (args.limit !== undefined) {
43
- query.limit = args.limit;
44
- }
45
- if (args.cursor !== undefined) {
46
- query.cursor = args.cursor;
47
- }
48
- return Object.keys(query).length > 0 ? query : undefined;
31
+ return pickQuery(args, ['type', 'limit', 'cursor']);
49
32
  }
50
33
  /**
51
34
  * Register `match_rule_list`. Passes type/limit/cursor through and returns
@@ -60,13 +43,6 @@ export function registerMatchRuleListTool(server) {
60
43
  'response carries { items, nextCursor } — paginate by re-calling with the ' +
61
44
  'returned nextCursor. No tenant field is accepted.',
62
45
  inputSchema: listMatchRulesInputShape,
63
- }, async (args, extra) => {
64
- const query = buildListQuery(args);
65
- return dispatchMatchRule({
66
- method: 'GET',
67
- path: contextRulesPath(args.contextId),
68
- ...(query !== undefined ? { query } : {}),
69
- }, extra);
70
- });
46
+ }, queryHandler(buildListQuery, (args) => contextRulesPath(args.contextId), dispatchMatchRule));
71
47
  }
72
48
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/match-rule/list.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AACjE,6EAA6E;AAC7E,wEAAwE;AACxE,iFAAiF;AACjF,4BAA4B;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEjE,6FAA6F;AAC7F,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,yEAAyE;QACvE,4BAA4B,CAC/B;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,gBAAgB,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CACP,kFAAkF,CACnF;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,mEAAmE;QACjE,oEAAoE,CACvE;CACJ,CAAA;AAOD,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAyB;IAC/C,MAAM,KAAK,GAAoC,EAAE,CAAA;IACjD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACxB,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,uEAAuE;YACvE,2DAA2D;YAC3D,6EAA6E;YAC7E,2EAA2E;YAC3E,mDAAmD;QACrD,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,iBAAiB,CACtB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;YACtC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/match-rule/list.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AACjE,6EAA6E;AAC7E,wEAAwE;AACxE,iFAAiF;AACjF,4BAA4B;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEjE,6FAA6F;AAC7F,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,yEAAyE;QACvE,4BAA4B,CAC/B;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,gBAAgB,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CACP,kFAAkF,CACnF;IACH,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;CACnB,CAAA;AAOD,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAyB;IAC/C,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,uEAAuE;YACvE,2DAA2D;YAC3D,6EAA6E;YAC7E,2EAA2E;YAC3E,mDAAmD;QACrD,WAAW,EAAE,wBAAwB;KACtC,EACD,YAAY,CACV,cAAc,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAC1C,iBAAiB,CAClB,CACF,CAAA;AACH,CAAC"}
@@ -18,8 +18,7 @@
18
18
  // tenant from the relayed JWT); no match-rule tool input carries one. The
19
19
  // `contextId` segment is a routing path param — matcher validates that the
20
20
  // context belongs to the token's tenant.
21
- import { requireMatcherClient, UnauthenticatedError, } from '../../auth/request-token.js';
22
- import { isMatcherApiError, toToolError } from '../tool-error.js';
21
+ import { dispatchToolRequest, } from '../shared-dispatch.js';
23
22
  /** Path for the match-rule collection under a context (list + create). */
24
23
  export function contextRulesPath(contextId) {
25
24
  return `/v1/contexts/${encodeURIComponent(contextId)}/rules`;
@@ -63,32 +62,7 @@ export const RULE_CONFIG_DESC_BODY = 'configuration object; shape depends on `ty
63
62
  * `clientFor` is injectable for tests; production callers pass nothing and get
64
63
  * the request-scoped, fail-closed `requireMatcherClient`.
65
64
  */
66
- export async function dispatchMatchRule(request, extra, clientFor = requireMatcherClient) {
67
- let client;
68
- try {
69
- // Fail-closed on a missing / empty / non-Bearer credential.
70
- client = clientFor(extra);
71
- }
72
- catch (err) {
73
- if (err instanceof UnauthenticatedError) {
74
- return { isError: true, content: [{ type: 'text', text: err.message }] };
75
- }
76
- throw err;
77
- }
78
- try {
79
- const result = await client.request(request);
80
- // Success → matcher's JSON returned as-is (incl. pagination envelopes and
81
- // 204 → null for delete / reorder).
82
- return { content: [{ type: 'text', text: JSON.stringify(result ?? null) }] };
83
- }
84
- catch (err) {
85
- // RFC 9457 problem → the SHARED structured tool error (status/title/detail/
86
- // code preserved). A non-matcher error is a bug, not a matcher failure, and
87
- // is re-thrown rather than masqueraded as one.
88
- if (isMatcherApiError(err)) {
89
- return toToolError(err);
90
- }
91
- throw err;
92
- }
65
+ export async function dispatchMatchRule(request, extra, clientFor) {
66
+ return dispatchToolRequest(request, extra, clientFor);
93
67
  }
94
68
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/match-rule/shared.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,6DAA6D;AAC7D,mEAAmE;AACnE,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,kEAAkE;AAClE,6EAA6E;AAC7E,yBAAyB;AACzB,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,yCAAyC;AAIzC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEjE,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAA;AAC9D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,MAAc;IAC/D,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAA;AACvE,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAA;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,uDAAuD;IACvD,yEAAyE;IACzE,iEAAiE;IACjE,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,4EAA4E;IAC5E,uEAAuE;IACvE,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,iEAAiE;IACjE,kEAAkE;IAClE,wEAAwE;IACxE,oEAAoE;IACpE,yBAAyB,CAAA;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAuB,EACvB,KAAmC,EACnC,YAAyD,oBAAoB;IAE7E,IAAI,MAAqB,CAAA;IACzB,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;YACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAA;QAC1E,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,0EAA0E;QAC1E,oCAAoC;QACpC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4EAA4E;QAC5E,4EAA4E;QAC5E,+CAA+C;QAC/C,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/match-rule/shared.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,6DAA6D;AAC7D,mEAAmE;AACnE,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,kEAAkE;AAClE,6EAA6E;AAC7E,yBAAyB;AACzB,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,yCAAyC;AAMzC,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAA;AAE9B,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAA;AAC9D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,MAAc;IAC/D,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAA;AACvE,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAA;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,uDAAuD;IACvD,yEAAyE;IACzE,iEAAiE;IACjE,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,4EAA4E;IAC5E,uEAAuE;IACvE,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,iEAAiE;IACjE,kEAAkE;IAClE,wEAAwE;IACxE,oEAAoE;IACpE,yBAAyB,CAAA;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAuB,EACvB,KAAmC,EACnC,SAAgC;IAEhC,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;AACvD,CAAC"}
@@ -5,14 +5,13 @@
5
5
  // contextId and ruleId are UUID path params; no tenant field is accepted
6
6
  // (matcher scopes to the relayed token's tenant via the context).
7
7
  import { z } from 'zod';
8
+ import { contextRoutingId } from '../input-fields.js';
9
+ import { bodyWithout } from '../request-fields.js';
8
10
  import { MATCH_RULE_TYPES } from './create.js';
9
11
  import { contextRulePath, dispatchMatchRule, RULE_CONFIG_DESC_BODY, } from './shared.js';
10
12
  /** Zod raw shape for `match_rule_update` input — ids (path) + optional fields. */
11
13
  export const updateMatchRuleInputShape = {
12
- contextId: z
13
- .string()
14
- .min(1)
15
- .describe('The reconciliation context id (UUID). Routing path param, not a tenant field.'),
14
+ contextId: contextRoutingId,
16
15
  ruleId: z.string().min(1).describe('The match rule id (UUID) to update.'),
17
16
  priority: z
18
17
  .number()
@@ -39,10 +38,7 @@ export const updateMatchRuleInputShape = {
39
38
  * fields as unchanged.
40
39
  */
41
40
  export function buildUpdateBody(args) {
42
- const { contextId: _contextId, ruleId: _ruleId, ...body } = args;
43
- void _contextId;
44
- void _ruleId;
45
- return body;
41
+ return bodyWithout(args, ['contextId', 'ruleId']);
46
42
  }
47
43
  /**
48
44
  * Register `match_rule_update`. Splits the ids (path) from the body fields and
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/match-rule/update.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,yEAAyE;AACzE,kEAAkE;AAElE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AAEpB,kFAAkF;AAClF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,+EAA+E,CAChF;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACzE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,wEAAwE;QACtE,qBAAqB,CACxB;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,gBAAgB,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CACP,2EAA2E;QACzE,qEAAqE;QACrE,4EAA4E,CAC/E;IACH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,oBAAoB,GAAG,qBAAqB,CAAC;CAC1D,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA0B;IAE1B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IAChE,KAAK,UAAU,CAAA;IACf,KAAK,OAAO,CAAA;IACZ,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,2EAA2E;YAC3E,oDAAoD;YACpD,mFAAmF;YACnF,yEAAyE;YACzE,iBAAiB;QACnB,WAAW,EAAE,yBAAyB;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,iBAAiB,CACtB;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;YAClD,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;SAC5B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/match-rule/update.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,yEAAyE;AACzE,kEAAkE;AAElE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AAEpB,kFAAkF;AAClF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACzE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,wEAAwE;QACtE,qBAAqB,CACxB;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,gBAAgB,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CACP,2EAA2E;QACzE,qEAAqE;QACrE,4EAA4E,CAC/E;IACH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,oBAAoB,GAAG,qBAAqB,CAAC;CAC1D,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA0B;IAE1B,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,2EAA2E;YAC3E,oDAAoD;YACpD,mFAAmF;YACnF,yEAAyE;YACzE,iBAAiB;QACnB,WAAW,EAAE,yBAAyB;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,iBAAiB,CACtB;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;YAClD,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;SAC5B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -10,6 +10,7 @@
10
10
  // is a REQUIRED QUERY param. `contextId` is a routing param matcher validates
11
11
  // ownership of, NOT a tenant field; no tenant field is accepted.
12
12
  import { z } from 'zod';
13
+ import { nextCursor, pageLimit } from '../input-fields.js';
13
14
  import { SORT_ORDERS } from './list.js';
14
15
  import { dispatchMatching, runGroupsPath } from './shared.js';
15
16
  /** Sort fields matcher accepts for the run-groups listing. */
@@ -28,18 +29,8 @@ export const getMatchRunGroupsInputShape = {
28
29
  .min(1)
29
30
  .describe('The reconciliation context id (UUID) the run belongs to. Sent as a query ' +
30
31
  'param (required); routing param scoped to your token.'),
31
- limit: z
32
- .number()
33
- .int()
34
- .min(1)
35
- .max(200)
36
- .optional()
37
- .describe('Maximum number of records to return (1–200, default 20).'),
38
- cursor: z
39
- .string()
40
- .optional()
41
- .describe('Opaque pagination cursor from a prior response. Re-call with the ' +
42
- 'returned nextCursor to page forward (there is no auto-pagination).'),
32
+ limit: pageLimit,
33
+ cursor: nextCursor,
43
34
  sort_order: z
44
35
  .enum(SORT_ORDERS)
45
36
  .optional()
@@ -1 +1 @@
1
- {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../src/tools/matching/groups.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,iDAAiD;AACjD,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,iEAAiE;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE7D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAA;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,2EAA2E;QACzE,uDAAuD,CAC1D;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,mEAAmE;QACjE,oEAAoE,CACvE;IACH,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,WAAW,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,iBAAiB,CAAC;SACvB,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAA;AAOD;;;GAGG;AACH,SAAS,gBAAgB,CACvB,IAA4B;IAE5B,MAAM,KAAK,GAAoC;QAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAA;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC9B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,wEAAwE;YACxE,2EAA2E;YAC3E,4EAA4E;YAC5E,yEAAyE;YACzE,2EAA2E;YAC3E,0EAA0E;YAC1E,oBAAoB;QACtB,WAAW,EAAE,2BAA2B;KACzC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,gBAAgB,CACrB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/B,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC;SAC9B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../src/tools/matching/groups.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,iDAAiD;AACjD,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,iEAAiE;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAK1D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE7D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAA;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,2EAA2E;QACzE,uDAAuD,CAC1D;IACH,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,WAAW,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,iBAAiB,CAAC;SACvB,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAA;AAOD;;;GAGG;AACH,SAAS,gBAAgB,CACvB,IAA4B;IAE5B,MAAM,KAAK,GAAoC;QAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAA;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC9B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,wEAAwE;YACxE,2EAA2E;YAC3E,4EAA4E;YAC5E,yEAAyE;YACzE,2EAA2E;YAC3E,0EAA0E;YAC1E,oBAAoB;QACtB,WAAW,EAAE,2BAA2B;KACzC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,gBAAgB,CACrB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/B,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC;SAC9B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -8,6 +8,9 @@
8
8
  // `contextId` is a routing path param matcher scopes to the relayed token's
9
9
  // tenant; no tenant field is accepted.
10
10
  import { z } from 'zod';
11
+ import { nextCursor, pageLimit } from '../input-fields.js';
12
+ import { queryHandler } from '../query-handler.js';
13
+ import { pickQuery } from '../request-fields.js';
11
14
  import { contextRunsPath, dispatchMatching } from './shared.js';
12
15
  /** Sort orders matcher accepts for the run-history listing. */
13
16
  export const SORT_ORDERS = ['asc', 'desc'];
@@ -18,18 +21,8 @@ export const listMatchRunsInputShape = {
18
21
  .min(1)
19
22
  .describe('The reconciliation context id (UUID) whose run history to list. Routing ' +
20
23
  'param; matcher validates it belongs to your tenant.'),
21
- limit: z
22
- .number()
23
- .int()
24
- .min(1)
25
- .max(200)
26
- .optional()
27
- .describe('Maximum number of records to return (1–200, default 20).'),
28
- cursor: z
29
- .string()
30
- .optional()
31
- .describe('Opaque pagination cursor from a prior response. Re-call with the ' +
32
- 'returned nextCursor to page forward (there is no auto-pagination).'),
24
+ limit: pageLimit,
25
+ cursor: nextCursor,
33
26
  sort_order: z
34
27
  .enum(SORT_ORDERS)
35
28
  .optional()
@@ -38,17 +31,7 @@ export const listMatchRunsInputShape = {
38
31
  };
39
32
  /** Build the list query, omitting unset knobs so the request stays minimal. */
40
33
  function buildListQuery(args) {
41
- const query = {};
42
- if (args.limit !== undefined) {
43
- query.limit = args.limit;
44
- }
45
- if (args.cursor !== undefined) {
46
- query.cursor = args.cursor;
47
- }
48
- if (args.sort_order !== undefined) {
49
- query.sort_order = args.sort_order;
50
- }
51
- return Object.keys(query).length > 0 ? query : undefined;
34
+ return pickQuery(args, ['limit', 'cursor', 'sort_order']);
52
35
  }
53
36
  /**
54
37
  * Register `match_run_list`. Passes limit/cursor/sort_order through and returns
@@ -64,13 +47,6 @@ export function registerMatchRunListTool(server) {
64
47
  'contextId is a routing param scoped to your token; no tenant field is ' +
65
48
  'accepted.',
66
49
  inputSchema: listMatchRunsInputShape,
67
- }, async (args, extra) => {
68
- const query = buildListQuery(args);
69
- return dispatchMatching({
70
- method: 'GET',
71
- path: contextRunsPath(args.contextId),
72
- ...(query !== undefined ? { query } : {}),
73
- }, extra);
74
- });
50
+ }, queryHandler(buildListQuery, (args) => contextRunsPath(args.contextId), dispatchMatching));
75
51
  }
76
52
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/matching/list.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,kFAAkF;AAClF,4EAA4E;AAC5E,EAAE;AACF,4EAA4E;AAC5E,uCAAuC;AAEvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE/D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,CAAU,CAAA;AAEnD,qFAAqF;AACrF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,0EAA0E;QACxE,qDAAqD,CACxD;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,mEAAmE;QACjE,oEAAoE,CACvE;IACH,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,WAAW,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,4EAA4E;QAC1E,eAAe,CAClB;CACJ,CAAA;AAOD,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAwB;IAC9C,MAAM,KAAK,GAAoC,EAAE,CAAA;IACjD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IACpC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,uEAAuE;YACvE,0EAA0E;YAC1E,mEAAmE;YACnE,sEAAsE;YACtE,wEAAwE;YACxE,WAAW;QACb,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,gBAAgB,CACrB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;YACrC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/matching/list.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,kFAAkF;AAClF,4EAA4E;AAC5E,EAAE;AACF,4EAA4E;AAC5E,uCAAuC;AAEvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE/D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,CAAU,CAAA;AAEnD,qFAAqF;AACrF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,0EAA0E;QACxE,qDAAqD,CACxD;IACH,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,WAAW,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,4EAA4E;QAC1E,eAAe,CAClB;CACJ,CAAA;AAOD,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAwB;IAC9C,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,uEAAuE;YACvE,0EAA0E;YAC1E,mEAAmE;YACnE,sEAAsE;YACtE,wEAAwE;YACxE,WAAW;QACb,WAAW,EAAE,uBAAuB;KACrC,EACD,YAAY,CACV,cAAc,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EACzC,gBAAgB,CACjB,CACF,CAAA;AACH,CAAC"}
@@ -20,8 +20,7 @@
20
20
  // provided. No tenant identifier is ever read or injected (matcher derives
21
21
  // tenant from the relayed JWT); no match-run tool input carries one. `contextId`
22
22
  // is a routing param matcher validates ownership of, not a tenant field.
23
- import { requireMatcherClient, UnauthenticatedError, } from '../../auth/request-token.js';
24
- import { isMatcherApiError, toToolError } from '../tool-error.js';
23
+ import { dispatchToolRequest, } from '../shared-dispatch.js';
25
24
  /** Trigger path for a context's matching run: POST starts a run. */
26
25
  export function contextRunPath(contextId) {
27
26
  return `/v1/matching/contexts/${encodeURIComponent(contextId)}/run`;
@@ -74,34 +73,7 @@ export function stripRuleStatKeys(stats) {
74
73
  * `clientFor` is injectable for tests; production callers pass nothing and get
75
74
  * the request-scoped, fail-closed `requireMatcherClient`.
76
75
  */
77
- export async function dispatchMatching(request, extra, clientFor = requireMatcherClient, transform) {
78
- let client;
79
- try {
80
- // Fail-closed on a missing / empty / non-Bearer credential.
81
- client = clientFor(extra);
82
- }
83
- catch (err) {
84
- if (err instanceof UnauthenticatedError) {
85
- return { isError: true, content: [{ type: 'text', text: err.message }] };
86
- }
87
- throw err;
88
- }
89
- try {
90
- const result = await client.request(request);
91
- // Success → matcher's run payload returned as-is (202 { runId, status },
92
- // run detail status/stats/ruleStats, or the group pagination envelope),
93
- // unless a caller-supplied transform post-processes the body first.
94
- const output = transform ? transform(result) : result;
95
- return { content: [{ type: 'text', text: JSON.stringify(output ?? null) }] };
96
- }
97
- catch (err) {
98
- // RFC 9457 problem → the SHARED structured tool error (status/title/detail/
99
- // code preserved). A non-matcher error is a bug, not a matcher failure, and
100
- // is re-thrown rather than masqueraded as one.
101
- if (isMatcherApiError(err)) {
102
- return toToolError(err);
103
- }
104
- throw err;
105
- }
76
+ export async function dispatchMatching(request, extra, clientFor, transform) {
77
+ return dispatchToolRequest(request, extra, clientFor, transform);
106
78
  }
107
79
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/matching/shared.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,wEAAwE;AACxE,EAAE;AACF,gFAAgF;AAChF,kFAAkF;AAClF,6EAA6E;AAC7E,kFAAkF;AAClF,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,iFAAiF;AACjF,yEAAyE;AAIzE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEjE,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAA;AACrE,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAA;AACtE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,qBAAqB,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;AACzD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,qBAAqB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAA;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,CAAC,eAAe,EAAE,YAAY,CAAU,CAAA;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAiD;IAEjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,KAAmC,EACnC,YAAyD,oBAAoB,EAC7E,SAAwC;IAExC,IAAI,MAAqB,CAAA;IACzB,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;YACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAA;QAC1E,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4EAA4E;QAC5E,4EAA4E;QAC5E,+CAA+C;QAC/C,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/matching/shared.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,wEAAwE;AACxE,EAAE;AACF,gFAAgF;AAChF,kFAAkF;AAClF,6EAA6E;AAC7E,kFAAkF;AAClF,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,iFAAiF;AACjF,yEAAyE;AAMzE,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAA;AAE9B,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAA;AACrE,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAA;AACtE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,qBAAqB,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;AACzD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,qBAAqB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAA;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,CAAC,eAAe,EAAE,YAAY,CAAU,CAAA;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAiD;IAEjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,KAAmC,EACnC,SAAgC,EAChC,SAAwC;IAExC,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAClE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** Assemble one curated GET, leaving auth, errors and output with its family relay. */
2
+ export function queryHandler(buildQuery, path, dispatch) {
3
+ return async (args, extra) => {
4
+ const query = buildQuery(args);
5
+ return dispatch({ method: 'GET', path: path(args), ...(query !== undefined ? { query } : {}) }, extra);
6
+ };
7
+ }
8
+ //# sourceMappingURL=query-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-handler.js","sourceRoot":"","sources":["../../src/tools/query-handler.ts"],"names":[],"mappings":"AASA,uFAAuF;AACvF,MAAM,UAAU,YAAY,CAC1B,UAAmD,EACnD,IAA4B,EAC5B,QAAuB;IAEvB,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,QAAQ,CACb,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAC9E,KAAK,CACN,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -9,6 +9,7 @@
9
9
  // relayed token; contextId is a routing path param, not a tenant field, and no
10
10
  // tenant field is accepted.
11
11
  import { z } from 'zod';
12
+ import { queryHandler } from '../query-handler.js';
12
13
  import { buildReportFilterQuery, contextReportPath, dispatchReport, reportFilterInputShape, } from './shared.js';
13
14
  /** Zod raw shape for `report_count_exceptions` input — contextId path + date filter. */
14
15
  export const countExceptionsInputShape = {
@@ -34,13 +35,6 @@ export function registerReportCountExceptionsTool(server) {
34
35
  'days and SILENTLY EXCLUDES older exceptions — pass an explicit range ' +
35
36
  'for a full picture) and source_id. No tenant field is accepted.',
36
37
  inputSchema: countExceptionsInputShape,
37
- }, async (args, extra) => {
38
- const query = buildReportFilterQuery(args);
39
- return dispatchReport({
40
- method: 'GET',
41
- path: contextReportPath(args.contextId, 'exceptions/count'),
42
- ...(query !== undefined ? { query } : {}),
43
- }, extra);
44
- });
38
+ }, queryHandler(buildReportFilterQuery, (args) => contextReportPath(args.contextId, 'exceptions/count'), dispatchReport));
45
39
  }
46
40
  //# sourceMappingURL=count-exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"count-exceptions.js","sourceRoot":"","sources":["../../../src/tools/report/count-exceptions.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,qDAAqD;AACrD,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,iEAAiE;AACjE,0EAA0E;AAC1E,+EAA+E;AAC/E,4BAA4B;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,wFAAwF;AACxF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,0EAA0E;QACxE,iCAAiC,CACpC;IACH,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAAC,MAAiB;IACjE,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,yEAAyE;YACzE,qEAAqE;YACrE,sEAAsE;YACtE,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,iEAAiE;QACnE,WAAW,EAAE,yBAAyB;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC1C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC;YAC3D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"count-exceptions.js","sourceRoot":"","sources":["../../../src/tools/report/count-exceptions.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,qDAAqD;AACrD,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,iEAAiE;AACjE,0EAA0E;AAC1E,+EAA+E;AAC/E,4BAA4B;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,wFAAwF;AACxF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,0EAA0E;QACxE,iCAAiC,CACpC;IACH,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAAC,MAAiB;IACjE,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,yEAAyE;YACzE,qEAAqE;YACrE,sEAAsE;YACtE,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,iEAAiE;QACnE,WAAW,EAAE,yBAAyB;KACvC,EACD,YAAY,CACV,sBAAsB,EACtB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAC/D,cAAc,CACf,CACF,CAAA;AACH,CAAC"}
@@ -10,6 +10,7 @@
10
10
  // tenant-scoped by the relayed token; contextId is a routing path param, not a
11
11
  // tenant field, and no tenant field is accepted.
12
12
  import { z } from 'zod';
13
+ import { queryHandler } from '../query-handler.js';
13
14
  import { buildReportFilterQuery, contextReportPath, dispatchReport, reportFilterInputShape, } from './shared.js';
14
15
  /** Zod raw shape for `report_count_matched` input — contextId path + date filter. */
15
16
  export const countMatchedInputShape = {
@@ -35,13 +36,6 @@ export function registerReportCountMatchedTool(server) {
35
36
  'days and SILENTLY EXCLUDES older matches — pass an explicit range for ' +
36
37
  'a full picture) and source_id. No tenant field is accepted.',
37
38
  inputSchema: countMatchedInputShape,
38
- }, async (args, extra) => {
39
- const query = buildReportFilterQuery(args);
40
- return dispatchReport({
41
- method: 'GET',
42
- path: contextReportPath(args.contextId, 'matches/count'),
43
- ...(query !== undefined ? { query } : {}),
44
- }, extra);
45
- });
39
+ }, queryHandler(buildReportFilterQuery, (args) => contextReportPath(args.contextId, 'matches/count'), dispatchReport));
46
40
  }
47
41
  //# sourceMappingURL=count-matched.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"count-matched.js","sourceRoot":"","sources":["../../../src/tools/report/count-matched.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kDAAkD;AAClD,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,gFAAgF;AAChF,uEAAuE;AACvE,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,uEAAuE;QACrE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAAiB;IAC9D,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,uEAAuE;YACvE,uEAAuE;YACvE,yEAAyE;YACzE,gEAAgE;YAChE,sEAAsE;YACtE,wEAAwE;YACxE,6DAA6D;QAC/D,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC1C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;YACxD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"count-matched.js","sourceRoot":"","sources":["../../../src/tools/report/count-matched.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kDAAkD;AAClD,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,gFAAgF;AAChF,uEAAuE;AACvE,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,uEAAuE;QACrE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAAiB;IAC9D,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,uEAAuE;YACvE,uEAAuE;YACvE,yEAAyE;YACzE,gEAAgE;YAChE,sEAAsE;YACtE,wEAAwE;YACxE,6DAA6D;QAC/D,WAAW,EAAE,sBAAsB;KACpC,EACD,YAAY,CACV,sBAAsB,EACtB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAC5D,cAAc,CACf,CACF,CAAA;AACH,CAAC"}
@@ -8,6 +8,7 @@
8
8
  // tenant-scoped by the relayed token; contextId is a routing path param, not a
9
9
  // tenant field, and no tenant field is accepted.
10
10
  import { z } from 'zod';
11
+ import { queryHandler } from '../query-handler.js';
11
12
  import { buildReportFilterQuery, contextReportPath, dispatchReport, reportFilterInputShape, } from './shared.js';
12
13
  /** Zod raw shape for `report_count_transactions` input — contextId path + date filter. */
13
14
  export const countTransactionsInputShape = {
@@ -33,13 +34,6 @@ export function registerReportCountTransactionsTool(server) {
33
34
  'days and SILENTLY EXCLUDES older transactions — pass an explicit range ' +
34
35
  'for a full picture) and source_id. No tenant field is accepted.',
35
36
  inputSchema: countTransactionsInputShape,
36
- }, async (args, extra) => {
37
- const query = buildReportFilterQuery(args);
38
- return dispatchReport({
39
- method: 'GET',
40
- path: contextReportPath(args.contextId, 'transactions/count'),
41
- ...(query !== undefined ? { query } : {}),
42
- }, extra);
43
- });
37
+ }, queryHandler(buildReportFilterQuery, (args) => contextReportPath(args.contextId, 'transactions/count'), dispatchReport));
44
38
  }
45
39
  //# sourceMappingURL=count-transactions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"count-transactions.js","sourceRoot":"","sources":["../../../src/tools/report/count-transactions.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,uDAAuD;AACvD,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,uEAAuE;AACvE,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,0FAA0F;AAC1F,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oEAAoE;QAClE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CAAC,MAAiB;IACnE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EACT,wEAAwE;YACxE,uEAAuE;YACvE,yEAAyE;YACzE,gEAAgE;YAChE,sEAAsE;YACtE,yEAAyE;YACzE,iEAAiE;QACnE,WAAW,EAAE,2BAA2B;KACzC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC1C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC;YAC7D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"count-transactions.js","sourceRoot":"","sources":["../../../src/tools/report/count-transactions.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,uDAAuD;AACvD,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,uEAAuE;AACvE,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,0FAA0F;AAC1F,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oEAAoE;QAClE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CAAC,MAAiB;IACnE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EACT,wEAAwE;YACxE,uEAAuE;YACvE,yEAAyE;YACzE,gEAAgE;YAChE,sEAAsE;YACtE,yEAAyE;YACzE,iEAAiE;QACnE,WAAW,EAAE,2BAA2B;KACzC,EACD,YAAY,CACV,sBAAsB,EACtB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EACjE,cAAc,CACf,CACF,CAAA;AACH,CAAC"}
@@ -8,6 +8,7 @@
8
8
  // tenant-scoped by the relayed token; contextId is a routing path param, not a
9
9
  // tenant field, and no tenant field is accepted.
10
10
  import { z } from 'zod';
11
+ import { queryHandler } from '../query-handler.js';
11
12
  import { buildReportFilterQuery, contextReportPath, dispatchReport, reportFilterInputShape, } from './shared.js';
12
13
  /** Zod raw shape for `report_count_unmatched` input — contextId path + date filter. */
13
14
  export const countUnmatchedInputShape = {
@@ -33,13 +34,6 @@ export function registerReportCountUnmatchedTool(server) {
33
34
  'days and SILENTLY EXCLUDES older unmatched records — pass an explicit ' +
34
35
  'range for a full picture) and source_id. No tenant field is accepted.',
35
36
  inputSchema: countUnmatchedInputShape,
36
- }, async (args, extra) => {
37
- const query = buildReportFilterQuery(args);
38
- return dispatchReport({
39
- method: 'GET',
40
- path: contextReportPath(args.contextId, 'unmatched/count'),
41
- ...(query !== undefined ? { query } : {}),
42
- }, extra);
43
- });
37
+ }, queryHandler(buildReportFilterQuery, (args) => contextReportPath(args.contextId, 'unmatched/count'), dispatchReport));
44
38
  }
45
39
  //# sourceMappingURL=count-unmatched.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"count-unmatched.js","sourceRoot":"","sources":["../../../src/tools/report/count-unmatched.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oDAAoD;AACpD,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,uEAAuE;AACvE,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,uFAAuF;AACvF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,yEAAyE;QACvE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,yEAAyE;YACzE,uEAAuE;YACvE,yEAAyE;YACzE,gEAAgE;YAChE,sEAAsE;YACtE,wEAAwE;YACxE,uEAAuE;QACzE,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC1C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;YAC1D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"count-unmatched.js","sourceRoot":"","sources":["../../../src/tools/report/count-unmatched.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oDAAoD;AACpD,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,uEAAuE;AACvE,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,uFAAuF;AACvF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,yEAAyE;QACvE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,yEAAyE;YACzE,uEAAuE;YACvE,yEAAyE;YACzE,gEAAgE;YAChE,sEAAsE;YACtE,wEAAwE;YACxE,uEAAuE;QACzE,WAAW,EAAE,wBAAwB;KACtC,EACD,YAAY,CACV,sBAAsB,EACtB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAC9D,cAAc,CACf,CACF,CAAA;AACH,CAAC"}
@@ -9,6 +9,7 @@
9
9
  // is implicitly tenant-scoped by the relayed token; contextId is a routing path
10
10
  // param, not a tenant field, and no tenant field is accepted.
11
11
  import { z } from 'zod';
12
+ import { queryHandler } from '../query-handler.js';
12
13
  import { buildReportExportQuery, contextReportPath, dispatchReport, reportFilterInputShape, reportFormatInputShape, } from './shared.js';
13
14
  /** Zod raw shape for `report_export_exceptions` input — contextId path + filter + format. */
14
15
  export const exportExceptionsInputShape = {
@@ -36,13 +37,6 @@ export function registerReportExportExceptionsTool(server) {
36
37
  'string — decode it to recover the file bytes. No tenant field is ' +
37
38
  'accepted.',
38
39
  inputSchema: exportExceptionsInputShape,
39
- }, async (args, extra) => {
40
- const query = buildReportExportQuery(args);
41
- return dispatchReport({
42
- method: 'GET',
43
- path: contextReportPath(args.contextId, 'exceptions/export'),
44
- ...(query !== undefined ? { query } : {}),
45
- }, extra);
46
- });
40
+ }, queryHandler(buildReportExportQuery, (args) => contextReportPath(args.contextId, 'exceptions/export'), dispatchReport));
47
41
  }
48
42
  //# sourceMappingURL=export-exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-exceptions.js","sourceRoot":"","sources":["../../../src/tools/report/export-exceptions.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,sDAAsD;AACtD,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,6FAA6F;AAC7F,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,mEAAmE;QACjE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;IACzB,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAAC,MAAiB;IAClE,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EACT,uEAAuE;YACvE,0EAA0E;YAC1E,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,mEAAmE;YACnE,WAAW;QACb,WAAW,EAAE,0BAA0B;KACxC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC1C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;YAC5D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"export-exceptions.js","sourceRoot":"","sources":["../../../src/tools/report/export-exceptions.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,sDAAsD;AACtD,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,6FAA6F;AAC7F,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,mEAAmE;QACjE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;IACzB,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAAC,MAAiB;IAClE,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EACT,uEAAuE;YACvE,0EAA0E;YAC1E,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,mEAAmE;YACnE,WAAW;QACb,WAAW,EAAE,0BAA0B;KACxC,EACD,YAAY,CACV,sBAAsB,EACtB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAChE,cAAc,CACf,CACF,CAAA;AACH,CAAC"}
@@ -10,6 +10,7 @@
10
10
  // token; contextId is a routing path param, not a tenant field, and no tenant
11
11
  // field is accepted.
12
12
  import { z } from 'zod';
13
+ import { queryHandler } from '../query-handler.js';
13
14
  import { buildReportExportQuery, contextReportPath, dispatchReport, reportFilterInputShape, reportFormatInputShape, } from './shared.js';
14
15
  /** Zod raw shape for `report_export_matched` input — contextId path + filter + format. */
15
16
  export const exportMatchedInputShape = {
@@ -37,13 +38,6 @@ export function registerReportExportMatchedTool(server) {
37
38
  'base64-encoded string — decode it to recover the file bytes. No tenant ' +
38
39
  'field is accepted.',
39
40
  inputSchema: exportMatchedInputShape,
40
- }, async (args, extra) => {
41
- const query = buildReportExportQuery(args);
42
- return dispatchReport({
43
- method: 'GET',
44
- path: contextReportPath(args.contextId, 'matched/export'),
45
- ...(query !== undefined ? { query } : {}),
46
- }, extra);
47
- });
41
+ }, queryHandler(buildReportExportQuery, (args) => contextReportPath(args.contextId, 'matched/export'), dispatchReport));
48
42
  }
49
43
  //# sourceMappingURL=export-matched.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-matched.js","sourceRoot":"","sources":["../../../src/tools/report/export-matched.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,mDAAmD;AACnD,EAAE;AACF,oEAAoE;AACpE,8EAA8E;AAC9E,4EAA4E;AAC5E,uEAAuE;AACvE,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,qBAAqB;AAErB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,0FAA0F;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,qEAAqE;QACnE,iDAAiD,CACpD;IACH,GAAG,sBAAsB;IACzB,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,qEAAqE;YACrE,uEAAuE;YACvE,wEAAwE;YACxE,kEAAkE;YAClE,uEAAuE;YACvE,gEAAgE;YAChE,yEAAyE;YACzE,oBAAoB;QACtB,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC1C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;YACzD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"export-matched.js","sourceRoot":"","sources":["../../../src/tools/report/export-matched.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,mDAAmD;AACnD,EAAE;AACF,oEAAoE;AACpE,8EAA8E;AAC9E,4EAA4E;AAC5E,uEAAuE;AACvE,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,qBAAqB;AAErB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,0FAA0F;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,qEAAqE;QACnE,iDAAiD,CACpD;IACH,GAAG,sBAAsB;IACzB,GAAG,sBAAsB;CAC1B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,qEAAqE;YACrE,uEAAuE;YACvE,wEAAwE;YACxE,kEAAkE;YAClE,uEAAuE;YACvE,gEAAgE;YAChE,yEAAyE;YACzE,oBAAoB;QACtB,WAAW,EAAE,uBAAuB;KACrC,EACD,YAAY,CACV,sBAAsB,EACtB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAC7D,cAAc,CACf,CACF,CAAA;AACH,CAAC"}
@@ -10,6 +10,7 @@
10
10
  // token; contextId is a routing path param, not a tenant field, and no tenant
11
11
  // field is accepted.
12
12
  import { z } from 'zod';
13
+ import { queryHandler } from '../query-handler.js';
13
14
  import { buildReportExportQuery, contextReportPath, dispatchReport, reportFilterInputShape, reportFormatInputShape, } from './shared.js';
14
15
  /** Zod raw shape for `report_export_summary` input — contextId path + filter + format. */
15
16
  export const exportSummaryInputShape = {
@@ -37,13 +38,6 @@ export function registerReportExportSummaryTool(server) {
37
38
  'base64-encoded string — decode it to recover the file bytes. No tenant ' +
38
39
  'field is accepted.',
39
40
  inputSchema: exportSummaryInputShape,
40
- }, async (args, extra) => {
41
- const query = buildReportExportQuery(args);
42
- return dispatchReport({
43
- method: 'GET',
44
- path: contextReportPath(args.contextId, 'summary/export'),
45
- ...(query !== undefined ? { query } : {}),
46
- }, extra);
47
- });
41
+ }, queryHandler(buildReportExportQuery, (args) => contextReportPath(args.contextId, 'summary/export'), dispatchReport));
48
42
  }
49
43
  //# sourceMappingURL=export-summary.js.map