@raytio/mcp-server 9.1.0 → 9.2.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 -0
- package/dist/authorization.d.ts.map +1 -1
- package/dist/authorization.js +2 -0
- package/dist/authorization.js.map +1 -1
- package/dist/generated-reads/guardrails.d.ts.map +1 -1
- package/dist/generated-reads/guardrails.js +9 -0
- package/dist/generated-reads/guardrails.js.map +1 -1
- package/dist/tools/_shared/side-effect.d.ts +4 -3
- package/dist/tools/_shared/side-effect.d.ts.map +1 -1
- package/dist/tools/_shared/side-effect.js +6 -5
- package/dist/tools/_shared/side-effect.js.map +1 -1
- package/dist/tools/_shared/soft-deactivate.d.ts +43 -0
- package/dist/tools/_shared/soft-deactivate.d.ts.map +1 -0
- package/dist/tools/_shared/soft-deactivate.js +53 -0
- package/dist/tools/_shared/soft-deactivate.js.map +1 -0
- package/dist/tools/cmm/cmm-bank-account-deactivate.d.ts +14 -0
- package/dist/tools/cmm/cmm-bank-account-deactivate.d.ts.map +1 -0
- package/dist/tools/cmm/cmm-bank-account-deactivate.js +50 -0
- package/dist/tools/cmm/cmm-bank-account-deactivate.js.map +1 -0
- package/dist/tools/cmm/cmm-bank-account-register.d.ts +15 -0
- package/dist/tools/cmm/cmm-bank-account-register.d.ts.map +1 -0
- package/dist/tools/cmm/cmm-bank-account-register.js +104 -0
- package/dist/tools/cmm/cmm-bank-account-register.js.map +1 -0
- package/dist/tools/cmm/cmm-bank-account-use-register.d.ts +13 -0
- package/dist/tools/cmm/cmm-bank-account-use-register.d.ts.map +1 -0
- package/dist/tools/cmm/cmm-bank-account-use-register.js +72 -0
- package/dist/tools/cmm/cmm-bank-account-use-register.js.map +1 -0
- package/dist/tools/cmm/generated-reads.d.ts +5 -0
- package/dist/tools/cmm/generated-reads.d.ts.map +1 -0
- package/dist/tools/cmm/generated-reads.js +26 -0
- package/dist/tools/cmm/generated-reads.js.map +1 -0
- package/dist/tools/cmm/index.d.ts +5 -0
- package/dist/tools/cmm/index.d.ts.map +1 -0
- package/dist/tools/cmm/index.js +13 -0
- package/dist/tools/cmm/index.js.map +1 -0
- package/dist/tools/domains.d.ts.map +1 -1
- package/dist/tools/domains.js +22 -0
- package/dist/tools/domains.js.map +1 -1
- package/dist/tools/fxm/fxm-funds-account-consent-grant.d.ts +16 -0
- package/dist/tools/fxm/fxm-funds-account-consent-grant.d.ts.map +1 -0
- package/dist/tools/fxm/fxm-funds-account-consent-grant.js +88 -0
- package/dist/tools/fxm/fxm-funds-account-consent-grant.js.map +1 -0
- package/dist/tools/fxm/fxm-funds-account-consent-revoke.d.ts +13 -0
- package/dist/tools/fxm/fxm-funds-account-consent-revoke.d.ts.map +1 -0
- package/dist/tools/fxm/fxm-funds-account-consent-revoke.js +60 -0
- package/dist/tools/fxm/fxm-funds-account-consent-revoke.js.map +1 -0
- package/dist/tools/fxm/fxm-payment-method-deactivate.d.ts +13 -0
- package/dist/tools/fxm/fxm-payment-method-deactivate.d.ts.map +1 -0
- package/dist/tools/fxm/fxm-payment-method-deactivate.js +52 -0
- package/dist/tools/fxm/fxm-payment-method-deactivate.js.map +1 -0
- package/dist/tools/fxm/fxm-payment-method-register.d.ts +18 -0
- package/dist/tools/fxm/fxm-payment-method-register.d.ts.map +1 -0
- package/dist/tools/fxm/fxm-payment-method-register.js +102 -0
- package/dist/tools/fxm/fxm-payment-method-register.js.map +1 -0
- package/dist/tools/fxm/generated-reads.d.ts +5 -0
- package/dist/tools/fxm/generated-reads.d.ts.map +1 -0
- package/dist/tools/fxm/generated-reads.js +27 -0
- package/dist/tools/fxm/generated-reads.js.map +1 -0
- package/dist/tools/fxm/index.d.ts +5 -0
- package/dist/tools/fxm/index.d.ts.map +1 -0
- package/dist/tools/fxm/index.js +15 -0
- package/dist/tools/fxm/index.js.map +1 -0
- package/dist/tools/role-mapping.d.ts.map +1 -1
- package/dist/tools/role-mapping.js +12 -0
- package/dist/tools/role-mapping.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,8 @@ This server exposes Raytio platform capabilities to AI agents via MCP. Tools are
|
|
|
14
14
|
| **PPM** — Project & Program Management | Read and update Raytio work items and activities with semantic status transitions. |
|
|
15
15
|
| **PRM** — Party Relationship Management | Manage parties (organisations, groups, and people) that the business entity interacts with. |
|
|
16
16
|
| **WRM** — Worker Relationship Management | Manage AI worker identities, model stacks, MCP tool registrations, roles, role memories, and agent run steps/artifacts. |
|
|
17
|
+
| **FXM** — Funds Transfer Management | Bounded reads over funds accounts, balances, transactions, statuses, parties, access consents, and external payer payment methods (card / IBAN / fingerprint columns redacted; payment-processor credentials hard-excluded upstream); dedicated tools for registering / deactivating payment methods and granting / revoking funds-account access consents. |
|
|
18
|
+
| **CMM** — Cash Management Module | Bounded reads over bank accounts and their operating-unit uses (bank-account-number / IBAN redacted); dedicated tools for registering / deactivating bank accounts and enabling AR / AP / payroll / treasury uses. |
|
|
17
19
|
|
|
18
20
|
All user data flowing through DSM is encrypted end-to-end using Raytio's Maxcryptor system (AES-256-GCM + WADEK key wrapping).
|
|
19
21
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../src/authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAEzB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG3C;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,mHAAmH;IACnH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,yFAAyF;IACzF,MAAM,EAAE,MAAM,CAAC;IACf,8FAA8F;IAC9F,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,wBAAwB,CAAC;CACzC;AAED,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../src/authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAEzB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG3C;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,mHAAmH;IACnH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,yFAAyF;IACzF,MAAM,EAAE,MAAM,CAAC;IACf,8FAA8F;IAC9F,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,wBAAwB,CAAC;CACzC;AAED,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAoD3C;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,GAAE,YAAsB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CAqE9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,YAAY,EAAE,wBAAwB,EACtC,MAAM,GAAE,YAAsB,GAC7B,IAAI,EAAE,CA8BR"}
|
package/dist/authorization.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.js","sourceRoot":"","sources":["../src/authorization.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"authorization.js","sourceRoot":"","sources":["../src/authorization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../../src/generated-reads/guardrails.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,2CAA2C,CAAC;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAqB,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../../src/generated-reads/guardrails.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,2CAA2C,CAAC;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAqB,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAwBrD,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAEjE;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,EAAE,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,EAAE,CAIrE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAEtE;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB,oBAAoB,GACpB,WAAW,GACX,YAAY,GACZ,cAAc,CAAC;AAEnB;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,kBAAuB,GAC/B,mBAAmB,CASrB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAe3E;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAQtC;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE5C"}
|
|
@@ -74,6 +74,15 @@ export const SENSITIVE_FIELD_PATTERNS = [
|
|
|
74
74
|
/(^|_)credentials?$/i,
|
|
75
75
|
/(^|_)cvv$/i,
|
|
76
76
|
/(^|_)pin(_hash)?$/i,
|
|
77
|
+
// WI-0003505 (FXM/CMM): bank account and card secrets. Full account /
|
|
78
|
+
// card numbers, IBAN, and card fingerprints uniquely identify a payment
|
|
79
|
+
// instrument and must never leave the server. `card_last_4_digits` is
|
|
80
|
+
// intentionally PCI-safe display data and is NOT matched — the pattern
|
|
81
|
+
// requires `card_number` exactly, and IBAN/fingerprint are self-contained.
|
|
82
|
+
/(^|_)bank_account_number$/i,
|
|
83
|
+
/(^|_)card_number$/i,
|
|
84
|
+
/(^|_)card_fingerprint$/i,
|
|
85
|
+
/^iban$/i,
|
|
77
86
|
];
|
|
78
87
|
/** `true` when the resource's declared sensitivity is `sensitive` or `restricted`. */
|
|
79
88
|
export function isSensitiveResource(resource) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/generated-reads/guardrails.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAOH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,iCAAiC;IACjC,mBAAmB;IACnB,sBAAsB;IACtB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,sBAAsB;IACtB,gBAAgB;IAChB,oBAAoB;IACpB,8BAA8B;IAC9B,qBAAqB;IACrB,YAAY;IACZ,oBAAoB;
|
|
1
|
+
{"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/generated-reads/guardrails.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,14 @@ import { z } from 'zod';
|
|
|
3
3
|
* Shared side-effect helpers for MCP write tools.
|
|
4
4
|
*
|
|
5
5
|
* Every side-effecting tool — command dispatch, provisioning, external
|
|
6
|
-
* sync, outbound communication, permission grant —
|
|
7
|
-
* primitives so the caller contract is predictable
|
|
6
|
+
* sync, outbound communication, permission grant, payment/settlement —
|
|
7
|
+
* needs the same three primitives so the caller contract is predictable
|
|
8
|
+
* across modules:
|
|
8
9
|
*
|
|
9
10
|
* - `confirm: true` on consequential paths so a model cannot invoke
|
|
10
11
|
* them accidentally;
|
|
11
12
|
* - a caller-supplied `reason` on state transitions that leave an
|
|
12
|
-
* audit trail (revoke, unassign, cancel);
|
|
13
|
+
* audit trail (revoke, unassign, deactivate, cancel);
|
|
13
14
|
* - an optional `idempotency_key` forwarded as an `Idempotency-Key`
|
|
14
15
|
* header so retries converge on the original result rather than
|
|
15
16
|
* creating a duplicate row / grant / message.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-effect.d.ts","sourceRoot":"","sources":["../../../src/tools/_shared/side-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"side-effect.d.ts","sourceRoot":"","sources":["../../../src/tools/_shared/side-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,eAAO,MAAM,oBAAoB,4BAa9B,CAAC;AAEJ;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAED,eAAO,MAAM,iBAAiB,oBAY3B,CAAC;AAEJ,eAAO,MAAM,YAAY,aAG2B,CAAC"}
|
|
@@ -3,13 +3,14 @@ import { z } from 'zod';
|
|
|
3
3
|
* Shared side-effect helpers for MCP write tools.
|
|
4
4
|
*
|
|
5
5
|
* Every side-effecting tool — command dispatch, provisioning, external
|
|
6
|
-
* sync, outbound communication, permission grant —
|
|
7
|
-
* primitives so the caller contract is predictable
|
|
6
|
+
* sync, outbound communication, permission grant, payment/settlement —
|
|
7
|
+
* needs the same three primitives so the caller contract is predictable
|
|
8
|
+
* across modules:
|
|
8
9
|
*
|
|
9
10
|
* - `confirm: true` on consequential paths so a model cannot invoke
|
|
10
11
|
* them accidentally;
|
|
11
12
|
* - a caller-supplied `reason` on state transitions that leave an
|
|
12
|
-
* audit trail (revoke, unassign, cancel);
|
|
13
|
+
* audit trail (revoke, unassign, deactivate, cancel);
|
|
13
14
|
* - an optional `idempotency_key` forwarded as an `Idempotency-Key`
|
|
14
15
|
* header so retries converge on the original result rather than
|
|
15
16
|
* creating a duplicate row / grant / message.
|
|
@@ -51,8 +52,8 @@ export const confirmFlagSchema = z
|
|
|
51
52
|
}),
|
|
52
53
|
})
|
|
53
54
|
.describe('Must be `true` to execute. Present so a model cannot accidentally grant a ' +
|
|
54
|
-
'permission, revoke a role,
|
|
55
|
-
'explicit confirmation step.');
|
|
55
|
+
'permission, revoke a role, register a payment instrument, or transition a ' +
|
|
56
|
+
'security session without an explicit confirmation step.');
|
|
56
57
|
export const reasonSchema = z
|
|
57
58
|
.string()
|
|
58
59
|
.min(4, 'reason must be at least 4 characters')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-effect.js","sourceRoot":"","sources":["../../../src/tools/_shared/side-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"side-effect.js","sourceRoot":"","sources":["../../../src/tools/_shared/side-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CACJ,qBAAqB,EACrB,qFAAqF,CACtF;KACA,QAAQ,EAAE;KACV,QAAQ,CACP,iFAAiF;IAC/E,4EAA4E;IAC5E,+CAA+C,CAClD,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,cAAkC;IAElC,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,uBAAuB;KAChC,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC;IAC9C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,OAAO,CAAC,IAAI,EAAE;IACb,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACf,OAAO,EACL,oFAAoF;YAClF,6BAA6B;KAClC,CAAC;CACH,CAAC;KACD,QAAQ,CACP,4EAA4E;IAC1E,4EAA4E;IAC5E,yDAAyD,CAC5D,CAAC;AAEJ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,sCAAsC,CAAC;KAC9C,GAAG,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolContext } from '../registry.js';
|
|
3
|
+
import { ToolResponse } from '../types.js';
|
|
4
|
+
type Row = Record<string, any>;
|
|
5
|
+
/**
|
|
6
|
+
* `end_date` input for soft-deactivate tools. Persist views only return
|
|
7
|
+
* rows where `start_date <= now() AND end_date > now()`, so ending a
|
|
8
|
+
* record's validity removes it from every read, including history.
|
|
9
|
+
* Deactivation therefore uses `active = false` and leaves `end_date`
|
|
10
|
+
* alone unless the caller explicitly asks for it.
|
|
11
|
+
*/
|
|
12
|
+
export declare const softDeactivateEndDateSchema: z.ZodOptional<z.ZodString>;
|
|
13
|
+
export interface SoftDeactivateOptions {
|
|
14
|
+
/** PostgREST resource, e.g. `cmm_bank_accounts`. */
|
|
15
|
+
table: string;
|
|
16
|
+
id: string;
|
|
17
|
+
/** Human label used in error messages, e.g. `CMM bank account`. */
|
|
18
|
+
label: string;
|
|
19
|
+
/** Verb used in failure messages, e.g. `deactivate`. */
|
|
20
|
+
verb: string;
|
|
21
|
+
/** `true` when the row is already in the target state; the tool then returns it unchanged. */
|
|
22
|
+
isDone: (row: Row) => boolean;
|
|
23
|
+
/** Fields to set, computed from the current row. */
|
|
24
|
+
changes: (row: Row) => Record<string, unknown>;
|
|
25
|
+
/** Metadata key the caller's reason is stored under. */
|
|
26
|
+
reasonKey: string;
|
|
27
|
+
reason: string;
|
|
28
|
+
endDate?: string;
|
|
29
|
+
idempotencyKey?: string;
|
|
30
|
+
/** Shapes the returned row, e.g. `redactRow`. */
|
|
31
|
+
present?: (row: Row) => unknown;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read-then-patch soft deactivation shared by revoke / deactivate tools.
|
|
35
|
+
*
|
|
36
|
+
* Reading first lets the tool merge the reason into the existing
|
|
37
|
+
* `metadata` instead of replacing it, and makes retries converge: a row
|
|
38
|
+
* already in the target state is returned as-is, so a repeat call keeps
|
|
39
|
+
* the original reason rather than overwriting it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function softDeactivate(ctx: ToolContext, opts: SoftDeactivateOptions): Promise<ToolResponse<unknown>>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=soft-deactivate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soft-deactivate.d.ts","sourceRoot":"","sources":["../../../src/tools/_shared/soft-deactivate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAa,YAAY,EAAkC,MAAM,aAAa,CAAC;AAGtF,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,4BAOrC,CAAC;AAEJ,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,8FAA8F;IAC9F,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9B,oDAAoD;IACpD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAwBhC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { API_ERROR, errorResponse, successResponse } from '../types.js';
|
|
3
|
+
import { writeHeadersWithIdempotency } from './side-effect.js';
|
|
4
|
+
/**
|
|
5
|
+
* `end_date` input for soft-deactivate tools. Persist views only return
|
|
6
|
+
* rows where `start_date <= now() AND end_date > now()`, so ending a
|
|
7
|
+
* record's validity removes it from every read, including history.
|
|
8
|
+
* Deactivation therefore uses `active = false` and leaves `end_date`
|
|
9
|
+
* alone unless the caller explicitly asks for it.
|
|
10
|
+
*/
|
|
11
|
+
export const softDeactivateEndDateSchema = z
|
|
12
|
+
.string()
|
|
13
|
+
.min(1)
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Optional ISO 8601 date the record stops being valid. Leave unset to keep the record ' +
|
|
16
|
+
'visible as inactive; an end_date at or before now hides the record from every read.');
|
|
17
|
+
/**
|
|
18
|
+
* Read-then-patch soft deactivation shared by revoke / deactivate tools.
|
|
19
|
+
*
|
|
20
|
+
* Reading first lets the tool merge the reason into the existing
|
|
21
|
+
* `metadata` instead of replacing it, and makes retries converge: a row
|
|
22
|
+
* already in the target state is returned as-is, so a repeat call keeps
|
|
23
|
+
* the original reason rather than overwriting it.
|
|
24
|
+
*/
|
|
25
|
+
export async function softDeactivate(ctx, opts) {
|
|
26
|
+
const present = opts.present ?? ((row) => row);
|
|
27
|
+
const notFound = () => errorResponse(API_ERROR, `${opts.label} ${opts.id} not found or not accessible`);
|
|
28
|
+
const resource = `${ctx.apiClient.dbBasePath}/${opts.table}?id=eq.${opts.id}`;
|
|
29
|
+
try {
|
|
30
|
+
const current = await ctx.apiClient.get(`${resource}&select=*`);
|
|
31
|
+
if (!current || current.length === 0)
|
|
32
|
+
return notFound();
|
|
33
|
+
const row = current[0];
|
|
34
|
+
if (opts.isDone(row))
|
|
35
|
+
return successResponse(present(row));
|
|
36
|
+
const body = {
|
|
37
|
+
...opts.changes(row),
|
|
38
|
+
metadata: { ...(row.metadata ?? {}), [opts.reasonKey]: opts.reason },
|
|
39
|
+
};
|
|
40
|
+
if (opts.endDate !== undefined)
|
|
41
|
+
body.end_date = opts.endDate;
|
|
42
|
+
const rows = await ctx.apiClient.patch(`${resource}&select=*`, body, {
|
|
43
|
+
headers: writeHeadersWithIdempotency(opts.idempotencyKey),
|
|
44
|
+
});
|
|
45
|
+
if (!rows || rows.length === 0)
|
|
46
|
+
return notFound();
|
|
47
|
+
return successResponse(present(rows[0]));
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return errorResponse(API_ERROR, `Failed to ${opts.verb} ${opts.label}: ${error.message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=soft-deactivate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soft-deactivate.js","sourceRoot":"","sources":["../../../src/tools/_shared/soft-deactivate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAgB,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAI/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KACzC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,EAAE;KACV,QAAQ,CACP,sFAAsF;IACpF,qFAAqF,CACxF,CAAC;AAuBJ;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAgB,EAChB,IAA2B;IAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,GAAG,EAAE,CACpB,aAAa,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAQ,GAAG,QAAQ,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,QAAQ,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,MAAM,IAAI,GAA4B;YACpC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACpB,QAAQ,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;SACrE,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,CAAQ,GAAG,QAAQ,WAAW,EAAE,IAAI,EAAE;YAC1E,OAAO,EAAE,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,QAAQ,EAAE,CAAC;QAClD,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,aAAa,CAAC,SAAS,EAAE,aAAa,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Deactivate a bank account (`cmm_bank_accounts`).
|
|
4
|
+
*
|
|
5
|
+
* Soft-delete via `active=false`; the caller `reason` is merged into the
|
|
6
|
+
* row's `metadata` audit trail. Requires `confirm: true`. Downstream
|
|
7
|
+
* FAR/FAP/CMM flows must stop selecting the row via the `active` filter;
|
|
8
|
+
* the row itself is retained for history. An already inactive account
|
|
9
|
+
* is returned unchanged, so retries keep the original reason.
|
|
10
|
+
*
|
|
11
|
+
* Response is redacted (bank_account_number / iban stripped).
|
|
12
|
+
*/
|
|
13
|
+
export declare const cmmBankAccountDeactivateTool: Tool;
|
|
14
|
+
//# sourceMappingURL=cmm-bank-account-deactivate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmm-bank-account-deactivate.d.ts","sourceRoot":"","sources":["../../../src/tools/cmm/cmm-bank-account-deactivate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAUtC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,EAAE,IAyC1C,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { cap } from '../../capabilities/tool-capability.js';
|
|
3
|
+
import { redactRow } from '../../generated-reads/guardrails.js';
|
|
4
|
+
import { confirmFlagSchema, idempotencyKeySchema, reasonSchema, } from '../_shared/side-effect.js';
|
|
5
|
+
import { softDeactivate, softDeactivateEndDateSchema } from '../_shared/soft-deactivate.js';
|
|
6
|
+
/**
|
|
7
|
+
* Deactivate a bank account (`cmm_bank_accounts`).
|
|
8
|
+
*
|
|
9
|
+
* Soft-delete via `active=false`; the caller `reason` is merged into the
|
|
10
|
+
* row's `metadata` audit trail. Requires `confirm: true`. Downstream
|
|
11
|
+
* FAR/FAP/CMM flows must stop selecting the row via the `active` filter;
|
|
12
|
+
* the row itself is retained for history. An already inactive account
|
|
13
|
+
* is returned unchanged, so retries keep the original reason.
|
|
14
|
+
*
|
|
15
|
+
* Response is redacted (bank_account_number / iban stripped).
|
|
16
|
+
*/
|
|
17
|
+
export const cmmBankAccountDeactivateTool = {
|
|
18
|
+
name: 'cmm_bank_account_deactivate',
|
|
19
|
+
description: 'Deactivate a bank account (cmm_bank_accounts). Sets active=false and records the reason ' +
|
|
20
|
+
'on the audit trail. Requires confirm=true and a `reason`. Retry-safe: an already inactive ' +
|
|
21
|
+
'account is returned unchanged.',
|
|
22
|
+
inputSchema: z.object({
|
|
23
|
+
id: z.string().min(1).describe('UUID of the cmm_bank_accounts row to deactivate'),
|
|
24
|
+
reason: reasonSchema.describe('Human-readable justification recorded on the audit trail'),
|
|
25
|
+
end_date: softDeactivateEndDateSchema,
|
|
26
|
+
confirm: confirmFlagSchema,
|
|
27
|
+
idempotency_key: idempotencyKeySchema,
|
|
28
|
+
}),
|
|
29
|
+
capabilities: [cap('cmm_bank_accounts', 'UPDATE')],
|
|
30
|
+
sideEffect: 'state_change',
|
|
31
|
+
confirmation: 'caller_confirms',
|
|
32
|
+
idempotency: 'natural_key',
|
|
33
|
+
handler: async (args, ctx) => {
|
|
34
|
+
const input = args;
|
|
35
|
+
return softDeactivate(ctx, {
|
|
36
|
+
table: 'cmm_bank_accounts',
|
|
37
|
+
id: input.id,
|
|
38
|
+
label: 'CMM bank account',
|
|
39
|
+
verb: 'deactivate',
|
|
40
|
+
isDone: (row) => row.active === false,
|
|
41
|
+
changes: () => ({ active: false }),
|
|
42
|
+
reasonKey: 'deactivation_reason',
|
|
43
|
+
reason: input.reason,
|
|
44
|
+
endDate: input.end_date,
|
|
45
|
+
idempotencyKey: input.idempotency_key,
|
|
46
|
+
present: redactRow,
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=cmm-bank-account-deactivate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmm-bank-account-deactivate.js","sourceRoot":"","sources":["../../../src/tools/cmm/cmm-bank-account-deactivate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,GACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5F;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAChD,IAAI,EAAE,6BAA6B;IACnC,WAAW,EACT,0FAA0F;QAC1F,4FAA4F;QAC5F,gCAAgC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QACjF,MAAM,EAAE,YAAY,CAAC,QAAQ,CAC3B,0DAA0D,CAC3D;QACD,QAAQ,EAAE,2BAA2B;QACrC,OAAO,EAAE,iBAAiB;QAC1B,eAAe,EAAE,oBAAoB;KACtC,CAAC;IACF,YAAY,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAClD,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,iBAAiB;IAC/B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAMb,CAAC;QACF,OAAO,cAAc,CAAC,GAAG,EAAE;YACzB,KAAK,EAAE,mBAAmB;YAC1B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK;YACrC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAClC,SAAS,EAAE,qBAAqB;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,QAAQ;YACvB,cAAc,EAAE,KAAK,CAAC,eAAe;YACrC,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Register a bank account (`cmm_bank_accounts`) at the legal-entity
|
|
4
|
+
* level.
|
|
5
|
+
*
|
|
6
|
+
* Provisioning: creates a bank-account row that downstream FAR/FAP/CMM
|
|
7
|
+
* flows will attach payments to. Requires `confirm: true` because the
|
|
8
|
+
* row carries a full account number and IBAN — the guardrail redacts
|
|
9
|
+
* these from any response, so a caller registering an account cannot
|
|
10
|
+
* even read back the value they just supplied. Persist enforces a unique
|
|
11
|
+
* `(tenant_id, bank_account_number)` index, so a repeat registration fails
|
|
12
|
+
* with a conflict instead of creating a second account.
|
|
13
|
+
*/
|
|
14
|
+
export declare const cmmBankAccountRegisterTool: Tool;
|
|
15
|
+
//# sourceMappingURL=cmm-bank-account-register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmm-bank-account-register.d.ts","sourceRoot":"","sources":["../../../src/tools/cmm/cmm-bank-account-register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAUtC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,EAAE,IA+FxC,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { API_ERROR, errorResponse, successResponse } from '../types.js';
|
|
3
|
+
import { cap } from '../../capabilities/tool-capability.js';
|
|
4
|
+
import { redactRow } from '../../generated-reads/guardrails.js';
|
|
5
|
+
import { confirmFlagSchema, idempotencyKeySchema, writeHeadersWithIdempotency, } from '../_shared/side-effect.js';
|
|
6
|
+
/**
|
|
7
|
+
* Register a bank account (`cmm_bank_accounts`) at the legal-entity
|
|
8
|
+
* level.
|
|
9
|
+
*
|
|
10
|
+
* Provisioning: creates a bank-account row that downstream FAR/FAP/CMM
|
|
11
|
+
* flows will attach payments to. Requires `confirm: true` because the
|
|
12
|
+
* row carries a full account number and IBAN — the guardrail redacts
|
|
13
|
+
* these from any response, so a caller registering an account cannot
|
|
14
|
+
* even read back the value they just supplied. Persist enforces a unique
|
|
15
|
+
* `(tenant_id, bank_account_number)` index, so a repeat registration fails
|
|
16
|
+
* with a conflict instead of creating a second account.
|
|
17
|
+
*/
|
|
18
|
+
export const cmmBankAccountRegisterTool = {
|
|
19
|
+
name: 'cmm_bank_account_register',
|
|
20
|
+
description: 'Register a bank account (cmm_bank_accounts). Stores the account details at the ' +
|
|
21
|
+
'legal-entity level. Requires confirm=true. bank_account_number is unique per tenant: ' +
|
|
22
|
+
'registering an existing number fails with a conflict rather than creating a duplicate. ' +
|
|
23
|
+
'Response is redacted (bank_account_number/iban removed).',
|
|
24
|
+
inputSchema: z.object({
|
|
25
|
+
account_owner_party_id: z
|
|
26
|
+
.string()
|
|
27
|
+
.min(1)
|
|
28
|
+
.describe('UUID of the party (legal entity) that owns the account'),
|
|
29
|
+
bank_id: z
|
|
30
|
+
.string()
|
|
31
|
+
.min(1)
|
|
32
|
+
.describe('UUID of the bank (a prm_parties row) the account is held at'),
|
|
33
|
+
bank_branch_id: z
|
|
34
|
+
.string()
|
|
35
|
+
.min(1)
|
|
36
|
+
.describe('UUID of the bank branch (a prm_parties row)'),
|
|
37
|
+
bank_account_name: z
|
|
38
|
+
.string()
|
|
39
|
+
.min(1)
|
|
40
|
+
.max(255)
|
|
41
|
+
.describe('Human-readable account label'),
|
|
42
|
+
bank_account_number: z
|
|
43
|
+
.string()
|
|
44
|
+
.min(1)
|
|
45
|
+
.max(64)
|
|
46
|
+
.describe('Bank-issued account number. Redacted from every read; supplied on register only.'),
|
|
47
|
+
currency_code: z
|
|
48
|
+
.string()
|
|
49
|
+
.regex(/^[A-Z]{3}$/, 'currency_code must be a 3-letter uppercase ISO 4217 code'),
|
|
50
|
+
account_classification: z.string().max(64).optional(),
|
|
51
|
+
account_type: z.string().max(64).optional(),
|
|
52
|
+
account_holder_id: z.string().min(1).optional(),
|
|
53
|
+
account_holder_name: z.string().max(255).optional(),
|
|
54
|
+
iban: z
|
|
55
|
+
.string()
|
|
56
|
+
.min(15)
|
|
57
|
+
.max(34)
|
|
58
|
+
.regex(/^[A-Z0-9]+$/, 'IBAN must be uppercase alphanumeric')
|
|
59
|
+
.optional()
|
|
60
|
+
.describe('International Bank Account Number. Redacted from every read.'),
|
|
61
|
+
description: z.string().max(500).optional(),
|
|
62
|
+
start_date: z.string().min(1).optional().describe('ISO 8601 effective start'),
|
|
63
|
+
end_date: z.string().min(1).optional().describe('ISO 8601 planned end date'),
|
|
64
|
+
confirm: confirmFlagSchema,
|
|
65
|
+
idempotency_key: idempotencyKeySchema.describe('Optional. Forwarded as an Idempotency-Key header, but Persist does not enforce it ' +
|
|
66
|
+
'yet; duplicates are prevented by the unique index instead.'),
|
|
67
|
+
}),
|
|
68
|
+
capabilities: [cap('cmm_bank_accounts', 'INSERT')],
|
|
69
|
+
sideEffect: 'provisioning',
|
|
70
|
+
confirmation: 'caller_confirms',
|
|
71
|
+
idempotency: 'natural_key',
|
|
72
|
+
handler: async (args, ctx) => {
|
|
73
|
+
const input = args;
|
|
74
|
+
const body = {
|
|
75
|
+
account_owner_party_id: input.account_owner_party_id,
|
|
76
|
+
bank_id: input.bank_id,
|
|
77
|
+
bank_branch_id: input.bank_branch_id,
|
|
78
|
+
bank_account_name: input.bank_account_name,
|
|
79
|
+
bank_account_number: input.bank_account_number,
|
|
80
|
+
currency_code: input.currency_code,
|
|
81
|
+
};
|
|
82
|
+
for (const field of [
|
|
83
|
+
'account_classification',
|
|
84
|
+
'account_type',
|
|
85
|
+
'account_holder_id',
|
|
86
|
+
'account_holder_name',
|
|
87
|
+
'iban',
|
|
88
|
+
'description',
|
|
89
|
+
'start_date',
|
|
90
|
+
'end_date',
|
|
91
|
+
]) {
|
|
92
|
+
if (input[field] !== undefined)
|
|
93
|
+
body[field] = input[field];
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const rows = await ctx.apiClient.post(`${ctx.apiClient.dbBasePath}/cmm_bank_accounts?select=*`, body, { headers: writeHeadersWithIdempotency(input.idempotency_key) });
|
|
97
|
+
return successResponse(redactRow(rows[0]));
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
return errorResponse(API_ERROR, `Failed to register CMM bank account: ${error.message}`);
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=cmm-bank-account-register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmm-bank-account-register.js","sourceRoot":"","sources":["../../../src/tools/cmm/cmm-bank-account-register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Register a bank-account use (`cmm_bank_account_uses`).
|
|
4
|
+
*
|
|
5
|
+
* Enabling AR / AP / payroll / treasury on a bank account is what turns
|
|
6
|
+
* a stored account into a live target for FAR receipts, FAP payments,
|
|
7
|
+
* or payroll disbursements. Requires `confirm: true` because a
|
|
8
|
+
* mis-enabled use routes money to the wrong instrument. Persist enforces
|
|
9
|
+
* a unique `(tenant_id, org_id, bank_account_id)` index, so a repeat
|
|
10
|
+
* registration fails with a conflict instead of creating a second use.
|
|
11
|
+
*/
|
|
12
|
+
export declare const cmmBankAccountUseRegisterTool: Tool;
|
|
13
|
+
//# sourceMappingURL=cmm-bank-account-use-register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmm-bank-account-use-register.d.ts","sourceRoot":"","sources":["../../../src/tools/cmm/cmm-bank-account-use-register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAStC;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,EAAE,IAgE3C,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { API_ERROR, errorResponse, successResponse } from '../types.js';
|
|
3
|
+
import { cap } from '../../capabilities/tool-capability.js';
|
|
4
|
+
import { confirmFlagSchema, idempotencyKeySchema, writeHeadersWithIdempotency, } from '../_shared/side-effect.js';
|
|
5
|
+
/**
|
|
6
|
+
* Register a bank-account use (`cmm_bank_account_uses`).
|
|
7
|
+
*
|
|
8
|
+
* Enabling AR / AP / payroll / treasury on a bank account is what turns
|
|
9
|
+
* a stored account into a live target for FAR receipts, FAP payments,
|
|
10
|
+
* or payroll disbursements. Requires `confirm: true` because a
|
|
11
|
+
* mis-enabled use routes money to the wrong instrument. Persist enforces
|
|
12
|
+
* a unique `(tenant_id, org_id, bank_account_id)` index, so a repeat
|
|
13
|
+
* registration fails with a conflict instead of creating a second use.
|
|
14
|
+
*/
|
|
15
|
+
export const cmmBankAccountUseRegisterTool = {
|
|
16
|
+
name: 'cmm_bank_account_use_register',
|
|
17
|
+
description: 'Register a bank-account use (cmm_bank_account_uses) — enables AR/AP/payroll/treasury ' +
|
|
18
|
+
'on a stored account. Requires confirm=true. (org_id, bank_account_id) is unique: ' +
|
|
19
|
+
'registering it again fails with a conflict rather than creating a duplicate.',
|
|
20
|
+
inputSchema: z.object({
|
|
21
|
+
bank_account_id: z
|
|
22
|
+
.string()
|
|
23
|
+
.min(1)
|
|
24
|
+
.describe('UUID of the cmm_bank_accounts row this use attaches to'),
|
|
25
|
+
org_id: z
|
|
26
|
+
.string()
|
|
27
|
+
.min(1)
|
|
28
|
+
.optional()
|
|
29
|
+
.describe('UUID of the owning organisation (hrm_organizations_c)'),
|
|
30
|
+
ap_use_enabled: z.boolean().optional().describe('Enable accounts-payable outflows'),
|
|
31
|
+
ar_use_enabled: z.boolean().optional().describe('Enable accounts-receivable receipts'),
|
|
32
|
+
payroll_use_enabled: z.boolean().optional().describe('Enable payroll disbursements'),
|
|
33
|
+
treasury_use_enabled: z.boolean().optional().describe('Enable treasury operations'),
|
|
34
|
+
primary_flag: z.boolean().optional().describe('Mark as the org\'s primary bank account'),
|
|
35
|
+
pooled_account: z.boolean().optional().describe('Treat as a pooled/shared account'),
|
|
36
|
+
start_date: z.string().min(1).optional().describe('ISO 8601 effective start'),
|
|
37
|
+
end_date: z.string().min(1).optional().describe('ISO 8601 planned end date'),
|
|
38
|
+
confirm: confirmFlagSchema,
|
|
39
|
+
idempotency_key: idempotencyKeySchema.describe('Optional. Forwarded as an Idempotency-Key header, but Persist does not enforce it ' +
|
|
40
|
+
'yet; duplicates are prevented by the unique index instead.'),
|
|
41
|
+
}),
|
|
42
|
+
capabilities: [cap('cmm_bank_account_uses', 'INSERT')],
|
|
43
|
+
sideEffect: 'provisioning',
|
|
44
|
+
confirmation: 'caller_confirms',
|
|
45
|
+
idempotency: 'natural_key',
|
|
46
|
+
handler: async (args, ctx) => {
|
|
47
|
+
const input = args;
|
|
48
|
+
const body = { bank_account_id: input.bank_account_id };
|
|
49
|
+
for (const field of [
|
|
50
|
+
'org_id',
|
|
51
|
+
'ap_use_enabled',
|
|
52
|
+
'ar_use_enabled',
|
|
53
|
+
'payroll_use_enabled',
|
|
54
|
+
'treasury_use_enabled',
|
|
55
|
+
'primary_flag',
|
|
56
|
+
'pooled_account',
|
|
57
|
+
'start_date',
|
|
58
|
+
'end_date',
|
|
59
|
+
]) {
|
|
60
|
+
if (input[field] !== undefined)
|
|
61
|
+
body[field] = input[field];
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const rows = await ctx.apiClient.post(`${ctx.apiClient.dbBasePath}/cmm_bank_account_uses?select=*`, body, { headers: writeHeadersWithIdempotency(input.idempotency_key) });
|
|
65
|
+
return successResponse(rows[0]);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
return errorResponse(API_ERROR, `Failed to register CMM bank account use: ${error.message}`);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=cmm-bank-account-use-register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmm-bank-account-use-register.js","sourceRoot":"","sources":["../../../src/tools/cmm/cmm-bank-account-use-register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
import { CatalogueReport } from '../../generated-reads/index.js';
|
|
3
|
+
export declare const cmmGeneratedReadReport: CatalogueReport;
|
|
4
|
+
export declare const cmmGeneratedReadTools: Tool[];
|
|
5
|
+
//# sourceMappingURL=generated-reads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-reads.d.ts","sourceRoot":"","sources":["../../../src/tools/cmm/generated-reads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAGL,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAuBxC,eAAO,MAAM,sBAAsB,EAAE,eAIjC,CAAC;AAEL,eAAO,MAAM,qBAAqB,EAAE,IAAI,EAGvC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { buildGeneratedReadCatalogue, buildGeneratedReadCatalogueReport, } from '../../generated-reads/index.js';
|
|
2
|
+
import { loadPersistResourceContract } from '../../contracts/persist-resource-contract.js';
|
|
3
|
+
/**
|
|
4
|
+
* Bounded read tools for the CMM (Cash Management Module) module
|
|
5
|
+
* (WI-0003505).
|
|
6
|
+
*
|
|
7
|
+
* CMM currently exposes two resources — `cmm_bank_accounts` and
|
|
8
|
+
* `cmm_bank_account_uses` — both classified `sensitive` because a bank
|
|
9
|
+
* account row carries account numbers / IBAN. The schema-driven read
|
|
10
|
+
* framework opts them in here so callers can list bank accounts and
|
|
11
|
+
* their uses, and the sensitive-field guardrail redacts
|
|
12
|
+
* `bank_account_number` / `iban` / `card_*` before any row leaves the
|
|
13
|
+
* server (see the WI-0003505 pattern extensions in `guardrails.ts`).
|
|
14
|
+
*
|
|
15
|
+
* Every write on either resource goes through a dedicated tool
|
|
16
|
+
* (`cmm_bank_account_register` / `_deactivate` / `cmm_bank_account_use_register`);
|
|
17
|
+
* generic CRUD wrappers are refused by the framework for sensitive
|
|
18
|
+
* resources.
|
|
19
|
+
*/
|
|
20
|
+
const contract = loadPersistResourceContract();
|
|
21
|
+
export const cmmGeneratedReadReport = buildGeneratedReadCatalogueReport(contract, {
|
|
22
|
+
modules: ['cmm'],
|
|
23
|
+
includeSensitive: true,
|
|
24
|
+
});
|
|
25
|
+
export const cmmGeneratedReadTools = buildGeneratedReadCatalogue(contract, { modules: ['cmm'], includeSensitive: true });
|
|
26
|
+
//# sourceMappingURL=generated-reads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-reads.js","sourceRoot":"","sources":["../../../src/tools/cmm/generated-reads.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,GAElC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAE3F;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,QAAQ,GAAG,2BAA2B,EAAE,CAAC;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GACjC,iCAAiC,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,qBAAqB,GAAW,2BAA2B,CACtE,QAAQ,EACR,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAC7C,CAAC"}
|