@lerianstudio/matcher-mcp 1.4.0-beta.2 → 1.4.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.
- package/README.md +2 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/spec/curated-operations.js +10 -6
- package/dist/spec/curated-operations.js.map +1 -1
- package/dist/tools/context/archive.js +37 -0
- package/dist/tools/context/archive.js.map +1 -0
- package/dist/tools/context/index.js +16 -10
- package/dist/tools/context/index.js.map +1 -1
- package/dist/tools/context/restore.js +34 -0
- package/dist/tools/context/restore.js.map +1 -0
- package/dist/tools/ingestion/upload-begin.js +11 -9
- package/dist/tools/ingestion/upload-begin.js.map +1 -1
- package/dist/tools/report/matched.js +6 -4
- package/dist/tools/report/matched.js.map +1 -1
- package/dist/tools/report/shared.js +3 -2
- package/dist/tools/report/shared.js.map +1 -1
- package/dist/tools/report/unmatched.js +6 -4
- package/dist/tools/report/unmatched.js.map +1 -1
- package/dist/tools/report/variance.js +6 -4
- package/dist/tools/report/variance.js.map +1 -1
- package/dist/tools/source/archive.js +46 -0
- package/dist/tools/source/archive.js.map +1 -0
- package/dist/tools/source/index.js +16 -11
- package/dist/tools/source/index.js.map +1 -1
- package/dist/tools/source/restore.js +39 -0
- package/dist/tools/source/restore.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -183,7 +183,8 @@ degrading to a default. Env names mirror the matcher Go service.
|
|
|
183
183
|
| Variable | Default | Purpose |
|
|
184
184
|
|-------------------------------|-------------------------|---------|
|
|
185
185
|
| `MCP_PORT` | `4019` | Port the Streamable HTTP server binds (4018 is matcher, so this avoids a dev collision). |
|
|
186
|
-
| `MATCHER_API_URL` | `http://localhost:4018` | Base URL
|
|
186
|
+
| `MATCHER_API_URL` | `http://localhost:4018` | Base URL the relay's own HTTP client calls for every proxied tool. In cluster deployments this is normally an internal service DNS name. Trailing slashes are trimmed. |
|
|
187
|
+
| `MATCHER_PUBLIC_API_URL` | same as `MATCHER_API_URL` | Base URL handed back to the client's own Claude as the upload target by `ingestion_upload_begin`. MUST be client-reachable. Set this separately from `MATCHER_API_URL` when the relay's internal address isn't reachable from outside the cluster (hairpin NAT). Trailing slashes are trimmed. |
|
|
187
188
|
| `MATCHER_TIMEOUT_MS` | `30000` | Per-request timeout the matcher HTTP client enforces via `AbortController`, matching matcher's 30s transaction timeout. |
|
|
188
189
|
| `MAX_BODY_BYTES` | `1048576` (1 MiB) | Maximum accepted inbound request body size; the transport rejects an over-limit body with `413` before parsing, so an unbounded read cannot exhaust memory. |
|
|
189
190
|
| `ENABLE_TELEMETRY` | `false` | Whether OpenTelemetry traces + metrics are exported. **Off** by default. |
|
package/dist/config.js
CHANGED
|
@@ -132,11 +132,13 @@ function parsePositiveInt(raw, fallback, key) {
|
|
|
132
132
|
*/
|
|
133
133
|
export function loadConfig(env = process.env) {
|
|
134
134
|
const matcherApiUrl = env.MATCHER_API_URL?.trim() || DEFAULT_MATCHER_API_URL;
|
|
135
|
+
const matcherPublicApiUrl = env.MATCHER_PUBLIC_API_URL?.trim() || matcherApiUrl;
|
|
135
136
|
const otelEndpoint = env.OTEL_EXPORTER_OTLP_ENDPOINT?.trim();
|
|
136
137
|
const otelServiceName = env.OTEL_RESOURCE_SERVICE_NAME?.trim() || DEFAULT_OTEL_SERVICE_NAME;
|
|
137
138
|
return Object.freeze({
|
|
138
139
|
port: parsePort(env.MCP_PORT, DEFAULT_PORT),
|
|
139
140
|
matcherApiUrl: matcherApiUrl.replace(/\/+$/, ''),
|
|
141
|
+
matcherPublicApiUrl: matcherPublicApiUrl.replace(/\/+$/, ''),
|
|
140
142
|
timeoutMs: parseTimeoutMs(env.MATCHER_TIMEOUT_MS, DEFAULT_TIMEOUT_MS),
|
|
141
143
|
maxBodyBytes: parseMaxBodyBytes(env.MAX_BODY_BYTES, DEFAULT_MAX_BODY_BYTES),
|
|
142
144
|
enableTelemetry: parseBool(env.ENABLE_TELEMETRY, false, 'ENABLE_TELEMETRY'),
|
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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"}
|
|
@@ -51,17 +51,21 @@ export const CURATED_OPERATION_IDS = [
|
|
|
51
51
|
'listMatchRules', // match_rule_list — GET /v1/contexts/{contextId}/rules
|
|
52
52
|
'reorderMatchRules', // match_rule_reorder — POST /v1/contexts/{contextId}/rules/reorder
|
|
53
53
|
'updateMatchRule', // match_rule_update — PATCH /v1/contexts/{contextId}/rules/{ruleId}
|
|
54
|
-
// context (src/tools/context/) —
|
|
54
|
+
// context (src/tools/context/) — 7 (delete removed: hard-delete → archive/restore lifecycle, now curated — F12)
|
|
55
55
|
'createContext', // context_create — POST /v1/contexts
|
|
56
56
|
'getContext', // context_get — GET /v1/contexts/{contextId}
|
|
57
57
|
'listContexts', // context_list — GET /v1/contexts
|
|
58
58
|
'updateContext', // context_update — PATCH /v1/contexts/{contextId}
|
|
59
|
+
'archiveContext', // context_archive — POST /v1/contexts/{contextId}/archive (F12)
|
|
60
|
+
'restoreContext', // context_restore — POST /v1/contexts/{contextId}/restore (F12)
|
|
59
61
|
'getSetupProgress', // context_setup_progress — GET /v1/contexts/{contextId}/setup-progress (F3 fix)
|
|
60
|
-
// source (src/tools/source/) —
|
|
61
|
-
'createSource', // source_create
|
|
62
|
-
'getSource', // source_get
|
|
63
|
-
'listSources', // source_list
|
|
64
|
-
'updateSource', // source_update
|
|
62
|
+
// source (src/tools/source/) — 6 (delete removed: hard-delete → archive/restore lifecycle, now curated — F12)
|
|
63
|
+
'createSource', // source_create — POST /v1/contexts/{contextId}/sources
|
|
64
|
+
'getSource', // source_get — GET /v1/contexts/{contextId}/sources/{sourceId}
|
|
65
|
+
'listSources', // source_list — GET /v1/contexts/{contextId}/sources
|
|
66
|
+
'updateSource', // source_update — PATCH /v1/contexts/{contextId}/sources/{sourceId}
|
|
67
|
+
'archiveSource', // source_archive — POST /v1/contexts/{contextId}/sources/{sourceId}/archive (F12)
|
|
68
|
+
'restoreSource', // source_restore — POST /v1/contexts/{contextId}/sources/{sourceId}/restore (F12)
|
|
65
69
|
// field-map (src/tools/field-map/) — 5 (N3/N4/F6 fix: previously UNCOVERED)
|
|
66
70
|
'createFieldMap', // field_map_create — POST /v1/contexts/{contextId}/sources/{sourceId}/field-maps
|
|
67
71
|
'getFieldMapBySource', // field_map_get — GET /v1/contexts/{contextId}/sources/{sourceId}/field-maps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curated-operations.js","sourceRoot":"","sources":["../../src/spec/curated-operations.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wDAAwD;AACxD,EAAE;AACF,kBAAkB;AAClB,uEAAuE;AACvE,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,gFAAgF;AAChF,8DAA8D;AAC9D,EAAE;AACF,kDAAkD;AAClD,kFAAkF;AAClF,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,uDAAuD;AAEvD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,6CAA6C;IAC7C,mBAAmB,EAAE,mDAAmD;IACxE,mBAAmB,EAAE,gEAAgE;IACrF,gBAAgB,EAAE,gEAAgE;IAClF,kBAAkB,EAAE,mDAAmD;IACvE,qBAAqB,EAAE,yEAAyE;IAChG,mBAAmB,EAAE,gEAAgE;IAErF,qCAAqC;IACrC,eAAe,EAAE,8DAA8D;IAC/E,eAAe,EAAE,qDAAqD;IACtE,YAAY,EAAE,qDAAqD;IACnE,cAAc,EAAE,8DAA8D;IAC9E,eAAe,EAAE,qDAAqD;IAEtE,yCAAyC;IACzC,iBAAiB,EAAE,6DAA6D;IAChF,iBAAiB,EAAE,sEAAsE;IACzF,cAAc,EAAE,sEAAsE;IACtF,gBAAgB,EAAE,6DAA6D;IAC/E,mBAAmB,EAAE,qEAAqE;IAC1F,iBAAiB,EAAE,sEAAsE;IAEzF,
|
|
1
|
+
{"version":3,"file":"curated-operations.js","sourceRoot":"","sources":["../../src/spec/curated-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// `context_archive` — curated POST /v1/contexts/{contextId}/archive.
|
|
2
|
+
//
|
|
3
|
+
// Soft-deletes a reconciliation context: it flips to ARCHIVED in place and its
|
|
4
|
+
// reconciled financial history is never erased. Archived contexts drop out of
|
|
5
|
+
// the default listing but the name stays reserved until restored (the F12 trap
|
|
6
|
+
// made explicit — you cannot create a new context reusing an archived name).
|
|
7
|
+
// contextId is the only input (a UUID path param); no tenant field is accepted
|
|
8
|
+
// (contextId is a routing param, not a tenant identifier).
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { contextPath, dispatchContext } from './shared.js';
|
|
11
|
+
/** Zod raw shape for `context_archive` input — just the context id. */
|
|
12
|
+
export const archiveContextInputShape = {
|
|
13
|
+
contextId: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.describe('The reconciliation context id (UUID) to archive.'),
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Register `context_archive`. Substitutes the id into the path and dispatches a
|
|
20
|
+
* POST through the shared fail-closed relay; a matcher error surfaces via the
|
|
21
|
+
* shared toToolError.
|
|
22
|
+
*/
|
|
23
|
+
export function registerContextArchiveTool(server) {
|
|
24
|
+
server.registerTool('context_archive', {
|
|
25
|
+
description: 'Archive (soft-delete) a reconciliation context by id (UUID). Archiving ' +
|
|
26
|
+
'flips the context to ARCHIVED in place — it never erases the reconciled ' +
|
|
27
|
+
'financial history (an archived context with children is valid) — and ' +
|
|
28
|
+
'excludes it from the default listing. The archived name stays reserved ' +
|
|
29
|
+
'until you restore it, so you cannot create a new context reusing that ' +
|
|
30
|
+
'name. Provide only contextId; no tenant field is accepted. Returns no ' +
|
|
31
|
+
'content (204), or a structured RFC 9457 error.',
|
|
32
|
+
inputSchema: archiveContextInputShape,
|
|
33
|
+
}, async (args, extra) => {
|
|
34
|
+
return dispatchContext({ method: 'POST', path: `${contextPath(args.contextId)}/archive` }, extra);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/tools/context/archive.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,2DAA2D;AAE3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,kDAAkD,CAAC;CAChE,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,yEAAyE;YACzE,0EAA0E;YAC1E,uEAAuE;YACvE,yEAAyE;YACzE,wEAAwE;YACxE,wEAAwE;YACxE,gDAAgD;QAClD,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,eAAe,CACpB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAClE,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,29 +1,35 @@
|
|
|
1
|
-
// Curated context vertical (task 2.2.1):
|
|
2
|
-
// reconciliation-context resource — create, list, get, update,
|
|
3
|
-
// (Delete was removed when the matcher app
|
|
4
|
-
// the archive/restore lifecycle; archive
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
1
|
+
// Curated context vertical (task 2.2.1): typed tools over the matcher
|
|
2
|
+
// reconciliation-context resource — create, list, get, update, archive,
|
|
3
|
+
// restore, setup-progress, next-step. (Delete was removed when the matcher app
|
|
4
|
+
// replaced context hard-delete with the archive/restore lifecycle; archive and
|
|
5
|
+
// restore are now curated here — F12 made explicit that archiving reserves the
|
|
6
|
+
// context name until restore, a trap the generic invoke surface left implicit.)
|
|
7
|
+
// Contexts are the top of the configuration hierarchy that rules, sources, and
|
|
8
|
+
// fee schedules hang off. Each tool shares the fail-closed relay (shared.ts) and
|
|
9
|
+
// the RFC 9457 → tool-error mapping (toToolError) with the generic surface, so
|
|
10
|
+
// curated and generic map matcher errors identically. No tool carries a tenant
|
|
11
|
+
// field.
|
|
10
12
|
//
|
|
11
13
|
// `context_setup_progress` (F3 fix) reports activation/upload prerequisites —
|
|
12
14
|
// configured-resource counts and the stable missing-requirement slugs — so an
|
|
13
15
|
// operator can check readiness before attempting `context_update
|
|
14
16
|
// status=ACTIVE` instead of discovering the gate via a 409.
|
|
17
|
+
import { registerContextArchiveTool } from './archive.js';
|
|
15
18
|
import { registerContextCreateTool } from './create.js';
|
|
16
19
|
import { registerContextGetTool } from './get.js';
|
|
17
20
|
import { registerContextListTool } from './list.js';
|
|
18
21
|
import { registerContextNextStepTool } from './next-step.js';
|
|
22
|
+
import { registerContextRestoreTool } from './restore.js';
|
|
19
23
|
import { registerContextSetupProgressTool } from './setup-progress.js';
|
|
20
24
|
import { registerContextUpdateTool } from './update.js';
|
|
21
|
-
/** Register all
|
|
25
|
+
/** Register all curated context tools on the given server. */
|
|
22
26
|
export function registerContextTools(server) {
|
|
23
27
|
registerContextCreateTool(server);
|
|
24
28
|
registerContextListTool(server);
|
|
25
29
|
registerContextGetTool(server);
|
|
26
30
|
registerContextUpdateTool(server);
|
|
31
|
+
registerContextArchiveTool(server);
|
|
32
|
+
registerContextRestoreTool(server);
|
|
27
33
|
registerContextSetupProgressTool(server);
|
|
28
34
|
registerContextNextStepTool(server);
|
|
29
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/context/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/context/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAC/E,+EAA+E;AAC/E,SAAS;AACT,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,iEAAiE;AACjE,4DAA4D;AAI5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,8DAA8D;AAC9D,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjC,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC9B,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjC,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAClC,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAClC,gCAAgC,CAAC,MAAM,CAAC,CAAA;IACxC,2BAA2B,CAAC,MAAM,CAAC,CAAA;AACrC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// `context_restore` — curated POST /v1/contexts/{contextId}/restore.
|
|
2
|
+
//
|
|
3
|
+
// Reverses an archive: it returns the context to DRAFT so it can be re-validated
|
|
4
|
+
// and re-activated. Restoring never auto-resumes matching, and restoring a
|
|
5
|
+
// context that is not archived is rejected with a 409 invalid-state. contextId
|
|
6
|
+
// is the only input (a UUID path param); no tenant field is accepted (contextId
|
|
7
|
+
// is a routing param, not a tenant identifier).
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { contextPath, dispatchContext } from './shared.js';
|
|
10
|
+
/** Zod raw shape for `context_restore` input — just the context id. */
|
|
11
|
+
export const restoreContextInputShape = {
|
|
12
|
+
contextId: z
|
|
13
|
+
.string()
|
|
14
|
+
.min(1)
|
|
15
|
+
.describe('The archived reconciliation context id (UUID) to restore.'),
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Register `context_restore`. Substitutes the id into the path and dispatches a
|
|
19
|
+
* POST through the shared fail-closed relay; a matcher error surfaces via the
|
|
20
|
+
* shared toToolError.
|
|
21
|
+
*/
|
|
22
|
+
export function registerContextRestoreTool(server) {
|
|
23
|
+
server.registerTool('context_restore', {
|
|
24
|
+
description: 'Restore an archived reconciliation context by id (UUID) back to DRAFT ' +
|
|
25
|
+
'so it can be re-validated and re-activated. Restoring never auto-resumes ' +
|
|
26
|
+
'matching. Restoring a context that is not archived returns a 409 ' +
|
|
27
|
+
'invalid-state. Provide only contextId; no tenant field is accepted. ' +
|
|
28
|
+
'Returns no content (204), or a structured RFC 9457 error.',
|
|
29
|
+
inputSchema: restoreContextInputShape,
|
|
30
|
+
}, async (args, extra) => {
|
|
31
|
+
return dispatchContext({ method: 'POST', path: `${contextPath(args.contextId)}/restore` }, extra);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=restore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../src/tools/context/restore.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,iFAAiF;AACjF,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,gDAAgD;AAEhD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,2DAA2D,CAAC;CACzE,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,wEAAwE;YACxE,2EAA2E;YAC3E,mEAAmE;YACnE,sEAAsE;YACtE,2DAA2D;QAC7D,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,eAAe,CACpB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAClE,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
//
|
|
13
13
|
// The returned uploadUrl reuses contextSourceUploadPath so the path encoding
|
|
14
14
|
// matches the real endpoint /v1/imports/contexts/{contextId}/sources/{sourceId}
|
|
15
|
-
// /upload byte-for-byte, built from config.
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
// the
|
|
15
|
+
// /upload byte-for-byte, built from config.matcherPublicApiUrl — a URL distinct
|
|
16
|
+
// from matcherApiUrl (which the relay's own internal HTTP client uses) so a
|
|
17
|
+
// cluster deployment can point each at a different address: the internal one
|
|
18
|
+
// at the in-cluster service DNS, the public one at the ingress host the
|
|
19
|
+
// client's own Claude can actually reach.
|
|
19
20
|
import { z } from 'zod';
|
|
20
21
|
import { loadConfig } from '../../config.js';
|
|
21
22
|
import { contextSourceUploadPath } from './shared.js';
|
|
@@ -58,7 +59,7 @@ export function registerIngestionUploadBeginTool(server) {
|
|
|
58
59
|
inputSchema: ingestionUploadBeginInputShape,
|
|
59
60
|
}, async (args) => {
|
|
60
61
|
const cfg = loadConfig();
|
|
61
|
-
const baseUrl = cfg.
|
|
62
|
+
const baseUrl = cfg.matcherPublicApiUrl;
|
|
62
63
|
const uploadUrl = baseUrl + contextSourceUploadPath(args.contextId, args.sourceId);
|
|
63
64
|
const formatExample = args.format ?? 'csv';
|
|
64
65
|
const instructions = [
|
|
@@ -94,10 +95,11 @@ export function registerIngestionUploadBeginTool(server) {
|
|
|
94
95
|
'returns 413 (an over-limit upload detected mid-stream also fails the ' +
|
|
95
96
|
'job with a diagnosis). This cap is independent of the relay body ' +
|
|
96
97
|
'cap, which does not apply since the bytes bypass the relay.',
|
|
97
|
-
'baseUrlUsed came from
|
|
98
|
-
'
|
|
99
|
-
'address
|
|
100
|
-
'
|
|
98
|
+
'baseUrlUsed came from MATCHER_PUBLIC_API_URL (falls back to ' +
|
|
99
|
+
'MATCHER_API_URL when unset), which MUST be a client-reachable ' +
|
|
100
|
+
'(public) address. If this URL is an internal/cluster address your ' +
|
|
101
|
+
'local Claude cannot reach, the operator must set ' +
|
|
102
|
+
'MATCHER_PUBLIC_API_URL to the public matcher host.',
|
|
101
103
|
].join('\n');
|
|
102
104
|
const contract = {
|
|
103
105
|
uploadUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-begin.js","sourceRoot":"","sources":["../../../src/tools/ingestion/upload-begin.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,0BAA0B;AAC1B,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"upload-begin.js","sourceRoot":"","sources":["../../../src/tools/ingestion/upload-begin.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,0BAA0B;AAC1B,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,4EAA4E;AAC5E,6EAA6E;AAC7E,wEAAwE;AACxE,0CAA0C;AAE1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD,wDAAwD;AACxD,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,wEAAwE;QACtE,yEAAyE;QACzE,0DAA0D,CAC7D;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,wEAAwE;QACtE,uDAAuD,CAC1D;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,wEAAwE;QACtE,qEAAqE;QACrE,wDAAwD,CAC3D;CACJ,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,sEAAsE;YACtE,kEAAkE;YAClE,wEAAwE;YACxE,yEAAyE;YACzE,oEAAoE;YACpE,8DAA8D;YAC9D,yEAAyE;YACzE,sEAAsE;YACtE,oEAAoE;QACtE,WAAW,EAAE,8BAA8B;KAC5C,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,UAAU,EAAE,CAAA;QACxB,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAA;QACvC,MAAM,SAAS,GACb,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;QAE1C,MAAM,YAAY,GAAG;YACnB,oEAAoE;gBAClE,qCAAqC;YACvC,iCAAiC;gBAC/B,IAAI,CAAC,SAAS;gBACd,8CAA8C;gBAC9C,IAAI,CAAC,QAAQ;gBACb,sEAAsE;gBACtE,qEAAqE;gBACrE,cAAc;YAChB,sDAAsD;gBACpD,SAAS;gBACT,uEAAuE;gBACvE,kEAAkE;gBAClE,mBAAmB;YACrB,uEAAuE;gBACrE,uEAAuE;gBACvE,iEAAiE;gBACjE,sEAAsE;gBACtE,iBAAiB;gBACjB,aAAa;gBACb,iCAAiC;YACnC,yEAAyE;gBACvE,sEAAsE;gBACtE,oEAAoE;gBACpE,SAAS;YACX,+DAA+D;gBAC7D,qEAAqE;gBACrE,qEAAqE;gBACrE,iEAAiE;gBACjE,uEAAuE;gBACvE,mEAAmE;gBACnE,6DAA6D;YAC/D,8DAA8D;gBAC5D,gEAAgE;gBAChE,oEAAoE;gBACpE,mDAAmD;gBACnD,oDAAoD;SACvD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEZ,MAAM,QAAQ,GAAG;YACf,SAAS;YACT,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,OAAO;YACpB,YAAY;SACb,CAAA;QAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;IACxE,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Cursor-paginated matched transactions for a context within a date window.
|
|
4
4
|
// date_from/date_to/source_id filter and cursor/limit/sort_order page; matcher's
|
|
5
|
-
// { items,
|
|
6
|
-
// model re-calls with the returned cursor). The report is
|
|
5
|
+
// { items, pagination: { next, prev } } envelope is returned as-is — no
|
|
6
|
+
// auto-pagination (the model re-calls with the returned cursor). The report is
|
|
7
|
+
// implicitly
|
|
7
8
|
// tenant-scoped by the relayed token; contextId is a routing path param, not a
|
|
8
9
|
// tenant field, and no tenant field is accepted.
|
|
9
10
|
import { z } from 'zod';
|
|
@@ -31,8 +32,9 @@ export function registerReportMatchedTool(server) {
|
|
|
31
32
|
'days; if omitted, defaults to the last ~30 days and SILENTLY EXCLUDES ' +
|
|
32
33
|
'older matches — pass an explicit range for a full picture), source_id, ' +
|
|
33
34
|
'limit (1–200), sort_order (asc|desc), and/or cursor. The response ' +
|
|
34
|
-
'carries { items,
|
|
35
|
-
'returned
|
|
35
|
+
'carries { items, pagination: { next, prev } } — paginate by re-calling ' +
|
|
36
|
+
'with cursor set to the returned pagination.next (empty when exhausted). ' +
|
|
37
|
+
'No tenant field is accepted.',
|
|
36
38
|
inputSchema: matchedReportInputShape,
|
|
37
39
|
}, async (args, extra) => {
|
|
38
40
|
const query = buildReportPaginatedQuery(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matched.js","sourceRoot":"","sources":["../../../src/tools/report/matched.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,4EAA4E;AAC5E,iFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"matched.js","sourceRoot":"","sources":["../../../src/tools/report/matched.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,4EAA4E;AAC5E,iFAAiF;AACjF,wEAAwE;AACxE,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AAEpB,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,qEAAqE;QACnE,iDAAiD,CACpD;IACH,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;CAC9B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,+DAA+D;YAC/D,qEAAqE;YACrE,oEAAoE;YACpE,wEAAwE;YACxE,yEAAyE;YACzE,oEAAoE;YACpE,yEAAyE;YACzE,0EAA0E;YAC1E,8BAA8B;QAChC,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;QAC7C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;YAClD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
// and is an HTTP GET — including the exports, which take their knobs as query
|
|
6
6
|
// params (not a POST body). The thirteen ops fall into three response shapes:
|
|
7
7
|
// - paginated lists (matched/unmatched/variance): the common date filter plus
|
|
8
|
-
// cursor/limit/sort_order, returning a { items,
|
|
8
|
+
// cursor/limit/sort_order, returning a { items, pagination: { next, prev } }
|
|
9
|
+
// envelope;
|
|
9
10
|
// - the summary read and the four count ops: the common date filter only;
|
|
10
11
|
// - the five exports: the common date filter plus a csv|pdf format, returning
|
|
11
12
|
// a base64 STRING the caller must decode.
|
|
@@ -78,7 +79,7 @@ export const reportPaginationInputShape = {
|
|
|
78
79
|
.string()
|
|
79
80
|
.optional()
|
|
80
81
|
.describe('Opaque pagination cursor from a prior response. Re-call with the ' +
|
|
81
|
-
'returned
|
|
82
|
+
'returned pagination.next to page forward (there is no auto-pagination).'),
|
|
82
83
|
limit: z
|
|
83
84
|
.number()
|
|
84
85
|
.int()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/report/shared.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,8EAA8E;AAC9E,8EAA8E;AAC9E,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/report/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Cursor-paginated unmatched transactions for a context within a date window.
|
|
4
4
|
// date_from/date_to/source_id filter and cursor/limit/sort_order page; matcher's
|
|
5
|
-
// { items,
|
|
6
|
-
// model re-calls with the returned cursor). The report is
|
|
5
|
+
// { items, pagination: { next, prev } } envelope is returned as-is — no
|
|
6
|
+
// auto-pagination (the model re-calls with the returned cursor). The report is
|
|
7
|
+
// implicitly
|
|
7
8
|
// tenant-scoped by the relayed token; contextId is a routing path param, not a
|
|
8
9
|
// tenant field, and no tenant field is accepted.
|
|
9
10
|
import { z } from 'zod';
|
|
@@ -31,8 +32,9 @@ export function registerReportUnmatchedTool(server) {
|
|
|
31
32
|
'days; if omitted, defaults to the last ~30 days and SILENTLY EXCLUDES ' +
|
|
32
33
|
'older unmatched items — pass an explicit range for a full picture), ' +
|
|
33
34
|
'source_id, limit (1–200), sort_order (asc|desc), and/or cursor. The ' +
|
|
34
|
-
'response carries { items,
|
|
35
|
-
'the returned
|
|
35
|
+
'response carries { items, pagination: { next, prev } } — paginate by ' +
|
|
36
|
+
're-calling with cursor set to the returned pagination.next (empty when ' +
|
|
37
|
+
'exhausted). No tenant field is accepted.',
|
|
36
38
|
inputSchema: unmatchedReportInputShape,
|
|
37
39
|
}, async (args, extra) => {
|
|
38
40
|
const query = buildReportPaginatedQuery(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unmatched.js","sourceRoot":"","sources":["../../../src/tools/report/unmatched.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"unmatched.js","sourceRoot":"","sources":["../../../src/tools/report/unmatched.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,wEAAwE;AACxE,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AAEpB,yFAAyF;AACzF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,uEAAuE;QACrE,iDAAiD,CACpD;IACH,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;CAC9B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,iEAAiE;YACjE,qEAAqE;YACrE,oEAAoE;YACpE,wEAAwE;YACxE,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,yEAAyE;YACzE,0CAA0C;QAC5C,WAAW,EAAE,yBAAyB;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;QAC7C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;YACpD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Cursor-paginated variance report rows for a context within a date window.
|
|
4
4
|
// date_from/date_to/source_id filter and cursor/limit/sort_order page; matcher's
|
|
5
|
-
// { items,
|
|
6
|
-
// model re-calls with the returned cursor). The report is
|
|
5
|
+
// { items, pagination: { next, prev } } envelope is returned as-is — no
|
|
6
|
+
// auto-pagination (the model re-calls with the returned cursor). The report is
|
|
7
|
+
// implicitly
|
|
7
8
|
// tenant-scoped by the relayed token; contextId is a routing path param, not a
|
|
8
9
|
// tenant field, and no tenant field is accepted.
|
|
9
10
|
import { z } from 'zod';
|
|
@@ -31,8 +32,9 @@ export function registerReportVarianceTool(server) {
|
|
|
31
32
|
'days; if omitted, defaults to the last ~30 days and SILENTLY EXCLUDES ' +
|
|
32
33
|
'older rows — pass an explicit range for a full picture), source_id, ' +
|
|
33
34
|
'limit (1–200), sort_order (asc|desc), and/or cursor. The response ' +
|
|
34
|
-
'carries { items,
|
|
35
|
-
'returned
|
|
35
|
+
'carries { items, pagination: { next, prev } } — paginate by re-calling ' +
|
|
36
|
+
'with cursor set to the returned pagination.next (empty when exhausted). ' +
|
|
37
|
+
'No tenant field is accepted.',
|
|
36
38
|
inputSchema: varianceReportInputShape,
|
|
37
39
|
}, async (args, extra) => {
|
|
38
40
|
const query = buildReportPaginatedQuery(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variance.js","sourceRoot":"","sources":["../../../src/tools/report/variance.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,iFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"variance.js","sourceRoot":"","sources":["../../../src/tools/report/variance.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,iFAAiF;AACjF,wEAAwE;AACxE,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAC/E,iDAAiD;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AAEpB,wFAAwF;AACxF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,sEAAsE;QACpE,yCAAyC,CAC5C;IACH,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;CAC9B,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,+DAA+D;YAC/D,qEAAqE;YACrE,oEAAoE;YACpE,wEAAwE;YACxE,sEAAsE;YACtE,oEAAoE;YACpE,yEAAyE;YACzE,0EAA0E;YAC1E,8BAA8B;QAChC,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;QAC7C,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;YACnD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// `source_archive` — curated POST /v1/contexts/{contextId}/sources/{sourceId}/archive.
|
|
2
|
+
//
|
|
3
|
+
// Soft-deletes a reconciliation source: its imported transactions and field map
|
|
4
|
+
// are never erased; the source is simply excluded from listings, readiness
|
|
5
|
+
// counts, clone reads, and the matching working set. The name stays reserved
|
|
6
|
+
// until restored (the F12 trap made explicit — you cannot create a new source
|
|
7
|
+
// reusing an archived name in the context). Both contextId and sourceId are
|
|
8
|
+
// path params; no tenant field is accepted.
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { contextSourcePath, dispatchSource } from './shared.js';
|
|
11
|
+
/** Zod raw shape for `source_archive` input — both path ids. */
|
|
12
|
+
export const archiveSourceInputShape = {
|
|
13
|
+
contextId: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.describe('The reconciliation context id (UUID). Routing path param, not a tenant ' +
|
|
17
|
+
'field.'),
|
|
18
|
+
sourceId: z
|
|
19
|
+
.string()
|
|
20
|
+
.min(1)
|
|
21
|
+
.describe('The reconciliation source id (UUID) to archive.'),
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Register `source_archive`. Substitutes both ids into the path and dispatches a
|
|
25
|
+
* POST through the shared fail-closed relay; a matcher error surfaces via the
|
|
26
|
+
* shared toToolError.
|
|
27
|
+
*/
|
|
28
|
+
export function registerSourceArchiveTool(server) {
|
|
29
|
+
server.registerTool('source_archive', {
|
|
30
|
+
description: 'Archive (soft-delete) a reconciliation source by id (UUID) within a ' +
|
|
31
|
+
"context. Archiving never erases the source's imported transactions " +
|
|
32
|
+
'or field map — the source is simply excluded from listings, readiness ' +
|
|
33
|
+
'counts, clone reads, and the matching working set. The archived name ' +
|
|
34
|
+
'stays reserved until you restore it, so you cannot create a new source ' +
|
|
35
|
+
'reusing that name in the context. Provide contextId and sourceId (path ' +
|
|
36
|
+
'params; contextId is not a tenant field). Returns no content (204), or ' +
|
|
37
|
+
'a structured RFC 9457 error.',
|
|
38
|
+
inputSchema: archiveSourceInputShape,
|
|
39
|
+
}, async (args, extra) => {
|
|
40
|
+
return dispatchSource({
|
|
41
|
+
method: 'POST',
|
|
42
|
+
path: `${contextSourcePath(args.contextId, args.sourceId)}/archive`,
|
|
43
|
+
}, extra);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/tools/source/archive.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,EAAE;AACF,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,4CAA4C;AAE5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/D,gEAAgE;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,yEAAyE;QACvE,QAAQ,CACX;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,iDAAiD,CAAC;CAC/D,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,sEAAsE;YACtE,qEAAqE;YACrE,wEAAwE;YACxE,uEAAuE;YACvE,yEAAyE;YACzE,yEAAyE;YACzE,yEAAyE;YACzE,8BAA8B;QAChC,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;SACpE,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
// Curated source vertical (task 2.2.2):
|
|
2
|
-
// reconciliation-source resource — create, list, get, update
|
|
3
|
-
// removed when the matcher app replaced source hard-delete with the
|
|
4
|
-
// archive/restore lifecycle; archive
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// (
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
1
|
+
// Curated source vertical (task 2.2.2): typed tools over the matcher
|
|
2
|
+
// reconciliation-source resource — create, list, get, update, archive, restore.
|
|
3
|
+
// (Delete was removed when the matcher app replaced source hard-delete with the
|
|
4
|
+
// archive/restore lifecycle; archive and restore are now curated here — F12 made
|
|
5
|
+
// explicit that archiving reserves the source name until restore, a trap the
|
|
6
|
+
// generic invoke surface left implicit.) Sources are fully context-nested on
|
|
7
|
+
// every op (single-resource ops keep contextId, unlike fee-rules). Each tool
|
|
8
|
+
// shares the fail-closed relay (shared.ts) and the RFC 9457 → tool-error mapping
|
|
9
|
+
// (toToolError) with the generic surface, so curated and generic map matcher
|
|
10
|
+
// errors identically. No tool carries a tenant field; contextId is a routing
|
|
11
|
+
// path param matcher validates against the relayed token's tenant.
|
|
12
|
+
import { registerSourceArchiveTool } from './archive.js';
|
|
11
13
|
import { registerSourceCreateTool } from './create.js';
|
|
12
14
|
import { registerSourceGetTool } from './get.js';
|
|
13
15
|
import { registerSourceListTool } from './list.js';
|
|
16
|
+
import { registerSourceRestoreTool } from './restore.js';
|
|
14
17
|
import { registerSourceUpdateTool } from './update.js';
|
|
15
|
-
/** Register all
|
|
18
|
+
/** Register all curated source tools on the given server. */
|
|
16
19
|
export function registerSourceTools(server) {
|
|
17
20
|
registerSourceCreateTool(server);
|
|
18
21
|
registerSourceListTool(server);
|
|
19
22
|
registerSourceGetTool(server);
|
|
20
23
|
registerSourceUpdateTool(server);
|
|
24
|
+
registerSourceArchiveTool(server);
|
|
25
|
+
registerSourceRestoreTool(server);
|
|
21
26
|
}
|
|
22
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/source/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/source/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,iFAAiF;AACjF,6EAA6E;AAC7E,6EAA6E;AAC7E,mEAAmE;AAInE,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAEtD,6DAA6D;AAC7D,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,wBAAwB,CAAC,MAAM,CAAC,CAAA;IAChC,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC9B,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC7B,wBAAwB,CAAC,MAAM,CAAC,CAAA;IAChC,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjC,yBAAyB,CAAC,MAAM,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// `source_restore` — curated POST /v1/contexts/{contextId}/sources/{sourceId}/restore.
|
|
2
|
+
//
|
|
3
|
+
// Reverses an archive: it brings the source back into the live working set so it
|
|
4
|
+
// counts toward readiness and feeds matching again. Both contextId and sourceId
|
|
5
|
+
// are path params; no tenant field is accepted.
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { contextSourcePath, dispatchSource } from './shared.js';
|
|
8
|
+
/** Zod raw shape for `source_restore` input — both path ids. */
|
|
9
|
+
export const restoreSourceInputShape = {
|
|
10
|
+
contextId: z
|
|
11
|
+
.string()
|
|
12
|
+
.min(1)
|
|
13
|
+
.describe('The reconciliation context id (UUID). Routing path param, not a tenant ' +
|
|
14
|
+
'field.'),
|
|
15
|
+
sourceId: z
|
|
16
|
+
.string()
|
|
17
|
+
.min(1)
|
|
18
|
+
.describe('The archived reconciliation source id (UUID) to restore.'),
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Register `source_restore`. Substitutes both ids into the path and dispatches a
|
|
22
|
+
* POST through the shared fail-closed relay; a matcher error surfaces via the
|
|
23
|
+
* shared toToolError.
|
|
24
|
+
*/
|
|
25
|
+
export function registerSourceRestoreTool(server) {
|
|
26
|
+
server.registerTool('source_restore', {
|
|
27
|
+
description: 'Restore an archived reconciliation source by id (UUID) back into the ' +
|
|
28
|
+
'live working set, so it counts toward readiness and feeds matching ' +
|
|
29
|
+
'again. Provide contextId and sourceId (path params; contextId is not a ' +
|
|
30
|
+
'tenant field). Returns no content (204), or a structured RFC 9457 error.',
|
|
31
|
+
inputSchema: restoreSourceInputShape,
|
|
32
|
+
}, async (args, extra) => {
|
|
33
|
+
return dispatchSource({
|
|
34
|
+
method: 'POST',
|
|
35
|
+
path: `${contextSourcePath(args.contextId, args.sourceId)}/restore`,
|
|
36
|
+
}, extra);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=restore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../src/tools/source/restore.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,EAAE;AACF,iFAAiF;AACjF,gFAAgF;AAChF,gDAAgD;AAEhD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/D,gEAAgE;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,yEAAyE;QACvE,QAAQ,CACX;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,0DAA0D,CAAC;CACxE,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,uEAAuE;YACvE,qEAAqE;YACrE,yEAAyE;YACzE,0EAA0E;QAC5E,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;SACpE,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|