patchwork-os 0.2.0-beta.10.canary.103 → 0.2.0-beta.10.canary.105
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/recipes/tools/docs.d.ts +18 -0
- package/dist/recipes/tools/docs.js +94 -0
- package/dist/recipes/tools/docs.js.map +1 -0
- package/dist/recipes/tools/index.d.ts +3 -0
- package/dist/recipes/tools/index.js +3 -0
- package/dist/recipes/tools/index.js.map +1 -1
- package/dist/recipes/tools/monday.d.ts +22 -0
- package/dist/recipes/tools/monday.js +241 -0
- package/dist/recipes/tools/monday.js.map +1 -0
- package/dist/recipes/tools/salesforce.d.ts +16 -0
- package/dist/recipes/tools/salesforce.js +183 -0
- package/dist/recipes/tools/salesforce.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Docs tools — docs.get_document, docs.get_document_text
|
|
3
|
+
*
|
|
4
|
+
* Self-registering tool modules for the recipe tool registry. The
|
|
5
|
+
* google-docs connector (src/connectors/googleDocs.ts) follows a
|
|
6
|
+
* module-function pattern (standalone exported async functions) rather
|
|
7
|
+
* than a class+accessor, so each tool lazily `await import`s the module
|
|
8
|
+
* and calls the exported function directly.
|
|
9
|
+
*
|
|
10
|
+
* Both exported functions accept a Doc ID *or* a Google Docs URL — they
|
|
11
|
+
* call `extractDocumentId(urlOrId)` internally — so the `documentId`
|
|
12
|
+
* param is passed through verbatim.
|
|
13
|
+
*
|
|
14
|
+
* Namespace is "docs" (the parent wires the docs → google-docs alias in
|
|
15
|
+
* the parity ratchet, matching how "calendar" → google-calendar and
|
|
16
|
+
* "drive" → google-drive are aliased).
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Docs tools — docs.get_document, docs.get_document_text
|
|
3
|
+
*
|
|
4
|
+
* Self-registering tool modules for the recipe tool registry. The
|
|
5
|
+
* google-docs connector (src/connectors/googleDocs.ts) follows a
|
|
6
|
+
* module-function pattern (standalone exported async functions) rather
|
|
7
|
+
* than a class+accessor, so each tool lazily `await import`s the module
|
|
8
|
+
* and calls the exported function directly.
|
|
9
|
+
*
|
|
10
|
+
* Both exported functions accept a Doc ID *or* a Google Docs URL — they
|
|
11
|
+
* call `extractDocumentId(urlOrId)` internally — so the `documentId`
|
|
12
|
+
* param is passed through verbatim.
|
|
13
|
+
*
|
|
14
|
+
* Namespace is "docs" (the parent wires the docs → google-docs alias in
|
|
15
|
+
* the parity ratchet, matching how "calendar" → google-calendar and
|
|
16
|
+
* "drive" → google-drive are aliased).
|
|
17
|
+
*/
|
|
18
|
+
import { CommonSchemas, registerTool } from "../toolRegistry.js";
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// docs.get_document
|
|
21
|
+
// ============================================================================
|
|
22
|
+
registerTool({
|
|
23
|
+
id: "docs.get_document",
|
|
24
|
+
namespace: "docs",
|
|
25
|
+
description: "Fetch the structured Google Docs document tree by document ID or URL. Returns the raw Docs API document (documentId, title, body, headers, footers, revisionId).",
|
|
26
|
+
paramsSchema: {
|
|
27
|
+
type: "object",
|
|
28
|
+
properties: {
|
|
29
|
+
documentId: {
|
|
30
|
+
type: "string",
|
|
31
|
+
description: "Google Docs document ID or a Google Docs URL",
|
|
32
|
+
},
|
|
33
|
+
into: CommonSchemas.into,
|
|
34
|
+
},
|
|
35
|
+
required: ["documentId"],
|
|
36
|
+
},
|
|
37
|
+
outputSchema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
documentId: { type: "string" },
|
|
41
|
+
title: { type: "string" },
|
|
42
|
+
body: { type: "object" },
|
|
43
|
+
headers: { type: "object" },
|
|
44
|
+
footers: { type: "object" },
|
|
45
|
+
revisionId: { type: "string" },
|
|
46
|
+
},
|
|
47
|
+
required: ["documentId"],
|
|
48
|
+
},
|
|
49
|
+
riskDefault: "low",
|
|
50
|
+
isWrite: false,
|
|
51
|
+
isConnector: true,
|
|
52
|
+
execute: async ({ params }) => {
|
|
53
|
+
const { getDocument } = await import("../../connectors/googleDocs.js");
|
|
54
|
+
return JSON.stringify(await getDocument(params.documentId));
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// docs.get_document_text
|
|
59
|
+
// ============================================================================
|
|
60
|
+
registerTool({
|
|
61
|
+
id: "docs.get_document_text",
|
|
62
|
+
namespace: "docs",
|
|
63
|
+
description: "Fetch a Google Docs document by ID or URL and return its flat plain-text content (paragraphs, tables and table-of-contents text concatenated).",
|
|
64
|
+
paramsSchema: {
|
|
65
|
+
type: "object",
|
|
66
|
+
properties: {
|
|
67
|
+
documentId: {
|
|
68
|
+
type: "string",
|
|
69
|
+
description: "Google Docs document ID or a Google Docs URL",
|
|
70
|
+
},
|
|
71
|
+
into: CommonSchemas.into,
|
|
72
|
+
},
|
|
73
|
+
required: ["documentId"],
|
|
74
|
+
},
|
|
75
|
+
outputSchema: {
|
|
76
|
+
type: "object",
|
|
77
|
+
properties: {
|
|
78
|
+
text: {
|
|
79
|
+
type: "string",
|
|
80
|
+
description: "Flat plain-text content of the document",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
required: ["text"],
|
|
84
|
+
},
|
|
85
|
+
riskDefault: "low",
|
|
86
|
+
isWrite: false,
|
|
87
|
+
isConnector: true,
|
|
88
|
+
execute: async ({ params }) => {
|
|
89
|
+
const { getDocumentText } = await import("../../connectors/googleDocs.js");
|
|
90
|
+
const text = await getDocumentText(params.documentId);
|
|
91
|
+
return JSON.stringify({ text });
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/recipes/tools/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjE,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,mBAAmB;IACvB,SAAS,EAAE,MAAM;IACjB,WAAW,EACT,kKAAkK;IACpK,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8CAA8C;aAC5D;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC/B;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;IACD,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,UAAoB,CAAC,CAAC,CAAC;IACxE,CAAC;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,wBAAwB;IAC5B,SAAS,EAAE,MAAM;IACjB,WAAW,EACT,gJAAgJ;IAClJ,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8CAA8C;aAC5D;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;aACvD;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IACD,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,UAAoB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/recipes/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,aAAa;AACb,OAAO,WAAW,CAAC;AACnB,OAAO,UAAU,CAAC;AAClB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AAErB,wBAAwB;AACxB,OAAO,YAAY,CAAC;AACpB,OAAO,YAAY,CAAC;AACpB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,eAAe,CAAC;AACvB,OAAO,YAAY,CAAC;AACpB,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,WAAW,CAAC;AACnB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,eAAe,CAAC;AACvB,OAAO,YAAY,CAAC;AACpB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,YAAY,CAAC;AACpB,OAAO,eAAe,CAAC;AACvB,OAAO,eAAe,CAAC;AACvB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,aAAa,CAAC;AACrB,OAAO,eAAe,CAAC;AACvB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,mBAAmB,CAAC;AAQ3B,qCAAqC;AACrC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,YAAY,GACb,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/recipes/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,aAAa;AACb,OAAO,WAAW,CAAC;AACnB,OAAO,UAAU,CAAC;AAClB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AAErB,wBAAwB;AACxB,OAAO,YAAY,CAAC;AACpB,OAAO,YAAY,CAAC;AACpB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,eAAe,CAAC;AACvB,OAAO,YAAY,CAAC;AACpB,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,WAAW,CAAC;AACnB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,eAAe,CAAC;AACvB,OAAO,YAAY,CAAC;AACpB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,YAAY,CAAC;AACpB,OAAO,eAAe,CAAC;AACvB,OAAO,eAAe,CAAC;AACvB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,aAAa,CAAC;AACrB,OAAO,eAAe,CAAC;AACvB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,mBAAmB,CAAC;AAQ3B,qCAAqC;AACrC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,YAAY,GACb,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monday.com tools — read wrappers (list_boards, list_items, get_item) plus a
|
|
3
|
+
* single write (create_item).
|
|
4
|
+
*
|
|
5
|
+
* Self-registering tool module for the recipe tool registry. The Monday
|
|
6
|
+
* connector (src/connectors/monday.ts) uses a MODULE-FUNCTION pattern: it
|
|
7
|
+
* exports standalone async functions rather than a class + `getMondayConnector()`
|
|
8
|
+
* accessor. Each tool lazily imports the connector module and destructures the
|
|
9
|
+
* specific exported function, returning the connector result verbatim via
|
|
10
|
+
* JSON.stringify.
|
|
11
|
+
*
|
|
12
|
+
* Connector functions mirrored (see src/connectors/monday.ts):
|
|
13
|
+
* - listBoards(limit?) -> MondayBoardSummary[]
|
|
14
|
+
* - listItems(boardId, limit?, cursor?) -> MondayItemsPage ({ cursor, items })
|
|
15
|
+
* - getItem(itemId) -> MondayItemDetail | null
|
|
16
|
+
* - createItem(boardId, groupId, itemName, columnValues?) -> MondayCreatedItem ({ id, name })
|
|
17
|
+
*
|
|
18
|
+
* Read tools declare `isWrite: false` / `riskDefault: "low"`; create_item
|
|
19
|
+
* declares `isWrite: true` / `riskDefault: "medium"` so the approval queue and
|
|
20
|
+
* kill-switch gate it appropriately.
|
|
21
|
+
*/
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monday.com tools — read wrappers (list_boards, list_items, get_item) plus a
|
|
3
|
+
* single write (create_item).
|
|
4
|
+
*
|
|
5
|
+
* Self-registering tool module for the recipe tool registry. The Monday
|
|
6
|
+
* connector (src/connectors/monday.ts) uses a MODULE-FUNCTION pattern: it
|
|
7
|
+
* exports standalone async functions rather than a class + `getMondayConnector()`
|
|
8
|
+
* accessor. Each tool lazily imports the connector module and destructures the
|
|
9
|
+
* specific exported function, returning the connector result verbatim via
|
|
10
|
+
* JSON.stringify.
|
|
11
|
+
*
|
|
12
|
+
* Connector functions mirrored (see src/connectors/monday.ts):
|
|
13
|
+
* - listBoards(limit?) -> MondayBoardSummary[]
|
|
14
|
+
* - listItems(boardId, limit?, cursor?) -> MondayItemsPage ({ cursor, items })
|
|
15
|
+
* - getItem(itemId) -> MondayItemDetail | null
|
|
16
|
+
* - createItem(boardId, groupId, itemName, columnValues?) -> MondayCreatedItem ({ id, name })
|
|
17
|
+
*
|
|
18
|
+
* Read tools declare `isWrite: false` / `riskDefault: "low"`; create_item
|
|
19
|
+
* declares `isWrite: true` / `riskDefault: "medium"` so the approval queue and
|
|
20
|
+
* kill-switch gate it appropriately.
|
|
21
|
+
*/
|
|
22
|
+
import { CommonSchemas, registerTool } from "../toolRegistry.js";
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// monday.list_boards
|
|
25
|
+
// ============================================================================
|
|
26
|
+
registerTool({
|
|
27
|
+
id: "monday.list_boards",
|
|
28
|
+
namespace: "monday",
|
|
29
|
+
description: "List Monday.com boards the authenticated user can access (id, name, description, state, board_kind, workspace).",
|
|
30
|
+
paramsSchema: {
|
|
31
|
+
type: "object",
|
|
32
|
+
properties: {
|
|
33
|
+
limit: {
|
|
34
|
+
type: "number",
|
|
35
|
+
description: "Max number of boards to return (default 50)",
|
|
36
|
+
default: 50,
|
|
37
|
+
},
|
|
38
|
+
into: CommonSchemas.into,
|
|
39
|
+
},
|
|
40
|
+
required: [],
|
|
41
|
+
},
|
|
42
|
+
outputSchema: {
|
|
43
|
+
type: "array",
|
|
44
|
+
items: {
|
|
45
|
+
type: "object",
|
|
46
|
+
properties: {
|
|
47
|
+
id: { type: "string" },
|
|
48
|
+
name: { type: "string" },
|
|
49
|
+
description: { type: "string" },
|
|
50
|
+
state: { type: "string" },
|
|
51
|
+
board_kind: { type: "string" },
|
|
52
|
+
workspace: {
|
|
53
|
+
type: ["object", "null"],
|
|
54
|
+
properties: {
|
|
55
|
+
id: { type: "string" },
|
|
56
|
+
name: { type: "string" },
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
riskDefault: "low",
|
|
63
|
+
isWrite: false,
|
|
64
|
+
isConnector: true,
|
|
65
|
+
execute: async ({ params }) => {
|
|
66
|
+
const { listBoards } = await import("../../connectors/monday.js");
|
|
67
|
+
const limit = typeof params.limit === "number" ? params.limit : undefined;
|
|
68
|
+
const boards = await listBoards(limit);
|
|
69
|
+
return JSON.stringify(boards);
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
// ============================================================================
|
|
73
|
+
// monday.list_items
|
|
74
|
+
// ============================================================================
|
|
75
|
+
registerTool({
|
|
76
|
+
id: "monday.list_items",
|
|
77
|
+
namespace: "monday",
|
|
78
|
+
description: "List items on a Monday.com board (cursor-paginated). Returns { cursor, items } where each item has id, name, state, created_at, updated_at.",
|
|
79
|
+
paramsSchema: {
|
|
80
|
+
type: "object",
|
|
81
|
+
properties: {
|
|
82
|
+
boardId: {
|
|
83
|
+
type: "string",
|
|
84
|
+
description: "Monday board id to list items from",
|
|
85
|
+
},
|
|
86
|
+
limit: {
|
|
87
|
+
type: "number",
|
|
88
|
+
description: "Max number of items per page (default 50)",
|
|
89
|
+
default: 50,
|
|
90
|
+
},
|
|
91
|
+
cursor: {
|
|
92
|
+
type: "string",
|
|
93
|
+
description: "Opaque pagination cursor from a previous page",
|
|
94
|
+
},
|
|
95
|
+
into: CommonSchemas.into,
|
|
96
|
+
},
|
|
97
|
+
required: ["boardId"],
|
|
98
|
+
},
|
|
99
|
+
outputSchema: {
|
|
100
|
+
type: "object",
|
|
101
|
+
properties: {
|
|
102
|
+
cursor: { type: ["string", "null"] },
|
|
103
|
+
items: {
|
|
104
|
+
type: "array",
|
|
105
|
+
items: {
|
|
106
|
+
type: "object",
|
|
107
|
+
properties: {
|
|
108
|
+
id: { type: "string" },
|
|
109
|
+
name: { type: "string" },
|
|
110
|
+
state: { type: "string" },
|
|
111
|
+
created_at: { type: "string" },
|
|
112
|
+
updated_at: { type: "string" },
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
riskDefault: "low",
|
|
119
|
+
isWrite: false,
|
|
120
|
+
isConnector: true,
|
|
121
|
+
execute: async ({ params }) => {
|
|
122
|
+
const { listItems } = await import("../../connectors/monday.js");
|
|
123
|
+
const limit = typeof params.limit === "number" ? params.limit : undefined;
|
|
124
|
+
const cursor = typeof params.cursor === "string" ? params.cursor : undefined;
|
|
125
|
+
const page = await listItems(params.boardId, limit, cursor);
|
|
126
|
+
return JSON.stringify(page);
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
// ============================================================================
|
|
130
|
+
// monday.get_item
|
|
131
|
+
// ============================================================================
|
|
132
|
+
registerTool({
|
|
133
|
+
id: "monday.get_item",
|
|
134
|
+
namespace: "monday",
|
|
135
|
+
description: "Fetch a single Monday.com item by id, including board, group, column values, subitems, and updates. Returns null when the item is not found.",
|
|
136
|
+
paramsSchema: {
|
|
137
|
+
type: "object",
|
|
138
|
+
properties: {
|
|
139
|
+
itemId: {
|
|
140
|
+
type: "string",
|
|
141
|
+
description: "Monday item id",
|
|
142
|
+
},
|
|
143
|
+
into: CommonSchemas.into,
|
|
144
|
+
},
|
|
145
|
+
required: ["itemId"],
|
|
146
|
+
},
|
|
147
|
+
outputSchema: {
|
|
148
|
+
type: ["object", "null"],
|
|
149
|
+
properties: {
|
|
150
|
+
id: { type: "string" },
|
|
151
|
+
name: { type: "string" },
|
|
152
|
+
state: { type: "string" },
|
|
153
|
+
created_at: { type: "string" },
|
|
154
|
+
updated_at: { type: "string" },
|
|
155
|
+
board: {
|
|
156
|
+
type: "object",
|
|
157
|
+
properties: {
|
|
158
|
+
id: { type: "string" },
|
|
159
|
+
name: { type: "string" },
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
group: {
|
|
163
|
+
type: "object",
|
|
164
|
+
properties: {
|
|
165
|
+
id: { type: "string" },
|
|
166
|
+
title: { type: "string" },
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
column_values: {
|
|
170
|
+
type: "array",
|
|
171
|
+
items: {
|
|
172
|
+
type: "object",
|
|
173
|
+
properties: {
|
|
174
|
+
id: { type: "string" },
|
|
175
|
+
text: { type: ["string", "null"] },
|
|
176
|
+
value: { type: ["string", "null"] },
|
|
177
|
+
type: { type: "string" },
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
subitems: { type: "array", items: { type: "object" } },
|
|
182
|
+
updates: { type: "array", items: { type: "object" } },
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
riskDefault: "low",
|
|
186
|
+
isWrite: false,
|
|
187
|
+
isConnector: true,
|
|
188
|
+
execute: async ({ params }) => {
|
|
189
|
+
const { getItem } = await import("../../connectors/monday.js");
|
|
190
|
+
const item = await getItem(params.itemId);
|
|
191
|
+
return JSON.stringify(item);
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
// ============================================================================
|
|
195
|
+
// monday.create_item (write-gated)
|
|
196
|
+
// ============================================================================
|
|
197
|
+
registerTool({
|
|
198
|
+
id: "monday.create_item",
|
|
199
|
+
namespace: "monday",
|
|
200
|
+
description: 'Create a new item on a Monday.com board within a group. `columnValues` is an optional JSON-encoded string of column values (e.g. JSON.stringify({ status: { label: "Done" } })).',
|
|
201
|
+
paramsSchema: {
|
|
202
|
+
type: "object",
|
|
203
|
+
properties: {
|
|
204
|
+
boardId: {
|
|
205
|
+
type: "string",
|
|
206
|
+
description: "Monday board id to create the item on (required)",
|
|
207
|
+
},
|
|
208
|
+
groupId: {
|
|
209
|
+
type: "string",
|
|
210
|
+
description: "Monday group id within the board (required)",
|
|
211
|
+
},
|
|
212
|
+
itemName: {
|
|
213
|
+
type: "string",
|
|
214
|
+
description: "Name/title of the new item (required)",
|
|
215
|
+
},
|
|
216
|
+
columnValues: {
|
|
217
|
+
type: "string",
|
|
218
|
+
description: 'Optional JSON-encoded string of column values (e.g. JSON.stringify({ status: { label: "Done" } }))',
|
|
219
|
+
},
|
|
220
|
+
into: CommonSchemas.into,
|
|
221
|
+
},
|
|
222
|
+
required: ["boardId", "groupId", "itemName"],
|
|
223
|
+
},
|
|
224
|
+
outputSchema: {
|
|
225
|
+
type: "object",
|
|
226
|
+
properties: {
|
|
227
|
+
id: { type: "string" },
|
|
228
|
+
name: { type: "string" },
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
riskDefault: "medium",
|
|
232
|
+
isWrite: true,
|
|
233
|
+
isConnector: true,
|
|
234
|
+
execute: async ({ params }) => {
|
|
235
|
+
const { createItem } = await import("../../connectors/monday.js");
|
|
236
|
+
const columnValues = typeof params.columnValues === "string" ? params.columnValues : undefined;
|
|
237
|
+
const created = await createItem(params.boardId, params.groupId, params.itemName, columnValues);
|
|
238
|
+
return JSON.stringify(created);
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
//# sourceMappingURL=monday.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monday.js","sourceRoot":"","sources":["../../../src/recipes/tools/monday.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjE,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,oBAAoB;IACxB,SAAS,EAAE,QAAQ;IACnB,WAAW,EACT,iHAAiH;IACnH,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;gBAC1D,OAAO,EAAE,EAAE;aACZ;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC9B,SAAS,EAAE;oBACT,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;oBACxB,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACzB;iBACF;aACF;SACF;KACF;IACD,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,mBAAmB;IACvB,SAAS,EAAE,QAAQ;IACnB,WAAW,EACT,6IAA6I;IAC/I,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oCAAoC;aAClD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2CAA2C;gBACxD,OAAO,EAAE,EAAE;aACZ;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACpC,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC/B;iBACF;aACF;SACF;KACF;IACD,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,OAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,iBAAiB;IACrB,SAAS,EAAE,QAAQ;IACnB,WAAW,EACT,8IAA8I;IAChJ,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gBAAgB;aAC9B;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;aACF;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACtB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;aACF;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACtB,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;wBAClC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;wBACnC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACzB;iBACF;aACF;YACD,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACtD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;SACtD;KACF;IACD,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,oBAAoB;IACxB,SAAS,EAAE,QAAQ;IACnB,WAAW,EACT,kLAAkL;IACpL,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kDAAkD;aAChE;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;aAC3D;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,oGAAoG;aACvG;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;KAC7C;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACzB;KACF;IACD,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAClE,MAAM,YAAY,GAChB,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,MAAM,CAAC,OAAiB,EACxB,MAAM,CAAC,OAAiB,EACxB,MAAM,CAAC,QAAkB,EACzB,YAAY,CACb,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Salesforce recipe-step tools — read wrappers (query, search, get_object)
|
|
3
|
+
* plus a write-gated create_record.
|
|
4
|
+
*
|
|
5
|
+
* Self-registering tool module for the recipe tool registry. Unlike the
|
|
6
|
+
* class-plus-accessor connectors, src/connectors/salesforce.ts exports a set
|
|
7
|
+
* of standalone async functions (module-function pattern) — there is no
|
|
8
|
+
* getSalesforceConnector(). Each tool dynamically imports the function it wraps
|
|
9
|
+
* and JSON-stringifies the raw connector return value back out.
|
|
10
|
+
*
|
|
11
|
+
* Read tools (`query`, `searchSosl`, `getObject`) declare `isWrite: false`;
|
|
12
|
+
* `create_record` declares `isWrite: true` so the approval queue gates the
|
|
13
|
+
* mutation. The connector itself enforces SELECT-only SOQL and FIND-only SOSL,
|
|
14
|
+
* and validates sObject / record-id shapes before issuing the call.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Salesforce recipe-step tools — read wrappers (query, search, get_object)
|
|
3
|
+
* plus a write-gated create_record.
|
|
4
|
+
*
|
|
5
|
+
* Self-registering tool module for the recipe tool registry. Unlike the
|
|
6
|
+
* class-plus-accessor connectors, src/connectors/salesforce.ts exports a set
|
|
7
|
+
* of standalone async functions (module-function pattern) — there is no
|
|
8
|
+
* getSalesforceConnector(). Each tool dynamically imports the function it wraps
|
|
9
|
+
* and JSON-stringifies the raw connector return value back out.
|
|
10
|
+
*
|
|
11
|
+
* Read tools (`query`, `searchSosl`, `getObject`) declare `isWrite: false`;
|
|
12
|
+
* `create_record` declares `isWrite: true` so the approval queue gates the
|
|
13
|
+
* mutation. The connector itself enforces SELECT-only SOQL and FIND-only SOSL,
|
|
14
|
+
* and validates sObject / record-id shapes before issuing the call.
|
|
15
|
+
*/
|
|
16
|
+
import { CommonSchemas, registerTool } from "../toolRegistry.js";
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// salesforce.query (SOQL — read)
|
|
19
|
+
// ============================================================================
|
|
20
|
+
registerTool({
|
|
21
|
+
id: "salesforce.query",
|
|
22
|
+
namespace: "salesforce",
|
|
23
|
+
description: "Execute a SOQL SELECT query against Salesforce. The statement must start " +
|
|
24
|
+
"with SELECT (enforced by the connector). An optional limit caps the page " +
|
|
25
|
+
"size (default 200, hard cap 200).",
|
|
26
|
+
paramsSchema: {
|
|
27
|
+
type: "object",
|
|
28
|
+
properties: {
|
|
29
|
+
soql: {
|
|
30
|
+
type: "string",
|
|
31
|
+
description: "SOQL SELECT query (must start with SELECT)",
|
|
32
|
+
},
|
|
33
|
+
limit: {
|
|
34
|
+
type: "number",
|
|
35
|
+
description: "Optional page-size cap (default 200, hard cap 200)",
|
|
36
|
+
},
|
|
37
|
+
into: CommonSchemas.into,
|
|
38
|
+
},
|
|
39
|
+
required: ["soql"],
|
|
40
|
+
},
|
|
41
|
+
// SoqlQueryResult — see src/connectors/salesforce.ts.
|
|
42
|
+
outputSchema: {
|
|
43
|
+
type: "object",
|
|
44
|
+
properties: {
|
|
45
|
+
totalSize: { type: "number" },
|
|
46
|
+
done: { type: "boolean" },
|
|
47
|
+
records: {
|
|
48
|
+
type: "array",
|
|
49
|
+
items: { type: "object" },
|
|
50
|
+
},
|
|
51
|
+
nextRecordsUrl: { type: "string" },
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
riskDefault: "low",
|
|
55
|
+
isWrite: false,
|
|
56
|
+
isConnector: true,
|
|
57
|
+
execute: async ({ params }) => {
|
|
58
|
+
const { query } = await import("../../connectors/salesforce.js");
|
|
59
|
+
const result = await query(params.soql, typeof params.limit === "number" ? { limit: params.limit } : undefined);
|
|
60
|
+
return JSON.stringify(result);
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// salesforce.search (SOSL — read)
|
|
65
|
+
// ============================================================================
|
|
66
|
+
registerTool({
|
|
67
|
+
id: "salesforce.search",
|
|
68
|
+
namespace: "salesforce",
|
|
69
|
+
description: "Execute a SOSL search against Salesforce. The statement must start with " +
|
|
70
|
+
"FIND (enforced by the connector).",
|
|
71
|
+
paramsSchema: {
|
|
72
|
+
type: "object",
|
|
73
|
+
properties: {
|
|
74
|
+
sosl: {
|
|
75
|
+
type: "string",
|
|
76
|
+
description: "SOSL search expression (must start with FIND)",
|
|
77
|
+
},
|
|
78
|
+
into: CommonSchemas.into,
|
|
79
|
+
},
|
|
80
|
+
required: ["sosl"],
|
|
81
|
+
},
|
|
82
|
+
// SoslSearchResult — see src/connectors/salesforce.ts.
|
|
83
|
+
outputSchema: {
|
|
84
|
+
type: "object",
|
|
85
|
+
properties: {
|
|
86
|
+
searchRecords: {
|
|
87
|
+
type: "array",
|
|
88
|
+
items: { type: "object" },
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
riskDefault: "low",
|
|
93
|
+
isWrite: false,
|
|
94
|
+
isConnector: true,
|
|
95
|
+
execute: async ({ params }) => {
|
|
96
|
+
const { searchSosl } = await import("../../connectors/salesforce.js");
|
|
97
|
+
const result = await searchSosl(params.sosl);
|
|
98
|
+
return JSON.stringify(result);
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
// ============================================================================
|
|
102
|
+
// salesforce.get_object (read)
|
|
103
|
+
// ============================================================================
|
|
104
|
+
registerTool({
|
|
105
|
+
id: "salesforce.get_object",
|
|
106
|
+
namespace: "salesforce",
|
|
107
|
+
description: "Fetch a single Salesforce sObject record by its API name and record id " +
|
|
108
|
+
"(e.g. object_name: 'Account', record_id: '001...').",
|
|
109
|
+
paramsSchema: {
|
|
110
|
+
type: "object",
|
|
111
|
+
properties: {
|
|
112
|
+
object_name: {
|
|
113
|
+
type: "string",
|
|
114
|
+
description: "sObject API name (e.g. 'Account', 'Contact')",
|
|
115
|
+
},
|
|
116
|
+
record_id: {
|
|
117
|
+
type: "string",
|
|
118
|
+
description: "Salesforce record id (15 or 18 chars)",
|
|
119
|
+
},
|
|
120
|
+
into: CommonSchemas.into,
|
|
121
|
+
},
|
|
122
|
+
required: ["object_name", "record_id"],
|
|
123
|
+
},
|
|
124
|
+
// getObject resolves to the raw sObject record (Record<string, unknown>).
|
|
125
|
+
outputSchema: {
|
|
126
|
+
type: "object",
|
|
127
|
+
additionalProperties: true,
|
|
128
|
+
},
|
|
129
|
+
riskDefault: "low",
|
|
130
|
+
isWrite: false,
|
|
131
|
+
isConnector: true,
|
|
132
|
+
execute: async ({ params }) => {
|
|
133
|
+
const { getObject } = await import("../../connectors/salesforce.js");
|
|
134
|
+
const result = await getObject(params.object_name, params.record_id);
|
|
135
|
+
return JSON.stringify(result);
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
// ============================================================================
|
|
139
|
+
// salesforce.create_record (write-gated)
|
|
140
|
+
// ============================================================================
|
|
141
|
+
registerTool({
|
|
142
|
+
id: "salesforce.create_record",
|
|
143
|
+
namespace: "salesforce",
|
|
144
|
+
description: "Create a new Salesforce sObject record. Supply the sObject API name and a " +
|
|
145
|
+
"fields object mapping field API names to values.",
|
|
146
|
+
paramsSchema: {
|
|
147
|
+
type: "object",
|
|
148
|
+
properties: {
|
|
149
|
+
object_name: {
|
|
150
|
+
type: "string",
|
|
151
|
+
description: "sObject API name (e.g. 'Account', 'Contact', 'Lead')",
|
|
152
|
+
},
|
|
153
|
+
fields: {
|
|
154
|
+
type: "object",
|
|
155
|
+
description: "Field API names mapped to values (e.g. { Name: 'Acme', Industry: 'Tech' })",
|
|
156
|
+
additionalProperties: true,
|
|
157
|
+
},
|
|
158
|
+
into: CommonSchemas.into,
|
|
159
|
+
},
|
|
160
|
+
required: ["object_name", "fields"],
|
|
161
|
+
},
|
|
162
|
+
// CreateRecordResult — see src/connectors/salesforce.ts.
|
|
163
|
+
outputSchema: {
|
|
164
|
+
type: "object",
|
|
165
|
+
properties: {
|
|
166
|
+
id: { type: "string" },
|
|
167
|
+
success: { type: "boolean" },
|
|
168
|
+
errors: { type: "array", items: {} },
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
riskDefault: "medium",
|
|
172
|
+
isWrite: true,
|
|
173
|
+
isConnector: true,
|
|
174
|
+
execute: async ({ params }) => {
|
|
175
|
+
const { createRecord } = await import("../../connectors/salesforce.js");
|
|
176
|
+
const fields = params.fields && typeof params.fields === "object"
|
|
177
|
+
? params.fields
|
|
178
|
+
: {};
|
|
179
|
+
const result = await createRecord(params.object_name, fields);
|
|
180
|
+
return JSON.stringify(result);
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=salesforce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"salesforce.js","sourceRoot":"","sources":["../../../src/recipes/tools/salesforce.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "patchwork-os",
|
|
3
|
-
"version": "0.2.0-beta.10.canary.
|
|
3
|
+
"version": "0.2.0-beta.10.canary.105",
|
|
4
4
|
"description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|