@lerianstudio/matcher-mcp 5.0.0-beta.6 → 5.0.0-beta.61
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 +1 -1
- package/dist/config.js +1 -1
- package/dist/config.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/spec/curated-operations.js +4 -0
- package/dist/spec/curated-operations.js.map +1 -1
- package/dist/spec/enum-policy.js +27 -0
- package/dist/spec/enum-policy.js.map +1 -1
- package/dist/spec/openapi.yaml +841 -56
- package/dist/tools/dashboard/aggregates.js +10 -3
- package/dist/tools/dashboard/aggregates.js.map +1 -1
- package/dist/tools/exception/bulk-dispatch.js +9 -2
- package/dist/tools/exception/bulk-dispatch.js.map +1 -1
- package/dist/tools/exception/dispatch.js +10 -3
- package/dist/tools/exception/dispatch.js.map +1 -1
- package/dist/tools/exception/list.js +3 -3
- package/dist/tools/exception/list.js.map +1 -1
- package/dist/tools/exception/shared.js +5 -0
- package/dist/tools/exception/shared.js.map +1 -1
- package/dist/tools/fee-schedule/create.js +5 -1
- package/dist/tools/fee-schedule/create.js.map +1 -1
- package/dist/tools/generic/invoke.js +12 -0
- package/dist/tools/generic/invoke.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/source/create.js +141 -18
- package/dist/tools/source/create.js.map +1 -1
- package/dist/tools/source/update.js +9 -22
- package/dist/tools/source/update.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -215,7 +215,7 @@ read server-side only, never sent to the browser.
|
|
|
215
215
|
| `OPENROUTER_API_KEY` | _(unset)_ | OpenRouter API key. Required when `COPILOT_PROVIDER=openrouter`. Never logged, never returned. |
|
|
216
216
|
| `COPILOT_MODEL` | _(provider default)_ | Model id passed to the selected provider. Anthropic falls back to its own default when unset; OpenRouter has **no** safe default and requires `COPILOT_MODEL` to be set explicitly (an Anthropic id 404s there), otherwise provider construction raises `CopilotModelRequiredError`. |
|
|
217
217
|
| `COPILOT_MAX_TOOL_ITERATIONS` | `8` | Max read-tool rounds the agent loop runs before forcing a stop. Integer `1..20`. |
|
|
218
|
-
| `COPILOT_MAX_TURN_TOKENS` | `
|
|
218
|
+
| `COPILOT_MAX_TURN_TOKENS` | `400000` | Per-turn ceiling on accumulated input+output; the loop truncates between rounds once crossed. Sized to clear a full 8-round turn at the measured ~39.7k tokens/round (2026-09-08), so `COPILOT_MAX_TOOL_ITERATIONS` is what stops a turn. Not a reservation and not a context-window limit — it is compared against usage already billed, so raising it costs nothing on a turn that ends normally. |
|
|
219
219
|
| `COPILOT_RATE_LIMIT_PER_MIN` | `60` | Per-tenant token-bucket refill rate (turns/min). Per-tenant-overridable. |
|
|
220
220
|
| `COPILOT_RATE_LIMIT_BURST` | `20` | Per-tenant token-bucket burst capacity. Per-tenant-overridable. |
|
|
221
221
|
| `COPILOT_TENANT_CONFIG_PATH` | _(unset)_ | Path to a JSON file mapping `tenantId → { provider, model?, apiKey, maxTurnTokens?, rateLimitPerMin?, rateLimitBurst? }` for per-tenant provider/key overrides. Unset = one global config (BYOC single-tenant). |
|
package/dist/config.js
CHANGED
|
@@ -13,7 +13,7 @@ const DEFAULT_MAX_BODY_BYTES = 1_048_576; // 1 MiB
|
|
|
13
13
|
const DEFAULT_OTEL_SERVICE_NAME = 'matcher-mcp';
|
|
14
14
|
const DEFAULT_COPILOT_PROVIDER = 'anthropic';
|
|
15
15
|
const DEFAULT_COPILOT_MAX_TOOL_ITERATIONS = 8;
|
|
16
|
-
const DEFAULT_COPILOT_MAX_TURN_TOKENS =
|
|
16
|
+
const DEFAULT_COPILOT_MAX_TURN_TOKENS = 400_000;
|
|
17
17
|
const DEFAULT_COPILOT_RATE_LIMIT_PER_MIN = 60;
|
|
18
18
|
const DEFAULT_COPILOT_RATE_LIMIT_BURST = 20;
|
|
19
19
|
const DEFAULT_SPEECH_TRANSCRIPTION_REGION = 'sa-east-1';
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAE5E,OAAO,EAAE,gBAAgB,EAA+B,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/matcher/client.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// fetch/abort error — so error handling upstream is uniform.
|
|
15
15
|
import { loadConfig } from '../config.js';
|
|
16
16
|
import { injectTraceContext } from '../observability/otel.js';
|
|
17
|
+
import { deriveDispatchIdempotencyKey, isDispatchPath, } from './idempotency.js';
|
|
17
18
|
/** Thrown by `MatcherClient.request` on any matcher status >= 400 (or transport failure). */
|
|
18
19
|
export class MatcherApiError extends Error {
|
|
19
20
|
/** HTTP status from matcher (synthetic, e.g. 504, for transport failures). */
|
|
@@ -122,6 +123,19 @@ export function createMatcherClient(baseUrl, bearerToken) {
|
|
|
122
123
|
// NOT set content-type and must NOT JSON.stringify. Every other body
|
|
123
124
|
// (the overwhelming majority of requests) keeps the existing JSON path.
|
|
124
125
|
const isFormData = req.body instanceof FormData;
|
|
126
|
+
// A dispatch is the one request whose side effect lands outside matcher, so
|
|
127
|
+
// it is never sent unkeyed: without a key the model's retry after a relay
|
|
128
|
+
// timeout opens a second ticket. The caller's own key always wins — that is
|
|
129
|
+
// how a DELIBERATE second dispatch gets through. Every other route stays
|
|
130
|
+
// opt-in and unkeyed. FormData is excluded because a dispatch body is JSON
|
|
131
|
+
// by contract and a multipart body has no canonical digest form here.
|
|
132
|
+
const idempotencyKey = req.idempotencyKey ??
|
|
133
|
+
(req.method === 'POST' && isDispatchPath(req.path) && !isFormData
|
|
134
|
+
? deriveDispatchIdempotencyKey(req.path, req.body)
|
|
135
|
+
: undefined);
|
|
136
|
+
if (idempotencyKey !== undefined) {
|
|
137
|
+
headers['x-idempotency-key'] = idempotencyKey;
|
|
138
|
+
}
|
|
125
139
|
let outgoingBody;
|
|
126
140
|
if (isFormData) {
|
|
127
141
|
outgoingBody = req.body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/matcher/client.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mDAAmD;AACnD,EAAE;AACF,kFAAkF;AAClF,4EAA4E;AAC5E,gFAAgF;AAChF,2DAA2D;AAC3D,EAAE;AACF,2CAA2C;AAC3C,6EAA6E;AAC7E,+DAA+D;AAC/D,kFAAkF;AAClF,gFAAgF;AAChF,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/matcher/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// Idempotency keys for the requests the relay must never send twice.
|
|
2
|
+
//
|
|
3
|
+
// WHY THIS IS IN THE TRANSPORT LAYER
|
|
4
|
+
// Matcher's idempotency is opt-in on `X-Idempotency-Key`, so an unkeyed request
|
|
5
|
+
// is a request nobody can deduplicate. The relay aborts on its own
|
|
6
|
+
// `MATCHER_TIMEOUT_MS`: a dispatch that succeeds slowly at Jira/ServiceNow still
|
|
7
|
+
// hands the model a transport error, the model retries the tool, and a second
|
|
8
|
+
// ticket opens at the target — which matcher cannot undo.
|
|
9
|
+
//
|
|
10
|
+
// Dispatch reaches matcher through THREE surfaces, not one: `exception_dispatch`,
|
|
11
|
+
// `exception_bulk_dispatch`, and the generic `matcher_invoke` (which can invoke
|
|
12
|
+
// any operation in the spec, dispatch included). Keying only the curated pair
|
|
13
|
+
// would leave the generic surface duplicating tickets. `createMatcherClient` is
|
|
14
|
+
// the single seam all three route through, so the default key is stamped there
|
|
15
|
+
// and this module owns the two rules it needs: which paths are dispatch, and how
|
|
16
|
+
// their key is derived.
|
|
17
|
+
//
|
|
18
|
+
// Every other operation keeps today's unkeyed behaviour on purpose. A key makes
|
|
19
|
+
// a repeat REPLAY, which is right for a dispatch and wrong for, say, a second
|
|
20
|
+
// deliberate `createContext` with the same body.
|
|
21
|
+
import { createHash } from 'node:crypto';
|
|
22
|
+
import { z } from 'zod';
|
|
23
|
+
/** Matcher's own key contract: 1–128 chars of `A-Za-z0-9:_-`. */
|
|
24
|
+
export const IDEMPOTENCY_KEY_PATTERN = /^[A-Za-z0-9:_-]{1,128}$/;
|
|
25
|
+
/**
|
|
26
|
+
* Zod field for the optional caller-chosen key on the tools that can dispatch.
|
|
27
|
+
* Validated against matcher's contract so a malformed key fails at the tool
|
|
28
|
+
* boundary with a readable message instead of as a matcher 400.
|
|
29
|
+
*/
|
|
30
|
+
export const idempotencyKeyInputField = z
|
|
31
|
+
.string()
|
|
32
|
+
.regex(IDEMPOTENCY_KEY_PATTERN, 'idempotencyKey must be 1–128 chars of A-Z a-z 0-9 : _ -')
|
|
33
|
+
.optional()
|
|
34
|
+
.describe('Optional idempotency key. OMIT IT normally: a key derived from this ' +
|
|
35
|
+
'request is sent automatically for dispatch operations, so a retry after ' +
|
|
36
|
+
'a timeout replays the recorded answer instead of dispatching a second ' +
|
|
37
|
+
'time. Supply a distinct value ONLY to deliberately dispatch again after ' +
|
|
38
|
+
'checking the target system — for example after an MTCH-0514 (outcome ' +
|
|
39
|
+
'unconfirmed) answer.');
|
|
40
|
+
/**
|
|
41
|
+
* Is this path one of matcher's two dispatch routes —
|
|
42
|
+
* `/v1/exceptions/{id}/dispatch` and `/v1/exceptions/bulk/dispatch`?
|
|
43
|
+
*/
|
|
44
|
+
export function isDispatchPath(path) {
|
|
45
|
+
return path.startsWith('/v1/exceptions/') && path.endsWith('/dispatch');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Content-derived key for a dispatch request: `dispatch:` + sha256 hex of
|
|
49
|
+
* `path|canonicalBody` (73 chars, inside matcher's 128-char cap and charset).
|
|
50
|
+
*
|
|
51
|
+
* Determinism is the whole point — the model's retry of the same tool call with
|
|
52
|
+
* the same arguments derives the same key, so matcher replays its recorded
|
|
53
|
+
* answer (including a HELD MTCH-0514 refusal) instead of re-executing.
|
|
54
|
+
*
|
|
55
|
+
* `exceptionIds` is sorted for the digest only; the body keeps the caller's
|
|
56
|
+
* order. The same SET of ids is the same request whatever order it arrived in,
|
|
57
|
+
* and a model re-emitting the list differently must not defeat the dedup.
|
|
58
|
+
*/
|
|
59
|
+
export function deriveDispatchIdempotencyKey(path, body) {
|
|
60
|
+
return `dispatch:${createHash('sha256')
|
|
61
|
+
.update(`${path}|${JSON.stringify(canonicalizeBody(body))}`)
|
|
62
|
+
.digest('hex')}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The digest input's body form. Object keys are sorted recursively so the same
|
|
66
|
+
* fields in a different property order hash to the same key — `matcher_invoke`
|
|
67
|
+
* accepts a free-form body, so a model re-emitting equivalent JSON with another
|
|
68
|
+
* key order must not defeat the dedup. Ordinary arrays keep their order (a
|
|
69
|
+
* different element order can be a different request); `exceptionIds` is the
|
|
70
|
+
* one set-semantics exception and is value-sorted.
|
|
71
|
+
*/
|
|
72
|
+
function canonicalizeBody(body) {
|
|
73
|
+
if (body === null || typeof body !== 'object') {
|
|
74
|
+
return body ?? null;
|
|
75
|
+
}
|
|
76
|
+
if (Array.isArray(body)) {
|
|
77
|
+
return body.map(canonicalizeBody);
|
|
78
|
+
}
|
|
79
|
+
const record = body;
|
|
80
|
+
return Object.fromEntries(Object.keys(record)
|
|
81
|
+
// `JSON.stringify` omits undefined-valued properties from the wire body,
|
|
82
|
+
// so they must not reach the digest either: `{ queue: undefined }` and
|
|
83
|
+
// `{}` send the same request and must derive the same key. Explicit
|
|
84
|
+
// nulls survive (they are on the wire too).
|
|
85
|
+
.filter((key) => record[key] !== undefined)
|
|
86
|
+
.sort()
|
|
87
|
+
.map((key) => [
|
|
88
|
+
key,
|
|
89
|
+
key === 'exceptionIds' && Array.isArray(record[key])
|
|
90
|
+
? [...record[key]].map(String).sort()
|
|
91
|
+
: canonicalizeBody(record[key]),
|
|
92
|
+
]));
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=idempotency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../src/matcher/idempotency.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,qCAAqC;AACrC,gFAAgF;AAChF,mEAAmE;AACnE,iFAAiF;AACjF,8EAA8E;AAC9E,0DAA0D;AAC1D,EAAE;AACF,kFAAkF;AAClF,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,wBAAwB;AACxB,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,iDAAiD;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,iEAAiE;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,EAAE;KACR,KAAK,CACJ,uBAAuB,EACvB,yDAAyD,CAC1D;KACA,QAAQ,EAAE;KACV,QAAQ,CACP,sEAAsE;IACpE,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,uEAAuE;IACvE,sBAAsB,CACzB,CAAA;AAEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAAY,EACZ,IAAa;IAEb,OAAO,YAAY,UAAU,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;SAC3D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,IAAI,IAAI,IAAI,CAAA;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;IAED,MAAM,MAAM,GAAG,IAA+B,CAAA;IAC9C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACjB,yEAAyE;QACzE,uEAAuE;QACvE,oEAAoE;QACpE,4CAA4C;SAC3C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;SAC1C,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACZ,GAAG;QACH,GAAG,KAAK,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC,GAAI,MAAM,CAAC,GAAG,CAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;YACpD,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAClC,CAAC,CACL,CAAA;AACH,CAAC"}
|
|
@@ -172,6 +172,10 @@ export const GENERIC_ONLY_OPERATION_IDS = [
|
|
|
172
172
|
// required knowing the operationId.)
|
|
173
173
|
'admin-suspend-workspace', // PUT /v1/admin/workspaces/{slug}/suspend
|
|
174
174
|
'admin-reactivate-workspace', // PUT /v1/admin/workspaces/{slug}/reactivate
|
|
175
|
+
// The enterprise plan assignment joins its two siblings above, and is the one of the
|
|
176
|
+
// four an agent must least be able to reach: it changes what a company is charged, on
|
|
177
|
+
// a workspace named in the path rather than in the caller's own token.
|
|
178
|
+
'admin-assign-workspace-plan', // PUT /v1/admin/workspaces/{slug}/plan
|
|
175
179
|
// The backoffice invoicing read belongs with its two siblings above and NOT with the
|
|
176
180
|
// curated tools, for a reason stronger than "it is an operator surface": it is
|
|
177
181
|
// addressed by slug and answers with another company's name, address and CPF/CNPJ.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curated-operations.js","sourceRoot":"","sources":["../../src/spec/curated-operations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"curated-operations.js","sourceRoot":"","sources":["../../src/spec/curated-operations.ts"],"names":[],"mappings":"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"}
|
package/dist/spec/enum-policy.js
CHANGED
|
@@ -71,6 +71,33 @@ export const INTENTIONALLY_OMITTED_FIELDS = [
|
|
|
71
71
|
{ operationId: 'createContext', fieldPath: 'sources[].side', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
72
72
|
{ operationId: 'createContext', fieldPath: 'sources[].config', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
73
73
|
{ operationId: 'createContext', fieldPath: 'sources[].mapping', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
74
|
+
// The twelve entries below are the SAME decision as `sources[].config` above,
|
|
75
|
+
// restated for paths that did not exist when it was written. A source's config
|
|
76
|
+
// used to be a free-form object in the contract; it now publishes seven reserved
|
|
77
|
+
// keys, and this list matches by EXACT path, so the parent entry does not cover
|
|
78
|
+
// its new children. Nothing was re-decided: inline sources[] is still an opaque
|
|
79
|
+
// record by curation (the tool documents "prefer context_create with no sources
|
|
80
|
+
// then source_create"), and source_create/source_update DO type all seven.
|
|
81
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.dialect', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
82
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.dialect.encoding', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
83
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.dialect.delimiter', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
84
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.dialect.decimal_style', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
85
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.dialect.date_style', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
86
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.duplicate_policy', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
87
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.duplicate_key', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
88
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.blank_external_id', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
89
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.camt053', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
90
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.camt053.date_basis', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
91
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.camt053.external_id_source', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
92
|
+
{ operationId: 'createContext', fieldPath: 'sources[].config.fail_on_error_rate_percent', reason: 'inline sources[] passed through as an opaque record; matcher validates' },
|
|
93
|
+
// NOTHING for duplicate_key_changed_at, deliberately. It used to need three
|
|
94
|
+
// entries here — one per request body that declared it — because the tools chose
|
|
95
|
+
// not to expose a key the server stamps and discards. The REQUEST SCHEMAS no
|
|
96
|
+
// longer declare it at all (dto.SourceConfigRequest removes it; it is published on
|
|
97
|
+
// responses only), so the gate never looks for it and an entry would record the
|
|
98
|
+
// omission of a field that does not exist. The tools do not OFFER the key and do
|
|
99
|
+
// not refuse it either: matcher discards a client-sent stamp, and refusing would
|
|
100
|
+
// fail a read-modify-write the server accepts.
|
|
74
101
|
];
|
|
75
102
|
/**
|
|
76
103
|
* Spec-required fields the curated tools satisfy by INJECTING the value in the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum-policy.js","sourceRoot":"","sources":["../../src/spec/enum-policy.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,iFAAiF;AACjF,kCAAkC;AAClC,EAAE;AACF,6DAA6D;AAC7D,wEAAwE;AACxE,iFAAiF;AACjF,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAChF,kFAAkF;AAClF,6EAA6E;AAC7E,8EAA8E;AAC9E,yDAAyD;AACzD,EAAE;AACF,0BAA0B;AAC1B,yEAAyE;AACzE,0EAA0E;AAC1E,wEAAwE;AACxE,0EAA0E;AAC1E,gFAAgF;AAChF,+EAA+E;AAC/E,uEAAuE;AACvE,EAAE;AACF,kFAAkF;AAClF,yEAAyE;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAuC/D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAsC;IAC1E,2EAA2E;IAC3E,8EAA8E;IAC9E,4DAA4D;IAC5D,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE;IACtD,4EAA4E;IAC5E,8DAA8D;IAC9D,mCAAmC;IACnC,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE;CACnD,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAyC;IAChF,uEAAuE;IACvE,gFAAgF;IAChF,+EAA+E;IAC/E,0EAA0E;IAC1E,4EAA4E;IAC5E,iFAAiF;IACjF,gFAAgF;IAChF,sEAAsE;IACtE,iCAAiC;IACjC,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,sEAAsE,EAAE;IAC/I,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,sEAAsE,EAAE;IAC3I,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,sEAAsE,EAAE;IAC7I,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,wEAAwE,EAAE;IAC/I,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,wEAAwE,EAAE;IAC/I,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,wEAAwE,EAAE;IAC/I,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,wEAAwE,EAAE;IACjJ,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,wEAAwE,EAAE;
|
|
1
|
+
{"version":3,"file":"enum-policy.js","sourceRoot":"","sources":["../../src/spec/enum-policy.ts"],"names":[],"mappings":"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"}
|