@lerianstudio/matcher-mcp 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/config.js +33 -0
  2. package/dist/config.js.map +1 -1
  3. package/dist/matcher/client.js +13 -4
  4. package/dist/matcher/client.js.map +1 -1
  5. package/dist/server.js +7 -0
  6. package/dist/server.js.map +1 -1
  7. package/dist/spec/curated-operations.js +14 -9
  8. package/dist/spec/curated-operations.js.map +1 -1
  9. package/dist/spec/index.js +15 -0
  10. package/dist/spec/index.js.map +1 -1
  11. package/dist/spec/openapi.yaml +22 -4
  12. package/dist/tools/context/index.js +17 -10
  13. package/dist/tools/context/index.js.map +1 -1
  14. package/dist/tools/context/setup-progress.js +56 -0
  15. package/dist/tools/context/setup-progress.js.map +1 -0
  16. package/dist/tools/dashboard/aggregates.js +5 -2
  17. package/dist/tools/dashboard/aggregates.js.map +1 -1
  18. package/dist/tools/dashboard/cash-impact.js +4 -3
  19. package/dist/tools/dashboard/cash-impact.js.map +1 -1
  20. package/dist/tools/dashboard/match-rate.js +4 -2
  21. package/dist/tools/dashboard/match-rate.js.map +1 -1
  22. package/dist/tools/dashboard/metrics.js +4 -3
  23. package/dist/tools/dashboard/metrics.js.map +1 -1
  24. package/dist/tools/dashboard/shared.js +16 -4
  25. package/dist/tools/dashboard/shared.js.map +1 -1
  26. package/dist/tools/dashboard/sla.js +4 -3
  27. package/dist/tools/dashboard/sla.js.map +1 -1
  28. package/dist/tools/dashboard/source-breakdown.js +4 -3
  29. package/dist/tools/dashboard/source-breakdown.js.map +1 -1
  30. package/dist/tools/dashboard/volume.js +5 -3
  31. package/dist/tools/dashboard/volume.js.map +1 -1
  32. package/dist/tools/fee-schedule/create.js +17 -6
  33. package/dist/tools/fee-schedule/create.js.map +1 -1
  34. package/dist/tools/field-map/create.js +62 -0
  35. package/dist/tools/field-map/create.js.map +1 -0
  36. package/dist/tools/field-map/delete.js +35 -0
  37. package/dist/tools/field-map/delete.js.map +1 -0
  38. package/dist/tools/field-map/get.js +43 -0
  39. package/dist/tools/field-map/get.js.map +1 -0
  40. package/dist/tools/field-map/index.js +31 -0
  41. package/dist/tools/field-map/index.js.map +1 -0
  42. package/dist/tools/field-map/list.js +64 -0
  43. package/dist/tools/field-map/list.js.map +1 -0
  44. package/dist/tools/field-map/shared.js +114 -0
  45. package/dist/tools/field-map/shared.js.map +1 -0
  46. package/dist/tools/field-map/update.js +46 -0
  47. package/dist/tools/field-map/update.js.map +1 -0
  48. package/dist/tools/generic/describe-operation.js +40 -0
  49. package/dist/tools/generic/describe-operation.js.map +1 -1
  50. package/dist/tools/generic/invoke.js +95 -7
  51. package/dist/tools/generic/invoke.js.map +1 -1
  52. package/dist/tools/ingestion/fetch-source.js +105 -0
  53. package/dist/tools/ingestion/fetch-source.js.map +1 -0
  54. package/dist/tools/ingestion/index.js +10 -8
  55. package/dist/tools/ingestion/index.js.map +1 -1
  56. package/dist/tools/ingestion/shared.js +8 -3
  57. package/dist/tools/ingestion/shared.js.map +1 -1
  58. package/dist/tools/ingestion/upload.js +166 -0
  59. package/dist/tools/ingestion/upload.js.map +1 -0
  60. package/dist/tools/match-rule/create.js +13 -10
  61. package/dist/tools/match-rule/create.js.map +1 -1
  62. package/dist/tools/match-rule/list.js +2 -2
  63. package/dist/tools/match-rule/list.js.map +1 -1
  64. package/dist/tools/match-rule/shared.js +23 -0
  65. package/dist/tools/match-rule/shared.js.map +1 -1
  66. package/dist/tools/match-rule/update.js +6 -6
  67. package/dist/tools/match-rule/update.js.map +1 -1
  68. package/dist/tools/matching/get.js +38 -15
  69. package/dist/tools/matching/get.js.map +1 -1
  70. package/dist/tools/matching/shared.js +33 -3
  71. package/dist/tools/matching/shared.js.map +1 -1
  72. package/dist/tools/matching/start.js +38 -12
  73. package/dist/tools/matching/start.js.map +1 -1
  74. package/dist/tools/report/count-exceptions.js +3 -2
  75. package/dist/tools/report/count-exceptions.js.map +1 -1
  76. package/dist/tools/report/count-matched.js +3 -2
  77. package/dist/tools/report/count-matched.js.map +1 -1
  78. package/dist/tools/report/count-transactions.js +3 -2
  79. package/dist/tools/report/count-transactions.js.map +1 -1
  80. package/dist/tools/report/count-unmatched.js +3 -2
  81. package/dist/tools/report/count-unmatched.js.map +1 -1
  82. package/dist/tools/report/export-exceptions.js +6 -4
  83. package/dist/tools/report/export-exceptions.js.map +1 -1
  84. package/dist/tools/report/export-matched.js +3 -1
  85. package/dist/tools/report/export-matched.js.map +1 -1
  86. package/dist/tools/report/export-summary.js +3 -1
  87. package/dist/tools/report/export-summary.js.map +1 -1
  88. package/dist/tools/report/export-unmatched.js +5 -3
  89. package/dist/tools/report/export-unmatched.js.map +1 -1
  90. package/dist/tools/report/export-variance.js +3 -1
  91. package/dist/tools/report/export-variance.js.map +1 -1
  92. package/dist/tools/report/matched.js +5 -3
  93. package/dist/tools/report/matched.js.map +1 -1
  94. package/dist/tools/report/shared.js +16 -4
  95. package/dist/tools/report/shared.js.map +1 -1
  96. package/dist/tools/report/summary.js +5 -3
  97. package/dist/tools/report/summary.js.map +1 -1
  98. package/dist/tools/report/unmatched.js +5 -3
  99. package/dist/tools/report/unmatched.js.map +1 -1
  100. package/dist/tools/report/variance.js +5 -3
  101. package/dist/tools/report/variance.js.map +1 -1
  102. package/package.json +1 -1
@@ -13,9 +13,46 @@
13
13
  // the closest known ids by a cheap edit distance and name them, plus point the
14
14
  // model back at matcher_list_operations. The model then self-corrects (typo, or
15
15
  // browse the list) instead of guessing again blind.
16
+ //
17
+ // Edge case: a non-JSON-body operation (multipart/form-data, application/pdf,
18
+ // application/octet-stream — see IndexedOperation.hasNonJsonRequestBody). The
19
+ // descriptor surfaces `notInvokable` with the SAME guidance matcher_invoke
20
+ // would raise, so the model learns the trap from describe alone and never
21
+ // needs to hit invoke's short-circuit to find out.
16
22
  import { z } from 'zod';
17
23
  /** How many close matches to name in an unknown-id error. */
18
24
  const MAX_SUGGESTIONS = 5;
25
+ /**
26
+ * Per-operation guidance for the known non-JSON-body traps. Keyed by
27
+ * operationId; an op hitting the non-JSON guard with no entry here gets the
28
+ * generic line in nonJsonBodyGuidance instead. Add an entry whenever a
29
+ * non-JSON op gets a curated replacement or a clearer story than the generic
30
+ * line.
31
+ */
32
+ const NON_JSON_BODY_GUIDANCE = {
33
+ uploadFile: 'uploadFile takes a multipart/form-data body, which this JSON relay ' +
34
+ 'cannot construct. Use the curated ingestion_upload tool instead — it ' +
35
+ 'accepts the file as contentBase64 (small files) or fileUrl (the relay ' +
36
+ 'fetches the bytes server-side) and rebuilds the multipart request for you.',
37
+ extractDocument: 'extractDocument takes the document as a raw application/pdf body, not ' +
38
+ 'JSON, which this relay cannot construct. There is no MCP path for this ' +
39
+ 'operation today — it needs a direct multipart/document upload to the ' +
40
+ 'matcher HTTP API, outside this relay.',
41
+ };
42
+ /**
43
+ * The actionable guidance for a non-JSON-body operation: the curated entry in
44
+ * NON_JSON_BODY_GUIDANCE when known, else a generic explanation. Used by both
45
+ * matcher_invoke's pre-flight short-circuit (NonJsonRequestBodyError) and
46
+ * matcher_describe_operation's `notInvokable` field, so the two surfaces say
47
+ * the identical thing about the identical op.
48
+ */
49
+ export function nonJsonBodyGuidance(operationId) {
50
+ return (NON_JSON_BODY_GUIDANCE[operationId] ??
51
+ `"${operationId}" takes a non-JSON request body (e.g. multipart/form-data ` +
52
+ 'or a raw binary content type), which this JSON relay cannot construct. ' +
53
+ 'It is not reachable via matcher_invoke; check matcher_list_operations / ' +
54
+ 'the matcher HTTP API docs for a non-MCP path.');
55
+ }
19
56
  /**
20
57
  * Thrown when `describe` is asked for an operationId not in the index. Carries
21
58
  * the offending id and the closest known ids so the tool layer can render a
@@ -99,6 +136,9 @@ function toDescriptor(op) {
99
136
  ...(op.requestBodySchema !== undefined
100
137
  ? { requestBodySchema: op.requestBodySchema }
101
138
  : {}),
139
+ ...(op.hasNonJsonRequestBody
140
+ ? { notInvokable: nonJsonBodyGuidance(op.operationId) }
141
+ : {}),
102
142
  };
103
143
  }
104
144
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"describe-operation.js","sourceRoot":"","sources":["../../../src/tools/generic/describe-operation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe-operation.js","sourceRoot":"","sources":["../../../src/tools/generic/describe-operation.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@
5
5
  // 1. Look up the operation in the boot index. Unknown id → close-matches error
6
6
  // (reuses describe-operation's suggestion machinery for one consistent
7
7
  // "did you mean" experience).
8
+ // 1b. NON-JSON BODY GUARD: an op whose requestBody has no application/json
9
+ // content (multipart/form-data, application/pdf, application/octet-stream)
10
+ // can never be carried by this JSON relay. Short-circuit here, before any
11
+ // other work, with actionable guidance — never attempt the call and let it
12
+ // fail cryptically on the backend. See NON_JSON_BODY_GUIDANCE below.
8
13
  // 2. Substitute path params into the operation's path template. A missing
9
14
  // REQUIRED path param → error naming exactly which one.
10
15
  // 3. TENANT GUARDRAIL (third rail — tenant isolation): reject any attempt to
@@ -12,7 +17,9 @@
12
17
  // Tenant identity derives solely from the relayed JWT — never from input.
13
18
  // 4. Validate `body` against the operation's request-body JSON Schema with
14
19
  // ajv. On failure, return the ajv errors WITHOUT sending the request — no
15
- // round-trip is wasted on a call matcher would reject anyway.
20
+ // round-trip is wasted on a call matcher would reject anyway. Errors are
21
+ // rendered into readable lines (see formatAjvErrors) alongside the raw
22
+ // ajv detail.
16
23
  // 5. requireMatcherClient() (fail-closed on a missing token), then
17
24
  // client.request({ method, path, query, body }).
18
25
  // 6. On MatcherApiError, map the RFC 9457 problem via the shared toToolError
@@ -32,7 +39,7 @@ import { Ajv2020 } from 'ajv/dist/2020.js';
32
39
  import { z } from 'zod';
33
40
  import { requireMatcherClient, UnauthenticatedError, } from '../../auth/request-token.js';
34
41
  import { MatcherApiError, } from '../../matcher/client.js';
35
- import { closestOperationIds } from './describe-operation.js';
42
+ import { closestOperationIds, nonJsonBodyGuidance } from './describe-operation.js';
36
43
  import { isMatcherApiError, toToolError } from '../tool-error.js';
37
44
  /** Keys that would let a caller assert a tenant — categorically forbidden. */
38
45
  const FORBIDDEN_TENANT_KEYS = ['tenant_id', 'tenantId', 'tenant'];
@@ -76,6 +83,18 @@ export class MissingPathParamError extends InvokeError {
76
83
  this.paramName = paramName;
77
84
  }
78
85
  }
86
+ /**
87
+ * The requested op's requestBody has no application/json content — the relay
88
+ * cannot build it, so invoke refuses before attempting the call. Carries
89
+ * curated, per-op guidance when known (see nonJsonBodyGuidance), else a
90
+ * generic explanation.
91
+ */
92
+ export class NonJsonRequestBodyError extends InvokeError {
93
+ constructor(operationId) {
94
+ super(nonJsonBodyGuidance(operationId));
95
+ this.name = 'NonJsonRequestBodyError';
96
+ }
97
+ }
79
98
  /** A tenant_id/tenantId/tenant key was supplied — the tenant guardrail rejection. */
80
99
  export class TenantGuardrailError extends InvokeError {
81
100
  key;
@@ -89,14 +108,75 @@ export class TenantGuardrailError extends InvokeError {
89
108
  this.location = location;
90
109
  }
91
110
  }
111
+ /**
112
+ * Render an ajv instancePath like `/items/0/priority` as a dotted, bracketed
113
+ * field path a human reads naturally: `items[0].priority`. An empty
114
+ * instancePath (the error is on the body root) renders as `(root)`.
115
+ */
116
+ function readableFieldPath(instancePath) {
117
+ if (instancePath === '') {
118
+ return '(root)';
119
+ }
120
+ return instancePath
121
+ .split('/')
122
+ .filter((segment) => segment.length > 0)
123
+ .map((segment) => (/^\d+$/.test(segment) ? `[${segment}]` : `.${segment}`))
124
+ .join('')
125
+ .replace(/^\./, '');
126
+ }
127
+ /**
128
+ * Render one ajv error as a single human-readable line: the field path, what
129
+ * is wrong, and — for `enum` — the allowed values. Falls back to ajv's own
130
+ * `message` for keywords without bespoke phrasing, so an unanticipated
131
+ * keyword still reads as a sentence rather than disappearing.
132
+ */
133
+ function formatAjvError(err) {
134
+ switch (err.keyword) {
135
+ case 'required': {
136
+ const missing = err.params
137
+ .missingProperty;
138
+ const parent = readableFieldPath(err.instancePath);
139
+ const field = typeof missing === 'string' ? missing : String(missing);
140
+ const at = parent === '(root)' ? field : `${parent}.${field}`;
141
+ return `"${at}" is required but missing.`;
142
+ }
143
+ case 'type': {
144
+ const expected = err.params.type;
145
+ return `"${readableFieldPath(err.instancePath)}" must be of type ${String(expected)}.`;
146
+ }
147
+ case 'enum': {
148
+ const allowed = err.params
149
+ .allowedValues;
150
+ const values = Array.isArray(allowed) ? allowed.join(', ') : '';
151
+ return (`"${readableFieldPath(err.instancePath)}" must be one of: ${values}.`);
152
+ }
153
+ default: {
154
+ const path = readableFieldPath(err.instancePath);
155
+ const detail = err.message ?? 'failed validation';
156
+ return `"${path}" ${detail}.`;
157
+ }
158
+ }
159
+ }
160
+ /**
161
+ * Format a full ajv error list into the readable-summary lines led at the
162
+ * top of a BodyValidationError message. Pure and order-preserving — ajv's
163
+ * `allErrors: true` already gives one entry per violation.
164
+ */
165
+ export function formatAjvErrors(errors) {
166
+ return errors.map(formatAjvError);
167
+ }
92
168
  /** Body failed JSON-Schema validation — carries the ajv errors for the model. */
93
169
  export class BodyValidationError extends InvokeError {
94
170
  validationErrors;
171
+ readableErrors;
95
172
  constructor(operationId, validationErrors) {
96
- super(`Request body failed validation for operation "${operationId}". ` +
97
- 'Fix the listed errors and retry; no request was sent.');
173
+ const readable = formatAjvErrors(validationErrors);
174
+ super(`Request body failed validation for operation "${operationId}":\n` +
175
+ readable.map((line) => ` - ${line}`).join('\n') +
176
+ '\nFix the listed errors and retry; no request was sent.');
98
177
  this.name = 'BodyValidationError';
99
178
  this.validationErrors = validationErrors;
179
+ this.readableErrors = readable;
100
180
  }
101
181
  }
102
182
  /**
@@ -169,9 +249,9 @@ export class Invoker {
169
249
  }
170
250
  /**
171
251
  * Build the MatcherRequest for an invoke input, running steps 1–4 (lookup,
172
- * path substitution, tenant guardrail, body validation). Throws an InvokeError
173
- * subclass on any pre-flight failure — nothing reaches matcher until this
174
- * returns a request.
252
+ * non-JSON body guard, path substitution, tenant guardrail, body validation).
253
+ * Throws an InvokeError subclass on any pre-flight failure — nothing reaches
254
+ * matcher until this returns a request.
175
255
  */
176
256
  assemble(input) {
177
257
  // (1) lookup
@@ -179,6 +259,13 @@ export class Invoker {
179
259
  if (op === undefined) {
180
260
  throw new InvokeUnknownOperationError(input.operationId, closestOperationIds(this.index, input.operationId));
181
261
  }
262
+ // (1b) non-JSON body guard — refuse BEFORE any other work. These ops
263
+ // (uploadFile, extractDocument, and any future multipart/binary-only
264
+ // operation) always fail cryptically against this JSON relay; short-circuit
265
+ // with actionable guidance instead of attempting the call.
266
+ if (op.hasNonJsonRequestBody) {
267
+ throw new NonJsonRequestBodyError(op.operationId);
268
+ }
182
269
  // Coerce a stringified body back to its real value before any inspection,
183
270
  // so the guardrail and validation below see the actual object/array a harness
184
271
  // may have serialized as a JSON string. See normalizeBody.
@@ -222,6 +309,7 @@ export class Invoker {
222
309
  function preflightToToolError(err) {
223
310
  const detail = { error: err.name, message: err.message };
224
311
  if (err instanceof BodyValidationError) {
312
+ detail.readableErrors = err.readableErrors;
225
313
  detail.validationErrors = err.validationErrors;
226
314
  }
227
315
  else if (err instanceof InvokeUnknownOperationError) {
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/tools/generic/invoke.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/tools/generic/invoke.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ // SSRF-guarded fetch for `ingestion_upload`'s upload-by-reference path
2
+ // (`fileUrl`). Base64-in-JSON doesn't scale — a real file inflates ~33% and
3
+ // burns the calling LLM's output tokens one-for-one. This lets the client pass
4
+ // a short URL instead; the relay fetches the bytes server-side and rebuilds
5
+ // the multipart upload exactly as the base64 path does.
6
+ //
7
+ // The relay is a network-reachable, credential-bearing process: an unguarded
8
+ // "fetch whatever URL the client gives you" is textbook SSRF (cloud metadata
9
+ // endpoints, internal services, redirect chains to either). Every check below
10
+ // is fail-closed — on ambiguity or partial information, reject.
11
+ /**
12
+ * Fetch a source file from `fileUrl` under a strict SSRF allowlist, returning
13
+ * the raw bytes. Throws a plain `Error` with a clear, secret-free message on
14
+ * any rejection — there is no token on this outbound call to begin with (it
15
+ * targets an external resource, not matcher), so messages may freely include
16
+ * the URL/hostname for operator debugging.
17
+ */
18
+ export async function fetchSourceFile(fileUrl, opts) {
19
+ let url;
20
+ try {
21
+ url = new URL(fileUrl);
22
+ }
23
+ catch {
24
+ throw new Error(`invalid fileUrl: ${fileUrl} (not a parseable URL)`);
25
+ }
26
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') {
27
+ throw new Error(`invalid fileUrl: ${fileUrl} (scheme must be http or https, got ${url.protocol})`);
28
+ }
29
+ // Exact, case-insensitive hostname match only — no substring/suffix
30
+ // matching. An empty allowlist (the default) rejects every host.
31
+ // NOTE: this validates the hostname string, not the resolved IP. Only
32
+ // allowlist non-rebindable/static internal names (e.g. host.docker.internal),
33
+ // never external domains whose DNS you don't control (DNS-rebinding vector).
34
+ const hostname = url.hostname.toLowerCase();
35
+ const allowed = opts.allowedHosts.some((h) => h.toLowerCase() === hostname);
36
+ if (!allowed) {
37
+ throw new Error(`fileUrl host "${url.hostname}" is not in the upload allowlist ` +
38
+ '(MCP_UPLOAD_ALLOWED_HOSTS) — add it there to permit this host');
39
+ }
40
+ const controller = new AbortController();
41
+ const timer = setTimeout(() => controller.abort(), opts.timeoutMs);
42
+ let res;
43
+ try {
44
+ res = await fetch(fileUrl, {
45
+ // A redirect must NOT be silently followed — redirect-to-internal (e.g.
46
+ // an allowlisted host 302-ing to a metadata IP) is a classic SSRF
47
+ // bypass. 'error' makes fetch reject the promise on any redirect.
48
+ redirect: 'error',
49
+ signal: controller.signal,
50
+ });
51
+ }
52
+ catch (err) {
53
+ if (controller.signal.aborted) {
54
+ throw new Error(`fetching fileUrl timed out after ${opts.timeoutMs}ms: ${fileUrl}`, { cause: err });
55
+ }
56
+ const detail = err instanceof Error ? err.message : 'unknown fetch error';
57
+ throw new Error(`failed to fetch fileUrl (redirects are rejected; this may be why): ${fileUrl} — ${detail}`, { cause: err });
58
+ }
59
+ finally {
60
+ clearTimeout(timer);
61
+ }
62
+ if (!res.ok) {
63
+ throw new Error(`fileUrl returned ${res.status} ${res.statusText}: ${fileUrl}`);
64
+ }
65
+ // Reject on a declared oversize BEFORE reading the body.
66
+ const declaredLength = res.headers.get('content-length');
67
+ if (declaredLength !== undefined && declaredLength !== null) {
68
+ const declared = Number(declaredLength);
69
+ if (Number.isFinite(declared) && declared > opts.maxBytes) {
70
+ throw new Error(`fileUrl response is ${declared} bytes, exceeding the ${opts.maxBytes}-byte limit (MCP_UPLOAD_MAX_FETCH_BYTES)`);
71
+ }
72
+ }
73
+ if (!res.body) {
74
+ return new Uint8Array(0);
75
+ }
76
+ // Enforce the cap WHILE streaming so a source that omits or understates
77
+ // Content-Length can't force an unbounded read into the shared relay.
78
+ const reader = res.body.getReader();
79
+ const chunks = [];
80
+ let total = 0;
81
+ try {
82
+ for (;;) {
83
+ const { done, value } = await reader.read();
84
+ if (done)
85
+ break;
86
+ total += value.byteLength;
87
+ if (total > opts.maxBytes) {
88
+ await reader.cancel();
89
+ throw new Error(`fileUrl response exceeds the ${opts.maxBytes}-byte limit (MCP_UPLOAD_MAX_FETCH_BYTES)`);
90
+ }
91
+ chunks.push(value);
92
+ }
93
+ }
94
+ finally {
95
+ reader.releaseLock();
96
+ }
97
+ const buf = new Uint8Array(total);
98
+ let offset = 0;
99
+ for (const chunk of chunks) {
100
+ buf.set(chunk, offset);
101
+ offset += chunk.byteLength;
102
+ }
103
+ return buf;
104
+ }
105
+ //# sourceMappingURL=fetch-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-source.js","sourceRoot":"","sources":["../../../src/tools/ingestion/fetch-source.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,24 @@
1
- // Curated ingestion vertical: six typed tools over the matcher import lifecycle
2
- // of a reconciliation context — list jobs, get a job, list a job's per-row
3
- // errors, list a job's transactions, search transactions, and ignore a
4
- // transaction. Every op is fully context-nested under
1
+ // Curated ingestion vertical: seven typed tools over the matcher import
2
+ // lifecycle of a reconciliation context — list jobs, get a job, list a job's
3
+ // per-row errors, list a job's transactions, search transactions, ignore a
4
+ // transaction, and upload a file. Every op is fully context-nested under
5
5
  // /v1/imports/contexts/{contextId}/... Each tool shares the fail-closed relay
6
6
  // (shared.ts) and the RFC 9457 → tool-error mapping (toToolError) with the
7
7
  // generic surface, so curated and generic map matcher errors identically. No
8
8
  // tool carries a tenant field; contextId is a routing path param matcher
9
9
  // validates against the relayed token's tenant.
10
10
  //
11
- // NOTE: uploadFile + extractDocument are intentionally NOT here — their
12
- // multipart/form-data binary body cannot be expressed by a JSON tool, so they
13
- // stay on the generic invoke surface.
11
+ // NOTE: uploadFile is now curated as ingestion_upload (base64-in-JSON, relay
12
+ // rebuilds the multipart request see upload.ts). extractDocument stays
13
+ // generic-only: same multipart/form-data binary-body shape, not yet curated.
14
14
  import { registerIngestionJobErrorsListTool } from './job-errors-list.js';
15
15
  import { registerIngestionJobGetTool } from './job-get.js';
16
16
  import { registerIngestionJobTransactionsListTool } from './job-transactions-list.js';
17
17
  import { registerIngestionJobsListTool } from './jobs-list.js';
18
18
  import { registerIngestionTransactionIgnoreTool } from './transaction-ignore.js';
19
19
  import { registerIngestionTransactionsSearchTool } from './transactions-search.js';
20
- /** Register all six curated ingestion tools on the given server. */
20
+ import { registerIngestionUploadTool } from './upload.js';
21
+ /** Register all seven curated ingestion tools on the given server. */
21
22
  export function registerIngestionTools(server) {
22
23
  registerIngestionJobsListTool(server);
23
24
  registerIngestionJobGetTool(server);
@@ -25,5 +26,6 @@ export function registerIngestionTools(server) {
25
26
  registerIngestionJobTransactionsListTool(server);
26
27
  registerIngestionTransactionsSearchTool(server);
27
28
  registerIngestionTransactionIgnoreTool(server);
29
+ registerIngestionUploadTool(server);
28
30
  }
29
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/ingestion/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,uEAAuE;AACvE,sDAAsD;AACtD,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,gDAAgD;AAChD,EAAE;AACF,wEAAwE;AACxE,8EAA8E;AAC9E,sCAAsC;AAItC,OAAO,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,wCAAwC,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,sCAAsC,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,EAAE,uCAAuC,EAAE,MAAM,0BAA0B,CAAA;AAElF,oEAAoE;AACpE,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,6BAA6B,CAAC,MAAM,CAAC,CAAA;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IACnC,kCAAkC,CAAC,MAAM,CAAC,CAAA;IAC1C,wCAAwC,CAAC,MAAM,CAAC,CAAA;IAChD,uCAAuC,CAAC,MAAM,CAAC,CAAA;IAC/C,sCAAsC,CAAC,MAAM,CAAC,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/ingestion/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,6EAA6E;AAC7E,2EAA2E;AAC3E,yEAAyE;AACzE,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,gDAAgD;AAChD,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAI7E,OAAO,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,wCAAwC,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,sCAAsC,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,EAAE,uCAAuC,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAEzD,sEAAsE;AACtE,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,6BAA6B,CAAC,MAAM,CAAC,CAAA;IACrC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IACnC,kCAAkC,CAAC,MAAM,CAAC,CAAA;IAC1C,wCAAwC,CAAC,MAAM,CAAC,CAAA;IAChD,uCAAuC,CAAC,MAAM,CAAC,CAAA;IAC/C,sCAAsC,CAAC,MAAM,CAAC,CAAA;IAC9C,2BAA2B,CAAC,MAAM,CAAC,CAAA;AACrC,CAAC"}
@@ -9,9 +9,10 @@
9
9
  // "build the request") and so curated + generic surfaces map matcher errors
10
10
  // through the identical path (toToolError).
11
11
  //
12
- // NOTE: uploadFile + extractDocument are NOT part of this family they take a
13
- // multipart/form-data binary body a JSON tool cannot express, so they stay on
14
- // the generic invoke surface.
12
+ // NOTE: uploadFile is now curated as ingestion_upload (upload.ts)its
13
+ // multipart/form-data binary body is JSON tool-shaped as base64, and the relay
14
+ // (matcher/client.ts) rebuilds the real multipart request. extractDocument
15
+ // stays generic-only (same binary-body shape, not yet curated).
15
16
  //
16
17
  // Security: the bearer token is never read here directly — requireMatcherClient
17
18
  // owns the request-scoped relay and fails closed when no usable credential was
@@ -45,6 +46,10 @@ export function contextTransactionsSearchPath(contextId) {
45
46
  export function contextTransactionIgnorePath(contextId, transactionId) {
46
47
  return `/v1/imports/contexts/${encodeURIComponent(contextId)}/transactions/${encodeURIComponent(transactionId)}/ignore`;
47
48
  }
49
+ /** Build a source's file-upload sub-path (ingestion_upload) — both ids encoded. */
50
+ export function contextSourceUploadPath(contextId, sourceId) {
51
+ return `/v1/imports/contexts/${encodeURIComponent(contextId)}/sources/${encodeURIComponent(sourceId)}/upload`;
52
+ }
48
53
  /**
49
54
  * Run one assembled request through the relay: fail-closed auth, dispatch, and
50
55
  * RFC 9457 → tool-error mapping — identical to the generic invoke's dispatch so
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/ingestion/shared.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,2EAA2E;AAC3E,4EAA4E;AAC5E,4CAA4C;AAC5C,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,8BAA8B;AAC9B,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,sEAAsE;AACtE,4EAA4E;AAC5E,gFAAgF;AAChF,qBAAqB;AAIrB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEjE,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,wBAAwB,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAA;AACrE,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,KAAa;IAC7D,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;AACrE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,KAAa;IACnE,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAA;AACrD,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,0BAA0B,CACxC,SAAiB,EACjB,KAAa;IAEb,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAA;AAC3D,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,6BAA6B,CAAC,SAAiB;IAC7D,OAAO,wBAAwB,kBAAkB,CAAC,SAAS,CAAC,sBAAsB,CAAA;AACpF,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,4BAA4B,CAC1C,SAAiB,EACjB,aAAqB;IAErB,OAAO,wBAAwB,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAA;AACzH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAuB,EACvB,KAAmC,EACnC,YAAyD,oBAAoB;IAE7E,IAAI,MAAqB,CAAA;IACzB,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;YACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAA;QAC1E,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,0EAA0E;QAC1E,qDAAqD;QACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4EAA4E;QAC5E,4EAA4E;QAC5E,+CAA+C;QAC/C,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/ingestion/shared.ts"],"names":[],"mappings":"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"}