@lerianstudio/matcher-mcp 5.0.0-beta.8 → 5.0.0-beta.80
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/README.md +28 -13
- package/dist/auth/request-token.js +11 -69
- package/dist/auth/request-token.js.map +1 -1
- package/dist/config.js +6 -21
- 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 +75 -23
- 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/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/matcher/client.js +14 -0
- package/dist/matcher/client.js.map +1 -1
- package/dist/matcher/idempotency.js +94 -0
- package/dist/matcher/idempotency.js.map +1 -0
- 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/curated-operations.js +111 -95
- package/dist/spec/curated-operations.js.map +1 -1
- package/dist/spec/enum-policy.js +21 -26
- package/dist/spec/enum-policy.js.map +1 -1
- package/dist/spec/openapi.yaml +841 -56
- package/dist/spec/schema-parity.js +23 -28
- 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 +9 -35
- 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 -48
- package/dist/tools/context/shared.js.map +1 -1
- package/dist/tools/context/update.js +5 -5
- 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 +9 -68
- package/dist/tools/dashboard/shared.js.map +1 -1
- package/dist/tools/dispute/close.js +5 -5
- 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 +18 -47
- package/dist/tools/dispute/list.js.map +1 -1
- package/dist/tools/dispute/shared.js +4 -43
- package/dist/tools/dispute/shared.js.map +1 -1
- package/dist/tools/dispute/submit-evidence.js +5 -5
- 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 +5 -5
- 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 +12 -4
- 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 +13 -5
- 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 +8 -24
- 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 +14 -57
- 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 +10 -46
- package/dist/tools/exception/shared.js.map +1 -1
- package/dist/tools/fee-rule/create.js +5 -5
- 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 +9 -29
- package/dist/tools/fee-rule/list.js.map +1 -1
- package/dist/tools/fee-rule/shared.js +5 -47
- package/dist/tools/fee-rule/shared.js.map +1 -1
- package/dist/tools/fee-rule/update.js +5 -5
- package/dist/tools/fee-rule/update.js.map +1 -1
- package/dist/tools/fee-schedule/create.js +8 -3
- 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 +8 -24
- package/dist/tools/fee-schedule/list.js.map +1 -1
- package/dist/tools/fee-schedule/shared.js +5 -44
- package/dist/tools/fee-schedule/shared.js.map +1 -1
- package/dist/tools/fee-schedule/simulate.js +5 -5
- package/dist/tools/fee-schedule/simulate.js.map +1 -1
- package/dist/tools/fee-schedule/update.js +5 -5
- 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 +9 -29
- package/dist/tools/field-map/list.js.map +1 -1
- package/dist/tools/field-map/shared.js +6 -42
- 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 +16 -39
- 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 +10 -40
- package/dist/tools/ingestion/job-transactions-list.js.map +1 -1
- package/dist/tools/ingestion/jobs-list.js +9 -35
- package/dist/tools/ingestion/jobs-list.js.map +1 -1
- package/dist/tools/ingestion/shared.js +4 -41
- package/dist/tools/ingestion/shared.js.map +1 -1
- package/dist/tools/ingestion/transactions-search.js +9 -44
- package/dist/tools/ingestion/transactions-search.js.map +1 -1
- package/dist/tools/ingestion/upload-begin.js +5 -2
- package/dist/tools/ingestion/upload-begin.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 +51 -0
- package/dist/tools/input-fields.js.map +1 -0
- 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 +9 -33
- package/dist/tools/match-rule/list.js.map +1 -1
- package/dist/tools/match-rule/shared.js +16 -46
- package/dist/tools/match-rule/shared.js.map +1 -1
- package/dist/tools/match-rule/update.js +7 -11
- 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 +6 -14
- 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 +9 -32
- package/dist/tools/matching/list.js.map +1 -1
- package/dist/tools/matching/shared.js +5 -46
- package/dist/tools/matching/shared.js.map +1 -1
- package/dist/tools/query-handler.js +9 -0
- package/dist/tools/query-handler.js.map +1 -0
- package/dist/tools/report/index.js +260 -30
- package/dist/tools/report/index.js.map +1 -1
- package/dist/tools/report/shared.js +24 -98
- package/dist/tools/report/shared.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/create.js +146 -23
- 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 +9 -32
- package/dist/tools/source/list.js.map +1 -1
- package/dist/tools/source/shared.js +5 -42
- package/dist/tools/source/shared.js.map +1 -1
- package/dist/tools/source/update.js +16 -33
- 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 +4 -4
- 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 -37
- package/dist/tools/dashboard/aggregates.js.map +0 -1
- package/dist/tools/dashboard/cash-impact.js +0 -37
- package/dist/tools/dashboard/cash-impact.js.map +0 -1
- package/dist/tools/dashboard/match-rate.js +0 -37
- package/dist/tools/dashboard/match-rate.js.map +0 -1
- package/dist/tools/dashboard/metrics.js +0 -37
- package/dist/tools/dashboard/metrics.js.map +0 -1
- package/dist/tools/dashboard/sla.js +0 -34
- package/dist/tools/dashboard/sla.js.map +0 -1
- package/dist/tools/dashboard/source-breakdown.js +0 -37
- package/dist/tools/dashboard/source-breakdown.js.map +0 -1
- package/dist/tools/dashboard/volume.js +0 -37
- 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 -43
- package/dist/tools/field-map/get.js.map +0 -1
- package/dist/tools/ingestion/job-errors-list.js +0 -45
- package/dist/tools/ingestion/job-errors-list.js.map +0 -1
- package/dist/tools/ingestion/job-get.js +0 -42
- package/dist/tools/ingestion/job-get.js.map +0 -1
- package/dist/tools/ingestion/transaction-ignore.js +0 -51
- 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 -35
- package/dist/tools/match-rule/delete.js.map +0 -1
- package/dist/tools/match-rule/get.js +0 -32
- 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 -46
- package/dist/tools/report/count-exceptions.js.map +0 -1
- package/dist/tools/report/count-matched.js +0 -47
- package/dist/tools/report/count-matched.js.map +0 -1
- package/dist/tools/report/count-transactions.js +0 -45
- package/dist/tools/report/count-transactions.js.map +0 -1
- package/dist/tools/report/count-unmatched.js +0 -45
- package/dist/tools/report/count-unmatched.js.map +0 -1
- package/dist/tools/report/export-exceptions.js +0 -48
- package/dist/tools/report/export-exceptions.js.map +0 -1
- package/dist/tools/report/export-matched.js +0 -49
- package/dist/tools/report/export-matched.js.map +0 -1
- package/dist/tools/report/export-summary.js +0 -49
- package/dist/tools/report/export-summary.js.map +0 -1
- package/dist/tools/report/export-unmatched.js +0 -49
- package/dist/tools/report/export-unmatched.js.map +0 -1
- package/dist/tools/report/export-variance.js +0 -48
- package/dist/tools/report/export-variance.js.map +0 -1
- package/dist/tools/report/matched.js +0 -48
- package/dist/tools/report/matched.js.map +0 -1
- package/dist/tools/report/summary.js +0 -43
- package/dist/tools/report/summary.js.map +0 -1
- package/dist/tools/report/unmatched.js +0 -48
- package/dist/tools/report/unmatched.js.map +0 -1
- package/dist/tools/report/variance.js +0 -48
- package/dist/tools/report/variance.js.map +0 -1
- package/dist/tools/source/archive.js +0 -46
- package/dist/tools/source/archive.js.map +0 -1
- package/dist/tools/source/get.js +0 -57
- package/dist/tools/source/get.js.map +0 -1
- package/dist/tools/source/restore.js +0 -39
- package/dist/tools/source/restore.js.map +0 -1
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
// (a URL to an already-uploaded file), NOT a multipart upload. disputeId is a
|
|
7
7
|
// UUID path param and is stripped from the POST body; no tenant field is accepted.
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import {
|
|
9
|
+
import { bodyWithout } from '../request-fields.js';
|
|
10
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
11
|
+
import { disputeEvidencePath } from './shared.js';
|
|
10
12
|
/** Zod raw shape for `dispute_submit_evidence` input — id (path) + evidence body. */
|
|
11
13
|
export const submitEvidenceInputShape = {
|
|
12
14
|
disputeId: z
|
|
@@ -29,9 +31,7 @@ export const submitEvidenceInputShape = {
|
|
|
29
31
|
};
|
|
30
32
|
/** Build the evidence POST body from the input minus the path-only `disputeId`. */
|
|
31
33
|
export function buildEvidenceBody(args) {
|
|
32
|
-
|
|
33
|
-
void _disputeId;
|
|
34
|
-
return body;
|
|
34
|
+
return bodyWithout(args, ['disputeId']);
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Register `dispute_submit_evidence`. Splits the id (path) from the body,
|
|
@@ -48,7 +48,7 @@ export function registerDisputeSubmitEvidenceTool(server) {
|
|
|
48
48
|
'No tenant field is accepted.',
|
|
49
49
|
inputSchema: submitEvidenceInputShape,
|
|
50
50
|
}, async (args, extra) => {
|
|
51
|
-
return
|
|
51
|
+
return dispatchToolRequest({
|
|
52
52
|
method: 'POST',
|
|
53
53
|
path: disputeEvidencePath(args.disputeId),
|
|
54
54
|
body: buildEvidenceBody(args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-evidence.js","sourceRoot":"","sources":["../../../src/tools/dispute/submit-evidence.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,iFAAiF;AACjF,8EAA8E;AAC9E,mFAAmF;AAEnF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"submit-evidence.js","sourceRoot":"","sources":["../../../src/tools/dispute/submit-evidence.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,iFAAiF;AACjF,8EAA8E;AAC9E,mFAAmF;AAEnF,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,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,qFAAqF;AACrF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CACP,sEAAsE;QACpE,oCAAoC,CACvC;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,wEAAwE;QACtE,wEAAwE;QACxE,SAAS,CACZ;CACJ,CAAA;AAOD,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAC/B,IAAyB;IAEzB,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAAC,MAAiB;IACjE,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,sEAAsE;YACtE,0EAA0E;YAC1E,sEAAsE;YACtE,wEAAwE;YACxE,8BAA8B;QAChC,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;YACzC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;SAC9B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
// no tenant field. exceptionId is a path param; matcher validates it belongs to
|
|
7
7
|
// the relayed token's tenant.
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import {
|
|
9
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
10
|
+
import { exceptionCommentsPath } from './shared.js';
|
|
10
11
|
/** Zod raw shape for `exception_add_comment` input — path id + comment content. */
|
|
11
12
|
export const addCommentInputShape = {
|
|
12
13
|
exceptionId: z
|
|
@@ -40,7 +41,7 @@ export function registerExceptionAddCommentTool(server) {
|
|
|
40
41
|
'accepted. Returns the created comment, or a structured RFC 9457 error.',
|
|
41
42
|
inputSchema: addCommentInputShape,
|
|
42
43
|
}, async (args, extra) => {
|
|
43
|
-
return
|
|
44
|
+
return dispatchToolRequest({
|
|
44
45
|
method: 'POST',
|
|
45
46
|
path: exceptionCommentsPath(args.exceptionId),
|
|
46
47
|
body: buildAddCommentBody(args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-comment.js","sourceRoot":"","sources":["../../../src/tools/exception/add-comment.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,iEAAiE;AACjE,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,8BAA8B;AAE9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add-comment.js","sourceRoot":"","sources":["../../../src/tools/exception/add-comment.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,iEAAiE;AACjE,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,8BAA8B;AAE9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEnD,mFAAmF;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,wCAAwC,CAAC;IACrD,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CACP,qEAAqE;QACnE,sDAAsD,CACzD;CACJ,CAAA;AAKD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAqB;IAErB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,kEAAkE;YAClE,0EAA0E;YAC1E,mEAAmE;YACnE,wEAAwE;QAC1E,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC;YAC7C,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC;SAChC,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
// (RFC 3339), all required. exceptionId is a path param; no tenant field is
|
|
8
8
|
// accepted.
|
|
9
9
|
import { z } from 'zod';
|
|
10
|
-
import {
|
|
10
|
+
import { bodyWithout } from '../request-fields.js';
|
|
11
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
12
|
+
import { exceptionAdjustEntryPath } from './shared.js';
|
|
11
13
|
/** Zod raw shape for `exception_adjust_entry` input — path id + adjustment body. */
|
|
12
14
|
export const adjustEntryInputShape = {
|
|
13
15
|
exceptionId: z
|
|
@@ -43,9 +45,7 @@ export const adjustEntryInputShape = {
|
|
|
43
45
|
* AdjustEntryRequest fields are sent; exceptionId travels in the path.
|
|
44
46
|
*/
|
|
45
47
|
export function buildAdjustEntryBody(args) {
|
|
46
|
-
|
|
47
|
-
void _exceptionId;
|
|
48
|
-
return body;
|
|
48
|
+
return bodyWithout(args, ['exceptionId']);
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Register `exception_adjust_entry`. Substitutes the id into the path, builds the
|
|
@@ -61,7 +61,7 @@ export function registerExceptionAdjustEntryTool(server) {
|
|
|
61
61
|
'accepted. Returns the updated exception, or a structured RFC 9457 error.',
|
|
62
62
|
inputSchema: adjustEntryInputShape,
|
|
63
63
|
}, async (args, extra) => {
|
|
64
|
-
return
|
|
64
|
+
return dispatchToolRequest({
|
|
65
65
|
method: 'POST',
|
|
66
66
|
path: exceptionAdjustEntryPath(args.exceptionId),
|
|
67
67
|
body: buildAdjustEntryBody(args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adjust-entry.js","sourceRoot":"","sources":["../../../src/tools/exception/adjust-entry.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,sEAAsE;AACtE,+EAA+E;AAC/E,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,YAAY;AAEZ,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"adjust-entry.js","sourceRoot":"","sources":["../../../src/tools/exception/adjust-entry.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,sEAAsE;AACtE,+EAA+E;AAC/E,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,YAAY;AAEZ,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,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAEtD,oFAAoF;AACpF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,sEAAsE,CAAC;IACnF,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,CACP,wEAAwE;QACtE,gEAAgE,CACnE;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,0EAA0E,CAAC;IACvF,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,CACP,mEAAmE;QACjE,0BAA0B,CAC7B;CACJ,CAAA;AAKD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAsB;IAEtB,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,wEAAwE;YACxE,0EAA0E;YAC1E,2EAA2E;YAC3E,mEAAmE;YACnE,0EAA0E;QAC5E,WAAW,EAAE,qBAAqB;KACnC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC;YAChD,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC;SACjC,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
// response reports per-exception successes/failures). No path param and no
|
|
7
7
|
// tenant field; matcher scopes to the relayed token's tenant.
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import {
|
|
9
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
10
|
+
import { EXCEPTIONS_BULK_ASSIGN_PATH } from './shared.js';
|
|
10
11
|
/** Zod raw shape for `exception_bulk_assign` input — ids + assignee. */
|
|
11
12
|
export const bulkAssignInputShape = {
|
|
12
13
|
exceptionIds: z
|
|
@@ -37,7 +38,7 @@ export function registerExceptionBulkAssignTool(server) {
|
|
|
37
38
|
'No tenant field is accepted. Errors surface as structured RFC 9457 problems.',
|
|
38
39
|
inputSchema: bulkAssignInputShape,
|
|
39
40
|
}, async (args, extra) => {
|
|
40
|
-
return
|
|
41
|
+
return dispatchToolRequest({
|
|
41
42
|
method: 'POST',
|
|
42
43
|
path: EXCEPTIONS_BULK_ASSIGN_PATH,
|
|
43
44
|
body: buildBulkAssignBody(args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-assign.js","sourceRoot":"","sources":["../../../src/tools/exception/bulk-assign.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,2EAA2E;AAC3E,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bulk-assign.js","sourceRoot":"","sources":["../../../src/tools/exception/bulk-assign.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,2EAA2E;AAC3E,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAEzD,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,0CAA0C,CAAC;IACvD,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,oEAAoE,CAAC;CAClF,CAAA;AAKD,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CACjC,IAAqB;IAErB,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAA;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,0EAA0E;YAC1E,2EAA2E;YAC3E,4EAA4E;YAC5E,8EAA8E;QAChF,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC;SAChC,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
// tenant field; matcher scopes to the relayed token's tenant.
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
import { DISPATCH_TARGET_SYSTEMS } from './dispatch.js';
|
|
12
|
-
import {
|
|
12
|
+
import { idempotencyKeyInputField } from '../../matcher/idempotency.js';
|
|
13
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
14
|
+
import { EXCEPTIONS_BULK_DISPATCH_PATH } from './shared.js';
|
|
13
15
|
/** Zod raw shape for `exception_bulk_dispatch` input — ids + target + optional queue. */
|
|
14
16
|
export const bulkDispatchInputShape = {
|
|
15
17
|
exceptionIds: z
|
|
@@ -26,10 +28,11 @@ export const bulkDispatchInputShape = {
|
|
|
26
28
|
.max(255)
|
|
27
29
|
.optional()
|
|
28
30
|
.describe('Optional queue or team assignment (≤255, e.g. "RECON-TEAM").'),
|
|
31
|
+
idempotencyKey: idempotencyKeyInputField,
|
|
29
32
|
};
|
|
30
33
|
/**
|
|
31
34
|
* Build the bulk-dispatch POST body, omitting the optional `queue` when unset so
|
|
32
|
-
* the request stays minimal.
|
|
35
|
+
* the request stays minimal. The header-only `idempotencyKey` never enters it.
|
|
33
36
|
*/
|
|
34
37
|
export function buildBulkDispatchBody(args) {
|
|
35
38
|
const body = {
|
|
@@ -54,13 +57,18 @@ export function registerExceptionBulkDispatchTool(server) {
|
|
|
54
57
|
'(JIRA|SERVICENOW|WEBHOOK|MANUAL), and optionally a ' +
|
|
55
58
|
'queue/team (≤255). Partial success is supported — the response reports ' +
|
|
56
59
|
'per-exception successes and failures. No tenant field is accepted. Errors ' +
|
|
57
|
-
'surface as structured RFC 9457 problems.'
|
|
60
|
+
'surface as structured RFC 9457 problems. This call is idempotent: an ' +
|
|
61
|
+
'identical retry replays the recorded answer instead of dispatching the ' +
|
|
62
|
+
'same exceptions a second time.',
|
|
58
63
|
inputSchema: bulkDispatchInputShape,
|
|
59
64
|
}, async (args, extra) => {
|
|
60
|
-
return
|
|
65
|
+
return dispatchToolRequest({
|
|
61
66
|
method: 'POST',
|
|
62
67
|
path: EXCEPTIONS_BULK_DISPATCH_PATH,
|
|
63
68
|
body: buildBulkDispatchBody(args),
|
|
69
|
+
...(args.idempotencyKey !== undefined
|
|
70
|
+
? { idempotencyKey: args.idempotencyKey }
|
|
71
|
+
: {}),
|
|
64
72
|
}, extra);
|
|
65
73
|
});
|
|
66
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-dispatch.js","sourceRoot":"","sources":["../../../src/tools/exception/bulk-dispatch.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bulk-dispatch.js","sourceRoot":"","sources":["../../../src/tools/exception/bulk-dispatch.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAE3D,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,4CAA4C,CAAC;IACzD,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,uBAAuB,CAAC;SAC7B,QAAQ,CACP,2CAA2C;QACzC,mCAAmC,CACtC;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,cAAc,EAAE,wBAAwB;CACzC,CAAA;AAOD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAuB;IAEvB,MAAM,IAAI,GAA4B;QACpC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAA;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IACzB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAAC,MAAiB;IACjE,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,2EAA2E;YAC3E,mEAAmE;YACnE,qDAAqD;YACrD,yEAAyE;YACzE,4EAA4E;YAC5E,uEAAuE;YACvE,yEAAyE;YACzE,gCAAgC;QAClC,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS;gBACnC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;gBACzC,CAAC,CAAC,EAAE,CAAC;SACR,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
// successes/failures). No path param and no tenant field; matcher scopes to the
|
|
8
8
|
// relayed token's tenant.
|
|
9
9
|
import { z } from 'zod';
|
|
10
|
-
import {
|
|
10
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
11
|
+
import { EXCEPTIONS_BULK_RESOLVE_PATH } from './shared.js';
|
|
11
12
|
/** Zod raw shape for `exception_bulk_resolve` input — ids + resolution + optional reason. */
|
|
12
13
|
export const bulkResolveInputShape = {
|
|
13
14
|
exceptionIds: z
|
|
@@ -54,7 +55,7 @@ export function registerExceptionBulkResolveTool(server) {
|
|
|
54
55
|
'accepted. Errors surface as structured RFC 9457 problems.',
|
|
55
56
|
inputSchema: bulkResolveInputShape,
|
|
56
57
|
}, async (args, extra) => {
|
|
57
|
-
return
|
|
58
|
+
return dispatchToolRequest({
|
|
58
59
|
method: 'POST',
|
|
59
60
|
path: EXCEPTIONS_BULK_RESOLVE_PATH,
|
|
60
61
|
body: buildBulkResolveBody(args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-resolve.js","sourceRoot":"","sources":["../../../src/tools/exception/bulk-resolve.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,2EAA2E;AAC3E,uEAAuE;AACvE,gFAAgF;AAChF,0BAA0B;AAE1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bulk-resolve.js","sourceRoot":"","sources":["../../../src/tools/exception/bulk-resolve.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,2EAA2E;AAC3E,uEAAuE;AACvE,gFAAgF;AAChF,0BAA0B;AAE1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAE1D,6FAA6F;AAC7F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,2CAA2C,CAAC;IACxD,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;CACjE,CAAA;AAKD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAsB;IAEtB,MAAM,IAAI,GAA4B;QACpC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAA;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC3B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,uEAAuE;YACvE,0EAA0E;YAC1E,sEAAsE;YACtE,4EAA4E;YAC5E,2DAA2D;QAC7D,WAAW,EAAE,qBAAqB;KACnC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC;SACjC,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
// string) plus an optional queue/team. exceptionId is a path param; no tenant
|
|
7
7
|
// field is accepted.
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import {
|
|
9
|
+
import { idempotencyKeyInputField } from '../../matcher/idempotency.js';
|
|
10
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
11
|
+
import { exceptionDispatchPath } from './shared.js';
|
|
10
12
|
/** External target systems a single exception can be dispatched to (closed enum per spec). */
|
|
11
13
|
export const DISPATCH_TARGET_SYSTEMS = [
|
|
12
14
|
'JIRA',
|
|
@@ -28,10 +30,12 @@ export const dispatchExceptionInputShape = {
|
|
|
28
30
|
.max(255)
|
|
29
31
|
.optional()
|
|
30
32
|
.describe('Optional queue or team assignment (e.g. "RECON-TEAM").'),
|
|
33
|
+
idempotencyKey: idempotencyKeyInputField,
|
|
31
34
|
};
|
|
32
35
|
/**
|
|
33
|
-
* Build the POST body from the input minus the path-only `exceptionId
|
|
34
|
-
* the optional `queue` when unset so the
|
|
36
|
+
* Build the POST body from the input minus the path-only `exceptionId` and the
|
|
37
|
+
* header-only `idempotencyKey`, omitting the optional `queue` when unset so the
|
|
38
|
+
* request stays minimal.
|
|
35
39
|
*/
|
|
36
40
|
export function buildDispatchBody(args) {
|
|
37
41
|
const body = { targetSystem: args.targetSystem };
|
|
@@ -51,13 +55,17 @@ export function registerExceptionDispatchTool(server) {
|
|
|
51
55
|
'Provide exceptionId (UUID path param), targetSystem ' +
|
|
52
56
|
'(JIRA|SERVICENOW|WEBHOOK|MANUAL), and optionally a queue/team. No tenant ' +
|
|
53
57
|
'field is accepted. Returns the dispatch acknowledgement, or a structured ' +
|
|
54
|
-
'RFC 9457 error.'
|
|
58
|
+
'RFC 9457 error. This call is idempotent: an identical retry replays the ' +
|
|
59
|
+
'recorded answer instead of opening a second ticket.',
|
|
55
60
|
inputSchema: dispatchExceptionInputShape,
|
|
56
61
|
}, async (args, extra) => {
|
|
57
|
-
return
|
|
62
|
+
return dispatchToolRequest({
|
|
58
63
|
method: 'POST',
|
|
59
64
|
path: exceptionDispatchPath(args.exceptionId),
|
|
60
65
|
body: buildDispatchBody(args),
|
|
66
|
+
...(args.idempotencyKey !== undefined
|
|
67
|
+
? { idempotencyKey: args.idempotencyKey }
|
|
68
|
+
: {}),
|
|
61
69
|
}, extra);
|
|
62
70
|
});
|
|
63
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/tools/exception/dispatch.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,qBAAqB;AAErB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/tools/exception/dispatch.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,qBAAqB;AAErB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEnD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,MAAM;IACN,YAAY;IACZ,SAAS;IACT,QAAQ;CACA,CAAA;AAEV,gFAAgF;AAChF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,sCAAsC,CAAC;IACnD,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,uBAAuB,CAAC;SAC7B,QAAQ,CACP,gEAAgE,CACjE;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,cAAc,EAAE,wBAAwB;CACzC,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA4B;IAE5B,MAAM,IAAI,GAA4B,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAA;IACzE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IACzB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAiB;IAC7D,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EACT,uEAAuE;YACvE,sDAAsD;YACtD,2EAA2E;YAC3E,2EAA2E;YAC3E,0EAA0E;YAC1E,qDAAqD;QACvD,WAAW,EAAE,2BAA2B;KACzC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC;YAC7C,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS;gBACnC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;gBACzC,CAAC,CAAC,EAAE,CAAC;SACR,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
// overrideReason (1–255) and notes (1–1000), both required. exceptionId is a
|
|
7
7
|
// path param; no tenant field is accepted.
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import {
|
|
9
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
10
|
+
import { exceptionForceMatchPath } from './shared.js';
|
|
10
11
|
/** Zod raw shape for `exception_force_match` input — path id + override body. */
|
|
11
12
|
export const forceMatchInputShape = {
|
|
12
13
|
exceptionId: z
|
|
@@ -45,7 +46,7 @@ export function registerExceptionForceMatchTool(server) {
|
|
|
45
46
|
'exception, or a structured RFC 9457 error.',
|
|
46
47
|
inputSchema: forceMatchInputShape,
|
|
47
48
|
}, async (args, extra) => {
|
|
48
|
-
return
|
|
49
|
+
return dispatchToolRequest({
|
|
49
50
|
method: 'POST',
|
|
50
51
|
path: exceptionForceMatchPath(args.exceptionId),
|
|
51
52
|
body: buildForceMatchBody(args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"force-match.js","sourceRoot":"","sources":["../../../src/tools/exception/force-match.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,yEAAyE;AACzE,gFAAgF;AAChF,iFAAiF;AACjF,6EAA6E;AAC7E,2CAA2C;AAE3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"force-match.js","sourceRoot":"","sources":["../../../src/tools/exception/force-match.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,yEAAyE;AACzE,gFAAgF;AAChF,iFAAiF;AACjF,6EAA6E;AAC7E,2CAA2C;AAE3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,wDAAwD,CAAC;IACrE,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CACP,uEAAuE;QACrE,uBAAuB,CAC1B;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,sEAAsE,CAAC;CACpF,CAAA;AAKD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAqB;IAErB,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,yEAAyE;YACzE,yEAAyE;YACzE,uEAAuE;YACvE,4CAA4C;QAC9C,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,mBAAmB,CACxB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC;SAChC,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
// returned nextCursor. exceptionId is a path param; the exception must belong to
|
|
6
6
|
// the relayed token's tenant, and no tenant field is accepted.
|
|
7
7
|
import { z } from 'zod';
|
|
8
|
-
import {
|
|
8
|
+
import { pageLimit } from '../input-fields.js';
|
|
9
|
+
import { queryHandler } from '../query-handler.js';
|
|
10
|
+
import { pickQuery } from '../request-fields.js';
|
|
11
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
12
|
+
import { exceptionHistoryPath } from './shared.js';
|
|
9
13
|
/** Zod raw shape for `exception_history` input — path id + pagination. */
|
|
10
14
|
export const getExceptionHistoryInputShape = {
|
|
11
15
|
exceptionId: z
|
|
@@ -17,24 +21,11 @@ export const getExceptionHistoryInputShape = {
|
|
|
17
21
|
.optional()
|
|
18
22
|
.describe('Opaque pagination cursor from a prior response. Re-call with the ' +
|
|
19
23
|
'returned nextCursor to page forward (pagination is forward-only).'),
|
|
20
|
-
limit:
|
|
21
|
-
.number()
|
|
22
|
-
.int()
|
|
23
|
-
.min(1)
|
|
24
|
-
.max(200)
|
|
25
|
-
.optional()
|
|
26
|
-
.describe('Maximum number of records to return (1–200, default 20).'),
|
|
24
|
+
limit: pageLimit,
|
|
27
25
|
};
|
|
28
26
|
/** Build the history query, omitting unset pagination knobs. */
|
|
29
27
|
export function buildHistoryQuery(args) {
|
|
30
|
-
|
|
31
|
-
if (args.cursor !== undefined) {
|
|
32
|
-
query.cursor = args.cursor;
|
|
33
|
-
}
|
|
34
|
-
if (args.limit !== undefined) {
|
|
35
|
-
query.limit = args.limit;
|
|
36
|
-
}
|
|
37
|
-
return Object.keys(query).length > 0 ? query : undefined;
|
|
28
|
+
return pickQuery(args, ['cursor', 'limit']);
|
|
38
29
|
}
|
|
39
30
|
/**
|
|
40
31
|
* Register `exception_history`. Substitutes the id into the path, passes the
|
|
@@ -49,13 +40,6 @@ export function registerExceptionHistoryTool(server) {
|
|
|
49
40
|
'tenant field is accepted). The response carries { items, nextCursor } — ' +
|
|
50
41
|
'paginate by re-calling with the returned nextCursor.',
|
|
51
42
|
inputSchema: getExceptionHistoryInputShape,
|
|
52
|
-
},
|
|
53
|
-
const query = buildHistoryQuery(args);
|
|
54
|
-
return dispatchException({
|
|
55
|
-
method: 'GET',
|
|
56
|
-
path: exceptionHistoryPath(args.exceptionId),
|
|
57
|
-
...(query !== undefined ? { query } : {}),
|
|
58
|
-
}, extra);
|
|
59
|
-
});
|
|
43
|
+
}, queryHandler(buildHistoryQuery, (args) => exceptionHistoryPath(args.exceptionId), dispatchToolRequest));
|
|
60
44
|
}
|
|
61
45
|
//# sourceMappingURL=history.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/tools/exception/history.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,iFAAiF;AACjF,+DAA+D;AAE/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/tools/exception/history.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,iFAAiF;AACjF,+DAA+D;AAE/D,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,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,uDAAuD,CAAC;IACpE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,mEAAmE;QACjE,mEAAmE,CACtE;IACH,KAAK,EAAE,SAAS;CACjB,CAAA;AAOD,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAC/B,IAA8B;IAE9B,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,2EAA2E;YAC3E,0EAA0E;YAC1E,sEAAsE;YACtE,0EAA0E;YAC1E,sDAAsD;QACxD,WAAW,EAAE,6BAA6B;KAC3C,EACD,YAAY,CACV,iBAAiB,EACjB,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAChD,mBAAmB,CACpB,CACF,CAAA;AACH,CAAC"}
|
|
@@ -3,37 +3,107 @@
|
|
|
3
3
|
// sub-resources (list/add/delete), the per-exception action verbs (dispatch,
|
|
4
4
|
// open-dispute, force-match, adjust-entry), and the cross-exception bulk
|
|
5
5
|
// actions (assign/resolve/dispatch). Every tool shares the fail-closed relay
|
|
6
|
-
// (shared.ts) and the RFC 9457 → tool-error mapping (toToolError) with
|
|
7
|
-
// generic surface, so curated and generic map matcher errors identically. No
|
|
6
|
+
// (shared-dispatch.ts) and the RFC 9457 → tool-error mapping (toToolError) with
|
|
7
|
+
// the generic surface, so curated and generic map matcher errors identically. No
|
|
8
8
|
// tool carries a tenant field; the optional contextId on list is a routing
|
|
9
9
|
// filter matcher validates against the relayed token's tenant.
|
|
10
|
+
//
|
|
11
|
+
// The three tools that are nothing but a name, a path and a description (get,
|
|
12
|
+
// list-comments, delete-comment) are declared as three rows and registered by
|
|
13
|
+
// the one shared loop; the other ten carry bodies, query builders or an
|
|
14
|
+
// idempotency key and stay as files.
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
import { registerCuratedTools } from '../curated-tool.js';
|
|
10
17
|
import { registerExceptionAddCommentTool } from './add-comment.js';
|
|
11
18
|
import { registerExceptionAdjustEntryTool } from './adjust-entry.js';
|
|
12
19
|
import { registerExceptionBulkAssignTool } from './bulk-assign.js';
|
|
13
20
|
import { registerExceptionBulkDispatchTool } from './bulk-dispatch.js';
|
|
14
21
|
import { registerExceptionBulkResolveTool } from './bulk-resolve.js';
|
|
15
|
-
import { registerExceptionDeleteCommentTool } from './delete-comment.js';
|
|
16
22
|
import { registerExceptionDispatchTool } from './dispatch.js';
|
|
17
23
|
import { registerExceptionForceMatchTool } from './force-match.js';
|
|
18
|
-
import { registerExceptionGetTool } from './get.js';
|
|
19
24
|
import { registerExceptionHistoryTool } from './history.js';
|
|
20
25
|
import { registerExceptionListTool } from './list.js';
|
|
21
|
-
import { registerExceptionListCommentsTool } from './list-comments.js';
|
|
22
26
|
import { registerExceptionOpenDisputeTool } from './open-dispute.js';
|
|
27
|
+
import { exceptionCommentPath, exceptionCommentsPath, exceptionPath, } from './shared.js';
|
|
28
|
+
/**
|
|
29
|
+
* The exception 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 EXCEPTION_TOOLS = [
|
|
39
|
+
registerExceptionListTool,
|
|
40
|
+
{
|
|
41
|
+
name: 'exception_get',
|
|
42
|
+
description: 'Fetch a single reconciliation exception by id (UUID). The exception ' +
|
|
43
|
+
"must belong to your token's tenant (no tenant field is accepted). " +
|
|
44
|
+
'Returns the exception, or a structured RFC 9457 error (e.g. 404 if it ' +
|
|
45
|
+
'does not exist or is not yours).',
|
|
46
|
+
inputShape: {
|
|
47
|
+
exceptionId: z
|
|
48
|
+
.string()
|
|
49
|
+
.min(1)
|
|
50
|
+
.describe('The exception id (UUID) to fetch.'),
|
|
51
|
+
},
|
|
52
|
+
request: (args) => ({
|
|
53
|
+
method: 'GET',
|
|
54
|
+
path: exceptionPath(String(args.exceptionId)),
|
|
55
|
+
}),
|
|
56
|
+
},
|
|
57
|
+
registerExceptionHistoryTool,
|
|
58
|
+
{
|
|
59
|
+
name: 'exception_list_comments',
|
|
60
|
+
description: 'List the discussion comments on a reconciliation exception, ordered ' +
|
|
61
|
+
'oldest-first. Provide exceptionId (UUID). The exception must belong to ' +
|
|
62
|
+
"your token's tenant (no tenant field is accepted). Returns the comments, " +
|
|
63
|
+
'or a structured RFC 9457 error.',
|
|
64
|
+
inputShape: {
|
|
65
|
+
exceptionId: z
|
|
66
|
+
.string()
|
|
67
|
+
.min(1)
|
|
68
|
+
.describe('The exception id (UUID) whose comments to list.'),
|
|
69
|
+
},
|
|
70
|
+
request: (args) => ({
|
|
71
|
+
method: 'GET',
|
|
72
|
+
path: exceptionCommentsPath(String(args.exceptionId)),
|
|
73
|
+
}),
|
|
74
|
+
},
|
|
75
|
+
registerExceptionAddCommentTool,
|
|
76
|
+
{
|
|
77
|
+
name: 'exception_delete_comment',
|
|
78
|
+
description: 'Delete a single discussion comment from a reconciliation exception. ' +
|
|
79
|
+
'Provide both exceptionId and commentId (UUID path params). The exception ' +
|
|
80
|
+
"must belong to your token's tenant (no tenant field is accepted). Returns " +
|
|
81
|
+
'no content on success, or a structured RFC 9457 error.',
|
|
82
|
+
inputShape: {
|
|
83
|
+
exceptionId: z
|
|
84
|
+
.string()
|
|
85
|
+
.min(1)
|
|
86
|
+
.describe('The exception id (UUID) the comment belongs to.'),
|
|
87
|
+
commentId: z
|
|
88
|
+
.string()
|
|
89
|
+
.min(1)
|
|
90
|
+
.describe('The comment id (UUID) to delete.'),
|
|
91
|
+
},
|
|
92
|
+
request: (args) => ({
|
|
93
|
+
method: 'DELETE',
|
|
94
|
+
path: exceptionCommentPath(String(args.exceptionId), String(args.commentId)),
|
|
95
|
+
}),
|
|
96
|
+
},
|
|
97
|
+
registerExceptionDispatchTool,
|
|
98
|
+
registerExceptionOpenDisputeTool,
|
|
99
|
+
registerExceptionForceMatchTool,
|
|
100
|
+
registerExceptionAdjustEntryTool,
|
|
101
|
+
registerExceptionBulkAssignTool,
|
|
102
|
+
registerExceptionBulkResolveTool,
|
|
103
|
+
registerExceptionBulkDispatchTool,
|
|
104
|
+
];
|
|
23
105
|
/** Register all thirteen curated exception tools on the given server. */
|
|
24
106
|
export function registerExceptionTools(server) {
|
|
25
|
-
|
|
26
|
-
registerExceptionGetTool(server);
|
|
27
|
-
registerExceptionHistoryTool(server);
|
|
28
|
-
registerExceptionListCommentsTool(server);
|
|
29
|
-
registerExceptionAddCommentTool(server);
|
|
30
|
-
registerExceptionDeleteCommentTool(server);
|
|
31
|
-
registerExceptionDispatchTool(server);
|
|
32
|
-
registerExceptionOpenDisputeTool(server);
|
|
33
|
-
registerExceptionForceMatchTool(server);
|
|
34
|
-
registerExceptionAdjustEntryTool(server);
|
|
35
|
-
registerExceptionBulkAssignTool(server);
|
|
36
|
-
registerExceptionBulkResolveTool(server);
|
|
37
|
-
registerExceptionBulkDispatchTool(server);
|
|
107
|
+
registerCuratedTools(server, EXCEPTION_TOOLS);
|
|
38
108
|
}
|
|
39
109
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/exception/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,uEAAuE;AACvE,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAC7E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/exception/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,uEAAuE;AACvE,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAC7E,gFAAgF;AAChF,iFAAiF;AACjF,2EAA2E;AAC3E,+DAA+D;AAC/D,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,qCAAqC;AAErC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB;;;;;;;;;GASG;AACH,MAAM,eAAe,GAA4B;IAC/C,yBAAyB;IACzB;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,sEAAsE;YACtE,oEAAoE;YACpE,wEAAwE;YACxE,kCAAkC;QACpC,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,mCAAmC,CAAC;SACjD;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC9C,CAAC;KACH;IACD,4BAA4B;IAC5B;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EACT,sEAAsE;YACtE,yEAAyE;YACzE,2EAA2E;YAC3E,iCAAiC;QACnC,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,iDAAiD,CAAC;SAC/D;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACtD,CAAC;KACH;IACD,+BAA+B;IAC/B;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,sEAAsE;YACtE,2EAA2E;YAC3E,4EAA4E;YAC5E,wDAAwD;QAC1D,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,kCAAkC,CAAC;SAChD;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,oBAAoB,CACxB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CACvB;SACF,CAAC;KACH;IACD,6BAA6B;IAC7B,gCAAgC;IAChC,+BAA+B;IAC/B,gCAAgC;IAChC,+BAA+B;IAC/B,gCAAgC;IAChC,iCAAiC;CAClC,CAAA;AAED,yEAAyE;AACzE,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -8,9 +8,13 @@
|
|
|
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 {
|
|
11
|
+
import { pageLimit } from '../input-fields.js';
|
|
12
|
+
import { queryHandler } from '../query-handler.js';
|
|
13
|
+
import { pickQuery } from '../request-fields.js';
|
|
14
|
+
import { dispatchToolRequest } from '../shared-dispatch.js';
|
|
15
|
+
import { EXCEPTIONS_PATH } from './shared.js';
|
|
12
16
|
/** Lifecycle states an exception can be filtered by (matcher's queue states). */
|
|
13
|
-
export const EXCEPTION_STATUSES = ['OPEN', 'ASSIGNED', 'RESOLVED'];
|
|
17
|
+
export const EXCEPTION_STATUSES = ['OPEN', 'ASSIGNED', 'PENDING_RESOLUTION', 'RESOLVED'];
|
|
14
18
|
/** Severity buckets an exception can be filtered by. */
|
|
15
19
|
export const EXCEPTION_SEVERITIES = ['LOW', 'MEDIUM', 'HIGH', 'CRITICAL'];
|
|
16
20
|
/** The reason an exception was raised (the matching defect that produced it). */
|
|
@@ -51,7 +55,7 @@ export const listExceptionsInputShape = {
|
|
|
51
55
|
status: z
|
|
52
56
|
.enum(EXCEPTION_STATUSES)
|
|
53
57
|
.optional()
|
|
54
|
-
.describe('Filter by lifecycle status (OPEN|ASSIGNED|RESOLVED).'),
|
|
58
|
+
.describe('Filter by lifecycle status (OPEN|ASSIGNED|PENDING_RESOLUTION|RESOLVED).'),
|
|
55
59
|
severity: z
|
|
56
60
|
.enum(EXCEPTION_SEVERITIES)
|
|
57
61
|
.optional()
|
|
@@ -93,13 +97,7 @@ export const listExceptionsInputShape = {
|
|
|
93
97
|
'returned nextCursor to page forward (there is no auto-pagination). ' +
|
|
94
98
|
'Cursors are bound to the ordering that minted them — do not switch ' +
|
|
95
99
|
'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).'),
|
|
100
|
+
limit: pageLimit,
|
|
103
101
|
sort_by: z
|
|
104
102
|
.enum(EXCEPTION_SORT_BY)
|
|
105
103
|
.optional()
|
|
@@ -112,44 +110,10 @@ export const listExceptionsInputShape = {
|
|
|
112
110
|
};
|
|
113
111
|
/** Build the list query, omitting unset knobs so the request stays minimal. */
|
|
114
112
|
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;
|
|
113
|
+
return pickQuery(args, [
|
|
114
|
+
'contextId', 'status', 'severity', 'reason', 'assigned_to', 'external_system',
|
|
115
|
+
'date_from', 'date_to', 'cursor', 'limit', 'sort_by', 'sort_order',
|
|
116
|
+
]);
|
|
153
117
|
}
|
|
154
118
|
/**
|
|
155
119
|
* Register `exception_list`. Passes the filter/sort/pagination knobs through and
|
|
@@ -159,20 +123,13 @@ export function buildListQuery(args) {
|
|
|
159
123
|
export function registerExceptionListTool(server) {
|
|
160
124
|
server.registerTool('exception_list', {
|
|
161
125
|
description: 'List reconciliation exceptions (cursor-paginated). Optional filters: ' +
|
|
162
|
-
'contextId (UUID — not a tenant field), status (OPEN|ASSIGNED|RESOLVED), ' +
|
|
126
|
+
'contextId (UUID — not a tenant field), status (OPEN|ASSIGNED|PENDING_RESOLUTION|RESOLVED), ' +
|
|
163
127
|
'severity (LOW|MEDIUM|HIGH|CRITICAL), reason (e.g. UNMATCHED, ' +
|
|
164
128
|
'FEE_VARIANCE), assigned_to, external_system, date_from/date_to (RFC ' +
|
|
165
129
|
'3339), plus sort_by/sort_order and limit (1–200)/cursor. The response ' +
|
|
166
130
|
'carries { items, nextCursor } — paginate by re-calling with the returned ' +
|
|
167
131
|
'nextCursor (do not change sort mid-pagination). No tenant field is accepted.',
|
|
168
132
|
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
|
-
});
|
|
133
|
+
}, queryHandler(buildListQuery, () => EXCEPTIONS_PATH, dispatchToolRequest));
|
|
177
134
|
}
|
|
178
135
|
//# sourceMappingURL=list.js.map
|