@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 +1 @@
1
- {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/tools/domains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAa5D,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,+BAA+B;QACtC,OAAO,EACL,+FAA+F;QACjG,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,oCAAoC;QAC3C,OAAO,EACL,oFAAoF;QACtF,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,qCAAqC;QAC5C,OAAO,EACL,6FAA6F;QAC/F,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,8BAA8B;QACrC,OAAO,EACL,2IAA2I;QAC7I,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,sCAAsC;QAC7C,OAAO,EACL,yHAAyH;QAC3H,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,qCAAqC;QAC5C,OAAO,EACL,0SAA0S;QAC5S,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,kCAAkC;QACzC,OAAO,EACL,qPAAqP;QACvP,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,kBAAkB;QACzB,OAAO,EACL,iaAAia;QACna,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,kCAAkC;QACzC,OAAO,EACL,sTAAsT;QACxT,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,gBAAgB;QACvB,OAAO,EACL,6NAA6N;QAC/N,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,iCAAiC;QACxC,OAAO,EACL,qGAAqG;YACrG,wGAAwG;YACxG,2FAA2F;YAC3F,8DAA8D;QAChE,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,8BAA8B;QACrC,OAAO,EACL,wGAAwG;YACxG,wGAAwG;QAC1G,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,gCAAgC;QACvC,OAAO,EACL,yLAAyL;QAC3L,KAAK,EAAE,QAAQ;KAChB;CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,0BAA0B;IAC1B,yBAAyB;IACzB,+BAA+B;IAC/B,0BAA0B;IAC1B,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;CACzB,CAAC,CAAC;AAEH,yEAAyE;AACzE,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAW,EAAE,CACxD,IAAI,KAAK,gBAAgB;IACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAExB,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,eAAe;IACf,cAAc;IACd,uBAAuB;IACvB,sBAAsB;IACtB,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,0BAA0B;IAC1B,2BAA2B;IAC3B,2BAA2B;IAC3B,yBAAyB;IACzB,2BAA2B;IAC3B,uBAAuB;IACvB,4BAA4B;IAC5B,4BAA4B;IAC5B,iCAAiC;IACjC,wBAAwB;IACxB,mBAAmB;IACnB,4BAA4B;IAC5B,gCAAgC;CACjC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;IAChC,GAAG,EAAE,QAAQ;IACb,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgB,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,iBAAiB,SAAS,GAAG,CACxE,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Tool } from '../registry.js';
2
+ /**
3
+ * Semantic tool: place an invoice hold on a supplier bill. Prevents
4
+ * downstream payment scheduling until the hold is released. Required
5
+ * `hold_reason` is stored on the hold. Retry-safe via the partial
6
+ * unique index `idx_t_fap_inv_holds_open_hold_uq`: one open hold per
7
+ * (supplier_transaction_header_id, hold_code).
8
+ *
9
+ * `held_by` is NOT sent: Persist must set it from the authenticated
10
+ * user (WI-0009028). Until that trigger is deployed every insert fails
11
+ * on the NOT NULL `held_by` column.
12
+ */
13
+ export declare const fapInvoiceHoldPlaceTool: Tool;
14
+ //# sourceMappingURL=fap-invoice-hold-place.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-invoice-hold-place.d.ts","sourceRoot":"","sources":["../../../src/tools/fap/fap-invoice-hold-place.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAStC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,EAAE,IAsDrC,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ import { API_ERROR, errorResponse, successResponse } from '../types.js';
3
+ import { cap } from '../../capabilities/tool-capability.js';
4
+ import { financeWriteHeaders, idempotencyKeySchema, reasonSchema, } from '../_shared/finance-idempotency.js';
5
+ /**
6
+ * Semantic tool: place an invoice hold on a supplier bill. Prevents
7
+ * downstream payment scheduling until the hold is released. Required
8
+ * `hold_reason` is stored on the hold. Retry-safe via the partial
9
+ * unique index `idx_t_fap_inv_holds_open_hold_uq`: one open hold per
10
+ * (supplier_transaction_header_id, hold_code).
11
+ *
12
+ * `held_by` is NOT sent: Persist must set it from the authenticated
13
+ * user (WI-0009028). Until that trigger is deployed every insert fails
14
+ * on the NOT NULL `held_by` column.
15
+ */
16
+ export const fapInvoiceHoldPlaceTool = {
17
+ name: 'fap_invoice_hold_place',
18
+ description: 'Place an invoice hold on a FAP supplier bill (fap_invoice_holds). Blocks payment ' +
19
+ 'scheduling until released. Requires hold_code and hold_reason. One open hold per ' +
20
+ 'bill and hold_code: a retry fails with a duplicate-key error instead of placing a ' +
21
+ 'second hold.',
22
+ inputSchema: z.object({
23
+ supplier_transaction_header_id: z
24
+ .string()
25
+ .min(1)
26
+ .describe('UUID of the bill being held'),
27
+ hold_code: z
28
+ .string()
29
+ .min(1)
30
+ .max(64)
31
+ .describe('Hold code from the FAP_SUPPLIER_TRANSACTION_HEADERS_HOLD_CODE lookup ' +
32
+ '(e.g. AMOUNT, DUPLICATE, MANUAL, PRICE, QTY)'),
33
+ hold_reason: reasonSchema.describe('Human-readable justification recorded on the audit trail'),
34
+ start_date: z.string().min(1).optional().describe('ISO 8601 effective start'),
35
+ end_date: z.string().min(1).optional().describe('ISO 8601 planned end date'),
36
+ idempotency_key: idempotencyKeySchema,
37
+ }),
38
+ capabilities: [cap('fap_invoice_holds', 'INSERT')],
39
+ sideEffect: 'state_change',
40
+ confirmation: 'caller_provides_reason',
41
+ idempotency: 'natural_key',
42
+ handler: async (args, ctx) => {
43
+ const input = args;
44
+ const body = {
45
+ supplier_transaction_header_id: input.supplier_transaction_header_id,
46
+ hold_code: input.hold_code,
47
+ hold_reason: input.hold_reason,
48
+ };
49
+ if (input.start_date !== undefined)
50
+ body.start_date = input.start_date;
51
+ if (input.end_date !== undefined)
52
+ body.end_date = input.end_date;
53
+ try {
54
+ const rows = await ctx.apiClient.post(`${ctx.apiClient.dbBasePath}/fap_invoice_holds?select=*`, body, { headers: financeWriteHeaders(input.idempotency_key) });
55
+ return successResponse(rows[0]);
56
+ }
57
+ catch (error) {
58
+ return errorResponse(API_ERROR, `Failed to place FAP invoice hold: ${error.message}`);
59
+ }
60
+ },
61
+ };
62
+ //# sourceMappingURL=fap-invoice-hold-place.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-invoice-hold-place.js","sourceRoot":"","sources":["../../../src/tools/fap/fap-invoice-hold-place.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAS;IAC3C,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,mFAAmF;QACnF,mFAAmF;QACnF,oFAAoF;QACpF,cAAc;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,8BAA8B,EAAE,CAAC;aAC9B,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,6BAA6B,CAAC;QAC1C,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CACP,uEAAuE;YACrE,8CAA8C,CACjD;QACH,WAAW,EAAE,YAAY,CAAC,QAAQ,CAChC,0DAA0D,CAC3D;QACD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC5E,eAAe,EAAE,oBAAoB;KACtC,CAAC;IACF,YAAY,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAClD,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,wBAAwB;IACtC,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAA2B,CAAC;QAC1C,MAAM,IAAI,GAAwB;YAChC,8BAA8B,EAAE,KAAK,CAAC,8BAA8B;YACpE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;QACF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACvE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CACnC,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,6BAA6B,EACxD,IAAI,EACJ,EAAE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CACxD,CAAC;YACF,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,aAAa,CAClB,SAAS,EACT,qCAAqC,KAAK,CAAC,OAAO,EAAE,CACrD,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Tool } from '../registry.js';
2
+ /**
3
+ * Payment-consequential semantic tool: release an existing FAP invoice
4
+ * hold. Releasing a hold re-enables downstream payment scheduling for
5
+ * the underlying bill, so the tool requires `confirm: true` and a
6
+ * `release_code` + human-readable `reason`.
7
+ *
8
+ * The tool reads the hold first: the reason is merged into the existing
9
+ * `metadata`, and a hold that is already released (`released_date` set,
10
+ * the open-hold test used by `fap_invoice_is_payable`) is returned
11
+ * unchanged, so a retry keeps the original release.
12
+ *
13
+ * `released_by` is NOT sent: Persist must set it, and default
14
+ * `released_date`, from the authenticated user (WI-0009028). Until that
15
+ * trigger is deployed the release fails on
16
+ * `t_fap_inv_holds_released_fields_ck`.
17
+ */
18
+ export declare const fapInvoiceHoldReleaseTool: Tool;
19
+ //# sourceMappingURL=fap-invoice-hold-release.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-invoice-hold-release.d.ts","sourceRoot":"","sources":["../../../src/tools/fap/fap-invoice-hold-release.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAStC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,EAAE,IAoDvC,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod';
2
+ import { cap } from '../../capabilities/tool-capability.js';
3
+ import { confirmFlagSchema, idempotencyKeySchema, reasonSchema, } from '../_shared/finance-idempotency.js';
4
+ import { softDeactivate } from '../_shared/soft-deactivate.js';
5
+ /**
6
+ * Payment-consequential semantic tool: release an existing FAP invoice
7
+ * hold. Releasing a hold re-enables downstream payment scheduling for
8
+ * the underlying bill, so the tool requires `confirm: true` and a
9
+ * `release_code` + human-readable `reason`.
10
+ *
11
+ * The tool reads the hold first: the reason is merged into the existing
12
+ * `metadata`, and a hold that is already released (`released_date` set,
13
+ * the open-hold test used by `fap_invoice_is_payable`) is returned
14
+ * unchanged, so a retry keeps the original release.
15
+ *
16
+ * `released_by` is NOT sent: Persist must set it, and default
17
+ * `released_date`, from the authenticated user (WI-0009028). Until that
18
+ * trigger is deployed the release fails on
19
+ * `t_fap_inv_holds_released_fields_ck`.
20
+ */
21
+ export const fapInvoiceHoldReleaseTool = {
22
+ name: 'fap_invoice_hold_release',
23
+ description: 'Release an FAP invoice hold, re-enabling payment scheduling. Requires ' +
24
+ 'confirm=true, a release_code, and a `reason`, merged into the hold metadata. ' +
25
+ 'An already-released hold is returned unchanged, so retries are safe.',
26
+ inputSchema: z.object({
27
+ id: z.string().min(1).describe('UUID of the fap_invoice_holds row to release'),
28
+ release_code: z
29
+ .string()
30
+ .min(1)
31
+ .max(64)
32
+ .describe('Release code from the FAP_INVOICE_HOLDS_RELEASE_CODE lookup ' +
33
+ '(e.g. USER = User Release, AUTO = Auto Release)'),
34
+ reason: reasonSchema.describe('Human-readable justification, stored in metadata'),
35
+ released_date: z
36
+ .string()
37
+ .min(1)
38
+ .optional()
39
+ .describe('ISO 8601 timestamp of the release; Persist defaults it to now'),
40
+ confirm: confirmFlagSchema,
41
+ idempotency_key: idempotencyKeySchema,
42
+ }),
43
+ capabilities: [cap('fap_invoice_holds', 'UPDATE')],
44
+ sideEffect: 'payment',
45
+ confirmation: 'caller_confirms',
46
+ idempotency: 'natural_key',
47
+ handler: async (args, ctx) => {
48
+ const input = args;
49
+ const changes = { release_code: input.release_code };
50
+ if (input.released_date !== undefined)
51
+ changes.released_date = input.released_date;
52
+ return softDeactivate(ctx, {
53
+ table: 'fap_invoice_holds',
54
+ id: input.id,
55
+ label: 'FAP invoice hold',
56
+ verb: 'release',
57
+ isDone: (row) => row.released_date != null,
58
+ changes: () => changes,
59
+ reasonKey: 'release_reason',
60
+ reason: input.reason,
61
+ idempotencyKey: input.idempotency_key,
62
+ });
63
+ },
64
+ };
65
+ //# sourceMappingURL=fap-invoice-hold-release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-invoice-hold-release.js","sourceRoot":"","sources":["../../../src/tools/fap/fap-invoice-hold-release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,GACb,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAS;IAC7C,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,wEAAwE;QACxE,+EAA+E;QAC/E,sEAAsE;IACxE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QAC9E,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CACP,8DAA8D;YAC5D,iDAAiD,CACpD;QACH,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACjF,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,+DAA+D,CAAC;QAC5E,OAAO,EAAE,iBAAiB;QAC1B,eAAe,EAAE,oBAAoB;KACtC,CAAC;IACF,YAAY,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAClD,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,iBAAiB;IAC/B,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAOb,CAAC;QACF,MAAM,OAAO,GAA4B,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9E,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACnF,OAAO,cAAc,CAAC,GAAG,EAAE;YACzB,KAAK,EAAE,mBAAmB;YAC1B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI;YAC1C,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;YACtB,SAAS,EAAE,gBAAgB;YAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,cAAc,EAAE,KAAK,CAAC,eAAe;SACtC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Tool } from '../registry.js';
2
+ /**
3
+ * Explicit-schema create for an FAP supplier bill / invoice
4
+ * (transaction header). `transaction_status` is read-only per the
5
+ * pinned contract — new bills land in the persist-assigned default
6
+ * state. Approval status is excluded from this generic path (use
7
+ * status/approval-specific tools once backend endpoints exist).
8
+ *
9
+ * Unique key: `t_fap_supp_tx_hdrs_invoice_uk` (bill_from_supplier_id,
10
+ * invoice_number, tenant_id), so a retry with the same invoice_number
11
+ * fails with a duplicate-key error.
12
+ */
13
+ export declare const fapSupplierBillCreateTool: Tool;
14
+ //# sourceMappingURL=fap-supplier-bill-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-bill-create.d.ts","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-bill-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAStC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,EAAE,IAkFvC,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ import { API_ERROR, errorResponse, successResponse } from '../types.js';
3
+ import { cap } from '../../capabilities/tool-capability.js';
4
+ import { currencyCodeSchema } from '../_shared/money.js';
5
+ import { financeWriteHeaders, idempotencyKeySchema, } from '../_shared/finance-idempotency.js';
6
+ /**
7
+ * Explicit-schema create for an FAP supplier bill / invoice
8
+ * (transaction header). `transaction_status` is read-only per the
9
+ * pinned contract — new bills land in the persist-assigned default
10
+ * state. Approval status is excluded from this generic path (use
11
+ * status/approval-specific tools once backend endpoints exist).
12
+ *
13
+ * Unique key: `t_fap_supp_tx_hdrs_invoice_uk` (bill_from_supplier_id,
14
+ * invoice_number, tenant_id), so a retry with the same invoice_number
15
+ * fails with a duplicate-key error.
16
+ */
17
+ export const fapSupplierBillCreateTool = {
18
+ name: 'fap_supplier_bill_create',
19
+ description: 'Record a supplier bill (fap_supplier_transaction_headers). transaction_status ' +
20
+ 'is assigned by persist. invoice_number is unique per supplier: a retry with the same ' +
21
+ 'invoice_number fails with a duplicate-key error instead of recording a second bill.',
22
+ inputSchema: z.object({
23
+ bill_from_supplier_id: z
24
+ .string()
25
+ .min(1)
26
+ .describe('UUID of the supplier issuing the bill'),
27
+ bill_from_supplier_site_id: z.string().min(1).optional(),
28
+ bill_from_supplier_contact_point_id: z.string().min(1).optional(),
29
+ invoice_number: z
30
+ .string()
31
+ .min(1)
32
+ .max(64)
33
+ .describe('Supplier invoice number (natural key column)'),
34
+ transaction_date: z.string().min(1).describe('ISO 8601 invoice date'),
35
+ transaction_currency_code: currencyCodeSchema,
36
+ transaction_type: z
37
+ .string()
38
+ .max(32)
39
+ .optional()
40
+ .describe('Transaction type from the FAP_SUPPLIER_TRANSACTION_HEADERS_TRANSACTION_TYPE lookup ' +
41
+ '(e.g. INVOICE, CREDIT_MEMO, DEBIT_MEMO, PREPAYMENT)'),
42
+ our_po_number: z.string().max(64).optional(),
43
+ supplier_reference: z.string().max(255).optional(),
44
+ payment_term_id: z
45
+ .string()
46
+ .min(1)
47
+ .optional()
48
+ .describe('UUID of the payment term. Required when the supplier (or supplier site use) has no ' +
49
+ 'default payment term; Persist rejects the bill with PAYMENT_TERM_REQUIRED otherwise.'),
50
+ ship_from_party_id: z.string().min(1).optional(),
51
+ ship_from_party_site_id: z.string().min(1).optional(),
52
+ ship_from_party_contact_point_id: z.string().min(1).optional(),
53
+ idempotency_key: idempotencyKeySchema,
54
+ }),
55
+ capabilities: [cap('fap_supplier_transaction_headers', 'INSERT')],
56
+ sideEffect: 'state_change',
57
+ confirmation: 'none',
58
+ idempotency: 'natural_key',
59
+ handler: async (args, ctx) => {
60
+ const input = args;
61
+ const body = {
62
+ bill_from_supplier_id: input.bill_from_supplier_id,
63
+ invoice_number: input.invoice_number,
64
+ transaction_date: input.transaction_date,
65
+ transaction_currency_code: input.transaction_currency_code,
66
+ };
67
+ for (const field of [
68
+ 'bill_from_supplier_site_id',
69
+ 'bill_from_supplier_contact_point_id',
70
+ 'transaction_type',
71
+ 'our_po_number',
72
+ 'supplier_reference',
73
+ 'payment_term_id',
74
+ 'ship_from_party_id',
75
+ 'ship_from_party_site_id',
76
+ 'ship_from_party_contact_point_id',
77
+ ]) {
78
+ if (input[field] !== undefined)
79
+ body[field] = input[field];
80
+ }
81
+ try {
82
+ const rows = await ctx.apiClient.post(`${ctx.apiClient.dbBasePath}/fap_supplier_transaction_headers?select=*`, body, { headers: financeWriteHeaders(input.idempotency_key) });
83
+ return successResponse(rows[0]);
84
+ }
85
+ catch (error) {
86
+ return errorResponse(API_ERROR, `Failed to create FAP supplier bill: ${error.message}`);
87
+ }
88
+ },
89
+ };
90
+ //# sourceMappingURL=fap-supplier-bill-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-bill-create.js","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-bill-create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Tool } from '../registry.js';
2
+ /**
3
+ * Explicit-schema tool for appending a line to an FAP supplier bill.
4
+ * Amount and qty are validated at the MCP boundary. Retry-safe via
5
+ * (supplier_transaction_header_id, supplier_transaction_line_number).
6
+ */
7
+ export declare const fapSupplierBillLineAddTool: Tool;
8
+ //# sourceMappingURL=fap-supplier-bill-line-add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-bill-line-add.d.ts","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-bill-line-add.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAYtC;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,IA2ExC,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { z } from 'zod';
2
+ import { API_ERROR, errorResponse, successResponse } from '../types.js';
3
+ import { cap } from '../../capabilities/tool-capability.js';
4
+ import { positiveMoneySchema, signedMoneySchema, } from '../_shared/money.js';
5
+ import { financeWriteHeaders, idempotencyKeySchema, } from '../_shared/finance-idempotency.js';
6
+ /**
7
+ * Explicit-schema tool for appending a line to an FAP supplier bill.
8
+ * Amount and qty are validated at the MCP boundary. Retry-safe via
9
+ * (supplier_transaction_header_id, supplier_transaction_line_number).
10
+ */
11
+ export const fapSupplierBillLineAddTool = {
12
+ name: 'fap_supplier_bill_line_add',
13
+ description: 'Append a line to an existing supplier bill. Amount/qty validated at the MCP ' +
14
+ 'boundary. Natural key: (supplier_transaction_header_id, supplier_transaction_line_number). ' +
15
+ 'Retry-safe.',
16
+ inputSchema: z.object({
17
+ supplier_transaction_header_id: z
18
+ .string()
19
+ .min(1)
20
+ .describe('UUID of the bill header this line belongs to'),
21
+ bill_from_supplier_id: z
22
+ .string()
23
+ .min(1)
24
+ .describe('UUID of the supplier (must match the header)'),
25
+ supplier_transaction_line_number: z
26
+ .number()
27
+ .int()
28
+ .positive()
29
+ .describe('1-based line number, unique within the header'),
30
+ supplier_transaction_line_qty: signedMoneySchema.describe('Line quantity — signed to permit debit-memo negative lines'),
31
+ extended_transaction_price: positiveMoneySchema.describe('Line total (qty × unit_transaction_price) — must be > 0'),
32
+ unit_transaction_price: positiveMoneySchema.describe('Unit price at the bill currency — must be > 0'),
33
+ unit_list_price: positiveMoneySchema.optional(),
34
+ extended_list_price: positiveMoneySchema.optional(),
35
+ supplier_transaction_line_item_id: z.string().min(1).optional(),
36
+ supplier_transaction_line_item_description: z.string().max(255).optional(),
37
+ supplier_transaction_line_uom: z.string().max(32).optional(),
38
+ supplier_transaction_line_reference: z.string().max(255).optional(),
39
+ idempotency_key: idempotencyKeySchema,
40
+ }),
41
+ capabilities: [cap('fap_supplier_transaction_lines', 'INSERT')],
42
+ sideEffect: 'state_change',
43
+ confirmation: 'none',
44
+ idempotency: 'natural_key',
45
+ handler: async (args, ctx) => {
46
+ const input = args;
47
+ const body = {
48
+ supplier_transaction_header_id: input.supplier_transaction_header_id,
49
+ bill_from_supplier_id: input.bill_from_supplier_id,
50
+ supplier_transaction_line_number: input.supplier_transaction_line_number,
51
+ supplier_transaction_line_qty: input.supplier_transaction_line_qty,
52
+ extended_transaction_price: input.extended_transaction_price,
53
+ unit_transaction_price: input.unit_transaction_price,
54
+ };
55
+ for (const field of [
56
+ 'unit_list_price',
57
+ 'extended_list_price',
58
+ 'supplier_transaction_line_item_id',
59
+ 'supplier_transaction_line_item_description',
60
+ 'supplier_transaction_line_uom',
61
+ 'supplier_transaction_line_reference',
62
+ ]) {
63
+ if (input[field] !== undefined)
64
+ body[field] = input[field];
65
+ }
66
+ try {
67
+ const rows = await ctx.apiClient.post(`${ctx.apiClient.dbBasePath}/fap_supplier_transaction_lines?select=*`, body, { headers: financeWriteHeaders(input.idempotency_key) });
68
+ return successResponse(rows[0]);
69
+ }
70
+ catch (error) {
71
+ return errorResponse(API_ERROR, `Failed to add FAP supplier bill line: ${error.message}`);
72
+ }
73
+ },
74
+ };
75
+ //# sourceMappingURL=fap-supplier-bill-line-add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-bill-line-add.js","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-bill-line-add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Tool } from '../registry.js';
2
+ /**
3
+ * Explicit-schema create for `fap_suppliers`. Approval and status
4
+ * columns are DELIBERATELY excluded — the persist layer assigns the
5
+ * initial lifecycle state so a caller cannot bootstrap an already-
6
+ * approved supplier via MCP.
7
+ */
8
+ export declare const fapSupplierCreateTool: Tool;
9
+ //# sourceMappingURL=fap-supplier-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-create.d.ts","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAStC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,IA2CnC,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { z } from 'zod';
2
+ import { API_ERROR, errorResponse, successResponse } from '../types.js';
3
+ import { cap } from '../../capabilities/tool-capability.js';
4
+ import { currencyCodeSchema } from '../_shared/money.js';
5
+ import { financeWriteHeaders, idempotencyKeySchema, } from '../_shared/finance-idempotency.js';
6
+ /**
7
+ * Explicit-schema create for `fap_suppliers`. Approval and status
8
+ * columns are DELIBERATELY excluded — the persist layer assigns the
9
+ * initial lifecycle state so a caller cannot bootstrap an already-
10
+ * approved supplier via MCP.
11
+ */
12
+ export const fapSupplierCreateTool = {
13
+ name: 'fap_supplier_create',
14
+ description: 'Create a new FAP supplier with an explicit safe field set. Approval/status ' +
15
+ 'columns are excluded — persist assigns the initial lifecycle state. ' +
16
+ 'One supplier per party, and supplier_code is unique, within the tenant: a retry ' +
17
+ 'fails with a duplicate-key error instead of creating a second supplier.',
18
+ inputSchema: z.object({
19
+ party_id: z.string().min(1).describe('UUID of the PRM party this supplier represents'),
20
+ supplier_code: z.string().min(1).max(64).optional(),
21
+ supplier_class_code: z.string().max(64).optional(),
22
+ supplier_type_code: z.string().max(64).optional(),
23
+ invoice_currency_code: currencyCodeSchema.optional(),
24
+ payment_term_id: z.string().min(1).optional(),
25
+ idempotency_key: idempotencyKeySchema,
26
+ }),
27
+ capabilities: [cap('fap_suppliers', 'INSERT')],
28
+ sideEffect: 'state_change',
29
+ confirmation: 'none',
30
+ idempotency: 'natural_key',
31
+ handler: async (args, ctx) => {
32
+ const input = args;
33
+ const body = { party_id: input.party_id };
34
+ for (const field of [
35
+ 'supplier_code',
36
+ 'supplier_class_code',
37
+ 'supplier_type_code',
38
+ 'invoice_currency_code',
39
+ 'payment_term_id',
40
+ ]) {
41
+ if (input[field] !== undefined)
42
+ body[field] = input[field];
43
+ }
44
+ try {
45
+ const rows = await ctx.apiClient.post(`${ctx.apiClient.dbBasePath}/fap_suppliers?select=*`, body, { headers: financeWriteHeaders(input.idempotency_key) });
46
+ return successResponse(rows[0]);
47
+ }
48
+ catch (error) {
49
+ return errorResponse(API_ERROR, `Failed to create FAP supplier: ${error.message}`);
50
+ }
51
+ },
52
+ };
53
+ //# sourceMappingURL=fap-supplier-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-create.js","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAS;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,6EAA6E;QAC7E,sEAAsE;QACtE,kFAAkF;QAClF,yEAAyE;IAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACtF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QACnD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QAClD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;QACjD,qBAAqB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACpD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,eAAe,EAAE,oBAAoB;KACtC,CAAC;IACF,YAAY,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC9C,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAA2B,CAAC;QAC1C,MAAM,IAAI,GAAwB,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/D,KAAK,MAAM,KAAK,IAAI;YAClB,eAAe;YACf,qBAAqB;YACrB,oBAAoB;YACpB,uBAAuB;YACvB,iBAAiB;SAClB,EAAE,CAAC;YACF,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CACnC,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,yBAAyB,EACpD,IAAI,EACJ,EAAE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CACxD,CAAC;YACF,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,aAAa,CAAC,SAAS,EAAE,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Tool } from '../registry.js';
2
+ /**
3
+ * Semantic supplier lifecycle transition — mirrors far_customer_status_set.
4
+ * Reads the row first: the reason is merged into the existing `metadata`,
5
+ * and a supplier already in the target state is returned unchanged.
6
+ */
7
+ export declare const fapSupplierStatusSetTool: Tool;
8
+ //# sourceMappingURL=fap-supplier-status-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-status-set.d.ts","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-status-set.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,IAmEtC,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ import { cap } from '../../capabilities/tool-capability.js';
3
+ import { idempotencyKeySchema, reasonSchema } from '../_shared/finance-idempotency.js';
4
+ import { softDeactivate } from '../_shared/soft-deactivate.js';
5
+ /**
6
+ * Semantic supplier lifecycle transition — mirrors far_customer_status_set.
7
+ * Reads the row first: the reason is merged into the existing `metadata`,
8
+ * and a supplier already in the target state is returned unchanged.
9
+ */
10
+ export const fapSupplierStatusSetTool = {
11
+ name: 'fap_supplier_status_set',
12
+ description: 'Transition a FAP supplier lifecycle status. Accepts supplier_status_code and/or ' +
13
+ 'supplier_approval_status_code; requires a `reason`, merged into the supplier metadata. ' +
14
+ 'A supplier already in the target state is returned unchanged, so retries are safe.',
15
+ inputSchema: z
16
+ .object({
17
+ id: z.string().min(1).describe('UUID of the supplier'),
18
+ supplier_status_code: z
19
+ .string()
20
+ .max(64)
21
+ .optional()
22
+ .describe('Target status from the FAP_SUPPLIERS_SUPPLIER_STATUS lookup (e.g. A = Active, I = Inactive)'),
23
+ supplier_approval_status_code: z
24
+ .string()
25
+ .max(64)
26
+ .optional()
27
+ .describe('Target approval status from the FAP_SUPPLIERS_SUPPLIER_APPROVAL_STATUS lookup ' +
28
+ '(e.g. A = Approved, P = Pending, R = Rejected)'),
29
+ reason: reasonSchema.describe('Human-readable justification, stored in metadata'),
30
+ idempotency_key: idempotencyKeySchema,
31
+ })
32
+ .refine((v) => v.supplier_status_code !== undefined ||
33
+ v.supplier_approval_status_code !== undefined, {
34
+ message: 'supply supplier_status_code and/or supplier_approval_status_code — at least one is required.',
35
+ }),
36
+ capabilities: [cap('fap_suppliers', 'UPDATE')],
37
+ sideEffect: 'state_change',
38
+ confirmation: 'caller_provides_reason',
39
+ idempotency: 'natural_key',
40
+ handler: async (args, ctx) => {
41
+ const input = args;
42
+ const target = {};
43
+ if (input.supplier_status_code !== undefined) {
44
+ target.supplier_status_code = input.supplier_status_code;
45
+ }
46
+ if (input.supplier_approval_status_code !== undefined) {
47
+ target.supplier_approval_status_code = input.supplier_approval_status_code;
48
+ }
49
+ return softDeactivate(ctx, {
50
+ table: 'fap_suppliers',
51
+ id: input.id,
52
+ label: 'FAP supplier',
53
+ verb: 'set status of',
54
+ isDone: (row) => Object.entries(target).every(([k, v]) => row[k] === v),
55
+ changes: () => target,
56
+ reasonKey: 'status_change_reason',
57
+ reason: input.reason,
58
+ idempotencyKey: input.idempotency_key,
59
+ });
60
+ },
61
+ };
62
+ //# sourceMappingURL=fap-supplier-status-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-status-set.js","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-status-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAS;IAC5C,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,kFAAkF;QAClF,yFAAyF;QACzF,oFAAoF;IACtF,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACtD,oBAAoB,EAAE,CAAC;aACpB,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CACP,6FAA6F,CAC9F;QACH,6BAA6B,EAAE,CAAC;aAC7B,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CACP,gFAAgF;YAC9E,gDAAgD,CACnD;QACH,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACjF,eAAe,EAAE,oBAAoB;KACtC,CAAC;SACD,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,oBAAoB,KAAK,SAAS;QACpC,CAAC,CAAC,6BAA6B,KAAK,SAAS,EAC/C;QACE,OAAO,EACL,8FAA8F;KACjG,CACF;IACH,YAAY,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC9C,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,wBAAwB;IACtC,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAMb,CAAC;QACF,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,6BAA6B,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,CAAC,6BAA6B,GAAG,KAAK,CAAC,6BAA6B,CAAC;QAC7E,CAAC;QACD,OAAO,cAAc,CAAC,GAAG,EAAE;YACzB,KAAK,EAAE,eAAe;YACtB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;YACrB,SAAS,EAAE,sBAAsB;YACjC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,cAAc,EAAE,KAAK,CAAC,eAAe;SACtC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Tool } from '../registry.js';
2
+ /**
3
+ * Explicit-schema update for `fap_suppliers`. Status/approval columns
4
+ * are excluded — use `fap_supplier_status_set` for lifecycle
5
+ * transitions so a reason is recorded on the audit trail.
6
+ */
7
+ export declare const fapSupplierUpdateTool: Tool;
8
+ //# sourceMappingURL=fap-supplier-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fap-supplier-update.d.ts","sourceRoot":"","sources":["../../../src/tools/fap/fap-supplier-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAStC;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,IAgDnC,CAAC"}