patchwork-os 0.2.0-beta.10 → 0.2.0-beta.10.canary.101

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 (151) hide show
  1. package/dist/bridge.js +17 -10
  2. package/dist/bridge.js.map +1 -1
  3. package/dist/commands/connect.d.ts +47 -0
  4. package/dist/commands/connect.js +419 -0
  5. package/dist/commands/connect.js.map +1 -0
  6. package/dist/commands/recipe.d.ts +45 -4
  7. package/dist/commands/recipe.js +141 -4
  8. package/dist/commands/recipe.js.map +1 -1
  9. package/dist/commands/task.d.ts +25 -0
  10. package/dist/commands/task.js +61 -41
  11. package/dist/commands/task.js.map +1 -1
  12. package/dist/commands/tracesExport.d.ts +15 -1
  13. package/dist/commands/tracesExport.js +39 -5
  14. package/dist/commands/tracesExport.js.map +1 -1
  15. package/dist/connectorRoutes.js +556 -0
  16. package/dist/connectorRoutes.js.map +1 -1
  17. package/dist/connectors/connectorRegistry.d.ts +0 -3
  18. package/dist/connectors/connectorRegistry.js +8 -8
  19. package/dist/connectors/connectorRegistry.js.map +1 -1
  20. package/dist/connectors/datadog.js +8 -1
  21. package/dist/connectors/datadog.js.map +1 -1
  22. package/dist/connectors/jira.js +7 -2
  23. package/dist/connectors/jira.js.map +1 -1
  24. package/dist/connectors/mcpClient.js +37 -23
  25. package/dist/connectors/mcpClient.js.map +1 -1
  26. package/dist/connectors/notion.d.ts +1 -1
  27. package/dist/connectors/notion.js +13 -4
  28. package/dist/connectors/notion.js.map +1 -1
  29. package/dist/connectors/redis.js +10 -2
  30. package/dist/connectors/redis.js.map +1 -1
  31. package/dist/connectors/snowflake.js +18 -0
  32. package/dist/connectors/snowflake.js.map +1 -1
  33. package/dist/decisionReplay.d.ts +8 -6
  34. package/dist/decisionReplay.js +35 -11
  35. package/dist/decisionReplay.js.map +1 -1
  36. package/dist/drivers/claude/api.js +28 -5
  37. package/dist/drivers/claude/api.js.map +1 -1
  38. package/dist/drivers/claude/subprocess.js +47 -13
  39. package/dist/drivers/claude/subprocess.js.map +1 -1
  40. package/dist/drivers/local/index.d.ts +2 -17
  41. package/dist/drivers/local/index.js +5 -92
  42. package/dist/drivers/local/index.js.map +1 -1
  43. package/dist/fp/automationInterpreter.js +57 -12
  44. package/dist/fp/automationInterpreter.js.map +1 -1
  45. package/dist/fp/policyParser.js +5 -1
  46. package/dist/fp/policyParser.js.map +1 -1
  47. package/dist/index.js +154 -83
  48. package/dist/index.js.map +1 -1
  49. package/dist/localEndpointGuard.d.ts +25 -0
  50. package/dist/localEndpointGuard.js +101 -0
  51. package/dist/localEndpointGuard.js.map +1 -0
  52. package/dist/orchestrator/childBridgeClient.d.ts +5 -0
  53. package/dist/orchestrator/childBridgeClient.js +28 -1
  54. package/dist/orchestrator/childBridgeClient.js.map +1 -1
  55. package/dist/orchestrator/orchestratorBridge.d.ts +33 -0
  56. package/dist/orchestrator/orchestratorBridge.js +70 -9
  57. package/dist/orchestrator/orchestratorBridge.js.map +1 -1
  58. package/dist/recipes/chainedRunner.js +14 -4
  59. package/dist/recipes/chainedRunner.js.map +1 -1
  60. package/dist/recipes/compiler.js +9 -5
  61. package/dist/recipes/compiler.js.map +1 -1
  62. package/dist/recipes/dependencyGraph.d.ts +9 -0
  63. package/dist/recipes/dependencyGraph.js +19 -2
  64. package/dist/recipes/dependencyGraph.js.map +1 -1
  65. package/dist/recipes/githubInstallSource.d.ts +9 -2
  66. package/dist/recipes/githubInstallSource.js +36 -6
  67. package/dist/recipes/githubInstallSource.js.map +1 -1
  68. package/dist/recipes/idempotencyKey.d.ts +23 -3
  69. package/dist/recipes/idempotencyKey.js +57 -4
  70. package/dist/recipes/idempotencyKey.js.map +1 -1
  71. package/dist/recipes/installer.js +10 -1
  72. package/dist/recipes/installer.js.map +1 -1
  73. package/dist/recipes/parser.js +28 -1
  74. package/dist/recipes/parser.js.map +1 -1
  75. package/dist/recipes/schema.d.ts +29 -2
  76. package/dist/recipes/schemaGenerator.js +16 -2
  77. package/dist/recipes/schemaGenerator.js.map +1 -1
  78. package/dist/recipes/toolRegistry.js +13 -4
  79. package/dist/recipes/toolRegistry.js.map +1 -1
  80. package/dist/recipes/tools/airtable.d.ts +15 -0
  81. package/dist/recipes/tools/airtable.js +239 -0
  82. package/dist/recipes/tools/airtable.js.map +1 -0
  83. package/dist/recipes/tools/circleci.d.ts +10 -0
  84. package/dist/recipes/tools/circleci.js +203 -0
  85. package/dist/recipes/tools/circleci.js.map +1 -0
  86. package/dist/recipes/tools/grafana.d.ts +11 -0
  87. package/dist/recipes/tools/grafana.js +215 -0
  88. package/dist/recipes/tools/grafana.js.map +1 -0
  89. package/dist/recipes/tools/index.d.ts +11 -0
  90. package/dist/recipes/tools/index.js +11 -0
  91. package/dist/recipes/tools/index.js.map +1 -1
  92. package/dist/recipes/tools/pipedrive.d.ts +16 -0
  93. package/dist/recipes/tools/pipedrive.js +233 -0
  94. package/dist/recipes/tools/pipedrive.js.map +1 -0
  95. package/dist/recipes/tools/posthog.d.ts +16 -0
  96. package/dist/recipes/tools/posthog.js +218 -0
  97. package/dist/recipes/tools/posthog.js.map +1 -0
  98. package/dist/recipes/tools/resend.d.ts +8 -0
  99. package/dist/recipes/tools/resend.js +152 -0
  100. package/dist/recipes/tools/resend.js.map +1 -0
  101. package/dist/recipes/tools/sendgrid.d.ts +9 -0
  102. package/dist/recipes/tools/sendgrid.js +174 -0
  103. package/dist/recipes/tools/sendgrid.js.map +1 -0
  104. package/dist/recipes/tools/shopify.d.ts +16 -0
  105. package/dist/recipes/tools/shopify.js +265 -0
  106. package/dist/recipes/tools/shopify.js.map +1 -0
  107. package/dist/recipes/tools/todoist.d.ts +15 -0
  108. package/dist/recipes/tools/todoist.js +227 -0
  109. package/dist/recipes/tools/todoist.js.map +1 -0
  110. package/dist/recipes/tools/twilio.d.ts +11 -0
  111. package/dist/recipes/tools/twilio.js +179 -0
  112. package/dist/recipes/tools/twilio.js.map +1 -0
  113. package/dist/recipes/tools/vercel.d.ts +9 -0
  114. package/dist/recipes/tools/vercel.js +145 -0
  115. package/dist/recipes/tools/vercel.js.map +1 -0
  116. package/dist/recipes/validation.js +112 -0
  117. package/dist/recipes/validation.js.map +1 -1
  118. package/dist/recipes/yamlRunner.d.ts +3 -0
  119. package/dist/recipes/yamlRunner.js +112 -29
  120. package/dist/recipes/yamlRunner.js.map +1 -1
  121. package/dist/schemas/recipe.v1.json +2 -2
  122. package/dist/telemetry.js +20 -9
  123. package/dist/telemetry.js.map +1 -1
  124. package/dist/tools/getGitStatus.js +6 -1
  125. package/dist/tools/getGitStatus.js.map +1 -1
  126. package/dist/tools/getToolCapabilities.js +39 -4
  127. package/dist/tools/getToolCapabilities.js.map +1 -1
  128. package/dist/tools/github/composite.d.ts +1 -1
  129. package/dist/tools/github/composite.js +7 -7
  130. package/dist/tools/github/composite.js.map +1 -1
  131. package/dist/tools/github/pr.d.ts +6 -6
  132. package/dist/tools/github/pr.js +18 -11
  133. package/dist/tools/github/pr.js.map +1 -1
  134. package/dist/tools/index.js +14 -10
  135. package/dist/tools/index.js.map +1 -1
  136. package/dist/tools/previewEdit.js +16 -1
  137. package/dist/tools/previewEdit.js.map +1 -1
  138. package/dist/tools/searchAndReplace.js +4 -5
  139. package/dist/tools/searchAndReplace.js.map +1 -1
  140. package/dist/tools/searchTools.d.ts +26 -0
  141. package/dist/tools/searchTools.js +42 -2
  142. package/dist/tools/searchTools.js.map +1 -1
  143. package/dist/tools/transaction.d.ts +9 -1
  144. package/dist/tools/transaction.js +59 -4
  145. package/dist/tools/transaction.js.map +1 -1
  146. package/dist/tools/utils.d.ts +15 -0
  147. package/dist/tools/utils.js +19 -0
  148. package/dist/tools/utils.js.map +1 -1
  149. package/dist/transport.js +23 -0
  150. package/dist/transport.js.map +1 -1
  151. package/package.json +1 -1
@@ -0,0 +1,9 @@
1
+ /**
2
+ * SendGrid tools — transactional email send (write) plus read wrappers for
3
+ * dynamic/legacy templates and email stats.
4
+ *
5
+ * Self-registering tool module for the recipe tool registry. Wraps the
6
+ * SendGridConnector (src/connectors/sendgrid.ts) methods `send`,
7
+ * `listTemplates`, and `getStats`.
8
+ */
9
+ export {};
@@ -0,0 +1,174 @@
1
+ /**
2
+ * SendGrid tools — transactional email send (write) plus read wrappers for
3
+ * dynamic/legacy templates and email stats.
4
+ *
5
+ * Self-registering tool module for the recipe tool registry. Wraps the
6
+ * SendGridConnector (src/connectors/sendgrid.ts) methods `send`,
7
+ * `listTemplates`, and `getStats`.
8
+ */
9
+ import { CommonSchemas, registerTool } from "../toolRegistry.js";
10
+ // ============================================================================
11
+ // sendgrid.send_email (write-gated)
12
+ // ============================================================================
13
+ registerTool({
14
+ id: "sendgrid.send_email",
15
+ namespace: "sendgrid",
16
+ description: "Send a transactional email via SendGrid. Requires `to`, `subject`, and at " +
17
+ "least one of `text`/`html`. `from` defaults to the connected verified sender.",
18
+ paramsSchema: {
19
+ type: "object",
20
+ properties: {
21
+ to: {
22
+ type: "string",
23
+ description: "Recipient email address (required)",
24
+ },
25
+ subject: {
26
+ type: "string",
27
+ description: "Email subject line (required, non-empty)",
28
+ },
29
+ text: {
30
+ type: "string",
31
+ description: "Plain-text body (one of text/html is required)",
32
+ },
33
+ html: {
34
+ type: "string",
35
+ description: "HTML body (one of text/html is required)",
36
+ },
37
+ from: {
38
+ type: "string",
39
+ description: "Sender email address. Defaults to the connected verified sender (fromEmail).",
40
+ },
41
+ into: CommonSchemas.into,
42
+ },
43
+ required: ["to", "subject"],
44
+ },
45
+ outputSchema: {
46
+ type: "object",
47
+ properties: {
48
+ ok: { type: "boolean" },
49
+ messageId: { type: "string" },
50
+ error: { type: "string" },
51
+ },
52
+ },
53
+ riskDefault: "medium",
54
+ isWrite: true,
55
+ isConnector: true,
56
+ execute: async ({ params }) => {
57
+ const { getSendGridConnector } = await import("../../connectors/sendgrid.js");
58
+ try {
59
+ const connector = getSendGridConnector();
60
+ const result = await connector.send({
61
+ to: params.to,
62
+ subject: params.subject,
63
+ text: typeof params.text === "string" ? params.text : undefined,
64
+ html: typeof params.html === "string" ? params.html : undefined,
65
+ from: typeof params.from === "string" ? params.from : undefined,
66
+ });
67
+ return JSON.stringify({ ok: true, messageId: result.messageId });
68
+ }
69
+ catch (err) {
70
+ return JSON.stringify({
71
+ ok: false,
72
+ error: err instanceof Error ? err.message : String(err),
73
+ });
74
+ }
75
+ },
76
+ });
77
+ // ============================================================================
78
+ // sendgrid.list_templates
79
+ // ============================================================================
80
+ registerTool({
81
+ id: "sendgrid.list_templates",
82
+ namespace: "sendgrid",
83
+ description: "List SendGrid email templates, optionally filtered by generation " +
84
+ "(legacy or dynamic).",
85
+ paramsSchema: {
86
+ type: "object",
87
+ properties: {
88
+ limit: {
89
+ type: "number",
90
+ description: "Max number of templates to return (page_size)",
91
+ },
92
+ generations: {
93
+ type: "string",
94
+ enum: ["legacy", "dynamic"],
95
+ description: "Filter by template generation",
96
+ },
97
+ into: CommonSchemas.into,
98
+ },
99
+ required: [],
100
+ },
101
+ outputSchema: {
102
+ type: "object",
103
+ properties: {
104
+ result: { type: "array", items: { type: "object" } },
105
+ },
106
+ },
107
+ riskDefault: "low",
108
+ isWrite: false,
109
+ isConnector: true,
110
+ execute: async ({ params }) => {
111
+ const { getSendGridConnector } = await import("../../connectors/sendgrid.js");
112
+ const connector = getSendGridConnector();
113
+ const result = await connector.listTemplates({
114
+ limit: typeof params.limit === "number" ? params.limit : undefined,
115
+ generations: params.generations === "legacy" || params.generations === "dynamic"
116
+ ? params.generations
117
+ : undefined,
118
+ });
119
+ return JSON.stringify(result);
120
+ },
121
+ });
122
+ // ============================================================================
123
+ // sendgrid.get_stats
124
+ // ============================================================================
125
+ registerTool({
126
+ id: "sendgrid.get_stats",
127
+ namespace: "sendgrid",
128
+ description: "Fetch SendGrid email statistics for a date range, optionally aggregated " +
129
+ "by day/week/month.",
130
+ paramsSchema: {
131
+ type: "object",
132
+ properties: {
133
+ startDate: {
134
+ type: "string",
135
+ description: "Start date YYYY-MM-DD (required)",
136
+ },
137
+ endDate: {
138
+ type: "string",
139
+ description: "End date YYYY-MM-DD (optional, defaults to today)",
140
+ },
141
+ aggregatedBy: {
142
+ type: "string",
143
+ enum: ["day", "week", "month"],
144
+ description: "Aggregation bucket size",
145
+ },
146
+ into: CommonSchemas.into,
147
+ },
148
+ required: ["startDate"],
149
+ },
150
+ outputSchema: {
151
+ type: "object",
152
+ properties: {
153
+ data: { type: "array", items: { type: "object" } },
154
+ },
155
+ },
156
+ riskDefault: "low",
157
+ isWrite: false,
158
+ isConnector: true,
159
+ execute: async ({ params }) => {
160
+ const { getSendGridConnector } = await import("../../connectors/sendgrid.js");
161
+ const connector = getSendGridConnector();
162
+ const data = await connector.getStats({
163
+ startDate: params.startDate,
164
+ endDate: typeof params.endDate === "string" ? params.endDate : undefined,
165
+ aggregatedBy: params.aggregatedBy === "day" ||
166
+ params.aggregatedBy === "week" ||
167
+ params.aggregatedBy === "month"
168
+ ? params.aggregatedBy
169
+ : undefined,
170
+ });
171
+ return JSON.stringify({ data });
172
+ },
173
+ });
174
+ //# sourceMappingURL=sendgrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendgrid.js","sourceRoot":"","sources":["../../../src/recipes/tools/sendgrid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shopify tools — read-only access to products, orders, and customers.
3
+ *
4
+ * Self-registering tool module for the recipe tool registry. Each tool lazily
5
+ * imports the Shopify connector and wraps a single read method, returning the
6
+ * connector result verbatim via JSON.stringify.
7
+ *
8
+ * Connector methods mirrored (see src/connectors/shopify.ts):
9
+ * - listProducts({ limit?, status?, vendor?, productType? }) -> { data: ShopifyProduct[] }
10
+ * - listOrders({ limit?, status?, financialStatus?, fulfillmentStatus? }) -> { data: ShopifyOrder[] }
11
+ * - getOrder(orderId: string | number) -> ShopifyOrder
12
+ * - listCustomers({ limit?, query? }) -> { data: ShopifyCustomer[] }
13
+ *
14
+ * All v1 tools are read-only (`isWrite: false`, `riskDefault: "low"`).
15
+ */
16
+ export {};
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Shopify tools — read-only access to products, orders, and customers.
3
+ *
4
+ * Self-registering tool module for the recipe tool registry. Each tool lazily
5
+ * imports the Shopify connector and wraps a single read method, returning the
6
+ * connector result verbatim via JSON.stringify.
7
+ *
8
+ * Connector methods mirrored (see src/connectors/shopify.ts):
9
+ * - listProducts({ limit?, status?, vendor?, productType? }) -> { data: ShopifyProduct[] }
10
+ * - listOrders({ limit?, status?, financialStatus?, fulfillmentStatus? }) -> { data: ShopifyOrder[] }
11
+ * - getOrder(orderId: string | number) -> ShopifyOrder
12
+ * - listCustomers({ limit?, query? }) -> { data: ShopifyCustomer[] }
13
+ *
14
+ * All v1 tools are read-only (`isWrite: false`, `riskDefault: "low"`).
15
+ */
16
+ import { CommonSchemas, registerTool } from "../toolRegistry.js";
17
+ // ============================================================================
18
+ // shopify.list_products
19
+ // ============================================================================
20
+ registerTool({
21
+ id: "shopify.list_products",
22
+ namespace: "shopify",
23
+ description: "List Shopify products, optionally filtered by status, vendor, or product type.",
24
+ paramsSchema: {
25
+ type: "object",
26
+ properties: {
27
+ limit: {
28
+ type: "number",
29
+ description: "Max number of products to return (default 50, max 250)",
30
+ default: 50,
31
+ },
32
+ status: {
33
+ type: "string",
34
+ description: "Filter by product status (active, archived, draft)",
35
+ },
36
+ vendor: {
37
+ type: "string",
38
+ description: "Filter by vendor name",
39
+ },
40
+ productType: {
41
+ type: "string",
42
+ description: "Filter by product type",
43
+ },
44
+ into: CommonSchemas.into,
45
+ },
46
+ required: [],
47
+ },
48
+ outputSchema: {
49
+ type: "object",
50
+ properties: {
51
+ data: {
52
+ type: "array",
53
+ items: {
54
+ type: "object",
55
+ properties: {
56
+ id: { type: "number" },
57
+ title: { type: "string" },
58
+ body_html: { type: ["string", "null"] },
59
+ vendor: { type: "string" },
60
+ product_type: { type: "string" },
61
+ status: { type: "string" },
62
+ created_at: { type: "string" },
63
+ updated_at: { type: "string" },
64
+ tags: { type: "string" },
65
+ variants: { type: "array", items: { type: "object" } },
66
+ },
67
+ },
68
+ },
69
+ },
70
+ },
71
+ riskDefault: "low",
72
+ isWrite: false,
73
+ isConnector: true,
74
+ execute: async ({ params }) => {
75
+ const { getShopifyConnector } = await import("../../connectors/shopify.js");
76
+ const connector = getShopifyConnector();
77
+ const result = await connector.listProducts({
78
+ limit: typeof params.limit === "number" ? params.limit : undefined,
79
+ status: typeof params.status === "string" ? params.status : undefined,
80
+ vendor: typeof params.vendor === "string" ? params.vendor : undefined,
81
+ productType: typeof params.productType === "string" ? params.productType : undefined,
82
+ });
83
+ return JSON.stringify(result);
84
+ },
85
+ });
86
+ // ============================================================================
87
+ // shopify.list_orders
88
+ // ============================================================================
89
+ registerTool({
90
+ id: "shopify.list_orders",
91
+ namespace: "shopify",
92
+ description: "List Shopify orders, optionally filtered by status, financial status, or fulfillment status.",
93
+ paramsSchema: {
94
+ type: "object",
95
+ properties: {
96
+ limit: {
97
+ type: "number",
98
+ description: "Max number of orders to return (default 50, max 250)",
99
+ default: 50,
100
+ },
101
+ status: {
102
+ type: "string",
103
+ description: "Filter by order status (open, closed, cancelled, any; default any)",
104
+ },
105
+ financialStatus: {
106
+ type: "string",
107
+ description: "Filter by financial status (e.g. paid, pending, refunded, voided)",
108
+ },
109
+ fulfillmentStatus: {
110
+ type: "string",
111
+ description: "Filter by fulfillment status (e.g. shipped, partial, unshipped, any)",
112
+ },
113
+ into: CommonSchemas.into,
114
+ },
115
+ required: [],
116
+ },
117
+ outputSchema: {
118
+ type: "object",
119
+ properties: {
120
+ data: {
121
+ type: "array",
122
+ items: {
123
+ type: "object",
124
+ properties: {
125
+ id: { type: "number" },
126
+ order_number: { type: "number" },
127
+ name: { type: "string" },
128
+ email: { type: ["string", "null"] },
129
+ financial_status: { type: ["string", "null"] },
130
+ fulfillment_status: { type: ["string", "null"] },
131
+ total_price: { type: "string" },
132
+ subtotal_price: { type: "string" },
133
+ currency: { type: "string" },
134
+ created_at: { type: "string" },
135
+ updated_at: { type: "string" },
136
+ customer: { type: ["object", "null"] },
137
+ },
138
+ },
139
+ },
140
+ },
141
+ },
142
+ riskDefault: "low",
143
+ isWrite: false,
144
+ isConnector: true,
145
+ execute: async ({ params }) => {
146
+ const { getShopifyConnector } = await import("../../connectors/shopify.js");
147
+ const connector = getShopifyConnector();
148
+ const result = await connector.listOrders({
149
+ limit: typeof params.limit === "number" ? params.limit : undefined,
150
+ status: typeof params.status === "string" ? params.status : undefined,
151
+ financialStatus: typeof params.financialStatus === "string"
152
+ ? params.financialStatus
153
+ : undefined,
154
+ fulfillmentStatus: typeof params.fulfillmentStatus === "string"
155
+ ? params.fulfillmentStatus
156
+ : undefined,
157
+ });
158
+ return JSON.stringify(result);
159
+ },
160
+ });
161
+ // ============================================================================
162
+ // shopify.get_order
163
+ // ============================================================================
164
+ registerTool({
165
+ id: "shopify.get_order",
166
+ namespace: "shopify",
167
+ description: "Fetch a single Shopify order by ID.",
168
+ paramsSchema: {
169
+ type: "object",
170
+ properties: {
171
+ orderId: {
172
+ type: ["string", "number"],
173
+ description: "Shopify order ID",
174
+ },
175
+ into: CommonSchemas.into,
176
+ },
177
+ required: ["orderId"],
178
+ },
179
+ outputSchema: {
180
+ type: "object",
181
+ properties: {
182
+ id: { type: "number" },
183
+ order_number: { type: "number" },
184
+ name: { type: "string" },
185
+ email: { type: ["string", "null"] },
186
+ financial_status: { type: ["string", "null"] },
187
+ fulfillment_status: { type: ["string", "null"] },
188
+ total_price: { type: "string" },
189
+ subtotal_price: { type: "string" },
190
+ currency: { type: "string" },
191
+ created_at: { type: "string" },
192
+ updated_at: { type: "string" },
193
+ customer: { type: ["object", "null"] },
194
+ },
195
+ },
196
+ riskDefault: "low",
197
+ isWrite: false,
198
+ isConnector: true,
199
+ execute: async ({ params }) => {
200
+ const { getShopifyConnector } = await import("../../connectors/shopify.js");
201
+ const connector = getShopifyConnector();
202
+ const result = await connector.getOrder(params.orderId);
203
+ return JSON.stringify(result);
204
+ },
205
+ });
206
+ // ============================================================================
207
+ // shopify.list_customers
208
+ // ============================================================================
209
+ registerTool({
210
+ id: "shopify.list_customers",
211
+ namespace: "shopify",
212
+ description: "List Shopify customers, optionally filtered by a search query string.",
213
+ paramsSchema: {
214
+ type: "object",
215
+ properties: {
216
+ limit: {
217
+ type: "number",
218
+ description: "Max number of customers to return (default 50, max 250)",
219
+ default: 50,
220
+ },
221
+ query: {
222
+ type: "string",
223
+ description: "Search query (uses the Shopify customer search endpoint, e.g. email or name)",
224
+ },
225
+ into: CommonSchemas.into,
226
+ },
227
+ required: [],
228
+ },
229
+ outputSchema: {
230
+ type: "object",
231
+ properties: {
232
+ data: {
233
+ type: "array",
234
+ items: {
235
+ type: "object",
236
+ properties: {
237
+ id: { type: "number" },
238
+ email: { type: ["string", "null"] },
239
+ first_name: { type: ["string", "null"] },
240
+ last_name: { type: ["string", "null"] },
241
+ phone: { type: ["string", "null"] },
242
+ orders_count: { type: "number" },
243
+ total_spent: { type: "string" },
244
+ state: { type: "string" },
245
+ created_at: { type: "string" },
246
+ updated_at: { type: "string" },
247
+ },
248
+ },
249
+ },
250
+ },
251
+ },
252
+ riskDefault: "low",
253
+ isWrite: false,
254
+ isConnector: true,
255
+ execute: async ({ params }) => {
256
+ const { getShopifyConnector } = await import("../../connectors/shopify.js");
257
+ const connector = getShopifyConnector();
258
+ const result = await connector.listCustomers({
259
+ limit: typeof params.limit === "number" ? params.limit : undefined,
260
+ query: typeof params.query === "string" ? params.query : undefined,
261
+ });
262
+ return JSON.stringify(result);
263
+ },
264
+ });
265
+ //# sourceMappingURL=shopify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../../src/recipes/tools/shopify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Todoist tools — list/create/close tasks and list projects via the Todoist
3
+ * REST API v2 connector.
4
+ *
5
+ * Self-registering tool module for the recipe tool registry. Mirrors the
6
+ * positional signatures of `TodoistConnector` (src/connectors/todoist.ts):
7
+ * - getTasks(projectId?, filter?, limit?) → TodoistTask[]
8
+ * - createTask(content, projectId?, description?, dueString?, priority?, labels?) → TodoistTask
9
+ * - closeTask(id) → void
10
+ * - getProjects() → TodoistProject[]
11
+ *
12
+ * Read tools declare `isWrite: false`; mutating tools declare `isWrite: true`
13
+ * so the approval queue / kill-switch gate them appropriately.
14
+ */
15
+ export {};