@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.
- package/dist/auth/request-token.js +11 -69
- package/dist/auth/request-token.js.map +1 -1
- package/dist/config.js +5 -20
- package/dist/config.js.map +1 -1
- package/dist/copilot/agent.js +5 -9
- package/dist/copilot/agent.js.map +1 -1
- package/dist/copilot/provider-anthropic.js +2 -16
- package/dist/copilot/provider-anthropic.js.map +1 -1
- package/dist/copilot/provider-openrouter.js +5 -18
- package/dist/copilot/provider-openrouter.js.map +1 -1
- package/dist/copilot/provider-shared.js +11 -0
- package/dist/copilot/provider-shared.js.map +1 -1
- package/dist/copilot/speech-provider.js +84 -0
- package/dist/copilot/speech-provider.js.map +1 -0
- package/dist/copilot/sse.js +5 -0
- package/dist/copilot/sse.js.map +1 -1
- package/dist/copilot/test_helpers.js +50 -0
- package/dist/copilot/test_helpers.js.map +1 -0
- package/dist/copilot/tools.js +14 -65
- package/dist/copilot/tools.js.map +1 -1
- package/dist/copilot/transcribe-handler.js +8 -93
- package/dist/copilot/transcribe-handler.js.map +1 -1
- package/dist/copilot/turn-request.js +76 -0
- package/dist/copilot/turn-request.js.map +1 -0
- package/dist/copilot/turns-handler.js +11 -102
- package/dist/copilot/turns-handler.js.map +1 -1
- package/dist/observability/otel.js +7 -29
- package/dist/observability/otel.js.map +1 -1
- package/dist/server.js +12 -81
- package/dist/server.js.map +1 -1
- package/dist/spec/enum-policy.js +9 -41
- package/dist/spec/enum-policy.js.map +1 -1
- package/dist/spec/schema-parity.js +4 -18
- package/dist/spec/schema-parity.js.map +1 -1
- package/dist/tools/context/list.js +7 -34
- package/dist/tools/context/list.js.map +1 -1
- package/dist/tools/context/shared.js +3 -29
- package/dist/tools/context/shared.js.map +1 -1
- package/dist/tools/context/update.js +2 -3
- package/dist/tools/context/update.js.map +1 -1
- package/dist/tools/dashboard/aggregates.js +2 -8
- package/dist/tools/dashboard/aggregates.js.map +1 -1
- package/dist/tools/dashboard/cash-impact.js +2 -8
- package/dist/tools/dashboard/cash-impact.js.map +1 -1
- package/dist/tools/dashboard/match-rate.js +2 -8
- package/dist/tools/dashboard/match-rate.js.map +1 -1
- package/dist/tools/dashboard/metrics.js +2 -8
- package/dist/tools/dashboard/metrics.js.map +1 -1
- package/dist/tools/dashboard/shared.js +5 -26
- package/dist/tools/dashboard/shared.js.map +1 -1
- package/dist/tools/dashboard/sla.js +2 -8
- package/dist/tools/dashboard/sla.js.map +1 -1
- package/dist/tools/dashboard/source-breakdown.js +2 -8
- package/dist/tools/dashboard/source-breakdown.js.map +1 -1
- package/dist/tools/dashboard/volume.js +2 -8
- package/dist/tools/dashboard/volume.js.map +1 -1
- package/dist/tools/dispute/close.js +2 -3
- package/dist/tools/dispute/close.js.map +1 -1
- package/dist/tools/dispute/list.js +16 -46
- package/dist/tools/dispute/list.js.map +1 -1
- package/dist/tools/dispute/shared.js +3 -29
- package/dist/tools/dispute/shared.js.map +1 -1
- package/dist/tools/dispute/submit-evidence.js +2 -3
- package/dist/tools/dispute/submit-evidence.js.map +1 -1
- package/dist/tools/exception/adjust-entry.js +2 -3
- package/dist/tools/exception/adjust-entry.js.map +1 -1
- package/dist/tools/exception/history.js +6 -23
- package/dist/tools/exception/history.js.map +1 -1
- package/dist/tools/exception/list.js +9 -53
- package/dist/tools/exception/list.js.map +1 -1
- package/dist/tools/exception/shared.js +3 -29
- package/dist/tools/exception/shared.js.map +1 -1
- package/dist/tools/fee-rule/create.js +2 -3
- package/dist/tools/fee-rule/create.js.map +1 -1
- package/dist/tools/fee-rule/list.js +7 -28
- package/dist/tools/fee-rule/list.js.map +1 -1
- package/dist/tools/fee-rule/shared.js +3 -29
- package/dist/tools/fee-rule/shared.js.map +1 -1
- package/dist/tools/fee-rule/update.js +2 -3
- package/dist/tools/fee-rule/update.js.map +1 -1
- package/dist/tools/fee-schedule/list.js +6 -23
- package/dist/tools/fee-schedule/list.js.map +1 -1
- package/dist/tools/fee-schedule/shared.js +3 -29
- package/dist/tools/fee-schedule/shared.js.map +1 -1
- package/dist/tools/fee-schedule/simulate.js +2 -3
- package/dist/tools/fee-schedule/simulate.js.map +1 -1
- package/dist/tools/fee-schedule/update.js +2 -3
- package/dist/tools/fee-schedule/update.js.map +1 -1
- package/dist/tools/field-map/get.js +2 -5
- package/dist/tools/field-map/get.js.map +1 -1
- package/dist/tools/field-map/list.js +7 -28
- package/dist/tools/field-map/list.js.map +1 -1
- package/dist/tools/field-map/shared.js +3 -29
- package/dist/tools/field-map/shared.js.map +1 -1
- package/dist/tools/generic/invoke.js +4 -26
- package/dist/tools/generic/invoke.js.map +1 -1
- package/dist/tools/ingestion/job-errors-list.js +2 -5
- package/dist/tools/ingestion/job-errors-list.js.map +1 -1
- package/dist/tools/ingestion/job-get.js +2 -5
- package/dist/tools/ingestion/job-get.js.map +1 -1
- package/dist/tools/ingestion/job-transactions-list.js +8 -39
- package/dist/tools/ingestion/job-transactions-list.js.map +1 -1
- package/dist/tools/ingestion/jobs-list.js +7 -34
- package/dist/tools/ingestion/jobs-list.js.map +1 -1
- package/dist/tools/ingestion/shared.js +3 -29
- package/dist/tools/ingestion/shared.js.map +1 -1
- package/dist/tools/ingestion/transaction-ignore.js +2 -5
- package/dist/tools/ingestion/transaction-ignore.js.map +1 -1
- package/dist/tools/ingestion/transactions-search.js +7 -43
- package/dist/tools/ingestion/transactions-search.js.map +1 -1
- package/dist/tools/input-fields.js +36 -0
- package/dist/tools/input-fields.js.map +1 -0
- package/dist/tools/match-rule/delete.js +2 -4
- package/dist/tools/match-rule/delete.js.map +1 -1
- package/dist/tools/match-rule/get.js +2 -4
- package/dist/tools/match-rule/get.js.map +1 -1
- package/dist/tools/match-rule/list.js +7 -31
- package/dist/tools/match-rule/list.js.map +1 -1
- package/dist/tools/match-rule/shared.js +3 -29
- package/dist/tools/match-rule/shared.js.map +1 -1
- package/dist/tools/match-rule/update.js +4 -8
- package/dist/tools/match-rule/update.js.map +1 -1
- package/dist/tools/matching/groups.js +3 -12
- package/dist/tools/matching/groups.js.map +1 -1
- package/dist/tools/matching/list.js +7 -31
- package/dist/tools/matching/list.js.map +1 -1
- package/dist/tools/matching/shared.js +3 -31
- package/dist/tools/matching/shared.js.map +1 -1
- package/dist/tools/query-handler.js +8 -0
- package/dist/tools/query-handler.js.map +1 -0
- package/dist/tools/report/count-exceptions.js +2 -8
- package/dist/tools/report/count-exceptions.js.map +1 -1
- package/dist/tools/report/count-matched.js +2 -8
- package/dist/tools/report/count-matched.js.map +1 -1
- package/dist/tools/report/count-transactions.js +2 -8
- package/dist/tools/report/count-transactions.js.map +1 -1
- package/dist/tools/report/count-unmatched.js +2 -8
- package/dist/tools/report/count-unmatched.js.map +1 -1
- package/dist/tools/report/export-exceptions.js +2 -8
- package/dist/tools/report/export-exceptions.js.map +1 -1
- package/dist/tools/report/export-matched.js +2 -8
- package/dist/tools/report/export-matched.js.map +1 -1
- package/dist/tools/report/export-summary.js +2 -8
- package/dist/tools/report/export-summary.js.map +1 -1
- package/dist/tools/report/export-unmatched.js +2 -8
- package/dist/tools/report/export-unmatched.js.map +1 -1
- package/dist/tools/report/export-variance.js +2 -8
- package/dist/tools/report/export-variance.js.map +1 -1
- package/dist/tools/report/matched.js +2 -8
- package/dist/tools/report/matched.js.map +1 -1
- package/dist/tools/report/shared.js +9 -55
- package/dist/tools/report/shared.js.map +1 -1
- package/dist/tools/report/summary.js +2 -8
- package/dist/tools/report/summary.js.map +1 -1
- package/dist/tools/report/unmatched.js +2 -8
- package/dist/tools/report/unmatched.js.map +1 -1
- package/dist/tools/report/variance.js +2 -8
- package/dist/tools/report/variance.js.map +1 -1
- package/dist/tools/request-fields.js +17 -0
- package/dist/tools/request-fields.js.map +1 -0
- package/dist/tools/shared-dispatch.js +38 -0
- package/dist/tools/shared-dispatch.js.map +1 -0
- package/dist/tools/source/archive.js +2 -5
- package/dist/tools/source/archive.js.map +1 -1
- package/dist/tools/source/create.js +2 -3
- package/dist/tools/source/create.js.map +1 -1
- package/dist/tools/source/get.js +2 -5
- package/dist/tools/source/get.js.map +1 -1
- package/dist/tools/source/list.js +7 -31
- package/dist/tools/source/list.js.map +1 -1
- package/dist/tools/source/restore.js +2 -5
- package/dist/tools/source/restore.js.map +1 -1
- package/dist/tools/source/shared.js +3 -29
- package/dist/tools/source/shared.js.map +1 -1
- package/dist/tools/source/update.js +4 -9
- package/dist/tools/source/update.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
// cursor). The list is implicitly tenant-scoped by the relayed token; contextId
|
|
9
9
|
// is a routing filter, not a tenant field, and no tenant field is accepted.
|
|
10
10
|
import { z } from 'zod';
|
|
11
|
+
import { pageLimit } from '../input-fields.js';
|
|
12
|
+
import { queryHandler } from '../query-handler.js';
|
|
13
|
+
import { pickQuery } from '../request-fields.js';
|
|
11
14
|
import { dispatchException, EXCEPTIONS_PATH } from './shared.js';
|
|
12
15
|
/** Lifecycle states an exception can be filtered by (matcher's queue states). */
|
|
13
16
|
export const EXCEPTION_STATUSES = ['OPEN', 'ASSIGNED', 'PENDING_RESOLUTION', 'RESOLVED'];
|
|
@@ -93,13 +96,7 @@ export const listExceptionsInputShape = {
|
|
|
93
96
|
'returned nextCursor to page forward (there is no auto-pagination). ' +
|
|
94
97
|
'Cursors are bound to the ordering that minted them — do not switch ' +
|
|
95
98
|
'sort_by/sort_order mid-pagination.'),
|
|
96
|
-
limit:
|
|
97
|
-
.number()
|
|
98
|
-
.int()
|
|
99
|
-
.min(1)
|
|
100
|
-
.max(200)
|
|
101
|
-
.optional()
|
|
102
|
-
.describe('Maximum number of records to return (1–200, default 20).'),
|
|
99
|
+
limit: pageLimit,
|
|
103
100
|
sort_by: z
|
|
104
101
|
.enum(EXCEPTION_SORT_BY)
|
|
105
102
|
.optional()
|
|
@@ -112,44 +109,10 @@ export const listExceptionsInputShape = {
|
|
|
112
109
|
};
|
|
113
110
|
/** Build the list query, omitting unset knobs so the request stays minimal. */
|
|
114
111
|
export function buildListQuery(args) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
if (args.status !== undefined) {
|
|
120
|
-
query.status = args.status;
|
|
121
|
-
}
|
|
122
|
-
if (args.severity !== undefined) {
|
|
123
|
-
query.severity = args.severity;
|
|
124
|
-
}
|
|
125
|
-
if (args.reason !== undefined) {
|
|
126
|
-
query.reason = args.reason;
|
|
127
|
-
}
|
|
128
|
-
if (args.assigned_to !== undefined) {
|
|
129
|
-
query.assigned_to = args.assigned_to;
|
|
130
|
-
}
|
|
131
|
-
if (args.external_system !== undefined) {
|
|
132
|
-
query.external_system = args.external_system;
|
|
133
|
-
}
|
|
134
|
-
if (args.date_from !== undefined) {
|
|
135
|
-
query.date_from = args.date_from;
|
|
136
|
-
}
|
|
137
|
-
if (args.date_to !== undefined) {
|
|
138
|
-
query.date_to = args.date_to;
|
|
139
|
-
}
|
|
140
|
-
if (args.cursor !== undefined) {
|
|
141
|
-
query.cursor = args.cursor;
|
|
142
|
-
}
|
|
143
|
-
if (args.limit !== undefined) {
|
|
144
|
-
query.limit = args.limit;
|
|
145
|
-
}
|
|
146
|
-
if (args.sort_by !== undefined) {
|
|
147
|
-
query.sort_by = args.sort_by;
|
|
148
|
-
}
|
|
149
|
-
if (args.sort_order !== undefined) {
|
|
150
|
-
query.sort_order = args.sort_order;
|
|
151
|
-
}
|
|
152
|
-
return Object.keys(query).length > 0 ? query : undefined;
|
|
112
|
+
return pickQuery(args, [
|
|
113
|
+
'contextId', 'status', 'severity', 'reason', 'assigned_to', 'external_system',
|
|
114
|
+
'date_from', 'date_to', 'cursor', 'limit', 'sort_by', 'sort_order',
|
|
115
|
+
]);
|
|
153
116
|
}
|
|
154
117
|
/**
|
|
155
118
|
* Register `exception_list`. Passes the filter/sort/pagination knobs through and
|
|
@@ -166,13 +129,6 @@ export function registerExceptionListTool(server) {
|
|
|
166
129
|
'carries { items, nextCursor } — paginate by re-calling with the returned ' +
|
|
167
130
|
'nextCursor (do not change sort mid-pagination). No tenant field is accepted.',
|
|
168
131
|
inputSchema: listExceptionsInputShape,
|
|
169
|
-
},
|
|
170
|
-
const query = buildListQuery(args);
|
|
171
|
-
return dispatchException({
|
|
172
|
-
method: 'GET',
|
|
173
|
-
path: EXCEPTIONS_PATH,
|
|
174
|
-
...(query !== undefined ? { query } : {}),
|
|
175
|
-
}, extra);
|
|
176
|
-
});
|
|
132
|
+
}, queryHandler(buildListQuery, () => EXCEPTIONS_PATH, dispatchException));
|
|
177
133
|
}
|
|
178
134
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/exception/list.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,gFAAgF;AAChF,yEAAyE;AACzE,4EAA4E;AAC5E,gFAAgF;AAChF,4EAA4E;AAE5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/exception/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,7 @@
|
|
|
17
17
|
// owns the request-scoped relay and fails closed when no usable credential was
|
|
18
18
|
// provided. No tenant identifier is ever read or injected (matcher derives
|
|
19
19
|
// tenant from the relayed JWT); no exception tool input carries one.
|
|
20
|
-
import {
|
|
21
|
-
import { isMatcherApiError, toToolError } from '../tool-error.js';
|
|
20
|
+
import { dispatchToolRequest, } from '../shared-dispatch.js';
|
|
22
21
|
/** Base path for the flat exceptions collection (list). */
|
|
23
22
|
export const EXCEPTIONS_PATH = '/v1/exceptions';
|
|
24
23
|
/** Single-exception sub-path (get / action verbs), id URL-encoded so reserved chars are safe. */
|
|
@@ -72,32 +71,7 @@ export const EXCEPTIONS_BULK_DISPATCH_PATH = `${EXCEPTIONS_PATH}/bulk/dispatch`;
|
|
|
72
71
|
* `clientFor` is injectable for tests; production callers pass nothing and get
|
|
73
72
|
* the request-scoped, fail-closed `requireMatcherClient`.
|
|
74
73
|
*/
|
|
75
|
-
export async function dispatchException(request, extra, clientFor
|
|
76
|
-
|
|
77
|
-
try {
|
|
78
|
-
// Fail-closed on a missing / empty / non-Bearer credential.
|
|
79
|
-
client = clientFor(extra);
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
if (err instanceof UnauthenticatedError) {
|
|
83
|
-
return { isError: true, content: [{ type: 'text', text: err.message }] };
|
|
84
|
-
}
|
|
85
|
-
throw err;
|
|
86
|
-
}
|
|
87
|
-
try {
|
|
88
|
-
const result = await client.request(request);
|
|
89
|
-
// Success → matcher's JSON returned as-is (incl. pagination envelopes and
|
|
90
|
-
// 204 → null for delete-comment).
|
|
91
|
-
return { content: [{ type: 'text', text: JSON.stringify(result ?? null) }] };
|
|
92
|
-
}
|
|
93
|
-
catch (err) {
|
|
94
|
-
// RFC 9457 problem → the SHARED structured tool error (status/title/detail/
|
|
95
|
-
// code preserved). A non-matcher error is a bug, not a matcher failure, and
|
|
96
|
-
// is re-thrown rather than masqueraded as one.
|
|
97
|
-
if (isMatcherApiError(err)) {
|
|
98
|
-
return toToolError(err);
|
|
99
|
-
}
|
|
100
|
-
throw err;
|
|
101
|
-
}
|
|
74
|
+
export async function dispatchException(request, extra, clientFor) {
|
|
75
|
+
return dispatchToolRequest(request, extra, clientFor);
|
|
102
76
|
}
|
|
103
77
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/exception/shared.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AACxE,gFAAgF;AAChF,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,kEAAkE;AAClE,6EAA6E;AAC7E,yBAAyB;AACzB,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,qEAAqE;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/exception/shared.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AACxE,gFAAgF;AAChF,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,kEAAkE;AAClE,6EAA6E;AAC7E,yBAAyB;AACzB,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,qEAAqE;AAMrE,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAA;AAE9B,2DAA2D;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAA;AAE/C,iGAAiG;AACjG,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,GAAG,eAAe,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAA;AAChE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,UAAU,CAAA;AAChD,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,WAAW,CAAA;AACjD,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,SAAiB;IAEjB,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAA;AACjF,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,WAAW,CAAA;AACjD,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,WAAW,CAAA;AACjD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,cAAc,CAAA;AACpD,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAC1D,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,eAAe,CAAA;AACrD,CAAC;AAED,iDAAiD;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,eAAe,cAAc,CAAA;AAE3E,kDAAkD;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,eAAe,eAAe,CAAA;AAE7E,mDAAmD;AACnD,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,eAAe,gBAAgB,CAAA;AAE/E,yEAAyE;AACzE,mFAAmF;AACnF,6EAA6E;AAC7E,iEAAiE;AACjE,iEAAiE;AAEjE;;;;;;;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"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
// so an operator-driving LLM gets the exact shape; `value`/`values` are optional
|
|
14
14
|
// because operators like EXISTS consume neither.
|
|
15
15
|
import { z } from 'zod';
|
|
16
|
+
import { bodyWithout } from '../request-fields.js';
|
|
16
17
|
import { contextFeeRulesPath, dispatchFeeRule } from './shared.js';
|
|
17
18
|
/** Side a fee rule applies to. LEFT/RIGHT target one side; ANY matches either. */
|
|
18
19
|
export const FEE_RULE_SIDES = ['LEFT', 'RIGHT', 'ANY'];
|
|
@@ -98,9 +99,7 @@ export const createFeeRuleInputShape = {
|
|
|
98
99
|
};
|
|
99
100
|
/** Build the POST body from the input minus the path-only `contextId`. */
|
|
100
101
|
export function buildCreateBody(args) {
|
|
101
|
-
|
|
102
|
-
void _contextId;
|
|
103
|
-
return body;
|
|
102
|
+
return bodyWithout(args, ['contextId']);
|
|
104
103
|
}
|
|
105
104
|
/**
|
|
106
105
|
* Register `fee_rule_create`. Substitutes `contextId` into the context-nested
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/create.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,+EAA+E;AAC/E,EAAE;AACF,kFAAkF;AAClF,6EAA6E;AAC7E,kDAAkD;AAClD,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,iFAAiF;AACjF,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
// auto-pagination (the model re-calls with the returned cursor). The list is
|
|
7
7
|
// implicitly tenant-scoped by the relayed token; no tenant field is accepted.
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
+
import { nextCursor, pageLimit } from '../input-fields.js';
|
|
10
|
+
import { queryHandler } from '../query-handler.js';
|
|
11
|
+
import { pickQuery } from '../request-fields.js';
|
|
9
12
|
import { contextFeeRulesPath, dispatchFeeRule } from './shared.js';
|
|
10
13
|
/** Zod raw shape for `fee_rule_list` input — contextId path + pagination knobs. */
|
|
11
14
|
export const listFeeRulesInputShape = {
|
|
@@ -15,29 +18,12 @@ export const listFeeRulesInputShape = {
|
|
|
15
18
|
.describe('The reconciliation context id (UUID) whose fee rules to list. A routing ' +
|
|
16
19
|
"path param matcher validates against your token's tenant. NOT a tenant " +
|
|
17
20
|
'field.'),
|
|
18
|
-
limit:
|
|
19
|
-
|
|
20
|
-
.int()
|
|
21
|
-
.min(1)
|
|
22
|
-
.max(200)
|
|
23
|
-
.optional()
|
|
24
|
-
.describe('Maximum number of records to return (1–200, default 20).'),
|
|
25
|
-
cursor: z
|
|
26
|
-
.string()
|
|
27
|
-
.optional()
|
|
28
|
-
.describe('Opaque pagination cursor from a prior response. Re-call with the ' +
|
|
29
|
-
'returned nextCursor to page forward (there is no auto-pagination).'),
|
|
21
|
+
limit: pageLimit,
|
|
22
|
+
cursor: nextCursor,
|
|
30
23
|
};
|
|
31
24
|
/** Build the list query, omitting unset knobs so the request stays minimal. */
|
|
32
25
|
function buildListQuery(args) {
|
|
33
|
-
|
|
34
|
-
if (args.limit !== undefined) {
|
|
35
|
-
query.limit = args.limit;
|
|
36
|
-
}
|
|
37
|
-
if (args.cursor !== undefined) {
|
|
38
|
-
query.cursor = args.cursor;
|
|
39
|
-
}
|
|
40
|
-
return Object.keys(query).length > 0 ? query : undefined;
|
|
26
|
+
return pickQuery(args, ['limit', 'cursor']);
|
|
41
27
|
}
|
|
42
28
|
/**
|
|
43
29
|
* Register `fee_rule_list`. Substitutes `contextId` into the context-nested path,
|
|
@@ -52,13 +38,6 @@ export function registerFeeRuleListTool(server) {
|
|
|
52
38
|
'returned nextCursor. No tenant field is accepted; the tenant is derived ' +
|
|
53
39
|
'from your bearer token.',
|
|
54
40
|
inputSchema: listFeeRulesInputShape,
|
|
55
|
-
},
|
|
56
|
-
const query = buildListQuery(args);
|
|
57
|
-
return dispatchFeeRule({
|
|
58
|
-
method: 'GET',
|
|
59
|
-
path: contextFeeRulesPath(args.contextId),
|
|
60
|
-
...(query !== undefined ? { query } : {}),
|
|
61
|
-
}, extra);
|
|
62
|
-
});
|
|
41
|
+
}, queryHandler(buildListQuery, (args) => contextFeeRulesPath(args.contextId), dispatchFeeRule));
|
|
63
42
|
}
|
|
64
43
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/list.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,uEAAuE;AACvE,6EAA6E;AAC7E,8EAA8E;AAE9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/list.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,uEAAuE;AACvE,6EAA6E;AAC7E,8EAA8E;AAE9E,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,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElE,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,0EAA0E;QACxE,yEAAyE;QACzE,QAAQ,CACX;IACH,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;CACnB,CAAA;AAOD,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAuB;IAC7C,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,sEAAsE;YACtE,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,yBAAyB;QAC3B,WAAW,EAAE,sBAAsB;KACpC,EACD,YAAY,CACV,cAAc,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAC7C,eAAe,CAChB,CACF,CAAA;AACH,CAAC"}
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
// provided. No tenant identifier is ever read or injected (matcher derives
|
|
19
19
|
// tenant from the relayed JWT); no fee-rule tool input carries one. `contextId`
|
|
20
20
|
// is a routing path param matcher validates ownership of, NOT a tenant field.
|
|
21
|
-
import {
|
|
22
|
-
import { isMatcherApiError, toToolError } from '../tool-error.js';
|
|
21
|
+
import { dispatchToolRequest, } from '../shared-dispatch.js';
|
|
23
22
|
/** Context-nested collection path for fee rules (create + list). */
|
|
24
23
|
export function contextFeeRulesPath(contextId) {
|
|
25
24
|
return `/v1/contexts/${encodeURIComponent(contextId)}/fee-rules`;
|
|
@@ -36,32 +35,7 @@ export function feeRulePath(feeRuleId) {
|
|
|
36
35
|
* `clientFor` is injectable for tests; production callers pass nothing and get
|
|
37
36
|
* the request-scoped, fail-closed `requireMatcherClient`.
|
|
38
37
|
*/
|
|
39
|
-
export async function dispatchFeeRule(request, extra, clientFor
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
// Fail-closed on a missing / empty / non-Bearer credential.
|
|
43
|
-
client = clientFor(extra);
|
|
44
|
-
}
|
|
45
|
-
catch (err) {
|
|
46
|
-
if (err instanceof UnauthenticatedError) {
|
|
47
|
-
return { isError: true, content: [{ type: 'text', text: err.message }] };
|
|
48
|
-
}
|
|
49
|
-
throw err;
|
|
50
|
-
}
|
|
51
|
-
try {
|
|
52
|
-
const result = await client.request(request);
|
|
53
|
-
// Success → matcher's JSON returned as-is (incl. pagination envelopes and
|
|
54
|
-
// 204 → null for delete).
|
|
55
|
-
return { content: [{ type: 'text', text: JSON.stringify(result ?? null) }] };
|
|
56
|
-
}
|
|
57
|
-
catch (err) {
|
|
58
|
-
// RFC 9457 problem → the SHARED structured tool error (status/title/detail/
|
|
59
|
-
// code preserved). A non-matcher error is a bug, not a matcher failure, and
|
|
60
|
-
// is re-thrown rather than masqueraded as one.
|
|
61
|
-
if (isMatcherApiError(err)) {
|
|
62
|
-
return toToolError(err);
|
|
63
|
-
}
|
|
64
|
-
throw err;
|
|
65
|
-
}
|
|
38
|
+
export async function dispatchFeeRule(request, extra, clientFor) {
|
|
39
|
+
return dispatchToolRequest(request, extra, clientFor);
|
|
66
40
|
}
|
|
67
41
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/shared.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,kFAAkF;AAClF,oFAAoF;AACpF,wFAAwF;AACxF,4EAA4E;AAC5E,iCAAiC;AACjC,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,gCAAgC;AAChC,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAChF,8EAA8E;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/shared.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,kFAAkF;AAClF,oFAAoF;AACpF,wFAAwF;AACxF,4EAA4E;AAC5E,iCAAiC;AACjC,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,gCAAgC;AAChC,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAChF,8EAA8E;AAM9E,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAA;AAE9B,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAA;AAClE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,iBAAiB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAA;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAuB,EACvB,KAAmC,EACnC,SAAgC;IAEhC,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;AACvD,CAAC"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// predicate set. No tenant field is accepted (matcher scopes to the relayed
|
|
9
9
|
// token's tenant).
|
|
10
10
|
import { z } from 'zod';
|
|
11
|
+
import { bodyWithout } from '../request-fields.js';
|
|
11
12
|
import { FEE_RULE_SIDES, feeRulePredicateShape } from './create.js';
|
|
12
13
|
import { dispatchFeeRule, feeRulePath } from './shared.js';
|
|
13
14
|
/** Zod raw shape for `fee_rule_update` input — id (path) + optional fields. */
|
|
@@ -42,9 +43,7 @@ export const updateFeeRuleInputShape = {
|
|
|
42
43
|
* unchanged.
|
|
43
44
|
*/
|
|
44
45
|
export function buildUpdateBody(args) {
|
|
45
|
-
|
|
46
|
-
void _feeRuleId;
|
|
47
|
-
return body;
|
|
46
|
+
return bodyWithout(args, ['feeRuleId']);
|
|
48
47
|
}
|
|
49
48
|
/**
|
|
50
49
|
* Register `fee_rule_update`. Splits the id (path) from the body fields and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/update.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,mBAAmB;AAEnB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/update.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,mBAAmB;AAEnB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE1D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC1E,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,cAAc,CAAC;SACpB,QAAQ,EAAE;SACV,QAAQ,CACP,2EAA2E;QACzE,0CAA0C,CAC7C;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,wEAAwE;QACtE,uDAAuD,CAC1D;IACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAChF,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CACP,sEAAsE;QACpE,4EAA4E,CAC/E;IACH,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,qBAAqB,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CACP,yEAAyE;QACvE,+CAA+C,CAClD;CACJ,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAwB;IAExB,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,yEAAyE;YACzE,2EAA2E;YAC3E,uEAAuE;YACvE,yEAAyE;YACzE,iCAAiC;QACnC,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,eAAe,CACpB;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;YACjC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;SAC5B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -5,16 +5,13 @@
|
|
|
5
5
|
// — no auto-pagination (the model re-calls with the returned cursor). The list
|
|
6
6
|
// is implicitly tenant-scoped by the relayed token; no tenant field is accepted.
|
|
7
7
|
import { z } from 'zod';
|
|
8
|
+
import { pageLimit } from '../input-fields.js';
|
|
9
|
+
import { queryHandler } from '../query-handler.js';
|
|
10
|
+
import { pickQuery } from '../request-fields.js';
|
|
8
11
|
import { dispatchFeeSchedule, FEE_SCHEDULES_PATH } from './shared.js';
|
|
9
12
|
/** Zod raw shape for `fee_schedule_list` input — pagination knobs only. */
|
|
10
13
|
export const listFeeSchedulesInputShape = {
|
|
11
|
-
limit:
|
|
12
|
-
.number()
|
|
13
|
-
.int()
|
|
14
|
-
.min(1)
|
|
15
|
-
.max(200)
|
|
16
|
-
.optional()
|
|
17
|
-
.describe('Maximum number of records to return (1–200, default 20).'),
|
|
14
|
+
limit: pageLimit,
|
|
18
15
|
cursor: z
|
|
19
16
|
.string()
|
|
20
17
|
.optional()
|
|
@@ -23,14 +20,7 @@ export const listFeeSchedulesInputShape = {
|
|
|
23
20
|
};
|
|
24
21
|
/** Build the list query, omitting unset knobs so the request stays minimal. */
|
|
25
22
|
function buildListQuery(args) {
|
|
26
|
-
|
|
27
|
-
if (args.limit !== undefined) {
|
|
28
|
-
query.limit = args.limit;
|
|
29
|
-
}
|
|
30
|
-
if (args.cursor !== undefined) {
|
|
31
|
-
query.cursor = args.cursor;
|
|
32
|
-
}
|
|
33
|
-
return Object.keys(query).length > 0 ? query : undefined;
|
|
23
|
+
return pickQuery(args, ['limit', 'cursor']);
|
|
34
24
|
}
|
|
35
25
|
/**
|
|
36
26
|
* Register `fee_schedule_list`. Passes limit/cursor through and returns matcher's
|
|
@@ -44,13 +34,6 @@ export function registerFeeScheduleListTool(server) {
|
|
|
44
34
|
'— paginate by re-calling with the returned nextCursor. No tenant field ' +
|
|
45
35
|
'is accepted; the tenant is derived from your bearer token.',
|
|
46
36
|
inputSchema: listFeeSchedulesInputShape,
|
|
47
|
-
},
|
|
48
|
-
const query = buildListQuery(args);
|
|
49
|
-
return dispatchFeeSchedule({
|
|
50
|
-
method: 'GET',
|
|
51
|
-
path: FEE_SCHEDULES_PATH,
|
|
52
|
-
...(query !== undefined ? { query } : {}),
|
|
53
|
-
}, extra);
|
|
54
|
-
});
|
|
37
|
+
}, queryHandler(buildListQuery, () => FEE_SCHEDULES_PATH, dispatchFeeSchedule));
|
|
55
38
|
}
|
|
56
39
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/list.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,iFAAiF;AACjF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AAEjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/list.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,iFAAiF;AACjF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AAEjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK,EAAE,SAAS;IAChB,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,IAA2B;IACjD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,0EAA0E;YAC1E,0EAA0E;YAC1E,yEAAyE;YACzE,4DAA4D;QAC9D,WAAW,EAAE,0BAA0B;KACxC,EACD,YAAY,CACV,cAAc,EACd,GAAG,EAAE,CAAC,kBAAkB,EACxB,mBAAmB,CACpB,CACF,CAAA;AACH,CAAC"}
|
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
// owns the request-scoped relay and fails closed when no usable credential was
|
|
12
12
|
// provided. No tenant identifier is ever read or injected (matcher derives
|
|
13
13
|
// tenant from the relayed JWT); no fee-schedule tool input carries one.
|
|
14
|
-
import {
|
|
15
|
-
import { isMatcherApiError, toToolError } from '../tool-error.js';
|
|
14
|
+
import { dispatchToolRequest, } from '../shared-dispatch.js';
|
|
16
15
|
/** Base path for the fee-schedule resource (tenant-scoped; tenant from the token). */
|
|
17
16
|
export const FEE_SCHEDULES_PATH = '/v1/fee-schedules';
|
|
18
17
|
/** Build the single-schedule sub-path, URL-encoding the id so reserved chars are safe. */
|
|
@@ -27,32 +26,7 @@ export function feeSchedulePath(scheduleId) {
|
|
|
27
26
|
* `clientFor` is injectable for tests; production callers pass nothing and get
|
|
28
27
|
* the request-scoped, fail-closed `requireMatcherClient`.
|
|
29
28
|
*/
|
|
30
|
-
export async function dispatchFeeSchedule(request, extra, clientFor
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
// Fail-closed on a missing / empty / non-Bearer credential.
|
|
34
|
-
client = clientFor(extra);
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
if (err instanceof UnauthenticatedError) {
|
|
38
|
-
return { isError: true, content: [{ type: 'text', text: err.message }] };
|
|
39
|
-
}
|
|
40
|
-
throw err;
|
|
41
|
-
}
|
|
42
|
-
try {
|
|
43
|
-
const result = await client.request(request);
|
|
44
|
-
// Success → matcher's JSON returned as-is (incl. pagination envelopes and
|
|
45
|
-
// 204 → null for delete).
|
|
46
|
-
return { content: [{ type: 'text', text: JSON.stringify(result ?? null) }] };
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
// RFC 9457 problem → the SHARED structured tool error (status/title/detail/
|
|
50
|
-
// code preserved). A non-matcher error is a bug, not a matcher failure, and
|
|
51
|
-
// is re-thrown rather than masqueraded as one.
|
|
52
|
-
if (isMatcherApiError(err)) {
|
|
53
|
-
return toToolError(err);
|
|
54
|
-
}
|
|
55
|
-
throw err;
|
|
56
|
-
}
|
|
29
|
+
export async function dispatchFeeSchedule(request, extra, clientFor) {
|
|
30
|
+
return dispatchToolRequest(request, extra, clientFor);
|
|
57
31
|
}
|
|
58
32
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/shared.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,iFAAiF;AACjF,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,wEAAwE;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/shared.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,iFAAiF;AACjF,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,wEAAwE;AAMxE,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAA;AAE9B,sFAAsF;AACtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAA;AAErD,0FAA0F;AAC1F,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,OAAO,GAAG,kBAAkB,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAA;AAClE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAuB,EACvB,KAAmC,EACnC,SAAgC;IAEhC,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;AACvD,CAAC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// float precision loss. scheduleId is a UUID path param; no tenant field is
|
|
7
7
|
// accepted (matcher scopes to the relayed token's tenant).
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
+
import { bodyWithout } from '../request-fields.js';
|
|
9
10
|
import { dispatchFeeSchedule, feeSchedulePath } from './shared.js';
|
|
10
11
|
/** Zod raw shape for `fee_schedule_simulate` input — id (path) + body fields. */
|
|
11
12
|
export const simulateFeeScheduleInputShape = {
|
|
@@ -25,9 +26,7 @@ export const simulateFeeScheduleInputShape = {
|
|
|
25
26
|
* Build the simulate POST body from the input minus the path-only `scheduleId`.
|
|
26
27
|
*/
|
|
27
28
|
export function buildSimulateBody(args) {
|
|
28
|
-
|
|
29
|
-
void _scheduleId;
|
|
30
|
-
return body;
|
|
29
|
+
return bodyWithout(args, ['scheduleId']);
|
|
31
30
|
}
|
|
32
31
|
/**
|
|
33
32
|
* Register `fee_schedule_simulate`. Splits the id (path) from the body, dispatches
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/simulate.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,gFAAgF;AAChF,4EAA4E;AAC5E,2DAA2D;AAE3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/simulate.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,gFAAgF;AAChF,4EAA4E;AAC5E,2DAA2D;AAE3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElE,iFAAiF;AACjF,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,CACP,0EAA0E;QACxE,0EAA0E,CAC7E;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,CAAC,yDAAyD,CAAC;CACvE,CAAA;AAOD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA8B;IAE9B,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,mEAAmE;YACnE,oEAAoE;YACpE,uEAAuE;YACvE,wEAAwE;YACxE,oEAAoE;QACtE,WAAW,EAAE,6BAA6B;KAC3C,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW;YACpD,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;SAC9B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// create time), so neither does this tool. scheduleId is a UUID path param; no
|
|
7
7
|
// tenant field is accepted (matcher scopes to the relayed token's tenant).
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
+
import { bodyWithout } from '../request-fields.js';
|
|
9
10
|
import { APPLICATION_ORDERS, ROUNDING_MODES } from './create.js';
|
|
10
11
|
import { dispatchFeeSchedule, feeSchedulePath } from './shared.js';
|
|
11
12
|
/** Zod raw shape for `fee_schedule_update` input — id (path) + optional fields. */
|
|
@@ -41,9 +42,7 @@ export const updateFeeScheduleInputShape = {
|
|
|
41
42
|
* unchanged.
|
|
42
43
|
*/
|
|
43
44
|
export function buildUpdateBody(args) {
|
|
44
|
-
|
|
45
|
-
void _scheduleId;
|
|
46
|
-
return body;
|
|
45
|
+
return bodyWithout(args, ['scheduleId']);
|
|
47
46
|
}
|
|
48
47
|
/**
|
|
49
48
|
* Register `fee_schedule_update`. Splits the id (path) from the body fields,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/update.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/update.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElE,mFAAmF;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,uCAAuC,CAAC;IACpD,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,gBAAgB,EAAE,CAAC;SAChB,IAAI,CAAC,kBAAkB,CAAC;SACxB,QAAQ,EAAE;SACV,QAAQ,CACP,yEAAyE;QACvE,qEAAqE,CACxE;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,cAAc,CAAC;SACpB,QAAQ,EAAE;SACV,QAAQ,CACP,0EAA0E;QACxE,uEAAuE;QACvE,8BAA8B,CACjC;CACJ,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA4B;IAE5B,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAiB;IAC7D,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,yEAAyE;YACzE,iEAAiE;YACjE,qEAAqE;YACrE,yEAAyE;YACzE,4EAA4E;QAC9E,WAAW,EAAE,2BAA2B;KACzC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YACtC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;SAC5B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -7,14 +7,11 @@
|
|
|
7
7
|
// to a context owned by the relayed token's tenant — matcher enforces that;
|
|
8
8
|
// no tenant field is accepted.
|
|
9
9
|
import { z } from 'zod';
|
|
10
|
+
import { contextRoutingId } from '../input-fields.js';
|
|
10
11
|
import { dispatchFieldMap, sourceFieldMapPath } from './shared.js';
|
|
11
12
|
/** Zod raw shape for `field_map_get` input — both path ids. */
|
|
12
13
|
export const getFieldMapInputShape = {
|
|
13
|
-
contextId:
|
|
14
|
-
.string()
|
|
15
|
-
.min(1)
|
|
16
|
-
.describe('The reconciliation context id (UUID). Routing path param, not a tenant ' +
|
|
17
|
-
'field.'),
|
|
14
|
+
contextId: contextRoutingId,
|
|
18
15
|
sourceId: z
|
|
19
16
|
.string()
|
|
20
17
|
.min(1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/tools/field-map/get.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,0DAA0D;AAC1D,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,+BAA+B;AAE/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/tools/field-map/get.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,0DAA0D;AAC1D,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,+BAA+B;AAE/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAIrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAElE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,SAAS,EAAE,gBAAgB;IAC3B,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,+DAA+D,CAAC;CAC7E,CAAA;AAKD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,oEAAoE;YACpE,sEAAsE;YACtE,sEAAsE;YACtE,qEAAqE;YACrE,mCAAmC;QACrC,WAAW,EAAE,qBAAqB;KACnC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,gBAAgB,CACrB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;SACxD,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
// cursor). contextId is a routing path param, not a tenant field; no tenant
|
|
8
8
|
// 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 { contextFieldMapsPath, dispatchFieldMap } from './shared.js';
|
|
11
14
|
/** Zod raw shape for `field_map_list` input — contextId path + pagination. */
|
|
12
15
|
export const listFieldMapsInputShape = {
|
|
@@ -15,29 +18,12 @@ export const listFieldMapsInputShape = {
|
|
|
15
18
|
.min(1)
|
|
16
19
|
.describe('The reconciliation context id (UUID) whose field maps to list. Routing ' +
|
|
17
20
|
'path param, not a tenant field.'),
|
|
18
|
-
limit:
|
|
19
|
-
|
|
20
|
-
.int()
|
|
21
|
-
.min(1)
|
|
22
|
-
.max(200)
|
|
23
|
-
.optional()
|
|
24
|
-
.describe('Maximum number of records to return (1–200, default 20).'),
|
|
25
|
-
cursor: z
|
|
26
|
-
.string()
|
|
27
|
-
.optional()
|
|
28
|
-
.describe('Opaque pagination cursor from a prior response. Re-call with the ' +
|
|
29
|
-
'returned nextCursor to page forward (there is no auto-pagination).'),
|
|
21
|
+
limit: pageLimit,
|
|
22
|
+
cursor: nextCursor,
|
|
30
23
|
};
|
|
31
24
|
/** Build the list query, omitting unset knobs so the request stays minimal. */
|
|
32
25
|
function buildListQuery(args) {
|
|
33
|
-
|
|
34
|
-
if (args.limit !== undefined) {
|
|
35
|
-
query.limit = args.limit;
|
|
36
|
-
}
|
|
37
|
-
if (args.cursor !== undefined) {
|
|
38
|
-
query.cursor = args.cursor;
|
|
39
|
-
}
|
|
40
|
-
return Object.keys(query).length > 0 ? query : undefined;
|
|
26
|
+
return pickQuery(args, ['limit', 'cursor']);
|
|
41
27
|
}
|
|
42
28
|
/**
|
|
43
29
|
* Register `field_map_list`. Passes limit/cursor through and returns matcher's
|
|
@@ -52,13 +38,6 @@ export function registerFieldMapListTool(server) {
|
|
|
52
38
|
'response carries { items, nextCursor } — paginate by re-calling with ' +
|
|
53
39
|
'the returned nextCursor. No tenant field is accepted.',
|
|
54
40
|
inputSchema: listFieldMapsInputShape,
|
|
55
|
-
},
|
|
56
|
-
const query = buildListQuery(args);
|
|
57
|
-
return dispatchFieldMap({
|
|
58
|
-
method: 'GET',
|
|
59
|
-
path: contextFieldMapsPath(args.contextId),
|
|
60
|
-
...(query !== undefined ? { query } : {}),
|
|
61
|
-
}, extra);
|
|
62
|
-
});
|
|
41
|
+
}, queryHandler(buildListQuery, (args) => contextFieldMapsPath(args.contextId), dispatchFieldMap));
|
|
63
42
|
}
|
|
64
43
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/field-map/list.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,qBAAqB;AAErB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/tools/field-map/list.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,qBAAqB;AAErB,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,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEpE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,yEAAyE;QACvE,iCAAiC,CACpC;IACH,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;CACnB,CAAA;AAOD,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAwB;IAC9C,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,uEAAuE;YACvE,uDAAuD;QACzD,WAAW,EAAE,uBAAuB;KACrC,EACD,YAAY,CACV,cAAc,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9C,gBAAgB,CACjB,CACF,CAAA;AACH,CAAC"}
|