@raytio/mcp-server 1.16.1 → 1.17.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/dist/ppm/__fixtures__/work-item.d.ts.map +1 -1
- package/dist/ppm/__fixtures__/work-item.js +1 -0
- package/dist/ppm/__fixtures__/work-item.js.map +1 -1
- package/dist/ppm/projection.d.ts.map +1 -1
- package/dist/ppm/projection.js +1 -0
- package/dist/ppm/projection.js.map +1 -1
- package/dist/ppm/types.d.ts +1 -0
- package/dist/ppm/types.d.ts.map +1 -1
- package/dist/raytio/api-client.d.ts +20 -1
- package/dist/raytio/api-client.d.ts.map +1 -1
- package/dist/raytio/api-client.js +18 -1
- package/dist/raytio/api-client.js.map +1 -1
- package/dist/sfa/filters.d.ts +34 -0
- package/dist/sfa/filters.d.ts.map +1 -0
- package/dist/sfa/filters.js +64 -0
- package/dist/sfa/filters.js.map +1 -0
- package/dist/sfa/projection.d.ts +8 -0
- package/dist/sfa/projection.d.ts.map +1 -0
- package/dist/sfa/projection.js +49 -0
- package/dist/sfa/projection.js.map +1 -0
- package/dist/sfa/types.d.ts +93 -0
- package/dist/sfa/types.d.ts.map +1 -0
- package/dist/sfa/types.js +2 -0
- package/dist/sfa/types.js.map +1 -0
- package/dist/tools/domains.d.ts.map +1 -1
- package/dist/tools/domains.js +19 -0
- package/dist/tools/domains.js.map +1 -1
- package/dist/tools/ppm/work-item-create.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-create.js +2 -1
- package/dist/tools/ppm/work-item-create.js.map +1 -1
- package/dist/tools/ppm/work-item-update.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-update.js +1 -0
- package/dist/tools/ppm/work-item-update.js.map +1 -1
- package/dist/tools/role-mapping.d.ts.map +1 -1
- package/dist/tools/role-mapping.js +6 -0
- package/dist/tools/role-mapping.js.map +1 -1
- package/dist/tools/sfa/activity-create.d.ts +3 -0
- package/dist/tools/sfa/activity-create.d.ts.map +1 -0
- package/dist/tools/sfa/activity-create.js +49 -0
- package/dist/tools/sfa/activity-create.js.map +1 -0
- package/dist/tools/sfa/activity-list.d.ts +3 -0
- package/dist/tools/sfa/activity-list.d.ts.map +1 -0
- package/dist/tools/sfa/activity-list.js +47 -0
- package/dist/tools/sfa/activity-list.js.map +1 -0
- package/dist/tools/sfa/deal-advance-stage.d.ts +13 -0
- package/dist/tools/sfa/deal-advance-stage.d.ts.map +1 -0
- package/dist/tools/sfa/deal-advance-stage.js +48 -0
- package/dist/tools/sfa/deal-advance-stage.js.map +1 -0
- package/dist/tools/sfa/deal-create.d.ts +3 -0
- package/dist/tools/sfa/deal-create.d.ts.map +1 -0
- package/dist/tools/sfa/deal-create.js +51 -0
- package/dist/tools/sfa/deal-create.js.map +1 -0
- package/dist/tools/sfa/deal-get.d.ts +3 -0
- package/dist/tools/sfa/deal-get.d.ts.map +1 -0
- package/dist/tools/sfa/deal-get.js +24 -0
- package/dist/tools/sfa/deal-get.js.map +1 -0
- package/dist/tools/sfa/deal-line-create.d.ts +3 -0
- package/dist/tools/sfa/deal-line-create.d.ts.map +1 -0
- package/dist/tools/sfa/deal-line-create.js +37 -0
- package/dist/tools/sfa/deal-line-create.js.map +1 -0
- package/dist/tools/sfa/deal-line-list.d.ts +3 -0
- package/dist/tools/sfa/deal-line-list.d.ts.map +1 -0
- package/dist/tools/sfa/deal-line-list.js +44 -0
- package/dist/tools/sfa/deal-line-list.js.map +1 -0
- package/dist/tools/sfa/deal-list.d.ts +3 -0
- package/dist/tools/sfa/deal-list.d.ts.map +1 -0
- package/dist/tools/sfa/deal-list.js +40 -0
- package/dist/tools/sfa/deal-list.js.map +1 -0
- package/dist/tools/sfa/deal-update.d.ts +3 -0
- package/dist/tools/sfa/deal-update.d.ts.map +1 -0
- package/dist/tools/sfa/deal-update.js +56 -0
- package/dist/tools/sfa/deal-update.js.map +1 -0
- package/dist/tools/sfa/index.d.ts +3 -0
- package/dist/tools/sfa/index.d.ts.map +1 -0
- package/dist/tools/sfa/index.js +38 -0
- package/dist/tools/sfa/index.js.map +1 -0
- package/dist/tools/sfa/lead-convert.d.ts +15 -0
- package/dist/tools/sfa/lead-convert.d.ts.map +1 -0
- package/dist/tools/sfa/lead-convert.js +57 -0
- package/dist/tools/sfa/lead-convert.js.map +1 -0
- package/dist/tools/sfa/lead-create.d.ts +3 -0
- package/dist/tools/sfa/lead-create.d.ts.map +1 -0
- package/dist/tools/sfa/lead-create.js +52 -0
- package/dist/tools/sfa/lead-create.js.map +1 -0
- package/dist/tools/sfa/lead-get.d.ts +3 -0
- package/dist/tools/sfa/lead-get.d.ts.map +1 -0
- package/dist/tools/sfa/lead-get.js +24 -0
- package/dist/tools/sfa/lead-get.js.map +1 -0
- package/dist/tools/sfa/lead-list.d.ts +3 -0
- package/dist/tools/sfa/lead-list.d.ts.map +1 -0
- package/dist/tools/sfa/lead-list.js +40 -0
- package/dist/tools/sfa/lead-list.js.map +1 -0
- package/dist/tools/sfa/lead-source-list.d.ts +3 -0
- package/dist/tools/sfa/lead-source-list.d.ts.map +1 -0
- package/dist/tools/sfa/lead-source-list.js +45 -0
- package/dist/tools/sfa/lead-source-list.js.map +1 -0
- package/dist/tools/sfa/lead-update.d.ts +3 -0
- package/dist/tools/sfa/lead-update.d.ts.map +1 -0
- package/dist/tools/sfa/lead-update.js +56 -0
- package/dist/tools/sfa/lead-update.js.map +1 -0
- package/dist/tools/sfa/pipeline-list.d.ts +3 -0
- package/dist/tools/sfa/pipeline-list.d.ts.map +1 -0
- package/dist/tools/sfa/pipeline-list.js +44 -0
- package/dist/tools/sfa/pipeline-list.js.map +1 -0
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/tools/create-access-app.d.ts +0 -10
- package/dist/tools/create-access-app.d.ts.map +0 -1
- package/dist/tools/create-access-app.js +0 -20
- package/dist/tools/create-access-app.js.map +0 -1
- package/dist/tools/create-form.d.ts +0 -41
- package/dist/tools/create-form.d.ts.map +0 -1
- package/dist/tools/create-form.js +0 -81
- package/dist/tools/create-form.js.map +0 -1
- package/dist/tools/list-schemas.d.ts +0 -7
- package/dist/tools/list-schemas.d.ts.map +0 -1
- package/dist/tools/list-schemas.js +0 -19
- package/dist/tools/list-schemas.js.map +0 -1
- package/dist/tools/poll-and-retrieve.d.ts +0 -9
- package/dist/tools/poll-and-retrieve.d.ts.map +0 -1
- package/dist/tools/poll-and-retrieve.js +0 -48
- package/dist/tools/poll-and-retrieve.js.map +0 -1
- package/dist/tools/ppm/role-memory-create.d.ts +0 -3
- package/dist/tools/ppm/role-memory-create.d.ts.map +0 -1
- package/dist/tools/ppm/role-memory-create.js +0 -38
- package/dist/tools/ppm/role-memory-create.js.map +0 -1
- package/dist/tools/ppm/role-memory-get.d.ts +0 -3
- package/dist/tools/ppm/role-memory-get.d.ts.map +0 -1
- package/dist/tools/ppm/role-memory-get.js +0 -24
- package/dist/tools/ppm/role-memory-get.js.map +0 -1
- package/dist/tools/ppm/role-memory-list.d.ts +0 -3
- package/dist/tools/ppm/role-memory-list.d.ts.map +0 -1
- package/dist/tools/ppm/role-memory-list.js +0 -55
- package/dist/tools/ppm/role-memory-list.js.map +0 -1
- package/dist/tools/ppm/role-memory-update.d.ts +0 -3
- package/dist/tools/ppm/role-memory-update.d.ts.map +0 -1
- package/dist/tools/ppm/role-memory-update.js +0 -42
- package/dist/tools/ppm/role-memory-update.js.map +0 -1
- package/dist/tools/send-request.d.ts +0 -11
- package/dist/tools/send-request.d.ts.map +0 -1
- package/dist/tools/send-request.js +0 -24
- package/dist/tools/send-request.js.map +0 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { leadListTool } from './lead-list.js';
|
|
2
|
+
import { leadGetTool } from './lead-get.js';
|
|
3
|
+
import { leadCreateTool } from './lead-create.js';
|
|
4
|
+
import { leadUpdateTool } from './lead-update.js';
|
|
5
|
+
import { leadConvertTool } from './lead-convert.js';
|
|
6
|
+
import { dealListTool } from './deal-list.js';
|
|
7
|
+
import { dealGetTool } from './deal-get.js';
|
|
8
|
+
import { dealCreateTool } from './deal-create.js';
|
|
9
|
+
import { dealUpdateTool } from './deal-update.js';
|
|
10
|
+
import { dealAdvanceStageTool } from './deal-advance-stage.js';
|
|
11
|
+
import { dealLineListTool } from './deal-line-list.js';
|
|
12
|
+
import { dealLineCreateTool } from './deal-line-create.js';
|
|
13
|
+
import { activityListTool } from './activity-list.js';
|
|
14
|
+
import { activityCreateTool } from './activity-create.js';
|
|
15
|
+
import { pipelineListTool } from './pipeline-list.js';
|
|
16
|
+
import { leadSourceListTool } from './lead-source-list.js';
|
|
17
|
+
export const sfaTools = [
|
|
18
|
+
// Read tools
|
|
19
|
+
leadListTool,
|
|
20
|
+
leadGetTool,
|
|
21
|
+
dealListTool,
|
|
22
|
+
dealGetTool,
|
|
23
|
+
dealLineListTool,
|
|
24
|
+
activityListTool,
|
|
25
|
+
pipelineListTool,
|
|
26
|
+
leadSourceListTool,
|
|
27
|
+
// Authoring tools
|
|
28
|
+
leadCreateTool,
|
|
29
|
+
leadUpdateTool,
|
|
30
|
+
dealCreateTool,
|
|
31
|
+
dealUpdateTool,
|
|
32
|
+
dealLineCreateTool,
|
|
33
|
+
activityCreateTool,
|
|
34
|
+
// Lambda-backed semantic tools
|
|
35
|
+
leadConvertTool,
|
|
36
|
+
dealAdvanceStageTool,
|
|
37
|
+
];
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/sfa/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,CAAC,MAAM,QAAQ,GAAW;IAC9B,aAAa;IACb,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,+BAA+B;IAC/B,eAAe;IACf,oBAAoB;CACrB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calls the sfa-lead-convert persist-functions Lambda
|
|
4
|
+
* (POST /persist/v2/sfa/lead/convert), gated on the SFA.CONVERT permission.
|
|
5
|
+
*
|
|
6
|
+
* Atomically:
|
|
7
|
+
* 1. Resolves or creates a `prm_party` (with contact points) for the lead.
|
|
8
|
+
* 2. Resolves or creates a `sfa_deal` (or attaches to an open deal).
|
|
9
|
+
* 3. Links the deal back to the party via `sfa_deal_contacts`.
|
|
10
|
+
* 4. Stamps the lead as `CONVERTED` and records `converted_party_id`,
|
|
11
|
+
* `converted_deal_id`, `converted_date`.
|
|
12
|
+
* 5. Logs a `CONVERTED` activity on the new deal.
|
|
13
|
+
*/
|
|
14
|
+
export declare const leadConvertTool: Tool;
|
|
15
|
+
//# sourceMappingURL=lead-convert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-convert.d.ts","sourceRoot":"","sources":["../../../src/tools/sfa/lead-convert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,EAAE,IA2C7B,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { successResponse, errorResponse, API_ERROR } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Calls the sfa-lead-convert persist-functions Lambda
|
|
5
|
+
* (POST /persist/v2/sfa/lead/convert), gated on the SFA.CONVERT permission.
|
|
6
|
+
*
|
|
7
|
+
* Atomically:
|
|
8
|
+
* 1. Resolves or creates a `prm_party` (with contact points) for the lead.
|
|
9
|
+
* 2. Resolves or creates a `sfa_deal` (or attaches to an open deal).
|
|
10
|
+
* 3. Links the deal back to the party via `sfa_deal_contacts`.
|
|
11
|
+
* 4. Stamps the lead as `CONVERTED` and records `converted_party_id`,
|
|
12
|
+
* `converted_deal_id`, `converted_date`.
|
|
13
|
+
* 5. Logs a `CONVERTED` activity on the new deal.
|
|
14
|
+
*/
|
|
15
|
+
export const leadConvertTool = {
|
|
16
|
+
name: 'sfa_lead_convert',
|
|
17
|
+
description: 'Convert an SFA lead to a PRM party + SFA deal in a single transaction. Calls the sfa-lead-convert Lambda; requires SFA.CONVERT permission.',
|
|
18
|
+
inputSchema: z.object({
|
|
19
|
+
lead_id: z.string().describe('UUID of the lead to convert'),
|
|
20
|
+
pipeline_id: z.string().optional()
|
|
21
|
+
.describe('Pipeline for the new deal (defaults to tenant default)'),
|
|
22
|
+
stage_id: z.string().optional().describe('Initial stage UUID for the new deal'),
|
|
23
|
+
deal_name: z.string().optional()
|
|
24
|
+
.describe('Override deal name (defaults to the lead name)'),
|
|
25
|
+
amount: z.number().optional().describe('Deal amount'),
|
|
26
|
+
currency_code: z.string().optional().describe('ISO currency code for the deal'),
|
|
27
|
+
probability: z.number().min(0).max(100).optional()
|
|
28
|
+
.describe('Win probability percent (0-100)'),
|
|
29
|
+
expected_close_date: z.string().optional()
|
|
30
|
+
.describe('Expected close date (ISO 8601)'),
|
|
31
|
+
party_type: z.string().optional()
|
|
32
|
+
.describe('party_type for a newly-created party (e.g. ORGANISATION)'),
|
|
33
|
+
attach_to_existing_open_deal: z.boolean().optional()
|
|
34
|
+
.describe('When true and the party has an open deal, reuse it instead of creating a new one'),
|
|
35
|
+
}),
|
|
36
|
+
handler: async (args, ctx) => {
|
|
37
|
+
const input = args;
|
|
38
|
+
try {
|
|
39
|
+
const body = { lead_id: input.lead_id };
|
|
40
|
+
const optional = [
|
|
41
|
+
'pipeline_id', 'stage_id', 'deal_name',
|
|
42
|
+
'amount', 'currency_code', 'probability',
|
|
43
|
+
'expected_close_date', 'party_type', 'attach_to_existing_open_deal',
|
|
44
|
+
];
|
|
45
|
+
for (const field of optional) {
|
|
46
|
+
if (input[field] !== undefined)
|
|
47
|
+
body[field] = input[field];
|
|
48
|
+
}
|
|
49
|
+
const result = await ctx.apiClient.postLambda('/sfa/lead/convert', body);
|
|
50
|
+
return successResponse(result);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return errorResponse(API_ERROR, `Failed to convert SFA lead: ${error.message}`);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=lead-convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-convert.js","sourceRoot":"","sources":["../../../src/tools/sfa/lead-convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,4IAA4I;IAC9I,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,QAAQ,CAAC,wDAAwD,CAAC;QACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC/E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC7B,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACrD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC/E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;aAC/C,QAAQ,CAAC,iCAAiC,CAAC;QAC9C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACvC,QAAQ,CAAC,gCAAgC,CAAC;QAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC9B,QAAQ,CAAC,0DAA0D,CAAC;QACvE,4BAA4B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACjD,QAAQ,CAAC,kFAAkF,CAAC;KAChG,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAA2B,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,GAAwB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7D,MAAM,QAAQ,GAAG;gBACf,aAAa,EAAE,UAAU,EAAE,WAAW;gBACtC,QAAQ,EAAE,eAAe,EAAE,aAAa;gBACxC,qBAAqB,EAAE,YAAY,EAAE,8BAA8B;aACpE,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,UAAU,CAC3C,mBAAmB,EACnB,IAAI,CACL,CAAC;YACF,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,aAAa,CAAC,SAAS,EAAE,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-create.d.ts","sourceRoot":"","sources":["../../../src/tools/sfa/lead-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAatC,eAAO,MAAM,cAAc,EAAE,IA0C5B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { successResponse, errorResponse, API_ERROR } from '../types.js';
|
|
3
|
+
import { SFA_LEAD_SELECT } from '../../sfa/projection.js';
|
|
4
|
+
const OPTIONAL_FIELDS = [
|
|
5
|
+
'first_name', 'last_name', 'company_name', 'job_title',
|
|
6
|
+
'email', 'phone',
|
|
7
|
+
'lead_status', 'lead_rating', 'lead_score',
|
|
8
|
+
'lead_source_id', 'party_id', 'assigned_to',
|
|
9
|
+
'enrichment', 'metadata',
|
|
10
|
+
];
|
|
11
|
+
export const leadCreateTool = {
|
|
12
|
+
name: 'sfa_lead_create',
|
|
13
|
+
description: 'Create a new SFA sales lead',
|
|
14
|
+
inputSchema: z.object({
|
|
15
|
+
lead_name: z.string().describe('Display name of the lead'),
|
|
16
|
+
first_name: z.string().optional().describe('First name'),
|
|
17
|
+
last_name: z.string().optional().describe('Last name'),
|
|
18
|
+
company_name: z.string().optional().describe('Company name'),
|
|
19
|
+
job_title: z.string().optional().describe('Job title'),
|
|
20
|
+
email: z.string().optional().describe('Email address'),
|
|
21
|
+
phone: z.string().optional().describe('Phone number'),
|
|
22
|
+
lead_status: z.string().optional()
|
|
23
|
+
.describe('Lead status (validated against SFA_LEAD_STATUS lookup)'),
|
|
24
|
+
lead_rating: z.string().optional()
|
|
25
|
+
.describe('Lead rating (validated against SFA_LEAD_RATING lookup)'),
|
|
26
|
+
lead_score: z.number().optional().describe('Lead score (integer)'),
|
|
27
|
+
lead_source_id: z.string().optional().describe('Lead source UUID FK'),
|
|
28
|
+
party_id: z.string().optional()
|
|
29
|
+
.describe('Linked PRM party UUID FK (existing thin party reference)'),
|
|
30
|
+
assigned_to: z.string().optional().describe('UUID of the user assigned to the lead'),
|
|
31
|
+
enrichment: z.record(z.unknown()).optional()
|
|
32
|
+
.describe('Lead enrichment payload (JSONB)'),
|
|
33
|
+
metadata: z.record(z.unknown()).optional()
|
|
34
|
+
.describe('Arbitrary JSON metadata object'),
|
|
35
|
+
}),
|
|
36
|
+
handler: async (args, ctx) => {
|
|
37
|
+
const input = args;
|
|
38
|
+
try {
|
|
39
|
+
const body = { lead_name: input.lead_name };
|
|
40
|
+
for (const field of OPTIONAL_FIELDS) {
|
|
41
|
+
if (input[field] !== undefined)
|
|
42
|
+
body[field] = input[field];
|
|
43
|
+
}
|
|
44
|
+
const items = await ctx.apiClient.post(`${ctx.apiClient.dbBasePath}/sfa_leads?select=${SFA_LEAD_SELECT}`, body, { headers: { Prefer: 'return=representation' } });
|
|
45
|
+
return successResponse(items[0]);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return errorResponse(API_ERROR, `Failed to create SFA lead: ${error.message}`);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=lead-create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-create.js","sourceRoot":"","sources":["../../../src/tools/sfa/lead-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,eAAe,GAAG;IACtB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW;IACtD,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,aAAa,EAAE,YAAY;IAC1C,gBAAgB,EAAE,UAAU,EAAE,aAAa;IAC3C,YAAY,EAAE,UAAU;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC5D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,QAAQ,CAAC,wDAAwD,CAAC;QACrE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC/B,QAAQ,CAAC,wDAAwD,CAAC;QACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAClE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC5B,QAAQ,CAAC,0DAA0D,CAAC;QACvE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACpF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aACzC,QAAQ,CAAC,iCAAiC,CAAC;QAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;aACvC,QAAQ,CAAC,gCAAgC,CAAC;KAC9C,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAA2B,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,GAAwB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;YACjE,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CACpC,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,qBAAqB,eAAe,EAAE,EACjE,IAAI,EACJ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE,CACjD,CAAC;YACF,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,aAAa,CAAC,SAAS,EAAE,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-get.d.ts","sourceRoot":"","sources":["../../../src/tools/sfa/lead-get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC,eAAO,MAAM,WAAW,EAAE,IAoBzB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { successResponse, errorResponse, SFA_NOT_FOUND, API_ERROR } from '../types.js';
|
|
3
|
+
import { SFA_LEAD_SELECT } from '../../sfa/projection.js';
|
|
4
|
+
export const leadGetTool = {
|
|
5
|
+
name: 'sfa_lead_get',
|
|
6
|
+
description: 'Get a single SFA lead by ID (UUID)',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
id: z.string().describe('UUID of the lead'),
|
|
9
|
+
}),
|
|
10
|
+
handler: async (args, ctx) => {
|
|
11
|
+
const { id } = args;
|
|
12
|
+
try {
|
|
13
|
+
const items = await ctx.apiClient.get(`${ctx.apiClient.dbBasePath}/sfa_leads?id=eq.${id}&select=${SFA_LEAD_SELECT}`);
|
|
14
|
+
if (!items || items.length === 0) {
|
|
15
|
+
return errorResponse(SFA_NOT_FOUND, `Lead ${id} not found`);
|
|
16
|
+
}
|
|
17
|
+
return successResponse(items[0]);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
return errorResponse(API_ERROR, `Failed to get SFA lead: ${error.message}`);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=lead-get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-get.js","sourceRoot":"","sources":["../../../src/tools/sfa/lead-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,oCAAoC;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC5C,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,EAAE,EAAE,EAAE,GAAG,IAAsB,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CACnC,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,oBAAoB,EAAE,WAAW,eAAe,EAAE,CAC9E,CAAC;YACF,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,aAAa,CAAC,SAAS,EAAE,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-list.d.ts","sourceRoot":"","sources":["../../../src/tools/sfa/lead-list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAMtC,eAAO,MAAM,YAAY,EAAE,IAoC1B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { successResponse, errorResponse, API_ERROR } from '../types.js';
|
|
3
|
+
import { SFA_LEAD_SELECT } from '../../sfa/projection.js';
|
|
4
|
+
import { buildLeadQuery } from '../../sfa/filters.js';
|
|
5
|
+
export const leadListTool = {
|
|
6
|
+
name: 'sfa_lead_list',
|
|
7
|
+
description: 'List/filter SFA sales leads',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
lead_status: z.union([z.string(), z.array(z.string())]).optional()
|
|
10
|
+
.describe('Filter by lead_status (single or array)'),
|
|
11
|
+
lead_rating: z.string().optional().describe('Filter by lead_rating'),
|
|
12
|
+
assigned_to: z.string().optional().describe('Filter by assigned user UUID'),
|
|
13
|
+
lead_source_id: z.string().optional().describe('Filter by lead source UUID'),
|
|
14
|
+
party_id: z.string().optional().describe('Filter by linked party UUID'),
|
|
15
|
+
search: z.string().optional()
|
|
16
|
+
.describe('Search across lead_name, company_name, and email'),
|
|
17
|
+
active: z.boolean().optional().describe('Filter by active flag (default true)'),
|
|
18
|
+
limit: z.number().optional().describe('Max results (default 50, max 200)'),
|
|
19
|
+
offset: z.number().optional().describe('Offset for pagination'),
|
|
20
|
+
order_by: z.string().optional()
|
|
21
|
+
.describe('PostgREST order clause (default: lead_name.asc)'),
|
|
22
|
+
}),
|
|
23
|
+
handler: async (args, ctx) => {
|
|
24
|
+
const input = args;
|
|
25
|
+
try {
|
|
26
|
+
const { query, limit } = buildLeadQuery(input);
|
|
27
|
+
const items = await ctx.apiClient.get(`${ctx.apiClient.dbBasePath}/sfa_leads?select=${SFA_LEAD_SELECT}&${query}`, { headers: { Prefer: 'count=exact' } });
|
|
28
|
+
const offset = input.offset ?? 0;
|
|
29
|
+
return successResponse({
|
|
30
|
+
items,
|
|
31
|
+
count: items.length,
|
|
32
|
+
next_offset: items.length === limit ? offset + limit : null,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return errorResponse(API_ERROR, `Failed to list SFA leads: ${error.message}`);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=lead-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-list.js","sourceRoot":"","sources":["../../../src/tools/sfa/lead-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC/D,QAAQ,CAAC,yCAAyC,CAAC;QACtD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACpE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC3E,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC5E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC/E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC5B,QAAQ,CAAC,iDAAiD,CAAC;KAC/D,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAA2B,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CACnC,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,qBAAqB,eAAe,IAAI,KAAK,EAAE,EAC1E,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CACvC,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,OAAO,eAAe,CAAC;gBACrB,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,WAAW,EAAE,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI;aAC5D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,aAAa,CAAC,SAAS,EAAE,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-source-list.d.ts","sourceRoot":"","sources":["../../../src/tools/sfa/lead-source-list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC,eAAO,MAAM,kBAAkB,EAAE,IA0ChC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { successResponse, errorResponse, API_ERROR } from '../types.js';
|
|
3
|
+
import { SFA_LEAD_SOURCE_SELECT } from '../../sfa/projection.js';
|
|
4
|
+
export const leadSourceListTool = {
|
|
5
|
+
name: 'sfa_lead_source_list',
|
|
6
|
+
description: 'List SFA lead sources (web form, referral, campaign, etc.)',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
source_code: z.string().optional().describe('Filter by source_code'),
|
|
9
|
+
source_type: z.string().optional()
|
|
10
|
+
.describe('Filter by source_type (SFA_LEAD_SOURCE_TYPE lookup)'),
|
|
11
|
+
active: z.boolean().optional().describe('Filter by active flag (default true)'),
|
|
12
|
+
limit: z.number().optional().describe('Max results (default 50, max 200)'),
|
|
13
|
+
offset: z.number().optional().describe('Offset for pagination'),
|
|
14
|
+
order_by: z.string().optional()
|
|
15
|
+
.describe('PostgREST order clause (default: source_name.asc)'),
|
|
16
|
+
}),
|
|
17
|
+
handler: async (args, ctx) => {
|
|
18
|
+
const input = args;
|
|
19
|
+
try {
|
|
20
|
+
const parts = [];
|
|
21
|
+
if (input.source_code)
|
|
22
|
+
parts.push(`source_code=eq.${input.source_code}`);
|
|
23
|
+
if (input.source_type)
|
|
24
|
+
parts.push(`source_type=eq.${input.source_type}`);
|
|
25
|
+
const active = input.active ?? true;
|
|
26
|
+
parts.push(`active=eq.${active}`);
|
|
27
|
+
const limit = Math.min(input.limit ?? 50, 200);
|
|
28
|
+
parts.push(`limit=${limit}`);
|
|
29
|
+
if (input.offset)
|
|
30
|
+
parts.push(`offset=${input.offset}`);
|
|
31
|
+
parts.push(`order=${input.order_by ?? 'source_name.asc'}`);
|
|
32
|
+
const items = await ctx.apiClient.get(`${ctx.apiClient.dbBasePath}/sfa_lead_sources?select=${SFA_LEAD_SOURCE_SELECT}&${parts.join('&')}`, { headers: { Prefer: 'count=exact' } });
|
|
33
|
+
const offset = input.offset ?? 0;
|
|
34
|
+
return successResponse({
|
|
35
|
+
items,
|
|
36
|
+
count: items.length,
|
|
37
|
+
next_offset: items.length === limit ? offset + limit : null,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
return errorResponse(API_ERROR, `Failed to list SFA lead sources: ${error.message}`);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=lead-source-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-source-list.js","sourceRoot":"","sources":["../../../src/tools/sfa/lead-source-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-update.d.ts","sourceRoot":"","sources":["../../../src/tools/sfa/lead-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAYtC,eAAO,MAAM,cAAc,EAAE,IAuD5B,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { successResponse, errorResponse, SFA_NOT_FOUND, SFA_VALIDATION, API_ERROR, } from '../types.js';
|
|
3
|
+
import { SFA_LEAD_SELECT } from '../../sfa/projection.js';
|
|
4
|
+
const UUID_FIELDS = new Set([
|
|
5
|
+
'id', 'lead_source_id', 'party_id', 'assigned_to', 'converted_party_id', 'converted_deal_id',
|
|
6
|
+
]);
|
|
7
|
+
export const leadUpdateTool = {
|
|
8
|
+
name: 'sfa_lead_update',
|
|
9
|
+
description: 'Update an SFA sales lead (generic CRUD). Pass null for a nullable field to clear it; omit the field to leave it unchanged.',
|
|
10
|
+
inputSchema: z.object({
|
|
11
|
+
id: z.string().describe('UUID of the lead'),
|
|
12
|
+
lead_name: z.string().optional().describe('Display name'),
|
|
13
|
+
first_name: z.string().nullable().optional().describe('First name (null to clear)'),
|
|
14
|
+
last_name: z.string().nullable().optional().describe('Last name (null to clear)'),
|
|
15
|
+
company_name: z.string().nullable().optional().describe('Company name (null to clear)'),
|
|
16
|
+
job_title: z.string().nullable().optional().describe('Job title (null to clear)'),
|
|
17
|
+
email: z.string().nullable().optional().describe('Email address (null to clear)'),
|
|
18
|
+
phone: z.string().nullable().optional().describe('Phone number (null to clear)'),
|
|
19
|
+
lead_status: z.string().nullable().optional().describe('Lead status (null to clear)'),
|
|
20
|
+
lead_rating: z.string().nullable().optional().describe('Lead rating (null to clear)'),
|
|
21
|
+
lead_score: z.number().nullable().optional().describe('Lead score (null to clear)'),
|
|
22
|
+
lead_source_id: z.string().nullable().optional().describe('Lead source UUID (null to clear)'),
|
|
23
|
+
party_id: z.string().nullable().optional().describe('Linked PRM party UUID (null to clear)'),
|
|
24
|
+
assigned_to: z.string().nullable().optional().describe('Assigned user UUID (null to clear)'),
|
|
25
|
+
enrichment: z.record(z.unknown()).nullable().optional()
|
|
26
|
+
.describe('Lead enrichment payload (null to clear)'),
|
|
27
|
+
active: z.boolean().optional().describe('Set to false for soft-delete'),
|
|
28
|
+
metadata: z.record(z.unknown()).nullable().optional()
|
|
29
|
+
.describe('Arbitrary JSON metadata object (null to clear)'),
|
|
30
|
+
}),
|
|
31
|
+
handler: async (args, ctx) => {
|
|
32
|
+
const { id, ...updates } = args;
|
|
33
|
+
for (const field of UUID_FIELDS) {
|
|
34
|
+
const value = field === 'id' ? id : updates[field];
|
|
35
|
+
if (value === '') {
|
|
36
|
+
return errorResponse(SFA_VALIDATION, `${field} must be a valid UUID, not an empty string`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const body = {};
|
|
41
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
42
|
+
if (value !== undefined)
|
|
43
|
+
body[key] = value;
|
|
44
|
+
}
|
|
45
|
+
const items = await ctx.apiClient.patch(`${ctx.apiClient.dbBasePath}/sfa_leads?id=eq.${id}&select=${SFA_LEAD_SELECT}`, body, { headers: { Prefer: 'return=representation' } });
|
|
46
|
+
if (!items || items.length === 0) {
|
|
47
|
+
return errorResponse(SFA_NOT_FOUND, `Lead ${id} not found`);
|
|
48
|
+
}
|
|
49
|
+
return successResponse(items[0]);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return errorResponse(API_ERROR, `Failed to update SFA lead: ${error.message}`);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=lead-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-update.js","sourceRoot":"","sources":["../../../src/tools/sfa/lead-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-list.d.ts","sourceRoot":"","sources":["../../../src/tools/sfa/pipeline-list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC,eAAO,MAAM,gBAAgB,EAAE,IAyC9B,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { successResponse, errorResponse, API_ERROR } from '../types.js';
|
|
3
|
+
import { SFA_PIPELINE_SELECT } from '../../sfa/projection.js';
|
|
4
|
+
export const pipelineListTool = {
|
|
5
|
+
name: 'sfa_pipeline_list',
|
|
6
|
+
description: 'List SFA sales pipelines',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
pipeline_code: z.string().optional().describe('Filter by pipeline_code'),
|
|
9
|
+
is_default: z.boolean().optional().describe('Filter by is_default flag'),
|
|
10
|
+
active: z.boolean().optional().describe('Filter by active flag (default true)'),
|
|
11
|
+
limit: z.number().optional().describe('Max results (default 50, max 200)'),
|
|
12
|
+
offset: z.number().optional().describe('Offset for pagination'),
|
|
13
|
+
order_by: z.string().optional()
|
|
14
|
+
.describe('PostgREST order clause (default: pipeline_name.asc)'),
|
|
15
|
+
}),
|
|
16
|
+
handler: async (args, ctx) => {
|
|
17
|
+
const input = args;
|
|
18
|
+
try {
|
|
19
|
+
const parts = [];
|
|
20
|
+
if (input.pipeline_code)
|
|
21
|
+
parts.push(`pipeline_code=eq.${input.pipeline_code}`);
|
|
22
|
+
if (input.is_default !== undefined)
|
|
23
|
+
parts.push(`is_default=eq.${input.is_default}`);
|
|
24
|
+
const active = input.active ?? true;
|
|
25
|
+
parts.push(`active=eq.${active}`);
|
|
26
|
+
const limit = Math.min(input.limit ?? 50, 200);
|
|
27
|
+
parts.push(`limit=${limit}`);
|
|
28
|
+
if (input.offset)
|
|
29
|
+
parts.push(`offset=${input.offset}`);
|
|
30
|
+
parts.push(`order=${input.order_by ?? 'pipeline_name.asc'}`);
|
|
31
|
+
const items = await ctx.apiClient.get(`${ctx.apiClient.dbBasePath}/sfa_pipelines?select=${SFA_PIPELINE_SELECT}&${parts.join('&')}`, { headers: { Prefer: 'count=exact' } });
|
|
32
|
+
const offset = input.offset ?? 0;
|
|
33
|
+
return successResponse({
|
|
34
|
+
items,
|
|
35
|
+
count: items.length,
|
|
36
|
+
next_offset: items.length === limit ? offset + limit : null,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return errorResponse(API_ERROR, `Failed to list SFA pipelines: ${error.message}`);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=pipeline-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-list.js","sourceRoot":"","sources":["../../../src/tools/sfa/pipeline-list.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -13,5 +13,7 @@ export declare const PPM_NOT_FOUND = "PPM_NOT_FOUND";
|
|
|
13
13
|
export declare const PPM_VALIDATION = "PPM_VALIDATION";
|
|
14
14
|
export declare const WRM_NOT_FOUND = "WRM_NOT_FOUND";
|
|
15
15
|
export declare const WRM_VALIDATION = "WRM_VALIDATION";
|
|
16
|
+
export declare const SFA_NOT_FOUND = "SFA_NOT_FOUND";
|
|
17
|
+
export declare const SFA_VALIDATION = "SFA_VALIDATION";
|
|
16
18
|
export declare const API_ERROR = "API_ERROR";
|
|
17
19
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,YAAY,CAExF;AAGD,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,SAAS,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,YAAY,CAExF;AAGD,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,SAAS,cAAc,CAAC"}
|
package/dist/tools/types.js
CHANGED
|
@@ -9,5 +9,7 @@ export const PPM_NOT_FOUND = 'PPM_NOT_FOUND';
|
|
|
9
9
|
export const PPM_VALIDATION = 'PPM_VALIDATION';
|
|
10
10
|
export const WRM_NOT_FOUND = 'WRM_NOT_FOUND';
|
|
11
11
|
export const WRM_VALIDATION = 'WRM_VALIDATION';
|
|
12
|
+
export const SFA_NOT_FOUND = 'SFA_NOT_FOUND';
|
|
13
|
+
export const SFA_VALIDATION = 'SFA_VALIDATION';
|
|
12
14
|
export const API_ERROR = 'API_ERROR';
|
|
13
15
|
//# sourceMappingURL=types.js.map
|
package/dist/tools/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,eAAe,CAAI,IAAO;IACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,OAAa;IACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED,cAAc;AACd,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,eAAe,CAAI,IAAO;IACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,OAAa;IACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED,cAAc;AACd,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { RaytioApiClient } from '../raytio/api-client.js';
|
|
2
|
-
import { ToolResponse } from './types.js';
|
|
3
|
-
export interface CreateAccessApplicationResponse {
|
|
4
|
-
access_application_id: string;
|
|
5
|
-
name: string;
|
|
6
|
-
customer_id: string;
|
|
7
|
-
created_at?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function createAccessApplication(client: RaytioApiClient, customerId: string, name: string, description?: string): Promise<ToolResponse<CreateAccessApplicationResponse>>;
|
|
10
|
-
//# sourceMappingURL=create-access-app.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-access-app.d.ts","sourceRoot":"","sources":["../../src/tools/create-access-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAkC,MAAM,YAAY,CAAC;AAE1E,MAAM,WAAW,+BAA+B;IAC9C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC,CAoBxD"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { successResponse, errorResponse } from './types.js';
|
|
2
|
-
export async function createAccessApplication(client, customerId, name, description) {
|
|
3
|
-
try {
|
|
4
|
-
const response = await client.post('/db/v1/dsm_access_applications', {
|
|
5
|
-
customer_id: customerId,
|
|
6
|
-
name,
|
|
7
|
-
description: description || '',
|
|
8
|
-
});
|
|
9
|
-
return successResponse({
|
|
10
|
-
access_application_id: response.id,
|
|
11
|
-
name: response.name,
|
|
12
|
-
customer_id: response.customer_id,
|
|
13
|
-
created_at: response.created_at,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
return errorResponse('API_ERROR', `Failed to create access application: ${error.message}`);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=create-access-app.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-access-app.js","sourceRoot":"","sources":["../../src/tools/create-access-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAS1E,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAuB,EACvB,UAAkB,EAClB,IAAY,EACZ,WAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;YACnE,WAAW,EAAE,UAAU;YACvB,IAAI;YACJ,WAAW,EAAE,WAAW,IAAI,EAAE;SAC/B,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;YACrB,qBAAqB,EAAE,QAAQ,CAAC,EAAE;YAClC,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,aAAa,CAClB,WAAW,EACX,wCAAwC,KAAK,CAAC,OAAO,EAAE,CACxD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { RaytioApiClient } from '../raytio/api-client.js';
|
|
2
|
-
import { ToolResponse } from './types.js';
|
|
3
|
-
export interface CustomField {
|
|
4
|
-
type: string;
|
|
5
|
-
title?: string;
|
|
6
|
-
description?: string;
|
|
7
|
-
enum?: string[];
|
|
8
|
-
default?: any;
|
|
9
|
-
}
|
|
10
|
-
export interface FormPage {
|
|
11
|
-
name: string;
|
|
12
|
-
description_override?: boolean;
|
|
13
|
-
schemas: string[];
|
|
14
|
-
multiple?: boolean;
|
|
15
|
-
filter?: string;
|
|
16
|
-
optional?: boolean;
|
|
17
|
-
profile?: boolean;
|
|
18
|
-
service_provider_link?: boolean;
|
|
19
|
-
display_schema_description?: boolean;
|
|
20
|
-
display_field_title?: boolean;
|
|
21
|
-
display_field_description?: boolean;
|
|
22
|
-
share?: string;
|
|
23
|
-
verify_data?: boolean;
|
|
24
|
-
display_mode?: string;
|
|
25
|
-
}
|
|
26
|
-
export interface FormConfig {
|
|
27
|
-
a_id: string;
|
|
28
|
-
pages: FormPage[];
|
|
29
|
-
review_text?: string;
|
|
30
|
-
update_reference?: boolean;
|
|
31
|
-
emails: string[];
|
|
32
|
-
quick_onboard?: boolean;
|
|
33
|
-
display_sharing_preview?: boolean;
|
|
34
|
-
}
|
|
35
|
-
export interface CreateFormResponse {
|
|
36
|
-
link_id: string;
|
|
37
|
-
short_link_key: string;
|
|
38
|
-
schema_ids: string[];
|
|
39
|
-
}
|
|
40
|
-
export declare function createForm(client: RaytioApiClient, accessApplicationId: string, systemSchemas: string[], customFields?: Record<string, CustomField>, recipientEmail?: string, pageName?: string): Promise<ToolResponse<CreateFormResponse>>;
|
|
41
|
-
//# sourceMappingURL=create-form.d.ts.map
|