@raytio/mcp-server 9.3.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/contracts/persist/mcp_resource_contract.json +52 -23
  2. package/dist/authorization.d.ts.map +1 -1
  3. package/dist/authorization.js +2 -0
  4. package/dist/authorization.js.map +1 -1
  5. package/dist/tools/_shared/finance-idempotency.d.ts +52 -0
  6. package/dist/tools/_shared/finance-idempotency.d.ts.map +1 -0
  7. package/dist/tools/_shared/finance-idempotency.js +79 -0
  8. package/dist/tools/_shared/finance-idempotency.js.map +1 -0
  9. package/dist/tools/_shared/money.d.ts +10 -0
  10. package/dist/tools/_shared/money.d.ts.map +1 -0
  11. package/dist/tools/_shared/money.js +90 -0
  12. package/dist/tools/_shared/money.js.map +1 -0
  13. package/dist/tools/_shared/soft-deactivate.d.ts +2 -1
  14. package/dist/tools/_shared/soft-deactivate.d.ts.map +1 -1
  15. package/dist/tools/_shared/soft-deactivate.js +2 -1
  16. package/dist/tools/_shared/soft-deactivate.js.map +1 -1
  17. package/dist/tools/domains.d.ts.map +1 -1
  18. package/dist/tools/domains.js +18 -0
  19. package/dist/tools/domains.js.map +1 -1
  20. package/dist/tools/fap/fap-invoice-hold-place.d.ts +14 -0
  21. package/dist/tools/fap/fap-invoice-hold-place.d.ts.map +1 -0
  22. package/dist/tools/fap/fap-invoice-hold-place.js +62 -0
  23. package/dist/tools/fap/fap-invoice-hold-place.js.map +1 -0
  24. package/dist/tools/fap/fap-invoice-hold-release.d.ts +19 -0
  25. package/dist/tools/fap/fap-invoice-hold-release.d.ts.map +1 -0
  26. package/dist/tools/fap/fap-invoice-hold-release.js +65 -0
  27. package/dist/tools/fap/fap-invoice-hold-release.js.map +1 -0
  28. package/dist/tools/fap/fap-supplier-bill-create.d.ts +14 -0
  29. package/dist/tools/fap/fap-supplier-bill-create.d.ts.map +1 -0
  30. package/dist/tools/fap/fap-supplier-bill-create.js +90 -0
  31. package/dist/tools/fap/fap-supplier-bill-create.js.map +1 -0
  32. package/dist/tools/fap/fap-supplier-bill-line-add.d.ts +8 -0
  33. package/dist/tools/fap/fap-supplier-bill-line-add.d.ts.map +1 -0
  34. package/dist/tools/fap/fap-supplier-bill-line-add.js +75 -0
  35. package/dist/tools/fap/fap-supplier-bill-line-add.js.map +1 -0
  36. package/dist/tools/fap/fap-supplier-create.d.ts +9 -0
  37. package/dist/tools/fap/fap-supplier-create.d.ts.map +1 -0
  38. package/dist/tools/fap/fap-supplier-create.js +53 -0
  39. package/dist/tools/fap/fap-supplier-create.js.map +1 -0
  40. package/dist/tools/fap/fap-supplier-status-set.d.ts +8 -0
  41. package/dist/tools/fap/fap-supplier-status-set.d.ts.map +1 -0
  42. package/dist/tools/fap/fap-supplier-status-set.js +62 -0
  43. package/dist/tools/fap/fap-supplier-status-set.js.map +1 -0
  44. package/dist/tools/fap/fap-supplier-update.d.ts +8 -0
  45. package/dist/tools/fap/fap-supplier-update.d.ts.map +1 -0
  46. package/dist/tools/fap/fap-supplier-update.js +51 -0
  47. package/dist/tools/fap/fap-supplier-update.js.map +1 -0
  48. package/dist/tools/fap/generated-reads.d.ts +5 -0
  49. package/dist/tools/fap/generated-reads.d.ts.map +1 -0
  50. package/dist/tools/fap/generated-reads.js +19 -0
  51. package/dist/tools/fap/generated-reads.js.map +1 -0
  52. package/dist/tools/fap/index.d.ts +5 -0
  53. package/dist/tools/fap/index.d.ts.map +1 -0
  54. package/dist/tools/fap/index.js +21 -0
  55. package/dist/tools/fap/index.js.map +1 -0
  56. package/dist/tools/far/far-cash-receipt-record.d.ts +22 -0
  57. package/dist/tools/far/far-cash-receipt-record.d.ts.map +1 -0
  58. package/dist/tools/far/far-cash-receipt-record.js +96 -0
  59. package/dist/tools/far/far-cash-receipt-record.js.map +1 -0
  60. package/dist/tools/far/far-customer-create.d.ts +12 -0
  61. package/dist/tools/far/far-customer-create.d.ts.map +1 -0
  62. package/dist/tools/far/far-customer-create.js +54 -0
  63. package/dist/tools/far/far-customer-create.js.map +1 -0
  64. package/dist/tools/far/far-customer-invoice-create.d.ts +13 -0
  65. package/dist/tools/far/far-customer-invoice-create.d.ts.map +1 -0
  66. package/dist/tools/far/far-customer-invoice-create.js +76 -0
  67. package/dist/tools/far/far-customer-invoice-create.js.map +1 -0
  68. package/dist/tools/far/far-customer-invoice-line-add.d.ts +10 -0
  69. package/dist/tools/far/far-customer-invoice-line-add.d.ts.map +1 -0
  70. package/dist/tools/far/far-customer-invoice-line-add.js +77 -0
  71. package/dist/tools/far/far-customer-invoice-line-add.js.map +1 -0
  72. package/dist/tools/far/far-customer-status-set.d.ts +15 -0
  73. package/dist/tools/far/far-customer-status-set.d.ts.map +1 -0
  74. package/dist/tools/far/far-customer-status-set.js +70 -0
  75. package/dist/tools/far/far-customer-status-set.js.map +1 -0
  76. package/dist/tools/far/far-customer-update.d.ts +10 -0
  77. package/dist/tools/far/far-customer-update.d.ts.map +1 -0
  78. package/dist/tools/far/far-customer-update.js +51 -0
  79. package/dist/tools/far/far-customer-update.js.map +1 -0
  80. package/dist/tools/far/generated-reads.d.ts +5 -0
  81. package/dist/tools/far/generated-reads.d.ts.map +1 -0
  82. package/dist/tools/far/generated-reads.js +25 -0
  83. package/dist/tools/far/generated-reads.js.map +1 -0
  84. package/dist/tools/far/index.d.ts +5 -0
  85. package/dist/tools/far/index.d.ts.map +1 -0
  86. package/dist/tools/far/index.js +19 -0
  87. package/dist/tools/far/index.js.map +1 -0
  88. package/dist/tools/role-mapping.d.ts.map +1 -1
  89. package/dist/tools/role-mapping.js +12 -0
  90. package/dist/tools/role-mapping.js.map +1 -1
  91. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
- "content_hash": "491634421d4be4d384dd399fadfdeac299fee3fc7faa92cdd3bd9710dd916215",
3
- "contract_version": "2.1.0",
2
+ "content_hash": "ddc1fbc0185f712084c0c5414ffa61a9e1941c43bece701334115361acc61399",
3
+ "contract_version": "2.1.2",
4
4
  "excluded": [
5
5
  {
6
6
  "detail": "Stores authentication credentials, secrets, or certificates.",
@@ -18363,6 +18363,7 @@
18363
18363
  "title_plural": "Payment Schedules"
18364
18364
  },
18365
18365
  {
18366
+ "authorization_model": "rebac",
18366
18367
  "description": null,
18367
18368
  "fields": [
18368
18369
  {
@@ -18548,7 +18549,7 @@
18548
18549
  "UPDATE"
18549
18550
  ],
18550
18551
  "resource_group": "FAP",
18551
- "resource_name": "SUPPLIER_SITE_USES"
18552
+ "resource_name": null
18552
18553
  },
18553
18554
  "primary_key": "id",
18554
18555
  "public_endpoint": "/fap_supplier_site_uses",
@@ -19426,6 +19427,7 @@
19426
19427
  "title_plural": "Supplier Invoices"
19427
19428
  },
19428
19429
  {
19430
+ "authorization_model": "rebac",
19429
19431
  "description": null,
19430
19432
  "fields": [
19431
19433
  {
@@ -19689,7 +19691,7 @@
19689
19691
  "UPDATE"
19690
19692
  ],
19691
19693
  "resource_group": "FAP",
19692
- "resource_name": "SUPPLIER_TRANSACTION_LINES"
19694
+ "resource_name": null
19693
19695
  },
19694
19696
  "primary_key": "id",
19695
19697
  "public_endpoint": "/fap_supplier_transaction_lines",
@@ -21301,6 +21303,15 @@
21301
21303
  {
21302
21304
  "description": "Cash receipts table: Used to store payment/receipt information from customers",
21303
21305
  "fields": [
21306
+ {
21307
+ "name": "accounting_origin",
21308
+ "read_only": true,
21309
+ "required": false,
21310
+ "type": [
21311
+ "null",
21312
+ "string"
21313
+ ]
21314
+ },
21304
21315
  {
21305
21316
  "description": "Audit: User who created this record",
21306
21317
  "format": "uuid",
@@ -21421,6 +21432,16 @@
21421
21432
  "string"
21422
21433
  ]
21423
21434
  },
21435
+ {
21436
+ "format": "uuid",
21437
+ "name": "import_run_id",
21438
+ "read_only": true,
21439
+ "required": false,
21440
+ "type": [
21441
+ "null",
21442
+ "string"
21443
+ ]
21444
+ },
21424
21445
  {
21425
21446
  "description": "Additional unstructured data stored as JSON",
21426
21447
  "name": "metadata",
@@ -21464,9 +21485,9 @@
21464
21485
  ]
21465
21486
  },
21466
21487
  {
21467
- "description": "The currency code of the receipt",
21468
- "maxLength": 3,
21469
- "name": "receipt_currency_code",
21488
+ "description": "The identifier of the receipt",
21489
+ "maxLength": 30,
21490
+ "name": "receipt_code",
21470
21491
  "read_only": false,
21471
21492
  "required": true,
21472
21493
  "type": [
@@ -21475,9 +21496,9 @@
21475
21496
  ]
21476
21497
  },
21477
21498
  {
21478
- "description": "The date on which the receipt was received",
21479
- "format": "date",
21480
- "name": "receipt_date",
21499
+ "description": "The currency code of the receipt",
21500
+ "maxLength": 3,
21501
+ "name": "receipt_currency_code",
21481
21502
  "read_only": false,
21482
21503
  "required": true,
21483
21504
  "type": [
@@ -21486,11 +21507,11 @@
21486
21507
  ]
21487
21508
  },
21488
21509
  {
21489
- "description": "The identifier of the receipt",
21490
- "maxLength": 30,
21491
- "name": "receipt_number",
21510
+ "description": "The date on which the receipt was received",
21511
+ "format": "date",
21512
+ "name": "receipt_date",
21492
21513
  "read_only": false,
21493
- "required": false,
21514
+ "required": true,
21494
21515
  "type": [
21495
21516
  "null",
21496
21517
  "string"
@@ -21630,6 +21651,7 @@
21630
21651
  ],
21631
21652
  "filter_capabilities": {
21632
21653
  "filterable_fields": [
21654
+ "accounting_origin",
21633
21655
  "created_by",
21634
21656
  "created_date",
21635
21657
  "customer_bank_account_id",
@@ -21641,12 +21663,13 @@
21641
21663
  "exchange_rate",
21642
21664
  "exchange_rate_type",
21643
21665
  "id",
21666
+ "import_run_id",
21644
21667
  "org_id",
21645
21668
  "owned_by",
21646
21669
  "receipt_amount",
21670
+ "receipt_code",
21647
21671
  "receipt_currency_code",
21648
21672
  "receipt_date",
21649
- "receipt_number",
21650
21673
  "receipt_status",
21651
21674
  "receipt_type",
21652
21675
  "remittance_bank_account_use_id",
@@ -21691,6 +21714,7 @@
21691
21714
  ],
21692
21715
  "order_capabilities": {
21693
21716
  "orderable_fields": [
21717
+ "accounting_origin",
21694
21718
  "created_by",
21695
21719
  "created_date",
21696
21720
  "customer_bank_account_id",
@@ -21702,12 +21726,13 @@
21702
21726
  "exchange_rate",
21703
21727
  "exchange_rate_type",
21704
21728
  "id",
21729
+ "import_run_id",
21705
21730
  "org_id",
21706
21731
  "owned_by",
21707
21732
  "receipt_amount",
21733
+ "receipt_code",
21708
21734
  "receipt_currency_code",
21709
21735
  "receipt_date",
21710
- "receipt_number",
21711
21736
  "receipt_status",
21712
21737
  "receipt_type",
21713
21738
  "remittance_bank_account_use_id",
@@ -22285,6 +22310,7 @@
22285
22310
  "title_plural": null
22286
22311
  },
22287
22312
  {
22313
+ "authorization_model": "rebac",
22288
22314
  "description": "Customer site uses table: Used to store the uses of a customer site e.g. bill-to, ship-to etc",
22289
22315
  "fields": [
22290
22316
  {
@@ -22508,7 +22534,7 @@
22508
22534
  "UPDATE"
22509
22535
  ],
22510
22536
  "resource_group": "FAR",
22511
- "resource_name": "CUSTOMER_SITE_USES"
22537
+ "resource_name": null
22512
22538
  },
22513
22539
  "primary_key": "id",
22514
22540
  "public_endpoint": "/far_customer_site_uses",
@@ -23611,6 +23637,7 @@
23611
23637
  "title_plural": "Invoices"
23612
23638
  },
23613
23639
  {
23640
+ "authorization_model": "rebac",
23614
23641
  "description": null,
23615
23642
  "fields": [
23616
23643
  {
@@ -23874,7 +23901,7 @@
23874
23901
  "UPDATE"
23875
23902
  ],
23876
23903
  "resource_group": "FAR",
23877
- "resource_name": "CUSTOMER_TRANSACTION_LINES"
23904
+ "resource_name": null
23878
23905
  },
23879
23906
  "primary_key": "id",
23880
23907
  "public_endpoint": "/far_customer_transaction_lines",
@@ -26368,6 +26395,7 @@
26368
26395
  "title_plural": null
26369
26396
  },
26370
26397
  {
26398
+ "authorization_model": "rebac",
26371
26399
  "description": "Payment term lines table: Used to store customer payment term line details",
26372
26400
  "fields": [
26373
26401
  {
@@ -26586,7 +26614,7 @@
26586
26614
  "UPDATE"
26587
26615
  ],
26588
26616
  "resource_group": "FAR",
26589
- "resource_name": "PAYMENT_TERM_LINES"
26617
+ "resource_name": null
26590
26618
  },
26591
26619
  "primary_key": "id",
26592
26620
  "public_endpoint": "/far_payment_term_lines",
@@ -26623,6 +26651,7 @@
26623
26651
  "title_plural": "Payment Term Lines"
26624
26652
  },
26625
26653
  {
26654
+ "authorization_model": "rebac",
26626
26655
  "description": "Payment terms table: Used to store customer payment terms header details",
26627
26656
  "fields": [
26628
26657
  {
@@ -26800,7 +26829,7 @@
26800
26829
  "UPDATE"
26801
26830
  ],
26802
26831
  "resource_group": "FAR",
26803
- "resource_name": "PAYMENT_TERMS"
26832
+ "resource_name": null
26804
26833
  },
26805
26834
  "primary_key": "id",
26806
26835
  "public_endpoint": "/far_payment_terms",
@@ -43760,7 +43789,7 @@
43760
43789
  "resource_id": "fxm_funds_account_transactions",
43761
43790
  "schema_name": "ss_fxm_funds_account_transaction",
43762
43791
  "schema_version": "0.0.7",
43763
- "sensitivity": "normal",
43792
+ "sensitivity": "sensitive",
43764
43793
  "side_effects": [],
43765
43794
  "table": "fxm_funds_account_transactions",
43766
43795
  "title": "Funds Account Transaction",
@@ -44310,7 +44339,7 @@
44310
44339
  "resource_id": "fxm_funds_account_transactions_anon",
44311
44340
  "schema_name": null,
44312
44341
  "schema_version": null,
44313
- "sensitivity": "normal",
44342
+ "sensitivity": "sensitive",
44314
44343
  "side_effects": [],
44315
44344
  "table": "fxm_funds_account_transactions_anon",
44316
44345
  "title": null,
@@ -44728,7 +44757,7 @@
44728
44757
  "resource_id": "fxm_funds_accounts",
44729
44758
  "schema_name": "ss_fxm_funds_account",
44730
44759
  "schema_version": "0.0.7",
44731
- "sensitivity": "normal",
44760
+ "sensitivity": "sensitive",
44732
44761
  "side_effects": [],
44733
44762
  "table": "fxm_funds_accounts",
44734
44763
  "title": "Funds Account",
@@ -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;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;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,GAAE,YAAsB,GAC7B,IAAI,EAAE,CAkBR"}
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;AAsD3C;;;;;;;;;;;;;;;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;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,GAAE,YAAsB,GAC7B,IAAI,EAAE,CAkBR"}
@@ -14,6 +14,8 @@ const READONLY_PARENTS = {
14
14
  'fnd-readonly': 'fnd',
15
15
  'fxm-readonly': 'fxm',
16
16
  'cmm-readonly': 'cmm',
17
+ 'far-readonly': 'far',
18
+ 'fap-readonly': 'fap',
17
19
  };
18
20
  function parseSpec(spec) {
19
21
  if (!spec)
@@ -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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"}
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Shared idempotency plumbing for financial (FAR/FAP) mutation tools
4
+ * (WI-0003504).
5
+ *
6
+ * Financial mutations (invoice creation, receipt recording, hold
7
+ * placement) MUST be safe to retry — model callers routinely re-send
8
+ * on transient network errors, and a duplicated receipt is a
9
+ * production incident. We express this two ways:
10
+ *
11
+ * - Tools that have a natural key (a unique index such as
12
+ * organisation + transaction_code, organisation + receipt_code,
13
+ * open hold per bill + hold_code) require it, document it in the
14
+ * tool description, and inherit `idempotency: 'natural_key'`. A
15
+ * retry then fails with a duplicate-key error instead of creating
16
+ * a second row.
17
+ * - Every side-effecting tool also accepts an OPTIONAL
18
+ * `idempotency_key`, forwarded as an `Idempotency-Key` header.
19
+ * Persist (PostgREST) ignores that header today (WI-0008817), so
20
+ * the key does not make a retry safe on its own.
21
+ *
22
+ * The MCP server does not maintain its own dedupe cache — the
23
+ * canonical answer lives in Persist. This module keeps the input
24
+ * schema and header-injection logic in one place so every FAR/FAP
25
+ * mutation surfaces the same contract.
26
+ */
27
+ /**
28
+ * Zod schema for the optional idempotency key input. Keeps the shape
29
+ * consistent so callers passing the same key across tools do not need
30
+ * to remember tool-specific spellings.
31
+ */
32
+ export declare const idempotencyKeySchema: z.ZodOptional<z.ZodString>;
33
+ /**
34
+ * Build the request headers for a financial mutation. Passes through
35
+ * `Prefer: return=representation` (needed for PostgREST to echo the
36
+ * created/updated row) and adds `Idempotency-Key` when supplied.
37
+ */
38
+ export declare function financeWriteHeaders(idempotencyKey: string | undefined): Record<string, string>;
39
+ /**
40
+ * Zod schema for a caller-supplied confirmation flag. Used on
41
+ * consequential actions (cash receipt, hold release) where an
42
+ * explicit `confirm: true` is required in addition to the required
43
+ * business inputs.
44
+ */
45
+ export declare const confirmFlagSchema: z.ZodLiteral<true>;
46
+ /**
47
+ * Zod schema for a caller-supplied reason string. Used on lifecycle
48
+ * transitions (invoice status change, hold release) so the audit log
49
+ * carries a human-readable justification.
50
+ */
51
+ export declare const reasonSchema: z.ZodString;
52
+ //# sourceMappingURL=finance-idempotency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finance-idempotency.d.ts","sourceRoot":"","sources":["../../../src/tools/_shared/finance-idempotency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,4BAa9B,CAAC;AAEJ;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,oBAW3B,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,YAAY,aAG2B,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Shared idempotency plumbing for financial (FAR/FAP) mutation tools
4
+ * (WI-0003504).
5
+ *
6
+ * Financial mutations (invoice creation, receipt recording, hold
7
+ * placement) MUST be safe to retry — model callers routinely re-send
8
+ * on transient network errors, and a duplicated receipt is a
9
+ * production incident. We express this two ways:
10
+ *
11
+ * - Tools that have a natural key (a unique index such as
12
+ * organisation + transaction_code, organisation + receipt_code,
13
+ * open hold per bill + hold_code) require it, document it in the
14
+ * tool description, and inherit `idempotency: 'natural_key'`. A
15
+ * retry then fails with a duplicate-key error instead of creating
16
+ * a second row.
17
+ * - Every side-effecting tool also accepts an OPTIONAL
18
+ * `idempotency_key`, forwarded as an `Idempotency-Key` header.
19
+ * Persist (PostgREST) ignores that header today (WI-0008817), so
20
+ * the key does not make a retry safe on its own.
21
+ *
22
+ * The MCP server does not maintain its own dedupe cache — the
23
+ * canonical answer lives in Persist. This module keeps the input
24
+ * schema and header-injection logic in one place so every FAR/FAP
25
+ * mutation surfaces the same contract.
26
+ */
27
+ /**
28
+ * Zod schema for the optional idempotency key input. Keeps the shape
29
+ * consistent so callers passing the same key across tools do not need
30
+ * to remember tool-specific spellings.
31
+ */
32
+ export const idempotencyKeySchema = z
33
+ .string()
34
+ .min(8)
35
+ .max(128)
36
+ .regex(/^[A-Za-z0-9._~:-]+$/, 'idempotency_key must be a URL-safe token (letters, digits, `.`, `_`, `~`, `:`, `-`)')
37
+ .optional()
38
+ .describe('Optional idempotency key, forwarded as an Idempotency-Key header. Persist does not ' +
39
+ 'deduplicate on it yet, so it does not make a retry safe on its own; the unique key ' +
40
+ 'named in the tool description does. Must be a URL-safe token of 8–128 characters.');
41
+ /**
42
+ * Build the request headers for a financial mutation. Passes through
43
+ * `Prefer: return=representation` (needed for PostgREST to echo the
44
+ * created/updated row) and adds `Idempotency-Key` when supplied.
45
+ */
46
+ export function financeWriteHeaders(idempotencyKey) {
47
+ const headers = {
48
+ Prefer: 'return=representation',
49
+ };
50
+ if (idempotencyKey) {
51
+ headers['Idempotency-Key'] = idempotencyKey;
52
+ }
53
+ return headers;
54
+ }
55
+ /**
56
+ * Zod schema for a caller-supplied confirmation flag. Used on
57
+ * consequential actions (cash receipt, hold release) where an
58
+ * explicit `confirm: true` is required in addition to the required
59
+ * business inputs.
60
+ */
61
+ export const confirmFlagSchema = z
62
+ .literal(true, {
63
+ errorMap: () => ({
64
+ message: 'confirm must be set to `true` to acknowledge that this is a financial action ' +
65
+ 'affecting real balances.',
66
+ }),
67
+ })
68
+ .describe('Must be `true` to execute. Present so a model cannot accidentally record a receipt, ' +
69
+ 'release a hold, or move money without an explicit confirmation step.');
70
+ /**
71
+ * Zod schema for a caller-supplied reason string. Used on lifecycle
72
+ * transitions (invoice status change, hold release) so the audit log
73
+ * carries a human-readable justification.
74
+ */
75
+ export const reasonSchema = z
76
+ .string()
77
+ .min(4, 'reason must be at least 4 characters')
78
+ .max(500, 'reason must be at most 500 characters');
79
+ //# sourceMappingURL=finance-idempotency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finance-idempotency.js","sourceRoot":"","sources":["../../../src/tools/_shared/finance-idempotency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;GAIG;AACH,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,qFAAqF;IACnF,qFAAqF;IACrF,mFAAmF,CACtF,CAAC;AAEJ;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,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;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,OAAO,CAAC,IAAI,EAAE;IACb,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACf,OAAO,EACL,+EAA+E;YAC7E,0BAA0B;KAC/B,CAAC;CACH,CAAC;KACD,QAAQ,CACP,sFAAsF;IACpF,sEAAsE,CACzE,CAAC;AAEJ;;;;GAIG;AACH,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,10 @@
1
+ import { z } from 'zod';
2
+ /** ISO 4217 alphabetic currency code, uppercase — validated at the MCP boundary. */
3
+ export declare const currencyCodeSchema: z.ZodString;
4
+ /** Positive money amount (> 0, ≤ 4 dp, bounded magnitude). */
5
+ export declare const positiveMoneySchema: z.ZodEffects<z.ZodNumber, number, number>;
6
+ /** Non-negative money amount (≥ 0, ≤ 4 dp, bounded magnitude). */
7
+ export declare const nonNegativeMoneySchema: z.ZodEffects<z.ZodNumber, number, number>;
8
+ /** Signed money amount (any sign, ≤ 4 dp, bounded magnitude) — for adjustments. */
9
+ export declare const signedMoneySchema: z.ZodEffects<z.ZodNumber, number, number>;
10
+ //# sourceMappingURL=money.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../../src/tools/_shared/money.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqBxB,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,aAK5B,CAAC;AAuCJ,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB,2CAW5B,CAAC;AAEL,kEAAkE;AAClE,eAAO,MAAM,sBAAsB,2CAW/B,CAAC;AAEL,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,2CAEoC,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Shared money and currency validators for financial (FAR/FAP) tools
4
+ * (WI-0003504). Kept in one place so amount/currency semantics stay
5
+ * consistent across every AR/AP mutation surface.
6
+ *
7
+ * Money validation rules:
8
+ * - Currency codes must be a 3-letter ISO 4217 alphabetic code
9
+ * (uppercase). We do not validate against a live currency list —
10
+ * Persist owns that lookup — but reject the obviously malformed
11
+ * (empty string, wrong length, non-alphabetic) at the MCP boundary.
12
+ * - Amounts must be finite JSON numbers with at most 4 decimal
13
+ * fractional places (banker precision limit) and a magnitude that
14
+ * fits inside PostgREST's numeric range without silent truncation.
15
+ * - `nonNegativeMoney` allows zero (e.g. an adjustment line); use
16
+ * `positiveMoney` for a receipt/payment amount that must move value.
17
+ */
18
+ const ISO_CURRENCY_RE = /^[A-Z]{3}$/;
19
+ /** ISO 4217 alphabetic currency code, uppercase — validated at the MCP boundary. */
20
+ export const currencyCodeSchema = z
21
+ .string()
22
+ .regex(ISO_CURRENCY_RE, 'currency_code must be a 3-letter uppercase ISO 4217 code (e.g. USD, EUR, AUD)');
23
+ // Max 4 decimal places, magnitude below 1e14 to stay well within Postgres
24
+ // numeric(20,4). Any amount larger is almost certainly a caller mistake.
25
+ const MAX_MAGNITUDE = 1e14;
26
+ const MAX_FRACTIONAL_DIGITS = 4;
27
+ function fractionalDigits(value) {
28
+ if (!Number.isFinite(value))
29
+ return Infinity;
30
+ const s = String(value);
31
+ const dot = s.indexOf('.');
32
+ if (dot < 0)
33
+ return 0;
34
+ const exp = s.toLowerCase().indexOf('e');
35
+ if (exp >= 0)
36
+ return Infinity;
37
+ return s.length - dot - 1;
38
+ }
39
+ function validateMoneyMagnitude(value, ctx) {
40
+ if (!Number.isFinite(value)) {
41
+ ctx.addIssue({
42
+ code: z.ZodIssueCode.custom,
43
+ message: 'amount must be a finite number',
44
+ });
45
+ return;
46
+ }
47
+ if (Math.abs(value) >= MAX_MAGNITUDE) {
48
+ ctx.addIssue({
49
+ code: z.ZodIssueCode.custom,
50
+ message: `amount magnitude must be less than ${MAX_MAGNITUDE}`,
51
+ });
52
+ }
53
+ if (fractionalDigits(value) > MAX_FRACTIONAL_DIGITS) {
54
+ ctx.addIssue({
55
+ code: z.ZodIssueCode.custom,
56
+ message: `amount must have at most ${MAX_FRACTIONAL_DIGITS} decimal places`,
57
+ });
58
+ }
59
+ }
60
+ /** Positive money amount (> 0, ≤ 4 dp, bounded magnitude). */
61
+ export const positiveMoneySchema = z
62
+ .number()
63
+ .superRefine((value, ctx) => {
64
+ if (value <= 0) {
65
+ ctx.addIssue({
66
+ code: z.ZodIssueCode.custom,
67
+ message: 'amount must be greater than 0',
68
+ });
69
+ return;
70
+ }
71
+ validateMoneyMagnitude(value, ctx);
72
+ });
73
+ /** Non-negative money amount (≥ 0, ≤ 4 dp, bounded magnitude). */
74
+ export const nonNegativeMoneySchema = z
75
+ .number()
76
+ .superRefine((value, ctx) => {
77
+ if (value < 0) {
78
+ ctx.addIssue({
79
+ code: z.ZodIssueCode.custom,
80
+ message: 'amount must be greater than or equal to 0',
81
+ });
82
+ return;
83
+ }
84
+ validateMoneyMagnitude(value, ctx);
85
+ });
86
+ /** Signed money amount (any sign, ≤ 4 dp, bounded magnitude) — for adjustments. */
87
+ export const signedMoneySchema = z
88
+ .number()
89
+ .superRefine((value, ctx) => validateMoneyMagnitude(value, ctx));
90
+ //# sourceMappingURL=money.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money.js","sourceRoot":"","sources":["../../../src/tools/_shared/money.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,8 @@ export interface SoftDeactivateOptions {
31
31
  present?: (row: Row) => unknown;
32
32
  }
33
33
  /**
34
- * Read-then-patch soft deactivation shared by revoke / deactivate tools.
34
+ * Read-then-patch shared by state-transition tools (revoke, deactivate,
35
+ * status set, hold release).
35
36
  *
36
37
  * Reading first lets the tool merge the reason into the existing
37
38
  * `metadata` instead of replacing it, and makes retries converge: a row
@@ -1 +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"}
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;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAwBhC"}
@@ -15,7 +15,8 @@ export const softDeactivateEndDateSchema = z
15
15
  .describe('Optional ISO 8601 date the record stops being valid. Leave unset to keep the record ' +
16
16
  'visible as inactive; an end_date at or before now hides the record from every read.');
17
17
  /**
18
- * Read-then-patch soft deactivation shared by revoke / deactivate tools.
18
+ * Read-then-patch shared by state-transition tools (revoke, deactivate,
19
+ * status set, hold release).
19
20
  *
20
21
  * Reading first lets the tool merge the reason into the existing
21
22
  * `metadata` instead of replacing it, and makes retries converge: a row
@@ -1 +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"}
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;;;;;;;;GAQG;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"}
@@ -1 +1 @@
1
- {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAarC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,eAAO,MAAM,cAAc,EAAE,aAAa,EAkFzC,CAAC;AAwDF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAsB9C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAepD"}
1
+ {"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAerC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,eAAO,MAAM,cAAc,EAAE,aAAa,EAgGzC,CAAC;AAwDF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CA0B9C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAepD"}
@@ -3,6 +3,8 @@ import { ppmTools } from './ppm/index.js';
3
3
  import { prmTools } from './prm/index.js';
4
4
  import { sfaTools } from './sfa/index.js';
5
5
  import { wrmTools } from './wrm/index.js';
6
+ import { farReadOnlyTools, farTools } from './far/index.js';
7
+ import { fapReadOnlyTools, fapTools } from './fap/index.js';
6
8
  import { fndReadOnlyTools, fndTools } from './fnd/index.js';
7
9
  import { hrmReadOnlyTools, hrmTools } from './hrm/index.js';
8
10
  import { secReadOnlyTools, secTools } from './sec/index.js';
@@ -40,6 +42,18 @@ export const primaryDomains = [
40
42
  summary: 'Manage AI worker identities, model stacks, MCP tool registrations, roles, role memories, and agent run steps/artifacts.',
41
43
  tools: wrmTools,
42
44
  },
45
+ {
46
+ id: 'far',
47
+ title: 'FAR — Financial Accounts Receivable',
48
+ summary: 'Bounded reads plus explicit-schema mutations for customers, customer invoices, invoice lines, and cash receipts. Sensitive receipts and payment terms are opted in with field-level redaction; every consequential path (receipt recording, lifecycle transition) declares confirmation and idempotency.',
49
+ tools: farTools,
50
+ },
51
+ {
52
+ id: 'fap',
53
+ title: 'FAP — Financial Accounts Payable',
54
+ summary: 'Bounded reads plus explicit-schema mutations for suppliers, supplier bills, bill lines, and invoice holds. Semantic hold-release and payment operations require caller confirmation and are safe to retry via natural or explicit idempotency keys.',
55
+ tools: fapTools,
56
+ },
43
57
  {
44
58
  id: 'fnd',
45
59
  title: 'FND — Foundation',
@@ -144,6 +158,10 @@ export const domainIndex = {
144
158
  'sfa-readonly': sfaTools.filter((t) => SFA_READ_TOOL_NAMES.has(t.name)),
145
159
  wrm: wrmTools,
146
160
  'wrm-readonly': wrmTools.filter((t) => WRM_READ_TOOL_NAMES.has(t.name)),
161
+ far: farTools,
162
+ 'far-readonly': farReadOnlyTools,
163
+ fap: fapTools,
164
+ 'fap-readonly': fapReadOnlyTools,
147
165
  fnd: fndTools,
148
166
  'fnd-readonly': fndReadOnlyTools,
149
167
  hrm: hrmTools,