@lerianstudio/matcher-mcp 5.0.0-beta.67 → 5.0.0-beta.69
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/spec/curated-operations.js +107 -95
- package/dist/spec/curated-operations.js.map +1 -1
- package/dist/spec/schema-parity.js +19 -10
- package/dist/spec/schema-parity.js.map +1 -1
- package/dist/tools/context/create.js +3 -2
- package/dist/tools/context/create.js.map +1 -1
- package/dist/tools/context/index.js +137 -17
- package/dist/tools/context/index.js.map +1 -1
- package/dist/tools/context/list.js +3 -2
- package/dist/tools/context/list.js.map +1 -1
- package/dist/tools/context/setup-progress.js +3 -2
- package/dist/tools/context/setup-progress.js.map +1 -1
- package/dist/tools/context/shared.js +7 -22
- package/dist/tools/context/shared.js.map +1 -1
- package/dist/tools/context/update.js +3 -2
- package/dist/tools/context/update.js.map +1 -1
- package/dist/tools/curated-tool.js +39 -0
- package/dist/tools/curated-tool.js.map +1 -0
- package/dist/tools/dashboard/index.js +124 -19
- package/dist/tools/dashboard/index.js.map +1 -1
- package/dist/tools/dashboard/shared.js +4 -42
- package/dist/tools/dashboard/shared.js.map +1 -1
- package/dist/tools/dispute/close.js +3 -2
- package/dist/tools/dispute/close.js.map +1 -1
- package/dist/tools/dispute/index.js +34 -6
- package/dist/tools/dispute/index.js.map +1 -1
- package/dist/tools/dispute/list.js +3 -2
- package/dist/tools/dispute/list.js.map +1 -1
- package/dist/tools/dispute/shared.js +4 -17
- package/dist/tools/dispute/shared.js.map +1 -1
- package/dist/tools/dispute/submit-evidence.js +3 -2
- package/dist/tools/dispute/submit-evidence.js.map +1 -1
- package/dist/tools/exception/add-comment.js +3 -2
- package/dist/tools/exception/add-comment.js.map +1 -1
- package/dist/tools/exception/adjust-entry.js +3 -2
- package/dist/tools/exception/adjust-entry.js.map +1 -1
- package/dist/tools/exception/bulk-assign.js +3 -2
- package/dist/tools/exception/bulk-assign.js.map +1 -1
- package/dist/tools/exception/bulk-dispatch.js +3 -2
- package/dist/tools/exception/bulk-dispatch.js.map +1 -1
- package/dist/tools/exception/bulk-resolve.js +3 -2
- package/dist/tools/exception/bulk-resolve.js.map +1 -1
- package/dist/tools/exception/dispatch.js +3 -2
- package/dist/tools/exception/dispatch.js.map +1 -1
- package/dist/tools/exception/force-match.js +3 -2
- package/dist/tools/exception/force-match.js.map +1 -1
- package/dist/tools/exception/history.js +3 -2
- package/dist/tools/exception/history.js.map +1 -1
- package/dist/tools/exception/index.js +88 -18
- package/dist/tools/exception/index.js.map +1 -1
- package/dist/tools/exception/list.js +3 -2
- package/dist/tools/exception/list.js.map +1 -1
- package/dist/tools/exception/open-dispute.js +3 -2
- package/dist/tools/exception/open-dispute.js.map +1 -1
- package/dist/tools/exception/shared.js +5 -20
- package/dist/tools/exception/shared.js.map +1 -1
- package/dist/tools/fee-rule/create.js +3 -2
- package/dist/tools/fee-rule/create.js.map +1 -1
- package/dist/tools/fee-rule/index.js +50 -8
- package/dist/tools/fee-rule/index.js.map +1 -1
- package/dist/tools/fee-rule/list.js +3 -2
- package/dist/tools/fee-rule/list.js.map +1 -1
- package/dist/tools/fee-rule/shared.js +5 -21
- package/dist/tools/fee-rule/shared.js.map +1 -1
- package/dist/tools/fee-rule/update.js +3 -2
- package/dist/tools/fee-rule/update.js.map +1 -1
- package/dist/tools/fee-schedule/create.js +3 -2
- package/dist/tools/fee-schedule/create.js.map +1 -1
- package/dist/tools/fee-schedule/index.js +62 -11
- package/dist/tools/fee-schedule/index.js.map +1 -1
- package/dist/tools/fee-schedule/list.js +3 -2
- package/dist/tools/fee-schedule/list.js.map +1 -1
- package/dist/tools/fee-schedule/shared.js +5 -18
- package/dist/tools/fee-schedule/shared.js.map +1 -1
- package/dist/tools/fee-schedule/simulate.js +3 -2
- package/dist/tools/fee-schedule/simulate.js.map +1 -1
- package/dist/tools/fee-schedule/update.js +3 -2
- package/dist/tools/fee-schedule/update.js.map +1 -1
- package/dist/tools/field-map/create.js +3 -2
- package/dist/tools/field-map/create.js.map +1 -1
- package/dist/tools/field-map/index.js +65 -11
- package/dist/tools/field-map/index.js.map +1 -1
- package/dist/tools/field-map/list.js +3 -2
- package/dist/tools/field-map/list.js.map +1 -1
- package/dist/tools/field-map/shared.js +6 -16
- package/dist/tools/field-map/shared.js.map +1 -1
- package/dist/tools/field-map/update.js +3 -2
- package/dist/tools/field-map/update.js.map +1 -1
- package/dist/tools/generic/invoke.js +3 -16
- package/dist/tools/generic/invoke.js.map +1 -1
- package/dist/tools/ingestion/index.js +100 -12
- package/dist/tools/ingestion/index.js.map +1 -1
- package/dist/tools/ingestion/job-transactions-list.js +3 -2
- package/dist/tools/ingestion/job-transactions-list.js.map +1 -1
- package/dist/tools/ingestion/jobs-list.js +3 -2
- package/dist/tools/ingestion/jobs-list.js.map +1 -1
- package/dist/tools/ingestion/shared.js +4 -15
- package/dist/tools/ingestion/shared.js.map +1 -1
- package/dist/tools/ingestion/transactions-search.js +3 -2
- package/dist/tools/ingestion/transactions-search.js.map +1 -1
- package/dist/tools/ingestion/upload.js +3 -2
- package/dist/tools/ingestion/upload.js.map +1 -1
- package/dist/tools/input-fields.js +15 -0
- package/dist/tools/input-fields.js.map +1 -1
- package/dist/tools/match-rule/index.js +130 -13
- package/dist/tools/match-rule/index.js.map +1 -1
- package/dist/tools/match-rule/list.js +3 -3
- package/dist/tools/match-rule/list.js.map +1 -1
- package/dist/tools/match-rule/shared.js +16 -20
- package/dist/tools/match-rule/shared.js.map +1 -1
- package/dist/tools/match-rule/update.js +3 -3
- package/dist/tools/match-rule/update.js.map +1 -1
- package/dist/tools/matching/get.js +5 -5
- package/dist/tools/matching/get.js.map +1 -1
- package/dist/tools/matching/groups.js +3 -2
- package/dist/tools/matching/groups.js.map +1 -1
- package/dist/tools/matching/index.js +77 -5
- package/dist/tools/matching/index.js.map +1 -1
- package/dist/tools/matching/list.js +3 -2
- package/dist/tools/matching/list.js.map +1 -1
- package/dist/tools/matching/shared.js +5 -18
- package/dist/tools/matching/shared.js.map +1 -1
- package/dist/tools/query-handler.js +2 -1
- package/dist/tools/query-handler.js.map +1 -1
- package/dist/tools/report/index.js +260 -30
- package/dist/tools/report/index.js.map +1 -1
- package/dist/tools/report/shared.js +15 -43
- package/dist/tools/report/shared.js.map +1 -1
- package/dist/tools/source/create.js +3 -2
- package/dist/tools/source/create.js.map +1 -1
- package/dist/tools/source/index.js +101 -13
- package/dist/tools/source/index.js.map +1 -1
- package/dist/tools/source/list.js +3 -2
- package/dist/tools/source/list.js.map +1 -1
- package/dist/tools/source/shared.js +5 -16
- package/dist/tools/source/shared.js.map +1 -1
- package/dist/tools/source/update.js +3 -2
- package/dist/tools/source/update.js.map +1 -1
- package/dist/tools/workspace/usage.js +12 -40
- package/dist/tools/workspace/usage.js.map +1 -1
- package/package.json +3 -3
- package/dist/copilot/test_helpers.js +0 -50
- package/dist/copilot/test_helpers.js.map +0 -1
- package/dist/tools/context/archive.js +0 -37
- package/dist/tools/context/archive.js.map +0 -1
- package/dist/tools/context/get.js +0 -31
- package/dist/tools/context/get.js.map +0 -1
- package/dist/tools/context/next-step.js +0 -99
- package/dist/tools/context/next-step.js.map +0 -1
- package/dist/tools/context/restore.js +0 -34
- package/dist/tools/context/restore.js.map +0 -1
- package/dist/tools/dashboard/aggregates.js +0 -38
- package/dist/tools/dashboard/aggregates.js.map +0 -1
- package/dist/tools/dashboard/cash-impact.js +0 -31
- package/dist/tools/dashboard/cash-impact.js.map +0 -1
- package/dist/tools/dashboard/match-rate.js +0 -31
- package/dist/tools/dashboard/match-rate.js.map +0 -1
- package/dist/tools/dashboard/metrics.js +0 -31
- package/dist/tools/dashboard/metrics.js.map +0 -1
- package/dist/tools/dashboard/sla.js +0 -28
- package/dist/tools/dashboard/sla.js.map +0 -1
- package/dist/tools/dashboard/source-breakdown.js +0 -31
- package/dist/tools/dashboard/source-breakdown.js.map +0 -1
- package/dist/tools/dashboard/volume.js +0 -31
- package/dist/tools/dashboard/volume.js.map +0 -1
- package/dist/tools/dispute/get.js +0 -27
- package/dist/tools/dispute/get.js.map +0 -1
- package/dist/tools/exception/delete-comment.js +0 -40
- package/dist/tools/exception/delete-comment.js.map +0 -1
- package/dist/tools/exception/get.js +0 -34
- package/dist/tools/exception/get.js.map +0 -1
- package/dist/tools/exception/list-comments.js +0 -35
- package/dist/tools/exception/list-comments.js.map +0 -1
- package/dist/tools/fee-rule/delete.js +0 -27
- package/dist/tools/fee-rule/delete.js.map +0 -1
- package/dist/tools/fee-rule/get.js +0 -27
- package/dist/tools/fee-rule/get.js.map +0 -1
- package/dist/tools/fee-schedule/delete.js +0 -32
- package/dist/tools/fee-schedule/delete.js.map +0 -1
- package/dist/tools/fee-schedule/get.js +0 -30
- package/dist/tools/fee-schedule/get.js.map +0 -1
- package/dist/tools/field-map/delete.js +0 -37
- package/dist/tools/field-map/delete.js.map +0 -1
- package/dist/tools/field-map/get.js +0 -40
- package/dist/tools/field-map/get.js.map +0 -1
- package/dist/tools/ingestion/job-errors-list.js +0 -42
- package/dist/tools/ingestion/job-errors-list.js.map +0 -1
- package/dist/tools/ingestion/job-get.js +0 -39
- package/dist/tools/ingestion/job-get.js.map +0 -1
- package/dist/tools/ingestion/transaction-ignore.js +0 -48
- package/dist/tools/ingestion/transaction-ignore.js.map +0 -1
- package/dist/tools/match-rule/create.js +0 -67
- package/dist/tools/match-rule/create.js.map +0 -1
- package/dist/tools/match-rule/delete.js +0 -33
- package/dist/tools/match-rule/delete.js.map +0 -1
- package/dist/tools/match-rule/get.js +0 -30
- package/dist/tools/match-rule/get.js.map +0 -1
- package/dist/tools/match-rule/reorder.js +0 -45
- package/dist/tools/match-rule/reorder.js.map +0 -1
- package/dist/tools/matching/start.js +0 -81
- package/dist/tools/matching/start.js.map +0 -1
- package/dist/tools/report/count-exceptions.js +0 -40
- package/dist/tools/report/count-exceptions.js.map +0 -1
- package/dist/tools/report/count-matched.js +0 -41
- package/dist/tools/report/count-matched.js.map +0 -1
- package/dist/tools/report/count-transactions.js +0 -39
- package/dist/tools/report/count-transactions.js.map +0 -1
- package/dist/tools/report/count-unmatched.js +0 -39
- package/dist/tools/report/count-unmatched.js.map +0 -1
- package/dist/tools/report/export-exceptions.js +0 -42
- package/dist/tools/report/export-exceptions.js.map +0 -1
- package/dist/tools/report/export-matched.js +0 -43
- package/dist/tools/report/export-matched.js.map +0 -1
- package/dist/tools/report/export-summary.js +0 -43
- package/dist/tools/report/export-summary.js.map +0 -1
- package/dist/tools/report/export-unmatched.js +0 -43
- package/dist/tools/report/export-unmatched.js.map +0 -1
- package/dist/tools/report/export-variance.js +0 -42
- package/dist/tools/report/export-variance.js.map +0 -1
- package/dist/tools/report/matched.js +0 -42
- package/dist/tools/report/matched.js.map +0 -1
- package/dist/tools/report/summary.js +0 -37
- package/dist/tools/report/summary.js.map +0 -1
- package/dist/tools/report/unmatched.js +0 -42
- package/dist/tools/report/unmatched.js.map +0 -1
- package/dist/tools/report/variance.js +0 -42
- package/dist/tools/report/variance.js.map +0 -1
- package/dist/tools/source/archive.js +0 -43
- package/dist/tools/source/archive.js.map +0 -1
- package/dist/tools/source/get.js +0 -54
- package/dist/tools/source/get.js.map +0 -1
- package/dist/tools/source/restore.js +0 -36
- package/dist/tools/source/restore.js.map +0 -1
|
@@ -2,20 +2,62 @@
|
|
|
2
2
|
// fee-rule resource — create, list, get, update, delete. Fee rules use a HYBRID
|
|
3
3
|
// path: create/list are context-nested (/v1/contexts/{contextId}/fee-rules) and
|
|
4
4
|
// get/update/delete are flat (/v1/fee-rules/{feeRuleId}). Each tool shares the
|
|
5
|
-
// fail-closed relay (shared.ts) and the RFC 9457 → tool-error mapping
|
|
5
|
+
// fail-closed relay (shared-dispatch.ts) and the RFC 9457 → tool-error mapping
|
|
6
6
|
// (toToolError) with the generic surface, so curated and generic map matcher
|
|
7
7
|
// errors identically. No tool carries a tenant field.
|
|
8
|
+
//
|
|
9
|
+
// get and delete are nothing but that flat path, a method and a description, so
|
|
10
|
+
// they are declared as two rows and registered by the one shared loop; create,
|
|
11
|
+
// list and update carry request bodies or query builders and stay as files.
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { registerCuratedTools } from '../curated-tool.js';
|
|
8
14
|
import { registerFeeRuleCreateTool } from './create.js';
|
|
9
|
-
import { registerFeeRuleDeleteTool } from './delete.js';
|
|
10
|
-
import { registerFeeRuleGetTool } from './get.js';
|
|
11
15
|
import { registerFeeRuleListTool } from './list.js';
|
|
16
|
+
import { feeRulePath } from './shared.js';
|
|
12
17
|
import { registerFeeRuleUpdateTool } from './update.js';
|
|
18
|
+
/**
|
|
19
|
+
* The fee-rule registration list, IN PUBLISHED ORDER: thin tools inline as data
|
|
20
|
+
* rows, the tools that still need their own file by their register function.
|
|
21
|
+
* This list is the order `tools/list` returns, so moving an entry moves what a
|
|
22
|
+
* client renders and what an agent prompt built from it reads first.
|
|
23
|
+
*
|
|
24
|
+
* Every description string is the hand-tuned LLM guidance a client sees
|
|
25
|
+
* verbatim; the published-surface golden is what proves an edit here dropped no
|
|
26
|
+
* character and moved no tool.
|
|
27
|
+
*/
|
|
28
|
+
const FEE_RULE_TOOLS = [
|
|
29
|
+
registerFeeRuleCreateTool,
|
|
30
|
+
registerFeeRuleListTool,
|
|
31
|
+
{
|
|
32
|
+
name: 'fee_rule_get',
|
|
33
|
+
description: 'Fetch a single fee rule by id (UUID). The rule must belong to your ' +
|
|
34
|
+
"token's tenant. Returns the rule, or a structured RFC 9457 error (e.g. " +
|
|
35
|
+
'404 if it does not exist or is not yours).',
|
|
36
|
+
inputShape: {
|
|
37
|
+
feeRuleId: z.string().min(1).describe('The fee rule id (UUID) to fetch.'),
|
|
38
|
+
},
|
|
39
|
+
request: (args) => ({
|
|
40
|
+
method: 'GET',
|
|
41
|
+
path: feeRulePath(String(args.feeRuleId)),
|
|
42
|
+
}),
|
|
43
|
+
},
|
|
44
|
+
registerFeeRuleUpdateTool,
|
|
45
|
+
{
|
|
46
|
+
name: 'fee_rule_delete',
|
|
47
|
+
description: 'Delete a fee rule by id (UUID) via the flat path. The rule must belong ' +
|
|
48
|
+
"to your token's tenant (no tenant field is accepted). Returns no content " +
|
|
49
|
+
'on success, or a structured RFC 9457 error.',
|
|
50
|
+
inputShape: {
|
|
51
|
+
feeRuleId: z.string().min(1).describe('The fee rule id (UUID) to delete.'),
|
|
52
|
+
},
|
|
53
|
+
request: (args) => ({
|
|
54
|
+
method: 'DELETE',
|
|
55
|
+
path: feeRulePath(String(args.feeRuleId)),
|
|
56
|
+
}),
|
|
57
|
+
},
|
|
58
|
+
];
|
|
13
59
|
/** Register all five curated fee-rule tools on the given server. */
|
|
14
60
|
export function registerFeeRuleTools(server) {
|
|
15
|
-
|
|
16
|
-
registerFeeRuleListTool(server);
|
|
17
|
-
registerFeeRuleGetTool(server);
|
|
18
|
-
registerFeeRuleUpdateTool(server);
|
|
19
|
-
registerFeeRuleDeleteTool(server);
|
|
61
|
+
registerCuratedTools(server, FEE_RULE_TOOLS);
|
|
20
62
|
}
|
|
21
63
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/fee-rule/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,sDAAsD;AACtD,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAE5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD;;;;;;;;;GASG;AACH,MAAM,cAAc,GAA4B;IAC9C,yBAAyB;IACzB,uBAAuB;IACvB;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,qEAAqE;YACrE,yEAAyE;YACzE,4CAA4C;QAC9C,UAAU,EAAE;YACV,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SAC1E;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1C,CAAC;KACH;IACD,yBAAyB;IACzB;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,yEAAyE;YACzE,2EAA2E;YAC3E,6CAA6C;QAC/C,UAAU,EAAE;YACV,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SAC3E;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1C,CAAC;KACH;CACF,CAAA;AAED,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,oBAAoB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -9,7 +9,8 @@ import { z } from 'zod';
|
|
|
9
9
|
import { nextCursor, pageLimit } from '../input-fields.js';
|
|
10
10
|
import { queryHandler } from '../query-handler.js';
|
|
11
11
|
import { pickQuery } from '../request-fields.js';
|
|
12
|
-
import {
|
|
12
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
13
|
+
import { contextFeeRulesPath } from './shared.js';
|
|
13
14
|
/** Zod raw shape for `fee_rule_list` input — contextId path + pagination knobs. */
|
|
14
15
|
export const listFeeRulesInputShape = {
|
|
15
16
|
contextId: z
|
|
@@ -38,6 +39,6 @@ export function registerFeeRuleListTool(server) {
|
|
|
38
39
|
'returned nextCursor. No tenant field is accepted; the tenant is derived ' +
|
|
39
40
|
'from your bearer token.',
|
|
40
41
|
inputSchema: listFeeRulesInputShape,
|
|
41
|
-
}, queryHandler(buildListQuery, (args) => contextFeeRulesPath(args.contextId),
|
|
42
|
+
}, queryHandler(buildListQuery, (args) => contextFeeRulesPath(args.contextId), dispatchToolRequest));
|
|
42
43
|
}
|
|
43
44
|
//# 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;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,
|
|
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,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,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,mBAAmB,CACpB,CACF,CAAA;AACH,CAAC"}
|
|
@@ -3,22 +3,17 @@
|
|
|
3
3
|
// Fee rules use a HYBRID path shape (verified against docs/openapi/openapi.yaml):
|
|
4
4
|
// - create + list are CONTEXT-NESTED: POST/GET /v1/contexts/{contextId}/fee-rules
|
|
5
5
|
// - get + update(PATCH) + delete are FLAT: GET/PATCH/DELETE /v1/fee-rules/{feeRuleId}
|
|
6
|
-
// This module
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
// matcher's JSON on success or the SHARED toToolError on a MatcherApiError. This
|
|
12
|
-
// factors that boilerplate exactly once so the five tools stay thin (just "build
|
|
13
|
-
// the request") and so curated + generic surfaces map matcher errors through the
|
|
14
|
-
// identical path (toToolError).
|
|
6
|
+
// This module holds both path helpers and nothing else, factored exactly once
|
|
7
|
+
// so the two table rows in index.ts and the three tools that keep their own
|
|
8
|
+
// file address the same URLs. The relay itself lives in shared-dispatch.ts, so
|
|
9
|
+
// curated and generic surfaces map matcher errors through the identical path
|
|
10
|
+
// (toToolError).
|
|
15
11
|
//
|
|
16
12
|
// Security: the bearer token is never read here directly — requireMatcherClient
|
|
17
13
|
// owns the request-scoped relay and fails closed when no usable credential was
|
|
18
14
|
// provided. No tenant identifier is ever read or injected (matcher derives
|
|
19
15
|
// tenant from the relayed JWT); no fee-rule tool input carries one. `contextId`
|
|
20
16
|
// is a routing path param matcher validates ownership of, NOT a tenant field.
|
|
21
|
-
import { dispatchToolRequest, } from '../shared-dispatch.js';
|
|
22
17
|
/** Context-nested collection path for fee rules (create + list). */
|
|
23
18
|
export function contextFeeRulesPath(contextId) {
|
|
24
19
|
return `/v1/contexts/${encodeURIComponent(contextId)}/fee-rules`;
|
|
@@ -27,15 +22,4 @@ export function contextFeeRulesPath(contextId) {
|
|
|
27
22
|
export function feeRulePath(feeRuleId) {
|
|
28
23
|
return `/v1/fee-rules/${encodeURIComponent(feeRuleId)}`;
|
|
29
24
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Run one assembled request through the relay: fail-closed auth, dispatch, and
|
|
32
|
-
* RFC 9457 → tool-error mapping — identical to the generic invoke's dispatch so
|
|
33
|
-
* both surfaces produce the same structured error shape.
|
|
34
|
-
*
|
|
35
|
-
* `clientFor` is injectable for tests; production callers pass nothing and get
|
|
36
|
-
* the request-scoped, fail-closed `requireMatcherClient`.
|
|
37
|
-
*/
|
|
38
|
-
export async function dispatchFeeRule(request, extra, clientFor) {
|
|
39
|
-
return dispatchToolRequest(request, extra, clientFor);
|
|
40
|
-
}
|
|
41
25
|
//# 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
|
|
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,8EAA8E;AAC9E,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,iBAAiB;AACjB,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAChF,8EAA8E;AAE9E,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"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
import { bodyWithout } from '../request-fields.js';
|
|
12
12
|
import { FEE_RULE_SIDES, feeRulePredicateShape } from './create.js';
|
|
13
|
-
import {
|
|
13
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
14
|
+
import { feeRulePath } from './shared.js';
|
|
14
15
|
/** Zod raw shape for `fee_rule_update` input — id (path) + optional fields. */
|
|
15
16
|
export const updateFeeRuleInputShape = {
|
|
16
17
|
feeRuleId: z.string().min(1).describe('The fee rule id (UUID) to update.'),
|
|
@@ -59,7 +60,7 @@ export function registerFeeRuleUpdateTool(server) {
|
|
|
59
60
|
'or a structured RFC 9457 error.',
|
|
60
61
|
inputSchema: updateFeeRuleInputShape,
|
|
61
62
|
}, async (args, extra) => {
|
|
62
|
-
return
|
|
63
|
+
return dispatchToolRequest({
|
|
63
64
|
method: 'PATCH',
|
|
64
65
|
path: feeRulePath(args.feeRuleId),
|
|
65
66
|
body: buildUpdateBody(args),
|
|
@@ -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;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,
|
|
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,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,+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,mBAAmB,CACxB;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"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
// No tenant field exists in the schema: the schedule is created for the tenant
|
|
12
12
|
// of the relayed bearer token, never a tenant supplied as input.
|
|
13
13
|
import { z } from 'zod';
|
|
14
|
-
import {
|
|
14
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
15
|
+
import { FEE_SCHEDULES_PATH } from './shared.js';
|
|
15
16
|
/** How fee items combine when applied to a base amount. */
|
|
16
17
|
export const APPLICATION_ORDERS = ['PARALLEL', 'CASCADING'];
|
|
17
18
|
/** Rounding strategies matcher supports for fee amounts. */
|
|
@@ -114,7 +115,7 @@ export function registerFeeScheduleCreateTool(server) {
|
|
|
114
115
|
'structured RFC 9457 error.',
|
|
115
116
|
inputSchema: createFeeScheduleInputShape,
|
|
116
117
|
}, async (args, extra) => {
|
|
117
|
-
return
|
|
118
|
+
return dispatchToolRequest({ method: 'POST', path: FEE_SCHEDULES_PATH, body: args }, extra);
|
|
118
119
|
});
|
|
119
120
|
}
|
|
120
121
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/create.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,iFAAiF;AACjF,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,+DAA+D;AAC/D,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/create.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,iFAAiF;AACjF,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,+DAA+D;AAC/D,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,WAAW,CAAU,CAAA;AAEpE,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,SAAS;IACT,OAAO;IACP,MAAM;IACN,UAAU;CACF,CAAA;AAEV,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,YAAY;CACJ,CAAA;AAEV;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,CAAC,0DAA0D,CAAC;IACvE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,CACP,gEAAgE;QAC9D,sEAAsE;QACtE,iEAAiE,CACpE;IACH,aAAa,EAAE,CAAC;SACb,IAAI,CAAC,mBAAmB,CAAC;SACzB,QAAQ,CACP,sEAAsE;QACpE,oEAAoE;QACpE,qEAAqE;QACrE,uBAAuB,CAC1B;IACH,SAAS,EAAE,CAAC;SACT,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,CACP,uEAAuE;QACrE,uEAAuE;QACvE,uEAAuE;QACvE,mEAAmE;QACnE,wDAAwD;QACxD,oEAAoE;QACpE,mEAAmE;QACnE,kEAAkE;QAClE,8DAA8D;QAC9D,iEAAiE;QACjE,+DAA+D;QAC/D,+DAA+D,CAClE;CACJ,CAAC;KACD,QAAQ,CAAC,2CAA2C,CAAC,CAAA;AAExD,wFAAwF;AACxF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,wDAAwD,CAAC;IACrE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,CACP,yEAAyE;QACvE,+BAA+B,CAClC;IACH,gBAAgB,EAAE,CAAC;SAChB,IAAI,CAAC,kBAAkB,CAAC;SACxB,QAAQ,CACP,yEAAyE;QACvE,qEAAqE,CACxE;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,cAAc,CAAC;SACpB,QAAQ,CACP,0EAA0E;QACxE,uEAAuE;QACvE,8BAA8B,CACjC;IACH,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,oBAAoB,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CACP,2EAA2E;QACzE,2EAA2E,CAC9E;CACJ,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAiB;IAC7D,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,yEAAyE;YACzE,yEAAyE;YACzE,oEAAoE;YACpE,sEAAsE;YACtE,uEAAuE;YACvE,4BAA4B;QAC9B,WAAW,EAAE,2BAA2B;KACzC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,EACxD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,22 +1,73 @@
|
|
|
1
1
|
// Curated fee-schedule vertical (task 1.3.2): six typed tools over the matcher
|
|
2
2
|
// fee-schedule resource — create, list, get, update, delete, simulate — proving
|
|
3
3
|
// the typed pattern coexists with the generic invoke on one client + one token
|
|
4
|
-
// relay. Each tool shares the fail-closed relay (shared.ts) and the
|
|
5
|
-
// tool-error mapping (toToolError) with the generic surface, so
|
|
6
|
-
// generic map matcher errors identically. No tool carries a tenant
|
|
4
|
+
// relay. Each tool shares the fail-closed relay (shared-dispatch.ts) and the
|
|
5
|
+
// RFC 9457 → tool-error mapping (toToolError) with the generic surface, so
|
|
6
|
+
// curated and generic map matcher errors identically. No tool carries a tenant
|
|
7
|
+
// field.
|
|
8
|
+
//
|
|
9
|
+
// get and delete are nothing but the /v1/fee-schedules/{id} path, a method and
|
|
10
|
+
// a description, so they are declared as two rows and registered by the one
|
|
11
|
+
// shared loop; create, list, update and simulate carry request bodies or query
|
|
12
|
+
// builders and stay as files.
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
import { registerCuratedTools } from '../curated-tool.js';
|
|
7
15
|
import { registerFeeScheduleCreateTool } from './create.js';
|
|
8
|
-
import { registerFeeScheduleDeleteTool } from './delete.js';
|
|
9
|
-
import { registerFeeScheduleGetTool } from './get.js';
|
|
10
16
|
import { registerFeeScheduleListTool } from './list.js';
|
|
17
|
+
import { feeSchedulePath } from './shared.js';
|
|
11
18
|
import { registerFeeScheduleSimulateTool } from './simulate.js';
|
|
12
19
|
import { registerFeeScheduleUpdateTool } from './update.js';
|
|
20
|
+
/**
|
|
21
|
+
* The fee-schedule registration list, IN PUBLISHED ORDER: thin tools inline as data
|
|
22
|
+
* rows, the tools that still need their own file by their register function.
|
|
23
|
+
* This list is the order `tools/list` returns, so moving an entry moves what a
|
|
24
|
+
* client renders and what an agent prompt built from it reads first.
|
|
25
|
+
*
|
|
26
|
+
* Every description string is the hand-tuned LLM guidance a client sees
|
|
27
|
+
* verbatim; the published-surface golden is what proves an edit here dropped no
|
|
28
|
+
* character and moved no tool.
|
|
29
|
+
*/
|
|
30
|
+
const FEE_SCHEDULE_TOOLS = [
|
|
31
|
+
registerFeeScheduleCreateTool,
|
|
32
|
+
registerFeeScheduleListTool,
|
|
33
|
+
{
|
|
34
|
+
name: 'fee_schedule_get',
|
|
35
|
+
description: 'Fetch a single fee schedule by id (UUID). The schedule must belong to ' +
|
|
36
|
+
"your token's tenant. Returns the schedule, or a structured RFC 9457 " +
|
|
37
|
+
'error (e.g. 404 if it does not exist or is not yours).',
|
|
38
|
+
inputShape: {
|
|
39
|
+
scheduleId: z
|
|
40
|
+
.string()
|
|
41
|
+
.min(1)
|
|
42
|
+
.describe('The fee schedule id (UUID) to fetch.'),
|
|
43
|
+
},
|
|
44
|
+
request: (args) => ({
|
|
45
|
+
method: 'GET',
|
|
46
|
+
path: feeSchedulePath(String(args.scheduleId)),
|
|
47
|
+
}),
|
|
48
|
+
},
|
|
49
|
+
registerFeeScheduleUpdateTool,
|
|
50
|
+
{
|
|
51
|
+
name: 'fee_schedule_delete',
|
|
52
|
+
description: 'Delete a fee schedule by id (UUID). Rejected with 409 while fee rules ' +
|
|
53
|
+
'still reference it — detach those first. The schedule must belong to ' +
|
|
54
|
+
"your token's tenant (no tenant field is accepted). Returns no content on " +
|
|
55
|
+
'success, or a structured RFC 9457 error.',
|
|
56
|
+
inputShape: {
|
|
57
|
+
scheduleId: z
|
|
58
|
+
.string()
|
|
59
|
+
.min(1)
|
|
60
|
+
.describe('The fee schedule id (UUID) to delete.'),
|
|
61
|
+
},
|
|
62
|
+
request: (args) => ({
|
|
63
|
+
method: 'DELETE',
|
|
64
|
+
path: feeSchedulePath(String(args.scheduleId)),
|
|
65
|
+
}),
|
|
66
|
+
},
|
|
67
|
+
registerFeeScheduleSimulateTool,
|
|
68
|
+
];
|
|
13
69
|
/** Register all six curated fee-schedule tools on the given server. */
|
|
14
70
|
export function registerFeeScheduleTools(server) {
|
|
15
|
-
|
|
16
|
-
registerFeeScheduleListTool(server);
|
|
17
|
-
registerFeeScheduleGetTool(server);
|
|
18
|
-
registerFeeScheduleUpdateTool(server);
|
|
19
|
-
registerFeeScheduleDeleteTool(server);
|
|
20
|
-
registerFeeScheduleSimulateTool(server);
|
|
71
|
+
registerCuratedTools(server, FEE_SCHEDULE_TOOLS);
|
|
21
72
|
}
|
|
22
73
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,SAAS;AACT,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,8BAA8B;AAE9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAE3D;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAA4B;IAClD,6BAA6B;IAC7B,2BAA2B;IAC3B;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,wEAAwE;YACxE,sEAAsE;YACtE,wDAAwD;QAC1D,UAAU,EAAE;YACV,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,sCAAsC,CAAC;SACpD;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/C,CAAC;KACH;IACD,6BAA6B;IAC7B;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,wEAAwE;YACxE,uEAAuE;YACvE,2EAA2E;YAC3E,0CAA0C;QAC5C,UAAU,EAAE;YACV,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,uCAAuC,CAAC;SACrD;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/C,CAAC;KACH;IACD,+BAA+B;CAChC,CAAA;AAED,uEAAuE;AACvE,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAClD,CAAC"}
|
|
@@ -8,7 +8,8 @@ import { z } from 'zod';
|
|
|
8
8
|
import { pageLimit } from '../input-fields.js';
|
|
9
9
|
import { queryHandler } from '../query-handler.js';
|
|
10
10
|
import { pickQuery } from '../request-fields.js';
|
|
11
|
-
import {
|
|
11
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
12
|
+
import { FEE_SCHEDULES_PATH } from './shared.js';
|
|
12
13
|
/** Zod raw shape for `fee_schedule_list` input — pagination knobs only. */
|
|
13
14
|
export const listFeeSchedulesInputShape = {
|
|
14
15
|
limit: pageLimit,
|
|
@@ -34,6 +35,6 @@ export function registerFeeScheduleListTool(server) {
|
|
|
34
35
|
'— paginate by re-calling with the returned nextCursor. No tenant field ' +
|
|
35
36
|
'is accepted; the tenant is derived from your bearer token.',
|
|
36
37
|
inputSchema: listFeeSchedulesInputShape,
|
|
37
|
-
}, queryHandler(buildListQuery, () => FEE_SCHEDULES_PATH,
|
|
38
|
+
}, queryHandler(buildListQuery, () => FEE_SCHEDULES_PATH, dispatchToolRequest));
|
|
38
39
|
}
|
|
39
40
|
//# 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;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;
|
|
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,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,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"}
|
|
@@ -1,32 +1,19 @@
|
|
|
1
1
|
// Shared plumbing for the curated fee-schedule tools.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
// through the identical path (toToolError) — the whole point of task 1.3.2.
|
|
3
|
+
// This module holds the fee-schedule resource paths and nothing else, factored
|
|
4
|
+
// exactly once so the two table rows in index.ts and the four tools that keep
|
|
5
|
+
// their own file address the same URLs. The relay itself lives in
|
|
6
|
+
// shared-dispatch.ts, so curated and generic surfaces map matcher errors
|
|
7
|
+
// through the identical path (toToolError).
|
|
9
8
|
//
|
|
10
9
|
// Security: the bearer token is never read here directly — requireMatcherClient
|
|
11
10
|
// owns the request-scoped relay and fails closed when no usable credential was
|
|
12
11
|
// provided. No tenant identifier is ever read or injected (matcher derives
|
|
13
12
|
// tenant from the relayed JWT); no fee-schedule tool input carries one.
|
|
14
|
-
import { dispatchToolRequest, } from '../shared-dispatch.js';
|
|
15
13
|
/** Base path for the fee-schedule resource (tenant-scoped; tenant from the token). */
|
|
16
14
|
export const FEE_SCHEDULES_PATH = '/v1/fee-schedules';
|
|
17
15
|
/** Build the single-schedule sub-path, URL-encoding the id so reserved chars are safe. */
|
|
18
16
|
export function feeSchedulePath(scheduleId) {
|
|
19
17
|
return `${FEE_SCHEDULES_PATH}/${encodeURIComponent(scheduleId)}`;
|
|
20
18
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Run one assembled request through the relay: fail-closed auth, dispatch, and
|
|
23
|
-
* RFC 9457 → tool-error mapping — identical to the generic invoke's dispatch so
|
|
24
|
-
* both surfaces produce the same structured error shape.
|
|
25
|
-
*
|
|
26
|
-
* `clientFor` is injectable for tests; production callers pass nothing and get
|
|
27
|
-
* the request-scoped, fail-closed `requireMatcherClient`.
|
|
28
|
-
*/
|
|
29
|
-
export async function dispatchFeeSchedule(request, extra, clientFor) {
|
|
30
|
-
return dispatchToolRequest(request, extra, clientFor);
|
|
31
|
-
}
|
|
32
19
|
//# 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
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/fee-schedule/shared.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,kEAAkE;AAClE,yEAAyE;AACzE,4CAA4C;AAC5C,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,wEAAwE;AAExE,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"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
// accepted (matcher scopes to the relayed token's tenant).
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
import { bodyWithout } from '../request-fields.js';
|
|
10
|
-
import {
|
|
10
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
11
|
+
import { feeSchedulePath } from './shared.js';
|
|
11
12
|
/** Zod raw shape for `fee_schedule_simulate` input — id (path) + body fields. */
|
|
12
13
|
export const simulateFeeScheduleInputShape = {
|
|
13
14
|
scheduleId: z
|
|
@@ -43,7 +44,7 @@ export function registerFeeScheduleSimulateTool(server) {
|
|
|
43
44
|
'field is accepted. Errors surface as structured RFC 9457 problems.',
|
|
44
45
|
inputSchema: simulateFeeScheduleInputShape,
|
|
45
46
|
}, async (args, extra) => {
|
|
46
|
-
return
|
|
47
|
+
return dispatchToolRequest({
|
|
47
48
|
method: 'POST',
|
|
48
49
|
path: `${feeSchedulePath(args.scheduleId)}/simulate`,
|
|
49
50
|
body: buildSimulateBody(args),
|
|
@@ -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;AAGvB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,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,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,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"}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
import { bodyWithout } from '../request-fields.js';
|
|
10
10
|
import { APPLICATION_ORDERS, ROUNDING_MODES } from './create.js';
|
|
11
|
-
import {
|
|
11
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
12
|
+
import { feeSchedulePath } from './shared.js';
|
|
12
13
|
/** Zod raw shape for `fee_schedule_update` input — id (path) + optional fields. */
|
|
13
14
|
export const updateFeeScheduleInputShape = {
|
|
14
15
|
scheduleId: z
|
|
@@ -58,7 +59,7 @@ export function registerFeeScheduleUpdateTool(server) {
|
|
|
58
59
|
'is accepted. Returns the updated schedule, or a structured RFC 9457 error.',
|
|
59
60
|
inputSchema: updateFeeScheduleInputShape,
|
|
60
61
|
}, async (args, extra) => {
|
|
61
|
-
return
|
|
62
|
+
return dispatchToolRequest({
|
|
62
63
|
method: 'PATCH',
|
|
63
64
|
path: feeSchedulePath(args.scheduleId),
|
|
64
65
|
body: buildUpdateBody(args),
|
|
@@ -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;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;
|
|
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,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,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"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
// Both contextId and sourceId are path params; no tenant field is accepted
|
|
12
12
|
// (matcher scopes to the relayed token's tenant).
|
|
13
13
|
import { z } from 'zod';
|
|
14
|
-
import {
|
|
14
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
15
|
+
import { MAPPING_DESCRIPTION, sourceFieldMapPath } from './shared.js';
|
|
15
16
|
/** Zod raw shape for `field_map_create` input — path ids + mapping body. */
|
|
16
17
|
export const createFieldMapInputShape = {
|
|
17
18
|
contextId: z
|
|
@@ -54,7 +55,7 @@ export function registerFieldMapCreateTool(server) {
|
|
|
54
55
|
'structured RFC 9457 error naming every invalid/missing/unknown key.',
|
|
55
56
|
inputSchema: createFieldMapInputShape,
|
|
56
57
|
}, async (args, extra) => {
|
|
57
|
-
return
|
|
58
|
+
return dispatchToolRequest({
|
|
58
59
|
method: 'POST',
|
|
59
60
|
path: sourceFieldMapPath(args.contextId, args.sourceId),
|
|
60
61
|
body: buildCreateFieldMapBody(args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/field-map/create.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,0DAA0D;AAC1D,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,6EAA6E;AAC7E,uEAAuE;AACvE,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,kDAAkD;AAElD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/field-map/create.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,0DAA0D;AAC1D,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,6EAA6E;AAC7E,uEAAuE;AACvE,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,kDAAkD;AAElD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,sEAAsE;QACpE,iCAAiC,CACpC;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,0DAA0D,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACzE,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB;IAEzB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,+DAA+D;YAC/D,kEAAkE;YAClE,sEAAsE;YACtE,iEAAiE;YACjE,sEAAsE;YACtE,sEAAsE;YACtE,iEAAiE;YACjE,uEAAuE;YACvE,qEAAqE;YACrE,oEAAoE;YACpE,qEAAqE;QACvE,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;YACvD,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;SACpC,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -11,21 +11,75 @@
|
|
|
11
11
|
// (/v1/contexts/{contextId}/sources/{sourceId}/field-maps), list is
|
|
12
12
|
// context-nested (/v1/contexts/{contextId}/field-maps), and update/delete are
|
|
13
13
|
// flat (/v1/field-maps/{fieldMapId}) — the spec does not nest them under
|
|
14
|
-
// context+source.
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
14
|
+
// context+source. get and delete are nothing but their path, a method and a
|
|
15
|
+
// description, so they are declared as two rows (carrying that path asymmetry
|
|
16
|
+
// as data) and registered by the one shared loop; create, list and update carry
|
|
17
|
+
// request bodies or query builders and stay as files. Each tool shares the
|
|
18
|
+
// fail-closed relay (shared-dispatch.ts) and the RFC 9457 → tool-error mapping
|
|
19
|
+
// (toToolError) with the generic surface, so curated and generic map matcher
|
|
20
|
+
// errors identically. No tool carries a tenant field.
|
|
21
|
+
import { z } from 'zod';
|
|
22
|
+
import { registerCuratedTools } from '../curated-tool.js';
|
|
23
|
+
import { contextRoutingId } from '../input-fields.js';
|
|
18
24
|
import { registerFieldMapCreateTool } from './create.js';
|
|
19
|
-
import { registerFieldMapDeleteTool } from './delete.js';
|
|
20
|
-
import { registerFieldMapGetTool } from './get.js';
|
|
21
25
|
import { registerFieldMapListTool } from './list.js';
|
|
26
|
+
import { fieldMapPath, sourceFieldMapPath } from './shared.js';
|
|
22
27
|
import { registerFieldMapUpdateTool } from './update.js';
|
|
28
|
+
/**
|
|
29
|
+
* The field-map registration list, IN PUBLISHED ORDER: thin tools inline as data
|
|
30
|
+
* rows, the tools that still need their own file by their register function.
|
|
31
|
+
* This list is the order `tools/list` returns, so moving an entry moves what a
|
|
32
|
+
* client renders and what an agent prompt built from it reads first.
|
|
33
|
+
*
|
|
34
|
+
* Every description string is the hand-tuned LLM guidance a client sees
|
|
35
|
+
* verbatim; the published-surface golden is what proves an edit here dropped no
|
|
36
|
+
* character and moved no tool.
|
|
37
|
+
*/
|
|
38
|
+
const FIELD_MAP_TOOLS = [
|
|
39
|
+
registerFieldMapCreateTool,
|
|
40
|
+
registerFieldMapListTool,
|
|
41
|
+
{
|
|
42
|
+
name: 'field_map_get',
|
|
43
|
+
description: 'Fetch the field map bound to a source (a source has at most one). ' +
|
|
44
|
+
'Provide both contextId and sourceId (UUID path params; contextId is ' +
|
|
45
|
+
"not a tenant field). The source must belong to your token's tenant. " +
|
|
46
|
+
'Returns the field map, or a structured RFC 9457 error (e.g. 404 if ' +
|
|
47
|
+
'the source has no field map yet).',
|
|
48
|
+
inputShape: {
|
|
49
|
+
contextId: contextRoutingId,
|
|
50
|
+
sourceId: z
|
|
51
|
+
.string()
|
|
52
|
+
.min(1)
|
|
53
|
+
.describe('The reconciliation source id (UUID) whose field map to fetch.'),
|
|
54
|
+
},
|
|
55
|
+
request: (args) => ({
|
|
56
|
+
method: 'GET',
|
|
57
|
+
path: sourceFieldMapPath(String(args.contextId), String(args.sourceId)),
|
|
58
|
+
}),
|
|
59
|
+
},
|
|
60
|
+
registerFieldMapUpdateTool,
|
|
61
|
+
{
|
|
62
|
+
name: 'field_map_delete',
|
|
63
|
+
description: 'Delete a field map by id (UUID path param, not a tenant field). ' +
|
|
64
|
+
"Removing a source's only field map reopens the " +
|
|
65
|
+
'context.activation.requirement.source-mapping activation-readiness ' +
|
|
66
|
+
'gap (see context_setup_progress) and an ACTIVE ' +
|
|
67
|
+
"context's matching/ingestion against that source will be affected. " +
|
|
68
|
+
'Returns null on success (204), or a structured RFC 9457 error.',
|
|
69
|
+
inputShape: {
|
|
70
|
+
fieldMapId: z
|
|
71
|
+
.string()
|
|
72
|
+
.min(1)
|
|
73
|
+
.describe('The field map id (UUID) to delete.'),
|
|
74
|
+
},
|
|
75
|
+
request: (args) => ({
|
|
76
|
+
method: 'DELETE',
|
|
77
|
+
path: fieldMapPath(String(args.fieldMapId)),
|
|
78
|
+
}),
|
|
79
|
+
},
|
|
80
|
+
];
|
|
23
81
|
/** Register all five curated field-map tools on the given server. */
|
|
24
82
|
export function registerFieldMapTools(server) {
|
|
25
|
-
|
|
26
|
-
registerFieldMapListTool(server);
|
|
27
|
-
registerFieldMapGetTool(server);
|
|
28
|
-
registerFieldMapUpdateTool(server);
|
|
29
|
-
registerFieldMapDeleteTool(server);
|
|
83
|
+
registerCuratedTools(server, FIELD_MAP_TOOLS);
|
|
30
84
|
}
|
|
31
85
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/field-map/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,qDAAqD;AACrD,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,8EAA8E;AAC9E,yEAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/field-map/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,qDAAqD;AACrD,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,gFAAgF;AAChF,2EAA2E;AAC3E,+EAA+E;AAC/E,6EAA6E;AAC7E,sDAAsD;AAEtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAExD;;;;;;;;;GASG;AACH,MAAM,eAAe,GAA4B;IAC/C,0BAA0B;IAC1B,wBAAwB;IACxB;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,oEAAoE;YACpE,sEAAsE;YACtE,sEAAsE;YACtE,qEAAqE;YACrE,mCAAmC;QACrC,UAAU,EAAE;YACV,SAAS,EAAE,gBAAgB;YAC3B,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,+DAA+D,CAAC;SAC7E;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACxE,CAAC;KACH;IACD,0BAA0B;IAC1B;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,kEAAkE;YAClE,iDAAiD;YACjD,qEAAqE;YACrE,iDAAiD;YACjD,qEAAqE;YACrE,gEAAgE;QAClE,UAAU,EAAE;YACV,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,oCAAoC,CAAC;SAClD;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC5C,CAAC;KACH;CACF,CAAA;AAED,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -10,7 +10,8 @@ import { z } from 'zod';
|
|
|
10
10
|
import { nextCursor, pageLimit } from '../input-fields.js';
|
|
11
11
|
import { queryHandler } from '../query-handler.js';
|
|
12
12
|
import { pickQuery } from '../request-fields.js';
|
|
13
|
-
import {
|
|
13
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
14
|
+
import { contextFieldMapsPath } from './shared.js';
|
|
14
15
|
/** Zod raw shape for `field_map_list` input — contextId path + pagination. */
|
|
15
16
|
export const listFieldMapsInputShape = {
|
|
16
17
|
contextId: z
|
|
@@ -38,6 +39,6 @@ export function registerFieldMapListTool(server) {
|
|
|
38
39
|
'response carries { items, nextCursor } — paginate by re-calling with ' +
|
|
39
40
|
'the returned nextCursor. No tenant field is accepted.',
|
|
40
41
|
inputSchema: listFieldMapsInputShape,
|
|
41
|
-
}, queryHandler(buildListQuery, (args) => contextFieldMapsPath(args.contextId),
|
|
42
|
+
}, queryHandler(buildListQuery, (args) => contextFieldMapsPath(args.contextId), dispatchToolRequest));
|
|
42
43
|
}
|
|
43
44
|
//# 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;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,
|
|
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,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,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,mBAAmB,CACpB,CACF,CAAA;AACH,CAAC"}
|