@lerianstudio/matcher-mcp 4.5.0-beta.36 → 5.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/copilot/system-prompt.js +33 -2
- package/dist/copilot/system-prompt.js.map +1 -1
- package/dist/spec/openapi.yaml +99 -46
- package/dist/tools/context/index.js +4 -3
- package/dist/tools/context/index.js.map +1 -1
- package/dist/tools/context/next-step.js +13 -7
- package/dist/tools/context/next-step.js.map +1 -1
- package/dist/tools/context/setup-progress.js +14 -8
- package/dist/tools/context/setup-progress.js.map +1 -1
- package/dist/tools/field-map/create.js +4 -2
- package/dist/tools/field-map/create.js.map +1 -1
- package/dist/tools/field-map/delete.js +5 -3
- package/dist/tools/field-map/delete.js.map +1 -1
- package/dist/tools/field-map/index.js +5 -5
- package/dist/tools/field-map/index.js.map +1 -1
- package/dist/tools/ingestion/job-transactions-list.js +7 -1
- package/dist/tools/ingestion/job-transactions-list.js.map +1 -1
- package/dist/tools/ingestion/transactions-search.js +7 -2
- package/dist/tools/ingestion/transactions-search.js.map +1 -1
- package/dist/tools/ingestion/upload-begin.js +5 -2
- package/dist/tools/ingestion/upload-begin.js.map +1 -1
- package/dist/tools/source/create.js +15 -1
- package/dist/tools/source/create.js.map +1 -1
- package/dist/tools/source/get.js +17 -1
- package/dist/tools/source/get.js.map +1 -1
- package/dist/tools/source/update.js +19 -1
- package/dist/tools/source/update.js.map +1 -1
- package/package.json +2 -1
|
@@ -72,8 +72,26 @@ step until the resource is actually usable, and tell the operator exactly what \
|
|
|
72
72
|
still remains. Never leave them with a broken half-created shell. Do not decide \
|
|
73
73
|
the next step from memory — after each proposal is applied, call the \
|
|
74
74
|
getSetupProgress read tool for that context and propose the action its \`next\` \
|
|
75
|
-
field names (the operationId, path, and required fields it returns);
|
|
76
|
-
\`next\`
|
|
75
|
+
field names (the operationId, path, and required fields it returns); gate on \
|
|
76
|
+
\`readiness.ready\`, never on \`next\` being null — a null \`next\` can still mean \
|
|
77
|
+
unready (the backend has no action to name for an unmapped gap), so only \
|
|
78
|
+
\`readiness.ready\` being true means the context is actually ready.
|
|
79
|
+
- \`readiness.missing[]\` names each gap using one of six \
|
|
80
|
+
stable identifiers: context.activation.requirement.left-source (no LEFT \
|
|
81
|
+
source yet), context.activation.requirement.right-source (no RIGHT source \
|
|
82
|
+
yet), context.activation.requirement.source-mapping (a source still needs a \
|
|
83
|
+
field map), context.activation.requirement.match-rule (no match rule yet), \
|
|
84
|
+
context.activation.requirement.fee-rule (fee normalization is on but no fee \
|
|
85
|
+
rule exists), and context.activation.requirement.unknown (a setup step \
|
|
86
|
+
outside those five — treat it as "there is still a general setup step \
|
|
87
|
+
remaining" with no specific resource named). \`next.requirementId\` only ever \
|
|
88
|
+
names one of the first five, the actionable ones, never the unknown \
|
|
89
|
+
identifier: an unmapped gap gives the backend no action to name, which is \
|
|
90
|
+
exactly how \`next\` can be null while the context is still unready. These \
|
|
91
|
+
identifiers are for YOU to \
|
|
92
|
+
route on, never for the operator to read: translate the one you see into plain \
|
|
93
|
+
language about what is missing and never paste the raw identifier into your \
|
|
94
|
+
reply.
|
|
77
95
|
- The reconciliation context is the primary example. A bare context is a DRAFT \
|
|
78
96
|
that cannot ingest, match, or report: to be usable it needs at least one LEFT \
|
|
79
97
|
source AND one RIGHT source, a field map for every source, and at least one \
|
|
@@ -119,6 +137,19 @@ explain what the mapping does.
|
|
|
119
137
|
entries, or ingest data — you have no tools for those. If the operator asks, \
|
|
120
138
|
explain what you found and what they would need to do; do not claim to have done \
|
|
121
139
|
it.
|
|
140
|
+
- A failed tool call is a CODED REFUSAL: the tool result carries a matcher \
|
|
141
|
+
\`status\`, \`code\`, and often a \`detail\` sentence. Explain it to the operator in \
|
|
142
|
+
the language they are writing to you in, not by default in English. Always keep \
|
|
143
|
+
the wire \`code\` visible in your answer, exactly as returned — never rename, \
|
|
144
|
+
drop, or invent one, so support can still correlate it with server logs. \
|
|
145
|
+
Translate the \`detail\` the tool actually returned into their language \
|
|
146
|
+
faithfully; never add a cause, a fix, or a fact the tool result did not state. If \
|
|
147
|
+
the result has no usable \`detail\` (blank or absent), say plainly that the \
|
|
148
|
+
request failed and give the \`status\`/\`code\` you do have — never invent an \
|
|
149
|
+
explanation to fill the gap. A 401 or 403 refusal stays SHORT: state in one \
|
|
150
|
+
sentence that the operator is not authorized to do this, and do not speculate \
|
|
151
|
+
about which permission, role, or policy is missing — the tool result does not \
|
|
152
|
+
tell you that, and guessing would be fabrication.
|
|
122
153
|
- Be concise and precise. Prefer exact figures from tool results over vague \
|
|
123
154
|
descriptions. Cite the reconciliation context when it matters.
|
|
124
155
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/copilot/system-prompt.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,wEAAwE;AACxE,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,aAAa;AACb,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,+CAA+C;AAC/C,EAAE;AACF,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAa5E,MAAM,WAAW,GAAG
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/copilot/system-prompt.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,wEAAwE;AACxE,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,aAAa;AACb,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,+CAA+C;AAC/C,EAAE;AACF,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAa5E,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iEAwP6C,CAAA;AAEjE;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
package/dist/spec/openapi.yaml
CHANGED
|
@@ -341,6 +341,11 @@ components:
|
|
|
341
341
|
examples:
|
|
342
342
|
- a1b2c3d4-5678-90ab-cdef-1234567890ab
|
|
343
343
|
type: string
|
|
344
|
+
testable:
|
|
345
|
+
description: Whether Matcher can run a connectivity test for this connection's aggregator vendor
|
|
346
|
+
examples:
|
|
347
|
+
- true
|
|
348
|
+
type: boolean
|
|
344
349
|
vendor:
|
|
345
350
|
description: Aggregator vendor the connection is bound to
|
|
346
351
|
enum:
|
|
@@ -355,6 +360,7 @@ components:
|
|
|
355
360
|
- configName
|
|
356
361
|
- baseUrl
|
|
357
362
|
- accountRef
|
|
363
|
+
- testable
|
|
358
364
|
type: object
|
|
359
365
|
AggregatorConnectionListResponse:
|
|
360
366
|
additionalProperties: false
|
|
@@ -878,6 +884,11 @@ components:
|
|
|
878
884
|
BulkFailure:
|
|
879
885
|
additionalProperties: false
|
|
880
886
|
properties:
|
|
887
|
+
code:
|
|
888
|
+
description: Stable product error code for this row, when the failure has one
|
|
889
|
+
examples:
|
|
890
|
+
- MTCH-0514
|
|
891
|
+
type: string
|
|
881
892
|
error:
|
|
882
893
|
description: Human-readable reason the exception could not be processed
|
|
883
894
|
examples:
|
|
@@ -1795,7 +1806,7 @@ components:
|
|
|
1795
1806
|
properties:
|
|
1796
1807
|
config:
|
|
1797
1808
|
additionalProperties: {}
|
|
1798
|
-
description: Source-specific configuration object (connection and parsing settings). Optional; defaults to an empty object when omitted.
|
|
1809
|
+
description: "Source-specific configuration object (connection and parsing settings). Optional; defaults to an empty object when omitted. Reserved key duplicate_key: the ordered list of mapped fields that make two rows the same row — any of external_id, amount, currency, date, description, fee_amount, fee_currency. Omit it and rows are deduplicated on external_id alone. A field this source's field map does not fill is refused, because a key over a field that is always empty makes every row a duplicate of every other. A source bound to an aggregator connection (reserved key connection_config_name) cannot carry a duplicate key of its own: the aggregator retracts a movement by naming its external id, so that id has to stay this source's row identity. A config holding both is refused in either direction — drop duplicate_key from a bound source, or disconnect the aggregator connection first. Reserved read-only key duplicate_key_changed_at: the RFC 3339 moment duplicate-key detection last changed meaning on this source, set by the server; a value sent by a client is discarded. It moves for either change that re-keys future rows — editing duplicate_key, or the field map remapping the column a declared field reads (a source keyed on description whose description column moves derives a different key for the same movement). Reserved key duplicate_policy: what happens to a row repeating the duplicate key — FLAG_AS_EXCEPTION (the default: the repeat is kept out of the import and raised as a duplicate exception on the row it repeated), KEEP_FIRST (the repeat is dropped and nothing is raised), or REJECT (the repeat is counted as an import error). Changing duplicate_key governs later imports only — rows already imported keep the key they were deduplicated under."
|
|
1799
1810
|
type: object
|
|
1800
1811
|
mapping:
|
|
1801
1812
|
additionalProperties: {}
|
|
@@ -2225,7 +2236,7 @@ components:
|
|
|
2225
2236
|
properties:
|
|
2226
2237
|
config:
|
|
2227
2238
|
additionalProperties: {}
|
|
2228
|
-
description: Source-specific configuration object (connection and parsing settings). Optional; defaults to an empty object when omitted.
|
|
2239
|
+
description: "Source-specific configuration object (connection and parsing settings). Optional; defaults to an empty object when omitted. Reserved key duplicate_key: the ordered list of mapped fields that make two rows the same row — any of external_id, amount, currency, date, description, fee_amount, fee_currency. Omit it and rows are deduplicated on external_id alone. A field this source's field map does not fill is refused, because a key over a field that is always empty makes every row a duplicate of every other. A source bound to an aggregator connection (reserved key connection_config_name) cannot carry a duplicate key of its own: the aggregator retracts a movement by naming its external id, so that id has to stay this source's row identity. A config holding both is refused in either direction — drop duplicate_key from a bound source, or disconnect the aggregator connection first. Reserved read-only key duplicate_key_changed_at: the RFC 3339 moment duplicate-key detection last changed meaning on this source, set by the server; a value sent by a client is discarded. It moves for either change that re-keys future rows — editing duplicate_key, or the field map remapping the column a declared field reads (a source keyed on description whose description column moves derives a different key for the same movement). Reserved key duplicate_policy: what happens to a row repeating the duplicate key — FLAG_AS_EXCEPTION (the default: the repeat is kept out of the import and raised as a duplicate exception on the row it repeated), KEEP_FIRST (the repeat is dropped and nothing is raised), or REJECT (the repeat is counted as an import error). Changing duplicate_key governs later imports only — rows already imported keep the key they were deduplicated under."
|
|
2229
2240
|
type: object
|
|
2230
2241
|
name:
|
|
2231
2242
|
description: Human-readable name of the source.
|
|
@@ -3449,7 +3460,7 @@ components:
|
|
|
3449
3460
|
- "2025-01-15T10:30:00Z"
|
|
3450
3461
|
type: string
|
|
3451
3462
|
usedByContexts:
|
|
3452
|
-
description: Number of distinct contexts whose fee rules reference this schedule. Computed at read time from
|
|
3463
|
+
description: Number of distinct contexts whose fee rules reference this schedule. Computed at read time from the fee rules that reference this schedule (never persisted).
|
|
3453
3464
|
examples:
|
|
3454
3465
|
- 2
|
|
3455
3466
|
format: int64
|
|
@@ -3966,6 +3977,11 @@ components:
|
|
|
3966
3977
|
- "2025-01-15T00:00:00Z"
|
|
3967
3978
|
format: date-time
|
|
3968
3979
|
type: string
|
|
3980
|
+
dedupeKey:
|
|
3981
|
+
description: "Read-only: the duplicate-key value this row was imported under, derived from the source's duplicate key declaration at import time. A source can change that declaration later, so this is the only place that says which identity THIS row carries. Prefixed v1 when the key spells out the fields it was derived from, v1h when those fields were hashed because the spelled-out key was too long to index."
|
|
3982
|
+
examples:
|
|
3983
|
+
- v1|external_id=9:TXN-12345
|
|
3984
|
+
type: string
|
|
3969
3985
|
description:
|
|
3970
3986
|
description: Free-text description carried from the source
|
|
3971
3987
|
examples:
|
|
@@ -4014,6 +4030,7 @@ components:
|
|
|
4014
4030
|
- sourceId
|
|
4015
4031
|
- contextId
|
|
4016
4032
|
- externalId
|
|
4033
|
+
- dedupeKey
|
|
4017
4034
|
- amount
|
|
4018
4035
|
- currency
|
|
4019
4036
|
- date
|
|
@@ -4048,17 +4065,17 @@ components:
|
|
|
4048
4065
|
format: date-time
|
|
4049
4066
|
type: string
|
|
4050
4067
|
diagnosis:
|
|
4051
|
-
description: Safe one-line diagnosis
|
|
4068
|
+
description: Safe one-line diagnosis of anything the parser found worth reporting about the file (dialect mismatch, degraded settlement re-join, zero-detail file), the rate-policy message for policy-FAILED jobs, or a generic safe message for other FAILED jobs. Present on COMPLETED jobs too, including ones with zero failed rows; empty when there is nothing to report — internal error detail is never surfaced here
|
|
4052
4069
|
examples:
|
|
4053
4070
|
- file appears semicolon-delimited but the source declares comma; declare delimiter semicolon in the source dialect
|
|
4054
4071
|
type: string
|
|
4055
4072
|
droppedDuplicateReason:
|
|
4056
|
-
description: "Display-only explanation of why droppedDuplicateRows rows were
|
|
4073
|
+
description: "Display-only explanation of why droppedDuplicateRows rows were kept out of the import: names the source's duplicate key as the identity that collided, says the repeats were attached as exceptions to the rows they repeated when the job flagged any (repeats of one row share one exception, so the queue holds one item per repeated row), and names the repeats that raised nothing when fewer were flagged than dropped, so the count does not read as silent data loss and the customer is sent to the configuration that decides it. Empty unless droppedDuplicateRows > 0"
|
|
4057
4074
|
examples:
|
|
4058
|
-
- Rows repeated
|
|
4075
|
+
- "Rows repeated the duplicate key this source deduplicates on and were kept out of the import. This source flags duplicates, so each repeat whose original was found was attached to that original as a duplicate exception in the exceptions queue. Repeats of the same original share one exception, so the queue holds one item per repeated row, not one per repeat. The rest found no imported row to attach to (another import of this source may still have been in progress), so no exception was raised for them and they are not in the queue: re-upload those rows once every import of this source has finished. If unexpected, review the source's duplicate key and the fields it names (a coarse or truncated mapping collapses distinct rows onto one key)."
|
|
4059
4076
|
type: string
|
|
4060
4077
|
droppedDuplicateRows:
|
|
4061
|
-
description: Number of rows
|
|
4078
|
+
description: Number of rows kept out of the import as duplicates (rows repeating the source's duplicate key within the upload or already persisted); see flaggedDuplicateRows for how many were also raised as exceptions
|
|
4062
4079
|
examples:
|
|
4063
4080
|
- 60
|
|
4064
4081
|
format: int64
|
|
@@ -4085,7 +4102,7 @@ components:
|
|
|
4085
4102
|
- transactions_2024.csv
|
|
4086
4103
|
type: string
|
|
4087
4104
|
flaggedDuplicateRows:
|
|
4088
|
-
description: Number of dropped
|
|
4105
|
+
description: "Number of dropped duplicate ROWS raised as DUPLICATE_TRANSACTION exceptions on the transaction they repeated, under the FLAG_AS_EXCEPTION duplicate policy — the default (subset of droppedDuplicateRows). Not a queue-item count: repeats of the same transaction share one exception, which carries how many times it was repeated"
|
|
4089
4106
|
examples:
|
|
4090
4107
|
- 15
|
|
4091
4108
|
format: int64
|
|
@@ -6030,7 +6047,7 @@ components:
|
|
|
6030
6047
|
type: string
|
|
6031
6048
|
config:
|
|
6032
6049
|
additionalProperties: {}
|
|
6033
|
-
description: Source-specific configuration object (connection and parsing settings).
|
|
6050
|
+
description: Source-specific configuration object (connection and parsing settings). duplicate_key holds the ordered list of mapped fields that make two rows the same row; absent means rows are deduplicated on external_id alone. duplicate_key_changed_at is the server-set RFC 3339 moment duplicate-key detection last changed meaning on this source — either that list changing, or the field map remapping the column a declared field reads; rows imported before it keep the key they were deduplicated under.
|
|
6034
6051
|
type: object
|
|
6035
6052
|
contextId:
|
|
6036
6053
|
description: Identifier of the context this source belongs to.
|
|
@@ -6667,19 +6684,9 @@ components:
|
|
|
6667
6684
|
SetupProgressNextResponse:
|
|
6668
6685
|
additionalProperties: false
|
|
6669
6686
|
properties:
|
|
6670
|
-
action:
|
|
6671
|
-
description: Stable semantic label of the action.
|
|
6672
|
-
enum:
|
|
6673
|
-
- add_left_source
|
|
6674
|
-
- add_right_source
|
|
6675
|
-
- add_field_map
|
|
6676
|
-
- add_match_rule
|
|
6677
|
-
examples:
|
|
6678
|
-
- add_left_source
|
|
6679
|
-
type: string
|
|
6680
6687
|
forSource:
|
|
6681
6688
|
$ref: "#/components/schemas/SetupProgressSourceRef"
|
|
6682
|
-
description: Source the action targets; set only for the
|
|
6689
|
+
description: Source the action targets; set only for the source-mapping action, naming the unmapped source.
|
|
6683
6690
|
method:
|
|
6684
6691
|
description: HTTP method of the create endpoint.
|
|
6685
6692
|
examples:
|
|
@@ -6706,19 +6713,19 @@ components:
|
|
|
6706
6713
|
type:
|
|
6707
6714
|
- array
|
|
6708
6715
|
- "null"
|
|
6709
|
-
|
|
6710
|
-
description:
|
|
6716
|
+
requirementId:
|
|
6717
|
+
description: Public activation-requirement identifier this action satisfies.
|
|
6711
6718
|
enum:
|
|
6712
|
-
-
|
|
6713
|
-
-
|
|
6714
|
-
-
|
|
6715
|
-
-
|
|
6719
|
+
- context.activation.requirement.left-source
|
|
6720
|
+
- context.activation.requirement.right-source
|
|
6721
|
+
- context.activation.requirement.source-mapping
|
|
6722
|
+
- context.activation.requirement.match-rule
|
|
6723
|
+
- context.activation.requirement.fee-rule
|
|
6716
6724
|
examples:
|
|
6717
|
-
-
|
|
6725
|
+
- context.activation.requirement.left-source
|
|
6718
6726
|
type: string
|
|
6719
6727
|
required:
|
|
6720
|
-
-
|
|
6721
|
-
- action
|
|
6728
|
+
- requirementId
|
|
6722
6729
|
- operationId
|
|
6723
6730
|
- method
|
|
6724
6731
|
- path
|
|
@@ -6728,11 +6735,18 @@ components:
|
|
|
6728
6735
|
additionalProperties: false
|
|
6729
6736
|
properties:
|
|
6730
6737
|
missing:
|
|
6731
|
-
description: Stable
|
|
6738
|
+
description: Stable identifiers of missing activation requirements; empty when ready.
|
|
6732
6739
|
examples:
|
|
6733
|
-
- -
|
|
6734
|
-
-
|
|
6740
|
+
- - context.activation.requirement.left-source
|
|
6741
|
+
- context.activation.requirement.match-rule
|
|
6735
6742
|
items:
|
|
6743
|
+
enum:
|
|
6744
|
+
- context.activation.requirement.left-source
|
|
6745
|
+
- context.activation.requirement.right-source
|
|
6746
|
+
- context.activation.requirement.source-mapping
|
|
6747
|
+
- context.activation.requirement.match-rule
|
|
6748
|
+
- context.activation.requirement.fee-rule
|
|
6749
|
+
- context.activation.requirement.unknown
|
|
6736
6750
|
type: string
|
|
6737
6751
|
type:
|
|
6738
6752
|
- array
|
|
@@ -7359,7 +7373,7 @@ components:
|
|
|
7359
7373
|
type: string
|
|
7360
7374
|
config:
|
|
7361
7375
|
additionalProperties: {}
|
|
7362
|
-
description: Source-specific configuration object (connection and parsing settings).
|
|
7376
|
+
description: Source-specific configuration object (connection and parsing settings). duplicate_key holds the ordered list of mapped fields that make two rows the same row; absent means rows are deduplicated on external_id alone. duplicate_key_changed_at is the server-set RFC 3339 moment duplicate-key detection last changed meaning on this source — either that list changing, or the field map remapping the column a declared field reads; rows imported before it keep the key they were deduplicated under.
|
|
7363
7377
|
type: object
|
|
7364
7378
|
contextId:
|
|
7365
7379
|
description: Identifier of the context this source belongs to.
|
|
@@ -7577,16 +7591,7 @@ components:
|
|
|
7577
7591
|
- pluggy-main
|
|
7578
7592
|
minLength: 1
|
|
7579
7593
|
type: string
|
|
7580
|
-
vendor:
|
|
7581
|
-
description: "Aggregator vendor: pluggy or belvo"
|
|
7582
|
-
enum:
|
|
7583
|
-
- pluggy
|
|
7584
|
-
- belvo
|
|
7585
|
-
examples:
|
|
7586
|
-
- pluggy
|
|
7587
|
-
type: string
|
|
7588
7594
|
required:
|
|
7589
|
-
- vendor
|
|
7590
7595
|
- configName
|
|
7591
7596
|
type: object
|
|
7592
7597
|
TestAggregatorConnectionResponse:
|
|
@@ -7671,6 +7676,11 @@ components:
|
|
|
7671
7676
|
- "2025-01-15T00:00:00Z"
|
|
7672
7677
|
format: date-time
|
|
7673
7678
|
type: string
|
|
7679
|
+
dedupeKey:
|
|
7680
|
+
description: "Read-only: the duplicate-key value this row was imported under, derived from the source's duplicate key declaration at import time. A source can change that declaration later, so this is the only place that says which identity THIS row carries. Prefixed v1 when the key spells out the fields it was derived from, v1h when those fields were hashed because the spelled-out key was too long to index."
|
|
7681
|
+
examples:
|
|
7682
|
+
- v1|external_id=9:TXN-12345
|
|
7683
|
+
type: string
|
|
7674
7684
|
description:
|
|
7675
7685
|
description: Free-text description carried from the source
|
|
7676
7686
|
examples:
|
|
@@ -7719,6 +7729,7 @@ components:
|
|
|
7719
7729
|
- sourceId
|
|
7720
7730
|
- contextId
|
|
7721
7731
|
- externalId
|
|
7732
|
+
- dedupeKey
|
|
7722
7733
|
- amount
|
|
7723
7734
|
- currency
|
|
7724
7735
|
- date
|
|
@@ -8105,7 +8116,7 @@ components:
|
|
|
8105
8116
|
properties:
|
|
8106
8117
|
config:
|
|
8107
8118
|
additionalProperties: {}
|
|
8108
|
-
description: Source-specific configuration object (connection and parsing settings).
|
|
8119
|
+
description: "Source-specific configuration object (connection and parsing settings). Reserved key duplicate_key: the ordered list of mapped fields that make two rows the same row — any of external_id, amount, currency, date, description, fee_amount, fee_currency. Send it empty of that key and rows are deduplicated on external_id alone. A field this source's field map does not fill is refused, because a key over a field that is always empty makes every row a duplicate of every other. A source bound to an aggregator connection (reserved key connection_config_name) cannot carry a duplicate key of its own: the aggregator retracts a movement by naming its external id, so that id has to stay this source's row identity. A config holding both is refused in either direction — drop duplicate_key from a bound source, or disconnect the aggregator connection first. Editing duplicate_key is allowed at any time and governs later imports only: rows already imported keep the key they were deduplicated under, and a duplicate straddling the change is knowingly not detected. Reserved read-only key duplicate_key_changed_at: the RFC 3339 moment duplicate-key detection last changed meaning on this source, set by the server; a value sent by a client is discarded. It moves for either change that re-keys future rows — editing duplicate_key, or the field map remapping the column a declared field reads (a source keyed on description whose description column moves derives a different key for the same movement). Reserved key duplicate_policy: what happens to a row repeating the duplicate key — FLAG_AS_EXCEPTION (the default: the repeat is kept out of the import and raised as a duplicate exception on the row it repeated), KEEP_FIRST (the repeat is dropped and nothing is raised), or REJECT (the repeat is counted as an import error)."
|
|
8109
8120
|
type: object
|
|
8110
8121
|
name:
|
|
8111
8122
|
description: New human-readable name of the source.
|
|
@@ -8789,6 +8800,24 @@ paths:
|
|
|
8789
8800
|
schema:
|
|
8790
8801
|
$ref: "#/components/schemas/ReconciliationContextResponse"
|
|
8791
8802
|
description: OK
|
|
8803
|
+
"409":
|
|
8804
|
+
content:
|
|
8805
|
+
application/problem+json:
|
|
8806
|
+
examples:
|
|
8807
|
+
activationNotReady:
|
|
8808
|
+
summary: Missing a right-side source and a match rule.
|
|
8809
|
+
value:
|
|
8810
|
+
type: https://errors.lerian.studio/v1/MTCH-0103
|
|
8811
|
+
title: Conflict
|
|
8812
|
+
status: 409
|
|
8813
|
+
detail: context is not ready for activation; call GET setup-progress for the missing requirements
|
|
8814
|
+
errors:
|
|
8815
|
+
- location: context.activation.requirement.right-source
|
|
8816
|
+
- location: context.activation.requirement.match-rule
|
|
8817
|
+
code: MTCH-0103
|
|
8818
|
+
schema:
|
|
8819
|
+
$ref: "#/components/schemas/Detail"
|
|
8820
|
+
description: Context activation is blocked by an invalid transition, a duplicate name, an archived context, or missing activation requirements.
|
|
8792
8821
|
default:
|
|
8793
8822
|
content:
|
|
8794
8823
|
application/problem+json:
|
|
@@ -10064,7 +10093,7 @@ paths:
|
|
|
10064
10093
|
tags:
|
|
10065
10094
|
- Configuration
|
|
10066
10095
|
post:
|
|
10067
|
-
description: "Creates a field map for a source within a context. Mapping keys form a closed vocabulary: required keys are external_id, amount, currency, date; optional keys are description, fee_amount, fee_currency. Values name source columns and must be non-empty strings."
|
|
10096
|
+
description: "Creates a field map for a source within a context. A source holds at most one field map: creating a second is rejected with a 409 carrying the configuration has-field-map code, and the caller should update the existing map instead. Mapping keys form a closed vocabulary: required keys are external_id, amount, currency, date; optional keys are description, fee_amount, fee_currency. Values name source columns and must be non-empty strings."
|
|
10068
10097
|
operationId: createFieldMap
|
|
10069
10098
|
parameters:
|
|
10070
10099
|
- description: Context ID
|
|
@@ -10144,7 +10173,7 @@ paths:
|
|
|
10144
10173
|
- Configuration
|
|
10145
10174
|
/v1/discovery/aggregator-connections:
|
|
10146
10175
|
get:
|
|
10147
|
-
description: "Returns a cursor-paginated list of the tenant's Open-Finance data-aggregator (Pluggy/Belvo) connections, ordered by config name. The list is secret-free by construction: no credential material (clientId/secret/ciphertext) is ever returned."
|
|
10176
|
+
description: "Returns a cursor-paginated list of the tenant's Open-Finance data-aggregator (Pluggy/Belvo) connections, ordered by config name. The list is secret-free by construction: no credential material (clientId/secret/ciphertext) is ever returned. Each row carries `testable`, derived from the stored vendor, so a client knows whether the connectivity-test action can run at all without keeping its own vendor list."
|
|
10148
10177
|
operationId: listAggregatorConnections
|
|
10149
10178
|
parameters:
|
|
10150
10179
|
- description: Maximum number of records to return
|
|
@@ -10212,7 +10241,7 @@ paths:
|
|
|
10212
10241
|
- Discovery
|
|
10213
10242
|
/v1/discovery/aggregator-connections/test:
|
|
10214
10243
|
post:
|
|
10215
|
-
description: "Runs a live connectivity check for an existing Open-Finance data-aggregator (Pluggy/Belvo) connection using its already-sealed credential, addressed by
|
|
10244
|
+
description: "Runs a live connectivity check for an existing Open-Finance data-aggregator (Pluggy/Belvo) connection using its already-sealed credential, addressed by configName. The vendor is read from the stored connection, not from the request. No credential is supplied or returned: the result is the secret-free boolean health of the connection. Two refusals are deliberately distinct: a config name matching no connection is 404 MTCH-0005, while a connection whose stored vendor Matcher has no test path for yet (Belvo today) is 422 MTCH-0210 and no test runs. The list endpoint's per-connection `testable` flag tells a client which is which before it offers the action."
|
|
10216
10245
|
operationId: testAggregatorConnection
|
|
10217
10246
|
requestBody:
|
|
10218
10247
|
content:
|
|
@@ -12478,6 +12507,30 @@ paths:
|
|
|
12478
12507
|
responses:
|
|
12479
12508
|
"204":
|
|
12480
12509
|
description: No Content
|
|
12510
|
+
"409":
|
|
12511
|
+
content:
|
|
12512
|
+
application/problem+json:
|
|
12513
|
+
examples:
|
|
12514
|
+
feeScheduleInUse:
|
|
12515
|
+
summary: Two contexts still reference this schedule's fee rules.
|
|
12516
|
+
value:
|
|
12517
|
+
type: https://errors.lerian.studio/v1/MTCH-0108
|
|
12518
|
+
title: Conflict
|
|
12519
|
+
status: 409
|
|
12520
|
+
detail: This fee schedule is still referenced by fee rules; nothing was deleted. Remove the referencing fee rules, then retry the deletion.
|
|
12521
|
+
errors:
|
|
12522
|
+
- location: fee-schedule.delete.blocking-contexts
|
|
12523
|
+
value:
|
|
12524
|
+
references:
|
|
12525
|
+
- id: 11111111-1111-1111-1111-111111111111
|
|
12526
|
+
name: US Card Settlements
|
|
12527
|
+
- id: 22222222-2222-2222-2222-222222222222
|
|
12528
|
+
name: EU Card Settlements
|
|
12529
|
+
count: 2
|
|
12530
|
+
code: MTCH-0108
|
|
12531
|
+
schema:
|
|
12532
|
+
$ref: "#/components/schemas/Detail"
|
|
12533
|
+
description: Fee schedule is still referenced by fee rules or variance history.
|
|
12481
12534
|
default:
|
|
12482
12535
|
content:
|
|
12483
12536
|
application/problem+json:
|
|
@@ -11,9 +11,10 @@
|
|
|
11
11
|
// field.
|
|
12
12
|
//
|
|
13
13
|
// `context_setup_progress` (F3 fix) reports activation/upload prerequisites —
|
|
14
|
-
// configured-resource counts and the stable missing-requirement
|
|
15
|
-
// operator can check readiness
|
|
16
|
-
// status=ACTIVE` instead of discovering the
|
|
14
|
+
// configured-resource counts and the stable missing-requirement identifiers
|
|
15
|
+
// (context.activation.requirement.*) — so an operator can check readiness
|
|
16
|
+
// before attempting `context_update status=ACTIVE` instead of discovering the
|
|
17
|
+
// gate via a 409.
|
|
17
18
|
import { registerContextArchiveTool } from './archive.js';
|
|
18
19
|
import { registerContextCreateTool } from './create.js';
|
|
19
20
|
import { registerContextGetTool } from './get.js';
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,4EAA4E;AAC5E,0EAA0E;AAC1E,8EAA8E;AAC9E,kBAAkB;AAIlB,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"}
|
|
@@ -44,13 +44,19 @@ export function registerContextNextStepTool(server) {
|
|
|
44
44
|
'its readiness gate. Provide contextId (UUID path param, not a tenant ' +
|
|
45
45
|
'field). Returns { ready, next, thenCall }: ready is true only when the ' +
|
|
46
46
|
'context satisfies every activation requirement; next is the exact ' +
|
|
47
|
-
'action to take (
|
|
48
|
-
'
|
|
49
|
-
'
|
|
50
|
-
'
|
|
51
|
-
|
|
52
|
-
'
|
|
53
|
-
'
|
|
47
|
+
'action to take (requirementId — one of the FIVE public ' +
|
|
48
|
+
'context.activation.requirement.* identifiers: left-source, ' +
|
|
49
|
+
'right-source, source-mapping, match-rule, fee-rule; the sixth, ' +
|
|
50
|
+
'context.activation.requirement.unknown, never reaches next — the ' +
|
|
51
|
+
"backend returns a null next for an unmapped slug — it appears only in " +
|
|
52
|
+
'context_setup_progress readiness.missing[]; operationId, method, ' +
|
|
53
|
+
'path, requiredFields — field NAMES only, never values; you supply the ' +
|
|
54
|
+
'values), or null when ready; thenCall instructs you to apply next and ' +
|
|
55
|
+
'call next_step again with the same contextId, repeating until ready is ' +
|
|
56
|
+
'true (null when ready). Prefer this over context_setup_progress when ' +
|
|
57
|
+
'you just need the next action to advance setup. Returns a structured ' +
|
|
58
|
+
'RFC 9457 error on failure (e.g. 404 if the context does not exist or ' +
|
|
59
|
+
'is not yours).',
|
|
54
60
|
inputSchema: nextStepInputShape,
|
|
55
61
|
}, async (args, extra) => {
|
|
56
62
|
let client;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-step.js","sourceRoot":"","sources":["../../../src/tools/context/next-step.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mEAAmE;AACnE,+BAA+B;AAC/B,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,EAAE;AACF,6EAA6E;AAC7E,mEAAmE;AACnE,kFAAkF;AAClF,iFAAiF;AACjF,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,8EAA8E;IAC9E,qDAAqD,CAAA;AAEvD,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,sEAAsE,CAAC;CACpF,CAAA;AAWD;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,WAAW,EACT,wEAAwE;YACxE,uEAAuE;YACvE,yEAAyE;YACzE,oEAAoE;YACpE,
|
|
1
|
+
{"version":3,"file":"next-step.js","sourceRoot":"","sources":["../../../src/tools/context/next-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
// + match rules to already exist (the readiness gate). Before this tool, an
|
|
7
7
|
// operator only discovered the gate by hitting a 403/409. This tool reports
|
|
8
8
|
// the SAME aggregate state matcher's readiness gate checks — configured-
|
|
9
|
-
// resource counts, last-run state, and the stable missing-requirement
|
|
10
|
-
// in one request, so an operator-driving LLM can check
|
|
11
|
-
// attempting activation instead of after failing it.
|
|
9
|
+
// resource counts, last-run state, and the stable missing-requirement
|
|
10
|
+
// identifiers — in one request, so an operator-driving LLM can check
|
|
11
|
+
// readiness BEFORE attempting activation instead of after failing it.
|
|
12
12
|
//
|
|
13
13
|
// contextId is the only input (a UUID path param); no tenant field is
|
|
14
14
|
// accepted (matcher scopes to the relayed token's tenant).
|
|
@@ -43,11 +43,17 @@ export function registerContextSetupProgressTool(server) {
|
|
|
43
43
|
'schedules { total }; lastRun (id/status/completedAt of the most ' +
|
|
44
44
|
'recent match run, or null if it never ran); and readiness ' +
|
|
45
45
|
'{ ready, missing[] } — ready is true only when every requirement is ' +
|
|
46
|
-
'met, and missing[] names the stable gaps
|
|
47
|
-
'
|
|
48
|
-
'
|
|
49
|
-
'
|
|
50
|
-
'
|
|
46
|
+
'met, and missing[] names the stable gaps. The 409 activation ' +
|
|
47
|
+
'rejection itself carries NO requirement detail — it is deliberately ' +
|
|
48
|
+
'generic — so this is where to read the identifiers: ' +
|
|
49
|
+
'context.activation.requirement.left-source, ' +
|
|
50
|
+
'context.activation.requirement.right-source, ' +
|
|
51
|
+
'context.activation.requirement.source-mapping, ' +
|
|
52
|
+
'context.activation.requirement.match-rule, ' +
|
|
53
|
+
'context.activation.requirement.fee-rule, or ' +
|
|
54
|
+
'context.activation.requirement.unknown. Returns a structured RFC ' +
|
|
55
|
+
'9457 error on failure (e.g. 404 if the context does not exist or is ' +
|
|
56
|
+
'not yours).',
|
|
51
57
|
inputSchema: getContextSetupProgressInputShape,
|
|
52
58
|
}, async (args, extra) => {
|
|
53
59
|
return dispatchContext({ method: 'GET', path: contextSetupProgressPath(args.contextId) }, extra);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-progress.js","sourceRoot":"","sources":["../../../src/tools/context/setup-progress.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"setup-progress.js","sourceRoot":"","sources":["../../../src/tools/context/setup-progress.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,sEAAsE;AACtE,qEAAqE;AACrE,sEAAsE;AACtE,EAAE;AACF,sEAAsE;AACtE,2DAA2D;AAE3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,uDAAuD;AACvD,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAA;AACnD,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,mEAAmE,CAAC;CACjF,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,mEAAmE;YACnE,uEAAuE;YACvE,sEAAsE;YACtE,oEAAoE;YACpE,sEAAsE;YACtE,qEAAqE;YACrE,sEAAsE;YACtE,+DAA+D;YAC/D,kEAAkE;YAClE,4DAA4D;YAC5D,sEAAsE;YACtE,+DAA+D;YAC/D,sEAAsE;YACtE,sDAAsD;YACtD,8CAA8C;YAC9C,+CAA+C;YAC/C,iDAAiD;YACjD,6CAA6C;YAC7C,8CAA8C;YAC9C,mEAAmE;YACnE,sEAAsE;YACtE,aAAa;QACf,WAAW,EAAE,iCAAiC;KAC/C,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,eAAe,CACpB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EACjE,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -48,8 +48,10 @@ export function registerFieldMapCreateTool(server) {
|
|
|
48
48
|
'required/optional keys and the critical external_id join-key rule). ' +
|
|
49
49
|
"A source must be mapped (or be self-mapping, e.g. camt053) before a " +
|
|
50
50
|
'context can be activated — see context_setup_progress to check ' +
|
|
51
|
-
'readiness.
|
|
52
|
-
'
|
|
51
|
+
'readiness. A source holds at most ONE field map: posting a second is ' +
|
|
52
|
+
'refused with a 409 conflict, so use field_map_update to change the ' +
|
|
53
|
+
'mapping a source already has. Returns the created field map, or a ' +
|
|
54
|
+
'structured RFC 9457 error naming every invalid/missing/unknown key.',
|
|
53
55
|
inputSchema: createFieldMapInputShape,
|
|
54
56
|
}, async (args, extra) => {
|
|
55
57
|
return dispatchFieldMap({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/field-map/create.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,0DAA0D;AAC1D,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,6EAA6E;AAC7E,uEAAuE;AACvE,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,kDAAkD;AAElD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEvF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,sEAAsE;QACpE,iCAAiC,CACpC;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,0DAA0D,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACzE,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB;IAEzB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,+DAA+D;YAC/D,kEAAkE;YAClE,sEAAsE;YACtE,iEAAiE;YACjE,sEAAsE;YACtE,sEAAsE;YACtE,iEAAiE;YACjE,qEAAqE;YACrE,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/field-map/create.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,0DAA0D;AAC1D,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,6EAA6E;AAC7E,uEAAuE;AACvE,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,kDAAkD;AAElD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEvF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,sEAAsE;QACpE,iCAAiC,CACpC;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,0DAA0D,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACzE,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB;IAEzB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,+DAA+D;YAC/D,kEAAkE;YAClE,sEAAsE;YACtE,iEAAiE;YACjE,sEAAsE;YACtE,sEAAsE;YACtE,iEAAiE;YACjE,uEAAuE;YACvE,qEAAqE;YACrE,oEAAoE;YACpE,qEAAqE;QACvE,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,gBAAgB,CACrB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;YACvD,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;SACpC,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
// scopes to the relayed token's tenant). A 204 response surfaces as `null`
|
|
6
6
|
// (see dispatchFieldMap), matching the other curated families' delete
|
|
7
7
|
// behavior. Deleting a source's only field map will reopen the
|
|
8
|
-
//
|
|
8
|
+
// context.activation.requirement.source-mapping readiness gap reported by
|
|
9
|
+
// context_setup_progress.
|
|
9
10
|
import { z } from 'zod';
|
|
10
11
|
import { dispatchFieldMap, fieldMapPath } from './shared.js';
|
|
11
12
|
/** Zod raw shape for `field_map_delete` input — just the flat id. */
|
|
@@ -23,8 +24,9 @@ export const deleteFieldMapInputShape = {
|
|
|
23
24
|
export function registerFieldMapDeleteTool(server) {
|
|
24
25
|
server.registerTool('field_map_delete', {
|
|
25
26
|
description: 'Delete a field map by id (UUID path param, not a tenant field). ' +
|
|
26
|
-
"Removing a source's only field map reopens the
|
|
27
|
-
'activation-readiness
|
|
27
|
+
"Removing a source's only field map reopens the " +
|
|
28
|
+
'context.activation.requirement.source-mapping activation-readiness ' +
|
|
29
|
+
'gap (see context_setup_progress) and an ACTIVE ' +
|
|
28
30
|
"context's matching/ingestion against that source will be affected. " +
|
|
29
31
|
'Returns null on success (204), or a structured RFC 9457 error.',
|
|
30
32
|
inputSchema: deleteFieldMapInputShape,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/tools/field-map/delete.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,sEAAsE;AACtE,+DAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/tools/field-map/delete.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,sEAAsE;AACtE,+DAA+D;AAC/D,0EAA0E;AAC1E,0BAA0B;AAE1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE5D,qEAAqE;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,oCAAoC,CAAC;CAClD,CAAA;AAOD;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,kEAAkE;YAClE,iDAAiD;YACjD,qEAAqE;YACrE,iDAAiD;YACjD,qEAAqE;YACrE,gEAAgE;QAClE,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,gBAAgB,CACrB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EACzD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// Curated field-map vertical: five typed tools over the matcher field-map
|
|
2
2
|
// resource — create, list, get, update, delete. Field maps bind a source's
|
|
3
3
|
// raw column names to matcher's canonical reconciliation vocabulary and gate
|
|
4
|
-
// context activation (the
|
|
5
|
-
// context_setup_progress). Closes findings N3
|
|
6
|
-
// and N4/F6 (createFieldMap generic-only,
|
|
7
|
-
// before this family, all five operations
|
|
8
|
-
// generic-only).
|
|
4
|
+
// context activation (the context.activation.requirement.source-mapping
|
|
5
|
+
// readiness identifier — see context_setup_progress). Closes findings N3
|
|
6
|
+
// (field-map shape undiscoverable) and N4/F6 (createFieldMap generic-only,
|
|
7
|
+
// ingestion read/write asymmetry): before this family, all five operations
|
|
8
|
+
// were UNCOVERED (neither curated nor generic-only).
|
|
9
9
|
//
|
|
10
10
|
// Path shape is mixed, unlike sources: create/get are source-nested
|
|
11
11
|
// (/v1/contexts/{contextId}/sources/{sourceId}/field-maps), list is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/field-map/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/field-map/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,qDAAqD;AACrD,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,8EAA8E;AAC9E,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,wEAAwE;AACxE,gBAAgB;AAIhB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAExD,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAClC,wBAAwB,CAAC,MAAM,CAAC,CAAA;IAChC,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC/B,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAClC,0BAA0B,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC"}
|
|
@@ -79,7 +79,13 @@ export function registerIngestionJobTransactionsListTool(server) {
|
|
|
79
79
|
'sort_order (asc|desc), and/or sort_by ' +
|
|
80
80
|
'(id|created_at|date|status|extraction_status). The response carries ' +
|
|
81
81
|
'{ items, nextCursor } — paginate by re-calling with the returned ' +
|
|
82
|
-
'nextCursor.
|
|
82
|
+
'nextCursor. Each row carries a read-only dedupeKey: the duplicate-key ' +
|
|
83
|
+
'identity that row was imported under. A source can change its ' +
|
|
84
|
+
'duplicate-key declaration later, so this is the only place that says ' +
|
|
85
|
+
'which identity THIS row carries — prefixed v1 when the key spells out ' +
|
|
86
|
+
'the fields it was derived from, v1h when those fields were hashed ' +
|
|
87
|
+
'because the spelled-out key was too long to index. No tenant field is ' +
|
|
88
|
+
'accepted.',
|
|
83
89
|
inputSchema: listJobTransactionsInputShape,
|
|
84
90
|
}, async (args, extra) => {
|
|
85
91
|
const query = buildListQuery(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-transactions-list.js","sourceRoot":"","sources":["../../../src/tools/ingestion/job-transactions-list.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,uEAAuE;AACvE,iFAAiF;AACjF,iFAAiF;AAEjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,IAAI;IACJ,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,mBAAmB;CACX,CAAA;AAEV,gGAAgG;AAChG,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,yEAAyE;QACvE,QAAQ,CACX;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,yDAAyD,CAAC;IACtE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,mEAAmE;QACjE,oEAAoE,CACvE;IACH,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,WAAW,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,wBAAwB,CAAC;IACrC,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,2BAA2B,CAAC;SACjC,QAAQ,EAAE;SACV,QAAQ,CACP,2DAA2D,CAC5D;CACJ,CAAA;AAOD,+EAA+E;AAC/E,SAAS,cAAc,CACrB,IAA8B;IAE9B,MAAM,KAAK,GAAoC,EAAE,CAAA;IACjD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wCAAwC,CACtD,MAAiB;IAEjB,MAAM,CAAC,YAAY,CACjB,iCAAiC,EACjC;QACE,WAAW,EACT,8DAA8D;YAC9D,0EAA0E;YAC1E,gEAAgE;YAChE,wCAAwC;YACxC,sEAAsE;YACtE,mEAAmE;YACnE,
|
|
1
|
+
{"version":3,"file":"job-transactions-list.js","sourceRoot":"","sources":["../../../src/tools/ingestion/job-transactions-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -128,8 +128,13 @@ export function registerIngestionTransactionsSearchTool(server) {
|
|
|
128
128
|
'date_from/date_to (RFC 3339), reference (exact external ID), currency ' +
|
|
129
129
|
'(ISO 4217), source_id (UUID), status ' +
|
|
130
130
|
'(UNMATCHED|MATCHED|IGNORED|PENDING_REVIEW), limit (1–50), and offset ' +
|
|
131
|
-
'(>= 0). Paginate by re-calling with a bumped offset.
|
|
132
|
-
'
|
|
131
|
+
'(>= 0). Paginate by re-calling with a bumped offset. Each row carries ' +
|
|
132
|
+
'a read-only dedupeKey: the duplicate-key identity that row was ' +
|
|
133
|
+
'imported under. A source can change its duplicate-key declaration ' +
|
|
134
|
+
'later, so this is the only place that says which identity THIS row ' +
|
|
135
|
+
'carries — prefixed v1 when the key spells out the fields it was ' +
|
|
136
|
+
'derived from, v1h when those fields were hashed because the ' +
|
|
137
|
+
'spelled-out key was too long to index. No tenant field is accepted.',
|
|
133
138
|
inputSchema: searchTransactionsInputShape,
|
|
134
139
|
}, async (args, extra) => {
|
|
135
140
|
const query = buildSearchQuery(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions-search.js","sourceRoot":"","sources":["../../../src/tools/ingestion/transactions-search.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transactions-search.js","sourceRoot":"","sources":["../../../src/tools/ingestion/transactions-search.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,wDAAwD;AACxD,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,gFAAgF;AAChF,iFAAiF;AACjF,0EAA0E;AAC1E,iFAAiF;AACjF,wCAAwC;AAExC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE9E,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW;IACX,SAAS;IACT,SAAS;IACT,gBAAgB;CACR,CAAA;AAEV,8GAA8G;AAC9G,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,sEAAsE;QACpE,4BAA4B,CAC/B;IACH,CAAC,EAAE,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oEAAoE;QAClE,+CAA+C,CAClD;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qEAAqE;QACnE,+CAA+C,CAClD;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;IACzE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;IACvE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0BAA0B,CAAC;IACvC,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,oBAAoB,CAAC;SAC1B,QAAQ,EAAE;SACV,QAAQ,CACP,uEAAuE,CACxE;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,yDAAyD,CAAC;IACtE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,gEAAgE;QAC9D,kEAAkE,CACrE;CACJ,CAAA;AAOD,iFAAiF;AACjF,SAAS,gBAAgB,CACvB,IAA6B;IAE7B,MAAM,KAAK,GAAoC,EAAE,CAAA;IACjD,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAClC,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAClC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAChC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAClC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CACrD,MAAiB;IAEjB,MAAM,CAAC,YAAY,CACjB,+BAA+B,EAC/B;QACE,WAAW,EACT,kEAAkE;YAClE,uEAAuE;YACvE,kEAAkE;YAClE,wEAAwE;YACxE,uCAAuC;YACvC,uEAAuE;YACvE,wEAAwE;YACxE,iEAAiE;YACjE,oEAAoE;YACpE,qEAAqE;YACrE,kEAAkE;YAClE,8DAA8D;YAC9D,qEAAqE;QACvE,WAAW,EAAE,4BAA4B;KAC1C,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACpC,OAAO,iBAAiB,CACtB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,6BAA6B,CAAC,IAAI,CAAC,SAAS,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"}
|
|
@@ -86,8 +86,11 @@ export function registerIngestionUploadBeginTool(server) {
|
|
|
86
86
|
'" then file=@<your-local-file>.',
|
|
87
87
|
'4. On success matcher returns 202 with a jobId. POLL ingestion_job_get ' +
|
|
88
88
|
'(with this contextId and that jobId) to watch status. COMPLETED and ' +
|
|
89
|
-
'FAILED are terminal
|
|
90
|
-
'reason
|
|
89
|
+
'FAILED are terminal. ALWAYS read the `diagnosis` field when present, ' +
|
|
90
|
+
'on either terminal status: on FAILED it is the reason, and on ' +
|
|
91
|
+
'COMPLETED — including a job with zero failed rows — it is a ' +
|
|
92
|
+
'file-level note the operator must act on, such as a settlement ' +
|
|
93
|
+
're-join that fell back to degraded attribution.',
|
|
91
94
|
'5. SIZE CAP: the streaming route is governed by the operator-' +
|
|
92
95
|
'configured runtime key ingestion.max_upload_bytes (default ~1 GiB; ' +
|
|
93
96
|
'range 1 MiB–8 GiB). It counts the TOTAL request body — every part, ' +
|
|
@@ -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,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,
|
|
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,uEAAuE;gBACvE,gEAAgE;gBAChE,8DAA8D;gBAC9D,iEAAiE;gBACjE,iDAAiD;YACnD,+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"}
|
|
@@ -49,7 +49,21 @@ export const createSourceInputShape = {
|
|
|
49
49
|
.optional()
|
|
50
50
|
.describe('Source-specific configuration object (connection and parsing settings). ' +
|
|
51
51
|
'Optional; defaults to an empty object server-side when omitted. Its ' +
|
|
52
|
-
'shape depends on the source type and is validated server-side.'
|
|
52
|
+
'shape depends on the source type and is validated server-side. ' +
|
|
53
|
+
'Reserved key duplicate_key: the ordered list of mapped fields that ' +
|
|
54
|
+
'make two rows the same row (any of external_id, amount, currency, ' +
|
|
55
|
+
'date, description, fee_amount, fee_currency); omit it and rows are ' +
|
|
56
|
+
'deduplicated on external_id alone. A field the field map of this ' +
|
|
57
|
+
'source does not fill is refused. A source bound to an aggregator ' +
|
|
58
|
+
'connection (reserved key connection_config_name) cannot carry a ' +
|
|
59
|
+
'duplicate key of its own — the aggregator retracts a movement by ' +
|
|
60
|
+
'naming its external id, so that id has to stay the row identity; a ' +
|
|
61
|
+
'config holding both is refused, so drop duplicate_key or disconnect ' +
|
|
62
|
+
'the aggregator first. Reserved key duplicate_policy: what ' +
|
|
63
|
+
'happens to a row repeating that key — FLAG_AS_EXCEPTION (the default: ' +
|
|
64
|
+
'the repeat is kept out of the import and raised as a duplicate ' +
|
|
65
|
+
'exception on the row it repeated), KEEP_FIRST (dropped, nothing ' +
|
|
66
|
+
'raised) or REJECT (counted as an import error).'),
|
|
53
67
|
};
|
|
54
68
|
/**
|
|
55
69
|
* Build the POST body from the input minus the path-only `contextId`. Only the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/source/create.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,6EAA6E;AAC7E,gFAAgF;AAChF,mBAAmB;AACnB,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAE5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEhE,+FAA+F;AAC/F,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;CACD,CAAA;AAEV,qFAAqF;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,CAAU,CAAA;AAEtD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,wEAAwE;QACtE,yEAAyE;QACzE,iCAAiC,CACpC;IACH,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,QAAQ,CACP,2EAA2E;QACzE,0EAA0E;QAC1E,qCAAqC,CACxC;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,QAAQ,CACP,oEAAoE;QAClE,gCAAgC,CACnC;IACH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CACP,0EAA0E;QACxE,sEAAsE;QACtE,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/source/create.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,6EAA6E;AAC7E,gFAAgF;AAChF,mBAAmB;AACnB,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAE5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEhE,+FAA+F;AAC/F,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;CACD,CAAA;AAEV,qFAAqF;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,CAAU,CAAA;AAEtD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,wEAAwE;QACtE,yEAAyE;QACzE,iCAAiC,CACpC;IACH,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,QAAQ,CACP,2EAA2E;QACzE,0EAA0E;QAC1E,qCAAqC,CACxC;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,QAAQ,CACP,oEAAoE;QAClE,gCAAgC,CACnC;IACH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CACP,0EAA0E;QACxE,sEAAsE;QACtE,iEAAiE;QACjE,qEAAqE;QACrE,oEAAoE;QACpE,qEAAqE;QACrE,mEAAmE;QACnE,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,qEAAqE;QACrE,sEAAsE;QACtE,4DAA4D;QAC5D,wEAAwE;QACxE,iEAAiE;QACjE,kEAAkE;QAClE,iDAAiD,CACpD;CACJ,CAAA;AAOD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAuB;IAEvB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IAC/C,KAAK,UAAU,CAAA;IACf,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,oEAAoE;YACpE,4DAA4D;YAC5D,kEAAkE;YAClE,wEAAwE;YACxE,kDAAkD;YAClD,yEAAyE;YACzE,sEAAsE;YACtE,yEAAyE;YACzE,wEAAwE;QAC1E,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;YACxC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;SAC5B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
package/dist/tools/source/get.js
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
// contextId on single-resource ops, so both contextId and sourceId are path
|
|
5
5
|
// params. The source must belong to a context owned by the relayed token's
|
|
6
6
|
// tenant — matcher enforces that; no tenant field is accepted.
|
|
7
|
+
//
|
|
8
|
+
// This is also where an operator READS the duplicate-key declaration back: which
|
|
9
|
+
// fields this source deduplicates on, and when that declaration last changed.
|
|
10
|
+
// The second half matters as much as the first — a key edit governs later
|
|
11
|
+
// imports only, so the change moment is the only way to tell which rows were
|
|
12
|
+
// deduplicated under which key. Both live in the returned `config`, so the tool
|
|
13
|
+
// description names them; the input shape stays the two path ids.
|
|
7
14
|
import { z } from 'zod';
|
|
8
15
|
import { contextSourcePath, dispatchSource } from './shared.js';
|
|
9
16
|
/** Zod raw shape for `source_get` input — both path ids. */
|
|
@@ -29,7 +36,16 @@ export function registerSourceGetTool(server) {
|
|
|
29
36
|
'Provide both contextId and sourceId (path params; contextId is not a ' +
|
|
30
37
|
"tenant field). The source must belong to your token's tenant. Returns " +
|
|
31
38
|
'the source, or a structured RFC 9457 error (e.g. 404 if it does not ' +
|
|
32
|
-
'exist or is not yours).'
|
|
39
|
+
'exist or is not yours). In the returned config, duplicate_key is the ' +
|
|
40
|
+
'ordered list of mapped fields that make two rows the same row — absent ' +
|
|
41
|
+
'means rows are deduplicated on external_id alone — and ' +
|
|
42
|
+
'duplicate_key_changed_at is the server-set RFC 3339 moment ' +
|
|
43
|
+
'duplicate-key detection last changed meaning on this source: either ' +
|
|
44
|
+
'that list changing, or the field map remapping the column a declared ' +
|
|
45
|
+
'field reads. Rows imported before it keep the key they were ' +
|
|
46
|
+
'deduplicated under, so a duplicate straddling that moment is not ' +
|
|
47
|
+
'detected. duplicate_policy is what happens to a repeat: ' +
|
|
48
|
+
'FLAG_AS_EXCEPTION (the default), KEEP_FIRST or REJECT.',
|
|
33
49
|
inputSchema: getSourceInputShape,
|
|
34
50
|
}, async (args, extra) => {
|
|
35
51
|
return dispatchSource({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/tools/source/get.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,+DAA+D;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/tools/source/get.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,+DAA+D;AAC/D,EAAE;AACF,iFAAiF;AACjF,8EAA8E;AAC9E,0EAA0E;AAC1E,6EAA6E;AAC7E,gFAAgF;AAChF,kEAAkE;AAElE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,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,+CAA+C,CAAC;CAC7D,CAAA;AAKD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,sEAAsE;YACtE,uEAAuE;YACvE,wEAAwE;YACxE,sEAAsE;YACtE,uEAAuE;YACvE,yEAAyE;YACzE,yDAAyD;YACzD,6DAA6D;YAC7D,sEAAsE;YACtE,uEAAuE;YACvE,8DAA8D;YAC9D,mEAAmE;YACnE,0DAA0D;YAC1D,wDAAwD;QAC1D,WAAW,EAAE,mBAAmB;KACjC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;SACvD,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -36,7 +36,25 @@ export const updateSourceInputShape = {
|
|
|
36
36
|
config: z
|
|
37
37
|
.record(z.string(), z.unknown())
|
|
38
38
|
.optional()
|
|
39
|
-
.describe('Source-specific configuration object (validated server-side).'
|
|
39
|
+
.describe('Source-specific configuration object (validated server-side). ' +
|
|
40
|
+
'Reserved key duplicate_key: the ordered list of mapped fields that ' +
|
|
41
|
+
'make two rows the same row (any of external_id, amount, currency, ' +
|
|
42
|
+
'date, description, fee_amount, fee_currency); a config without it ' +
|
|
43
|
+
'deduplicates on external_id alone. Editing it governs later imports ' +
|
|
44
|
+
'only; rows already imported keep the key they were deduplicated ' +
|
|
45
|
+
'under, and duplicate_key_changed_at (server-set, read-only) records ' +
|
|
46
|
+
'the moment detection last changed meaning — this list changing, or ' +
|
|
47
|
+
'the field map remapping the column a declared field reads. ' +
|
|
48
|
+
'A source bound to an aggregator connection (reserved key ' +
|
|
49
|
+
'connection_config_name) cannot carry a duplicate key of its own — ' +
|
|
50
|
+
'the aggregator retracts a movement by naming its external id, so ' +
|
|
51
|
+
'that id has to stay the row identity; a config holding both is ' +
|
|
52
|
+
'refused, so drop duplicate_key or disconnect the aggregator first. ' +
|
|
53
|
+
'Reserved key duplicate_policy: what happens ' +
|
|
54
|
+
'to a row repeating that key — FLAG_AS_EXCEPTION (the default: the ' +
|
|
55
|
+
'repeat is kept out of the import and raised as a duplicate exception ' +
|
|
56
|
+
'on the row it repeated), KEEP_FIRST (dropped, nothing raised) or ' +
|
|
57
|
+
'REJECT (counted as an import error).'),
|
|
40
58
|
};
|
|
41
59
|
/**
|
|
42
60
|
* Build the PATCH body from the input minus the path-only ids. Only the fields
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/source/update.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,iFAAiF;AACjF,4EAA4E;AAC5E,yEAAyE;AACzE,2EAA2E;AAC3E,2BAA2B;AAE3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/D,iFAAiF;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,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,gDAAgD,CAAC;IAC7D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;IAClE,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CACP,iEAAiE,CAClE;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CACP
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/source/update.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,iFAAiF;AACjF,4EAA4E;AAC5E,yEAAyE;AACzE,2EAA2E;AAC3E,2BAA2B;AAE3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/D,iFAAiF;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,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,gDAAgD,CAAC;IAC7D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;IAClE,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CACP,iEAAiE,CAClE;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CACP,gEAAgE;QAC9D,qEAAqE;QACrE,oEAAoE;QACpE,oEAAoE;QACpE,sEAAsE;QACtE,kEAAkE;QAClE,sEAAsE;QACtE,qEAAqE;QACrE,6DAA6D;QAC7D,2DAA2D;QAC3D,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,qEAAqE;QACrE,8CAA8C;QAC9C,oEAAoE;QACpE,uEAAuE;QACvE,mEAAmE;QACnE,sCAAsC,CACzC;CACJ,CAAA;AAOD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAuB;IAEvB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IACpE,KAAK,UAAU,CAAA;IACf,KAAK,SAAS,CAAA;IACd,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,0EAA0E;YAC1E,yEAAyE;YACzE,kEAAkE;YAClE,sEAAsE;YACtE,wEAAwE;YACxE,iBAAiB;QACnB,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;YACtD,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;SAC5B,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lerianstudio/matcher-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-beta.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Model Context Protocol server for the Matcher reconciliation engine",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"build": "tsc",
|
|
42
42
|
"postbuild": "node scripts/vendor-spec.mjs",
|
|
43
43
|
"typecheck": "tsc --noEmit",
|
|
44
|
+
"pretest": "node scripts/vendor-spec.mjs",
|
|
44
45
|
"test": "vitest run",
|
|
45
46
|
"lint": "eslint ."
|
|
46
47
|
},
|