@marktoflow/integrations 2.0.0-alpha.14 → 2.0.0-alpha.16

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 (258) hide show
  1. package/README.md +75 -1319
  2. package/dist/adapters/claude-agent-hooks.d.ts +176 -0
  3. package/dist/adapters/claude-agent-types.d.ts +24 -24
  4. package/dist/adapters/claude-agent-workflow.d.ts +22 -22
  5. package/dist/adapters/codex-types.d.ts +20 -20
  6. package/dist/adapters/github-copilot-types.d.ts +44 -44
  7. package/dist/adapters/ollama-types.d.ts +126 -126
  8. package/dist/index.d.ts +8 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +10 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/reliability/errors.d.ts +36 -0
  13. package/dist/reliability/errors.d.ts.map +1 -0
  14. package/dist/reliability/errors.js +151 -0
  15. package/dist/reliability/errors.js.map +1 -0
  16. package/dist/reliability/index.d.ts +10 -0
  17. package/dist/reliability/index.d.ts.map +1 -0
  18. package/dist/reliability/index.js +10 -0
  19. package/dist/reliability/index.js.map +1 -0
  20. package/dist/reliability/schemas/airtable.d.ts +7 -0
  21. package/dist/reliability/schemas/airtable.d.ts.map +1 -0
  22. package/dist/reliability/schemas/airtable.js +56 -0
  23. package/dist/reliability/schemas/airtable.js.map +1 -0
  24. package/dist/reliability/schemas/asana.d.ts +7 -0
  25. package/dist/reliability/schemas/asana.d.ts.map +1 -0
  26. package/dist/reliability/schemas/asana.js +45 -0
  27. package/dist/reliability/schemas/asana.js.map +1 -0
  28. package/dist/reliability/schemas/aws-s3.d.ts +7 -0
  29. package/dist/reliability/schemas/aws-s3.d.ts.map +1 -0
  30. package/dist/reliability/schemas/aws-s3.js +42 -0
  31. package/dist/reliability/schemas/aws-s3.js.map +1 -0
  32. package/dist/reliability/schemas/confluence.d.ts +7 -0
  33. package/dist/reliability/schemas/confluence.d.ts.map +1 -0
  34. package/dist/reliability/schemas/confluence.js +46 -0
  35. package/dist/reliability/schemas/confluence.js.map +1 -0
  36. package/dist/reliability/schemas/discord.d.ts +6 -0
  37. package/dist/reliability/schemas/discord.d.ts.map +1 -0
  38. package/dist/reliability/schemas/discord.js +40 -0
  39. package/dist/reliability/schemas/discord.js.map +1 -0
  40. package/dist/reliability/schemas/dropbox.d.ts +7 -0
  41. package/dist/reliability/schemas/dropbox.d.ts.map +1 -0
  42. package/dist/reliability/schemas/dropbox.js +47 -0
  43. package/dist/reliability/schemas/dropbox.js.map +1 -0
  44. package/dist/reliability/schemas/github.d.ts +9 -0
  45. package/dist/reliability/schemas/github.d.ts.map +1 -0
  46. package/dist/reliability/schemas/github.js +101 -0
  47. package/dist/reliability/schemas/github.js.map +1 -0
  48. package/dist/reliability/schemas/gmail.d.ts +9 -0
  49. package/dist/reliability/schemas/gmail.d.ts.map +1 -0
  50. package/dist/reliability/schemas/gmail.js +59 -0
  51. package/dist/reliability/schemas/gmail.js.map +1 -0
  52. package/dist/reliability/schemas/google-calendar.d.ts +7 -0
  53. package/dist/reliability/schemas/google-calendar.d.ts.map +1 -0
  54. package/dist/reliability/schemas/google-calendar.js +58 -0
  55. package/dist/reliability/schemas/google-calendar.js.map +1 -0
  56. package/dist/reliability/schemas/google-docs.d.ts +7 -0
  57. package/dist/reliability/schemas/google-docs.d.ts.map +1 -0
  58. package/dist/reliability/schemas/google-docs.js +39 -0
  59. package/dist/reliability/schemas/google-docs.js.map +1 -0
  60. package/dist/reliability/schemas/google-drive.d.ts +7 -0
  61. package/dist/reliability/schemas/google-drive.d.ts.map +1 -0
  62. package/dist/reliability/schemas/google-drive.js +56 -0
  63. package/dist/reliability/schemas/google-drive.js.map +1 -0
  64. package/dist/reliability/schemas/google-sheets.d.ts +7 -0
  65. package/dist/reliability/schemas/google-sheets.d.ts.map +1 -0
  66. package/dist/reliability/schemas/google-sheets.js +40 -0
  67. package/dist/reliability/schemas/google-sheets.js.map +1 -0
  68. package/dist/reliability/schemas/index.d.ts +37 -0
  69. package/dist/reliability/schemas/index.d.ts.map +1 -0
  70. package/dist/reliability/schemas/index.js +37 -0
  71. package/dist/reliability/schemas/index.js.map +1 -0
  72. package/dist/reliability/schemas/jira.d.ts +6 -0
  73. package/dist/reliability/schemas/jira.d.ts.map +1 -0
  74. package/dist/reliability/schemas/jira.js +50 -0
  75. package/dist/reliability/schemas/jira.js.map +1 -0
  76. package/dist/reliability/schemas/linear.d.ts +6 -0
  77. package/dist/reliability/schemas/linear.d.ts.map +1 -0
  78. package/dist/reliability/schemas/linear.js +39 -0
  79. package/dist/reliability/schemas/linear.js.map +1 -0
  80. package/dist/reliability/schemas/mailchimp.d.ts +7 -0
  81. package/dist/reliability/schemas/mailchimp.d.ts.map +1 -0
  82. package/dist/reliability/schemas/mailchimp.js +58 -0
  83. package/dist/reliability/schemas/mailchimp.js.map +1 -0
  84. package/dist/reliability/schemas/mysql.d.ts +7 -0
  85. package/dist/reliability/schemas/mysql.d.ts.map +1 -0
  86. package/dist/reliability/schemas/mysql.js +35 -0
  87. package/dist/reliability/schemas/mysql.js.map +1 -0
  88. package/dist/reliability/schemas/notion.d.ts +6 -0
  89. package/dist/reliability/schemas/notion.d.ts.map +1 -0
  90. package/dist/reliability/schemas/notion.js +63 -0
  91. package/dist/reliability/schemas/notion.js.map +1 -0
  92. package/dist/reliability/schemas/outlook.d.ts +7 -0
  93. package/dist/reliability/schemas/outlook.d.ts.map +1 -0
  94. package/dist/reliability/schemas/outlook.js +50 -0
  95. package/dist/reliability/schemas/outlook.js.map +1 -0
  96. package/dist/reliability/schemas/postgres.d.ts +7 -0
  97. package/dist/reliability/schemas/postgres.d.ts.map +1 -0
  98. package/dist/reliability/schemas/postgres.js +35 -0
  99. package/dist/reliability/schemas/postgres.js.map +1 -0
  100. package/dist/reliability/schemas/sendgrid.d.ts +7 -0
  101. package/dist/reliability/schemas/sendgrid.d.ts.map +1 -0
  102. package/dist/reliability/schemas/sendgrid.js +34 -0
  103. package/dist/reliability/schemas/sendgrid.js.map +1 -0
  104. package/dist/reliability/schemas/shopify.d.ts +7 -0
  105. package/dist/reliability/schemas/shopify.d.ts.map +1 -0
  106. package/dist/reliability/schemas/shopify.js +55 -0
  107. package/dist/reliability/schemas/shopify.js.map +1 -0
  108. package/dist/reliability/schemas/slack.d.ts +7 -0
  109. package/dist/reliability/schemas/slack.d.ts.map +1 -0
  110. package/dist/reliability/schemas/slack.js +66 -0
  111. package/dist/reliability/schemas/slack.js.map +1 -0
  112. package/dist/reliability/schemas/stripe.d.ts +7 -0
  113. package/dist/reliability/schemas/stripe.d.ts.map +1 -0
  114. package/dist/reliability/schemas/stripe.js +58 -0
  115. package/dist/reliability/schemas/stripe.js.map +1 -0
  116. package/dist/reliability/schemas/supabase.d.ts +7 -0
  117. package/dist/reliability/schemas/supabase.d.ts.map +1 -0
  118. package/dist/reliability/schemas/supabase.js +50 -0
  119. package/dist/reliability/schemas/supabase.js.map +1 -0
  120. package/dist/reliability/schemas/teams.d.ts +7 -0
  121. package/dist/reliability/schemas/teams.d.ts.map +1 -0
  122. package/dist/reliability/schemas/teams.js +44 -0
  123. package/dist/reliability/schemas/teams.js.map +1 -0
  124. package/dist/reliability/schemas/telegram.d.ts +7 -0
  125. package/dist/reliability/schemas/telegram.d.ts.map +1 -0
  126. package/dist/reliability/schemas/telegram.js +53 -0
  127. package/dist/reliability/schemas/telegram.js.map +1 -0
  128. package/dist/reliability/schemas/trello.d.ts +7 -0
  129. package/dist/reliability/schemas/trello.d.ts.map +1 -0
  130. package/dist/reliability/schemas/trello.js +51 -0
  131. package/dist/reliability/schemas/trello.js.map +1 -0
  132. package/dist/reliability/schemas/twilio.d.ts +7 -0
  133. package/dist/reliability/schemas/twilio.d.ts.map +1 -0
  134. package/dist/reliability/schemas/twilio.js +42 -0
  135. package/dist/reliability/schemas/twilio.js.map +1 -0
  136. package/dist/reliability/schemas/whatsapp.d.ts +7 -0
  137. package/dist/reliability/schemas/whatsapp.d.ts.map +1 -0
  138. package/dist/reliability/schemas/whatsapp.js +50 -0
  139. package/dist/reliability/schemas/whatsapp.js.map +1 -0
  140. package/dist/reliability/schemas/zendesk.d.ts +7 -0
  141. package/dist/reliability/schemas/zendesk.d.ts.map +1 -0
  142. package/dist/reliability/schemas/zendesk.js +53 -0
  143. package/dist/reliability/schemas/zendesk.js.map +1 -0
  144. package/dist/reliability/wrapper.d.ts +46 -0
  145. package/dist/reliability/wrapper.d.ts.map +1 -0
  146. package/dist/reliability/wrapper.js +174 -0
  147. package/dist/reliability/wrapper.js.map +1 -0
  148. package/dist/services/airtable.d.ts.map +1 -1
  149. package/dist/services/airtable.js +8 -2
  150. package/dist/services/airtable.js.map +1 -1
  151. package/dist/services/asana.d.ts.map +1 -1
  152. package/dist/services/asana.js +8 -2
  153. package/dist/services/asana.js.map +1 -1
  154. package/dist/services/aws-s3.d.ts.map +1 -1
  155. package/dist/services/aws-s3.js +8 -2
  156. package/dist/services/aws-s3.js.map +1 -1
  157. package/dist/services/confluence.d.ts.map +1 -1
  158. package/dist/services/confluence.js +8 -2
  159. package/dist/services/confluence.js.map +1 -1
  160. package/dist/services/discord.d.ts.map +1 -1
  161. package/dist/services/discord.js +10 -2
  162. package/dist/services/discord.js.map +1 -1
  163. package/dist/services/dropbox.d.ts.map +1 -1
  164. package/dist/services/dropbox.js +8 -2
  165. package/dist/services/dropbox.js.map +1 -1
  166. package/dist/services/github.d.ts +3 -0
  167. package/dist/services/github.d.ts.map +1 -1
  168. package/dist/services/github.js +11 -5
  169. package/dist/services/github.js.map +1 -1
  170. package/dist/services/gmail-trigger.d.ts +92 -0
  171. package/dist/services/gmail.d.ts +116 -0
  172. package/dist/services/gmail.d.ts.map +1 -1
  173. package/dist/services/gmail.js +30 -2
  174. package/dist/services/gmail.js.map +1 -1
  175. package/dist/services/google-calendar.d.ts +220 -0
  176. package/dist/services/google-calendar.d.ts.map +1 -1
  177. package/dist/services/google-calendar.js +6 -1
  178. package/dist/services/google-calendar.js.map +1 -1
  179. package/dist/services/google-docs.d.ts +197 -0
  180. package/dist/services/google-docs.d.ts.map +1 -1
  181. package/dist/services/google-docs.js +6 -1
  182. package/dist/services/google-docs.js.map +1 -1
  183. package/dist/services/google-drive.d.ts +149 -0
  184. package/dist/services/google-drive.d.ts.map +1 -1
  185. package/dist/services/google-drive.js +6 -1
  186. package/dist/services/google-drive.js.map +1 -1
  187. package/dist/services/google-sheets.d.ts +165 -0
  188. package/dist/services/google-sheets.d.ts.map +1 -1
  189. package/dist/services/google-sheets.js +6 -1
  190. package/dist/services/google-sheets.js.map +1 -1
  191. package/dist/services/http.d.ts +120 -0
  192. package/dist/services/http.d.ts.map +1 -1
  193. package/dist/services/http.js +57 -1
  194. package/dist/services/http.js.map +1 -1
  195. package/dist/services/jira.d.ts +3 -0
  196. package/dist/services/jira.d.ts.map +1 -1
  197. package/dist/services/jira.js +9 -1
  198. package/dist/services/jira.js.map +1 -1
  199. package/dist/services/linear.d.ts +163 -0
  200. package/dist/services/linear.d.ts.map +1 -1
  201. package/dist/services/linear.js +10 -2
  202. package/dist/services/linear.js.map +1 -1
  203. package/dist/services/mailchimp.d.ts.map +1 -1
  204. package/dist/services/mailchimp.js +8 -2
  205. package/dist/services/mailchimp.js.map +1 -1
  206. package/dist/services/mysql.d.ts +91 -0
  207. package/dist/services/mysql.d.ts.map +1 -1
  208. package/dist/services/mysql.js +8 -2
  209. package/dist/services/mysql.js.map +1 -1
  210. package/dist/services/notion.d.ts.map +1 -1
  211. package/dist/services/notion.js +10 -2
  212. package/dist/services/notion.js.map +1 -1
  213. package/dist/services/outlook-trigger.d.ts +121 -0
  214. package/dist/services/outlook.d.ts +237 -0
  215. package/dist/services/outlook.d.ts.map +1 -1
  216. package/dist/services/outlook.js +88 -5
  217. package/dist/services/outlook.js.map +1 -1
  218. package/dist/services/postgres.d.ts +83 -0
  219. package/dist/services/postgres.d.ts.map +1 -1
  220. package/dist/services/postgres.js +8 -2
  221. package/dist/services/postgres.js.map +1 -1
  222. package/dist/services/sendgrid.d.ts.map +1 -1
  223. package/dist/services/sendgrid.js +8 -2
  224. package/dist/services/sendgrid.js.map +1 -1
  225. package/dist/services/shopify.d.ts.map +1 -1
  226. package/dist/services/shopify.js +8 -2
  227. package/dist/services/shopify.js.map +1 -1
  228. package/dist/services/slack-socket.d.ts +18 -0
  229. package/dist/services/slack.d.ts +3 -0
  230. package/dist/services/slack.d.ts.map +1 -1
  231. package/dist/services/slack.js +9 -1
  232. package/dist/services/slack.js.map +1 -1
  233. package/dist/services/stripe.d.ts.map +1 -1
  234. package/dist/services/stripe.js +8 -2
  235. package/dist/services/stripe.js.map +1 -1
  236. package/dist/services/supabase.d.ts.map +1 -1
  237. package/dist/services/supabase.js +8 -2
  238. package/dist/services/supabase.js.map +1 -1
  239. package/dist/services/teams.d.ts.map +1 -1
  240. package/dist/services/teams.js +8 -2
  241. package/dist/services/teams.js.map +1 -1
  242. package/dist/services/telegram.d.ts.map +1 -1
  243. package/dist/services/telegram.js +8 -2
  244. package/dist/services/telegram.js.map +1 -1
  245. package/dist/services/trello.d.ts.map +1 -1
  246. package/dist/services/trello.js +8 -2
  247. package/dist/services/trello.js.map +1 -1
  248. package/dist/services/twilio.d.ts.map +1 -1
  249. package/dist/services/twilio.js +8 -2
  250. package/dist/services/twilio.js.map +1 -1
  251. package/dist/services/whatsapp.d.ts +311 -0
  252. package/dist/services/whatsapp.d.ts.map +1 -1
  253. package/dist/services/whatsapp.js +8 -2
  254. package/dist/services/whatsapp.js.map +1 -1
  255. package/dist/services/zendesk.d.ts.map +1 -1
  256. package/dist/services/zendesk.js +8 -2
  257. package/dist/services/zendesk.js.map +1 -1
  258. package/package.json +7 -3
package/README.md CHANGED
@@ -1,79 +1,20 @@
1
1
  # @marktoflow/integrations
2
2
 
3
- > **Author:** Scott Glover <scottgl@gmail.com>
3
+ > 30+ native service integrations and AI agent adapters for workflow automation.
4
4
 
5
- Standard integrations for marktoflow - connect to Slack, GitHub, Jira, Gmail, and more.
5
+ [![npm](https://img.shields.io/npm/v/@marktoflow/integrations)](https://www.npmjs.com/package/@marktoflow/integrations)
6
6
 
7
- ## Overview
7
+ Part of [marktoflow](../../README.md) — open-source markdown workflow automation.
8
8
 
9
- `@marktoflow/integrations` provides ready-to-use service integrations and AI agent adapters for the marktoflow automation framework.
10
-
11
- ## Features
12
-
13
- ### Service Integrations (30)
14
-
15
- - **Slack** - Send messages, manage channels, socket mode
16
- - **Microsoft Teams** - Channel messages, chats, meetings, collaboration
17
- - **GitHub** - Create PRs, issues, comments, manage repos
18
- - **Jira** - Create/update issues, transitions, search
19
- - **Gmail** - Send emails, read inbox, manage labels, webhook triggers
20
- - **Outlook** - Send emails, read calendar/inbox, webhook triggers
21
- - **Google Sheets** - Spreadsheet operations, read/write data
22
- - **Google Calendar** - Calendar events, scheduling
23
- - **Google Drive** - File storage and management
24
- - **Google Docs** - Document creation and editing
25
- - **Linear** - Issue tracking and project management
26
- - **Notion** - Database operations, page management
27
- - **Discord** - Bot interactions, message management
28
- - **Airtable** - Spreadsheet database operations
29
- - **Confluence** - Wiki page management
30
- - **Telegram** - Bot messaging and interactions
31
- - **WhatsApp** - Business messaging API
32
- - **Stripe** - Payment processing, subscriptions, invoicing
33
- - **Shopify** - E-commerce store management, products, orders
34
- - **Twilio** - SMS, voice calls, WhatsApp, phone numbers
35
- - **SendGrid** - Transactional email delivery
36
- - **Mailchimp** - Email marketing campaigns and automation
37
- - **Zendesk** - Customer support tickets and users
38
- - **Asana** - Task and project management
39
- - **Trello** - Kanban boards and cards
40
- - **Dropbox** - Cloud file storage and sharing
41
- - **AWS S3** - Amazon object storage
42
- - **Supabase** - PostgreSQL database with real-time subscriptions
43
- - **PostgreSQL** - Direct PostgreSQL database access
44
- - **MySQL** - Direct MySQL database access
45
- - **HTTP** - Generic HTTP requests with auth
46
-
47
- ### AI Agent Adapters (6)
48
-
49
- - **Ollama** - Local LLM integration
50
- - **Claude Agent** - Anthropic Claude Agent SDK integration
51
- - **Claude Code** - Anthropic Claude Code CLI integration
52
- - **OpenAI Codex** - OpenAI Codex SDK integration
53
- - **OpenCode** - OpenCode AI integration (75+ backends)
54
- - **GitHub Copilot** - GitHub Copilot SDK integration
55
-
56
- ## Installation
9
+ ## Quick Start
57
10
 
58
11
  ```bash
59
12
  npm install @marktoflow/integrations
60
13
  ```
61
14
 
62
- This package depends on `@marktoflow/core` which will be installed automatically.
63
-
64
- ## Quick Start
65
-
66
- All integrations work with the workflow examples in [examples/](https://github.com/marktoflow/marktoflow/tree/main/examples). See these for production-ready templates.
67
-
68
- ### Using in Workflows
69
-
70
- Integrations are designed to work seamlessly in workflow YAML definitions:
15
+ Use in workflows:
71
16
 
72
17
  ```yaml
73
- workflow:
74
- id: slack-notification
75
- name: Send Slack Notification
76
-
77
18
  tools:
78
19
  slack:
79
20
  sdk: '@slack/web-api'
@@ -87,1280 +28,95 @@ steps:
87
28
  text: 'Hello from marktoflow!'
88
29
  ```
89
30
 
90
- ### Programmatic Usage
91
-
92
- You can also use integrations directly in TypeScript:
31
+ Or programmatically:
93
32
 
94
33
  ```typescript
95
34
  import { SlackInitializer } from '@marktoflow/integrations';
96
35
  import { SDKRegistry } from '@marktoflow/core';
97
36
 
98
- // Register Slack integration
99
37
  const registry = new SDKRegistry();
100
38
  await registry.registerSDK(SlackInitializer);
101
-
102
- // Load and use SDK
103
- const slack = await registry.loadSDK('slack', {
104
- auth: { token: process.env.SLACK_BOT_TOKEN },
105
- });
106
-
107
- // Execute action
108
- const result = await registry.executeAction('slack', 'chat.postMessage', slack, {
109
- channel: '#general',
110
- text: 'Hello World!',
111
- });
112
- ```
113
-
114
- ## Available Integrations
115
-
116
- ### Slack
117
-
118
- Send messages, manage channels, handle events.
119
-
120
- **Setup**:
121
-
122
- ```bash
123
- # Set environment variable
124
- export SLACK_BOT_TOKEN=xoxb-your-token
125
- ```
126
-
127
- **Actions**:
128
-
129
- - `chat.postMessage` - Send a message
130
- - `conversations.list` - List channels
131
- - `conversations.create` - Create channel
132
- - `users.list` - List workspace users
133
-
134
- **Example**:
135
-
136
- ```yaml
137
- action: slack.chat.postMessage
138
- inputs:
139
- channel: '#general'
140
- text: 'Deployment complete!'
141
- blocks:
142
- - type: section
143
- text:
144
- type: mrkdwn
145
- text: '*Status:* ✅ Success'
146
- ```
147
-
148
- **Production Examples:**
149
- - [daily-standup](https://github.com/marktoflow/marktoflow/tree/main/examples/daily-standup) - Daily standup reports
150
- - [incident-response](https://github.com/marktoflow/marktoflow/tree/main/examples/incident-response) - Incident coordination
151
- - [codebase-qa](https://github.com/marktoflow/marktoflow/tree/main/examples/codebase-qa) - AI Q&A via Slack
152
-
153
- ### GitHub
154
-
155
- Manage repositories, PRs, issues, and more.
156
-
157
- **Setup**:
158
-
159
- ```bash
160
- export GITHUB_TOKEN=ghp_your-token
161
- ```
162
-
163
- **Actions**:
164
-
165
- - `repos.get` - Get repository info
166
- - `pulls.create` - Create pull request
167
- - `issues.create` - Create issue
168
- - `issues.createComment` - Comment on issue
169
-
170
- **Example**:
171
-
172
- ```yaml
173
- action: github.pulls.create
174
- inputs:
175
- owner: marktoflow
176
- repo: marktoflow
177
- title: 'Add new feature'
178
- head: feature-branch
179
- base: main
180
- body: 'This PR adds...'
181
- ```
182
-
183
- **Production Examples:**
184
- - [code-review](https://github.com/marktoflow/marktoflow/tree/main/examples/code-review) - Automated PR reviews
185
- - [copilot-code-review](https://github.com/marktoflow/marktoflow/tree/main/examples/copilot-code-review) - Advanced Copilot reviews
186
- - [dependency-update](https://github.com/marktoflow/marktoflow/tree/main/examples/dependency-update) - Dependency PR automation
187
-
188
- ### Jira
189
-
190
- Issue tracking and project management.
191
-
192
- **Setup**:
193
-
194
- ```bash
195
- export JIRA_HOST=your-domain.atlassian.net
196
- export JIRA_EMAIL=your@email.com
197
- export JIRA_API_TOKEN=your-token
198
- ```
199
-
200
- **Actions**:
201
-
202
- - `issues.createIssue` - Create issue
203
- - `issues.updateIssue` - Update issue
204
- - `issues.searchIssues` - Search issues
205
- - `issues.getIssue` - Get issue details
206
-
207
- **Example**:
208
-
209
- ```yaml
210
- action: jira.issues.createIssue
211
- inputs:
212
- fields:
213
- project:
214
- key: PROJ
215
- summary: 'Bug: Login fails'
216
- description: 'Users cannot log in'
217
- issuetype:
218
- name: Bug
219
- ```
220
-
221
- **Production Examples:**
222
- - [daily-standup](https://github.com/marktoflow/marktoflow/tree/main/examples/daily-standup) - Daily standup automation
223
- - [sprint-planning](https://github.com/marktoflow/marktoflow/tree/main/examples/sprint-planning) - AI-assisted sprint planning
224
- - [incident-response](https://github.com/marktoflow/marktoflow/tree/main/examples/incident-response) - Incident ticket creation
225
-
226
- ### Gmail
227
-
228
- Email operations with webhook support.
229
-
230
- **Setup**:
231
-
232
- ```bash
233
- export GMAIL_CLIENT_ID=your-client-id
234
- export GMAIL_CLIENT_SECRET=your-secret
235
- export GMAIL_REFRESH_TOKEN=your-refresh-token
236
- ```
237
-
238
- **Actions**:
239
-
240
- - `users.messages.send` - Send email
241
- - `users.messages.list` - List messages
242
- - `users.labels.list` - List labels
243
- - `users.messages.get` - Get message details
244
-
245
- **Example**:
246
-
247
- ```yaml
248
- action: gmail.users.messages.send
249
- inputs:
250
- to: user@example.com
251
- subject: 'Daily Report'
252
- body: 'Here is your daily report...'
253
- ```
254
-
255
- **Production Examples:**
256
- - [gmail-notification](https://github.com/marktoflow/marktoflow/tree/main/examples/gmail-notification) - Email automation workflow
257
-
258
- ### Outlook
259
-
260
- Microsoft 365 email and calendar.
261
-
262
- **Setup**:
263
-
264
- ```bash
265
- export OUTLOOK_CLIENT_ID=your-client-id
266
- export OUTLOOK_CLIENT_SECRET=your-secret
267
- export OUTLOOK_TENANT_ID=your-tenant-id
268
- export OUTLOOK_REFRESH_TOKEN=your-refresh-token
269
- ```
270
-
271
- **Actions**:
272
-
273
- - `sendMail` - Send email
274
- - `listMessages` - List inbox messages
275
- - `listCalendarEvents` - List calendar events
276
- - `createCalendarEvent` - Create calendar event
277
-
278
- **Example**:
279
-
280
- ```yaml
281
- action: outlook.sendMail
282
- inputs:
283
- to: [user@example.com]
284
- subject: 'Meeting Reminder'
285
- body: 'Don't forget our meeting at 2pm'
286
- ```
287
-
288
- ### Microsoft Teams
289
-
290
- Team collaboration and communication via Microsoft Graph API.
291
-
292
- **Setup**:
293
-
294
- ```bash
295
- export TEAMS_ACCESS_TOKEN=your-access-token
296
- # Or use client credentials:
297
- export TEAMS_CLIENT_ID=your-client-id
298
- export TEAMS_CLIENT_SECRET=your-secret
299
- export TEAMS_TENANT_ID=your-tenant-id
300
- ```
301
-
302
- **Actions**:
303
-
304
- - `listTeams` - List teams user is a member of
305
- - `listChannels` - List channels in a team
306
- - `createChannel` - Create a channel in a team
307
- - `sendMessage` - Send message to a channel
308
- - `listMessages` - List messages in a channel
309
- - `replyToMessage` - Reply to a message
310
- - `sendChatMessage` - Send message in a chat
311
- - `createMeeting` - Create an online meeting
312
- - `listTeamMembers` - List members of a team
313
- - `addTeamMember` - Add member to a team
314
-
315
- **Example**:
316
-
317
- ```yaml
318
- tools:
319
- teams:
320
- sdk: 'teams'
321
- auth:
322
- access_token: '${TEAMS_ACCESS_TOKEN}'
323
-
324
- steps:
325
- - action: teams.sendMessage
326
- inputs:
327
- teamId: '${TEAM_ID}'
328
- channelId: '${CHANNEL_ID}'
329
- content: 'Deployment complete!'
330
- contentType: 'html'
331
- ```
332
-
333
- ### Stripe
334
-
335
- Payment processing and subscription management.
336
-
337
- **Setup**:
338
-
339
- ```bash
340
- export STRIPE_API_KEY=sk_test_your-key
341
- ```
342
-
343
- **Actions**:
344
-
345
- **Customers:**
346
- - `createCustomer` - Create a customer
347
- - `getCustomer` - Get customer by ID
348
- - `updateCustomer` - Update customer
349
- - `deleteCustomer` - Delete customer
350
- - `listCustomers` - List customers
351
-
352
- **Payment Intents:**
353
- - `createPaymentIntent` - Create payment intent
354
- - `getPaymentIntent` - Get payment intent
355
- - `confirmPaymentIntent` - Confirm payment
356
- - `cancelPaymentIntent` - Cancel payment
357
-
358
- **Subscriptions:**
359
- - `createSubscription` - Create subscription
360
- - `getSubscription` - Get subscription
361
- - `updateSubscription` - Update subscription
362
- - `cancelSubscription` - Cancel subscription
363
- - `listSubscriptions` - List subscriptions
364
-
365
- **Invoices:**
366
- - `createInvoice` - Create invoice
367
- - `getInvoice` - Get invoice
368
- - `finalizeInvoice` - Finalize invoice
369
- - `payInvoice` - Pay invoice
370
- - `sendInvoice` - Send invoice
371
-
372
- **Example**:
373
-
374
- ```yaml
375
- tools:
376
- stripe:
377
- sdk: 'stripe'
378
- auth:
379
- api_key: '${STRIPE_API_KEY}'
380
-
381
- steps:
382
- - action: stripe.createCustomer
383
- inputs:
384
- email: 'customer@example.com'
385
- name: 'John Doe'
386
- metadata:
387
- source: 'workflow'
388
- output_variable: customer
389
-
390
- - action: stripe.createPaymentIntent
391
- inputs:
392
- amount: 2000
393
- currency: 'usd'
394
- customer: '{{ customer.id }}'
395
- description: 'Service subscription'
396
- output_variable: payment
397
- ```
398
-
399
- ### Linear
400
-
401
- Modern issue tracking.
402
-
403
- **Setup**:
404
-
405
- ```bash
406
- export LINEAR_API_KEY=your-api-key
407
- ```
408
-
409
- **Actions**:
410
-
411
- - `createIssue` - Create issue
412
- - `updateIssue` - Update issue
413
- - `listIssues` - List issues
414
-
415
- ### Notion
416
-
417
- Database and page management.
418
-
419
- **Setup**:
420
-
421
- ```bash
422
- export NOTION_TOKEN=secret_your-token
423
- ```
424
-
425
- **Actions**:
426
-
427
- - `databases.query` - Query database
428
- - `pages.create` - Create page
429
- - `blocks.children.append` - Add content blocks
430
-
431
- ### Discord
432
-
433
- Bot interactions and messaging.
434
-
435
- **Setup**:
436
-
437
- ```bash
438
- export DISCORD_BOT_TOKEN=your-bot-token
439
- ```
440
-
441
- **Actions**:
442
-
443
- - `sendMessage` - Send message to channel
444
- - `editMessage` - Edit message
445
- - `deleteMessage` - Delete message
446
-
447
- ### Airtable
448
-
449
- Spreadsheet database operations.
450
-
451
- **Setup**:
452
-
453
- ```bash
454
- export AIRTABLE_API_KEY=your-api-key
455
- ```
456
-
457
- **Actions**:
458
-
459
- - `select` - Query records
460
- - `create` - Create records
461
- - `update` - Update records
462
- - `delete` - Delete records
463
-
464
- ### Confluence
465
-
466
- Wiki page management.
467
-
468
- **Setup**:
469
-
470
- ```bash
471
- export CONFLUENCE_HOST=your-domain.atlassian.net
472
- export CONFLUENCE_EMAIL=your@email.com
473
- export CONFLUENCE_API_TOKEN=your-token
474
- ```
475
-
476
- **Actions**:
477
-
478
- - `getPage` - Get page content
479
- - `createPage` - Create page
480
- - `updatePage` - Update page
481
- - `deletePage` - Delete page
482
-
483
- ### Google Sheets
484
-
485
- Spreadsheet operations for Google Sheets.
486
-
487
- **Setup**:
488
-
489
- ```bash
490
- export GOOGLE_SHEETS_CLIENT_ID=your-client-id
491
- export GOOGLE_SHEETS_CLIENT_SECRET=your-secret
492
- export GOOGLE_SHEETS_REFRESH_TOKEN=your-refresh-token
493
- ```
494
-
495
- **Actions**:
496
-
497
- - `getSpreadsheet` - Get spreadsheet metadata
498
- - `getValues` - Read cell values
499
- - `updateValues` - Update cell values
500
- - `appendValues` - Append rows to sheet
501
-
502
- **Example**:
503
-
504
- ```yaml
505
- action: google-sheets.updateValues
506
- inputs:
507
- spreadsheetId: '1BxiMVs0XRA5...'
508
- range: 'Sheet1!A1:B2'
509
- values:
510
- - [Name, Email]
511
- - [John Doe, john@example.com]
512
- ```
513
-
514
- ### Google Calendar
515
-
516
- Calendar event management.
517
-
518
- **Setup**:
519
-
520
- ```bash
521
- export GOOGLE_CALENDAR_CLIENT_ID=your-client-id
522
- export GOOGLE_CALENDAR_CLIENT_SECRET=your-secret
523
- export GOOGLE_CALENDAR_REFRESH_TOKEN=your-refresh-token
524
- ```
525
-
526
- **Actions**:
527
-
528
- - `listEvents` - List calendar events
529
- - `createEvent` - Create calendar event
530
- - `updateEvent` - Update event
531
- - `deleteEvent` - Delete event
532
-
533
- **Example**:
534
-
535
- ```yaml
536
- action: google-calendar.createEvent
537
- inputs:
538
- calendarId: primary
539
- summary: 'Team Meeting'
540
- start:
541
- dateTime: '2024-01-25T14:00:00-07:00'
542
- end:
543
- dateTime: '2024-01-25T15:00:00-07:00'
544
- ```
545
-
546
- ### Google Drive
547
-
548
- File storage and management.
549
-
550
- **Setup**:
551
-
552
- ```bash
553
- export GOOGLE_DRIVE_CLIENT_ID=your-client-id
554
- export GOOGLE_DRIVE_CLIENT_SECRET=your-secret
555
- export GOOGLE_DRIVE_REFRESH_TOKEN=your-refresh-token
556
- ```
557
-
558
- **Actions**:
559
-
560
- - `listFiles` - List files in Drive
561
- - `getFile` - Get file metadata
562
- - `uploadFile` - Upload file
563
- - `downloadFile` - Download file
564
- - `deleteFile` - Delete file
565
-
566
- ### Google Docs
567
-
568
- Document creation and editing.
569
-
570
- **Setup**:
571
-
572
- ```bash
573
- export GOOGLE_DOCS_CLIENT_ID=your-client-id
574
- export GOOGLE_DOCS_CLIENT_SECRET=your-secret
575
- export GOOGLE_DOCS_REFRESH_TOKEN=your-refresh-token
576
- ```
577
-
578
- **Actions**:
579
-
580
- - `getDocument` - Get document content
581
- - `createDocument` - Create new document
582
- - `updateDocument` - Batch update document
583
- - `appendText` - Append text to document
584
-
585
- ### Telegram
586
-
587
- Telegram bot messaging.
588
-
589
- **Setup**:
590
-
591
- ```bash
592
- export TELEGRAM_BOT_TOKEN=your-bot-token
593
- ```
594
-
595
- **Actions**:
596
-
597
- - `sendMessage` - Send message to chat
598
- - `sendPhoto` - Send photo
599
- - `sendDocument` - Send document
600
- - `getUpdates` - Get bot updates
601
-
602
- **Example**:
603
-
604
- ```yaml
605
- action: telegram.sendMessage
606
- inputs:
607
- chatId: '123456789'
608
- text: 'Hello from marktoflow!'
609
- ```
610
-
611
- ### WhatsApp
612
-
613
- WhatsApp Business API messaging.
614
-
615
- **Setup**:
616
-
617
- ```bash
618
- export WHATSAPP_PHONE_NUMBER_ID=your-phone-id
619
- export WHATSAPP_ACCESS_TOKEN=your-access-token
620
- ```
621
-
622
- **Actions**:
623
-
624
- - `sendMessage` - Send text message
625
- - `sendTemplate` - Send message template
626
- - `sendMedia` - Send media (image, video, document)
627
-
628
- **Example**:
629
-
630
- ```yaml
631
- action: whatsapp.sendMessage
632
- inputs:
633
- to: '+1234567890'
634
- text: 'Hello from marktoflow!'
635
- ```
636
-
637
- ### Supabase
638
-
639
- PostgreSQL database with real-time capabilities.
640
-
641
- **Setup**:
642
-
643
- ```bash
644
- export SUPABASE_URL=https://your-project.supabase.co
645
- export SUPABASE_KEY=your-anon-key
646
- ```
647
-
648
- **Actions**:
649
-
650
- - `select` - Query records
651
- - `insert` - Insert records
652
- - `update` - Update records
653
- - `delete` - Delete records
654
- - `rpc` - Call stored procedure
655
-
656
- **Example**:
657
-
658
- ```yaml
659
- action: supabase.select
660
- inputs:
661
- table: users
662
- filters:
663
- email: 'eq.user@example.com'
39
+ const slack = await registry.loadSDK('slack', { auth: { token: process.env.SLACK_BOT_TOKEN } });
40
+ await registry.executeAction('slack', 'chat.postMessage', slack, { channel: '#general', text: 'Hello!' });
664
41
  ```
665
42
 
666
- ### PostgreSQL
667
-
668
- Direct PostgreSQL database access.
669
-
670
- **Setup**:
671
-
672
- ```bash
673
- export POSTGRES_HOST=localhost
674
- export POSTGRES_PORT=5432
675
- export POSTGRES_USER=postgres
676
- export POSTGRES_PASSWORD=your-password
677
- export POSTGRES_DATABASE=mydb
678
- ```
43
+ ## Features
679
44
 
680
- **Actions**:
45
+ - **30+ native SDK integrations** with full TypeScript types
46
+ - **6 AI agent adapters** (Copilot, Claude, Codex, OpenCode, Ollama)
47
+ - **Input validation** via Zod schemas for every action
48
+ - **Automatic retry** with circuit breakers and exponential backoff
49
+ - **Credential encryption** (AES-256-GCM) and OAuth token refresh
50
+ - **256+ contract tests** across 28 services (MSW-based, no API keys needed)
51
+
52
+ ## Service Reference
53
+
54
+ | Service | Category | Key Actions |
55
+ |---------|----------|-------------|
56
+ | **Slack** | Communication | `chat.postMessage`, `conversations.list`, `users.list` |
57
+ | **Teams** | Communication | `sendMessage`, `createChannel`, `createMeeting` |
58
+ | **Discord** | Communication | `sendMessage`, `editMessage`, `deleteMessage` |
59
+ | **Telegram** | Communication | `sendMessage`, `sendPhoto`, `sendDocument` |
60
+ | **WhatsApp** | Communication | `sendMessage`, `sendTemplate`, `sendMedia` |
61
+ | **Twilio** | Communication | `sendSMS`, `makeCall`, `sendWhatsApp` |
62
+ | **Gmail** | Email | `users.messages.send`, `users.messages.list` |
63
+ | **Outlook** | Email | `sendMail`, `listMessages`, `listCalendarEvents` |
64
+ | **SendGrid** | Email | `sendEmail`, `sendMultiple` |
65
+ | **Mailchimp** | Email | `addMember`, `createCampaign`, `sendCampaign` |
66
+ | **Google Sheets** | Productivity | `getValues`, `updateValues`, `appendValues` |
67
+ | **Google Calendar** | Productivity | `listEvents`, `createEvent`, `deleteEvent` |
68
+ | **Google Drive** | Productivity | `listFiles`, `uploadFile`, `downloadFile` |
69
+ | **Google Docs** | Productivity | `getDocument`, `createDocument`, `appendText` |
70
+ | **Notion** | Knowledge | `databases.query`, `pages.create`, `blocks.children.append` |
71
+ | **Confluence** | Knowledge | `getPage`, `createPage`, `updatePage` |
72
+ | **Jira** | Project Mgmt | `issues.createIssue`, `issues.searchIssues` |
73
+ | **Linear** | Project Mgmt | `createIssue`, `updateIssue`, `listIssues` |
74
+ | **Asana** | Project Mgmt | `createTask`, `updateTask`, `getTasksInProject` |
75
+ | **Trello** | Project Mgmt | `createCard`, `updateCard`, `addChecklistToCard` |
76
+ | **GitHub** | Developer | `pulls.create`, `issues.create`, `repos.get` |
77
+ | **Airtable** | Developer | `select`, `create`, `update`, `delete` |
78
+ | **Stripe** | Payments | `createCustomer`, `createPaymentIntent`, `createSubscription` |
79
+ | **Shopify** | Commerce | `getProducts`, `createOrder`, `updateInventoryLevel` |
80
+ | **Zendesk** | Support | `createTicket`, `updateTicket`, `search` |
81
+ | **Dropbox** | Storage | `uploadFile`, `downloadFile`, `listFolder` |
82
+ | **AWS S3** | Storage | `uploadObject`, `getObject`, `listObjects` |
83
+ | **Supabase** | Database | `select`, `insert`, `update`, `rpc` |
84
+ | **PostgreSQL** | Database | `query`, `insert`, `update`, `delete` |
85
+ | **MySQL** | Database | `query`, `insert`, `update`, `delete` |
86
+ | **HTTP** | Universal | `request` (any REST API) |
681
87
 
682
- - `query` - Execute SQL query
683
- - `insert` - Insert records
684
- - `update` - Update records
685
- - `delete` - Delete records
88
+ ## AI Agent Adapters
686
89
 
687
- ### MySQL
90
+ | Agent | Setup | Notes |
91
+ |-------|-------|-------|
92
+ | **GitHub Copilot** | `copilot auth login` | Use existing subscription |
93
+ | **Claude Code** | Claude CLI | Use existing subscription |
94
+ | **Claude Agent** | `ANTHROPIC_API_KEY` | Direct API with tool calling |
95
+ | **OpenAI Codex** | Codex CLI | Use existing subscription |
96
+ | **OpenCode** | `opencode /connect` | 75+ AI backends |
97
+ | **Ollama** | Local install | Free, runs locally |
688
98
 
689
- Direct MySQL database access.
99
+ ## Creating Custom Integrations
690
100
 
691
- **Setup**:
101
+ ```typescript
102
+ import type { SDKInitializer } from '@marktoflow/core';
692
103
 
693
- ```bash
694
- export MYSQL_HOST=localhost
695
- export MYSQL_PORT=3306
696
- export MYSQL_USER=root
697
- export MYSQL_PASSWORD=your-password
698
- export MYSQL_DATABASE=mydb
104
+ export const MyServiceInitializer: SDKInitializer = {
105
+ name: 'myservice',
106
+ async initialize(config) {
107
+ return new MyServiceClient(config.auth.apiKey);
108
+ },
109
+ actions: {
110
+ doSomething: async (sdk, inputs) => sdk.doSomething(inputs),
111
+ },
112
+ };
699
113
  ```
700
114
 
701
- **Actions**:
702
-
703
- - `query` - Execute SQL query
704
- - `insert` - Insert records
705
- - `update` - Update records
706
- - `delete` - Delete records
707
-
708
- ### HTTP
709
-
710
- Generic HTTP requests with authentication.
711
-
712
- **Actions**:
713
-
714
- - `request` - Make HTTP request
715
-
716
- **Example**:
717
-
718
- ```yaml
719
- action: http.request
720
- inputs:
721
- method: POST
722
- url: https://api.example.com/endpoint
723
- headers:
724
- Authorization: 'Bearer ${API_TOKEN}'
725
- body:
726
- key: value
727
- ```
728
-
729
- ### Twilio
730
-
731
- SMS, voice calls, WhatsApp messaging, and phone number management.
732
-
733
- **Setup**:
734
-
735
- ```bash
736
- export TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
737
- export TWILIO_AUTH_TOKEN=your-auth-token
738
- ```
739
-
740
- **Actions**:
741
-
742
- - `sendSMS` - Send SMS message
743
- - `makeCall` - Make phone call
744
- - `sendWhatsApp` - Send WhatsApp message
745
- - `listMessages` - List sent/received messages
746
- - `sendVerification` - Send verification code
747
-
748
- **Example**:
749
-
750
- ```yaml
751
- action: twilio.sendSMS
752
- inputs:
753
- to: '+1234567890'
754
- from: '+0987654321'
755
- body: 'Your verification code is 123456'
756
- ```
757
-
758
- ### SendGrid
759
-
760
- Transactional email delivery service.
761
-
762
- **Setup**:
763
-
764
- ```bash
765
- export SENDGRID_API_KEY=SG.your-api-key
766
- ```
767
-
768
- **Actions**:
769
-
770
- - `sendEmail` - Send single email
771
- - `sendMultiple` - Send multiple emails
772
-
773
- **Example**:
774
-
775
- ```yaml
776
- action: sendgrid.sendEmail
777
- inputs:
778
- to: 'user@example.com'
779
- from: 'noreply@yourapp.com'
780
- subject: 'Welcome!'
781
- html: '<h1>Welcome to our service!</h1>'
782
- ```
783
-
784
- ### Shopify
785
-
786
- E-commerce platform for online stores.
787
-
788
- **Setup**:
789
-
790
- ```bash
791
- export SHOPIFY_SHOP=your-store.myshopify.com
792
- export SHOPIFY_ACCESS_TOKEN=shpat_your-token
793
- ```
794
-
795
- **Actions**:
796
-
797
- - `getProducts` - List products
798
- - `createProduct` - Create product
799
- - `createOrder` - Create order
800
- - `createCustomer` - Create customer
801
- - `updateInventoryLevel` - Update inventory
802
-
803
- **Example**:
804
-
805
- ```yaml
806
- action: shopify.createProduct
807
- inputs:
808
- title: 'New Product'
809
- body_html: '<p>Product description</p>'
810
- vendor: 'Your Brand'
811
- variants:
812
- - price: '29.99'
813
- sku: 'PROD-001'
814
- ```
815
-
816
- ### Zendesk
817
-
818
- Customer support ticketing platform.
819
-
820
- **Setup**:
821
-
822
- ```bash
823
- export ZENDESK_SUBDOMAIN=your-company
824
- export ZENDESK_EMAIL=support@yourcompany.com
825
- export ZENDESK_TOKEN=your-api-token
826
- ```
827
-
828
- **Actions**:
829
-
830
- - `createTicket` - Create support ticket
831
- - `updateTicket` - Update ticket
832
- - `addComment` - Add comment to ticket
833
- - `createUser` - Create user
834
- - `search` - Search tickets/users
835
-
836
- **Example**:
837
-
838
- ```yaml
839
- action: zendesk.createTicket
840
- inputs:
841
- subject: 'Login Issue'
842
- comment:
843
- body: 'User cannot log in to account'
844
- priority: 'high'
845
- ```
846
-
847
- ### Mailchimp
848
-
849
- Email marketing automation platform.
850
-
851
- **Setup**:
852
-
853
- ```bash
854
- export MAILCHIMP_API_KEY=your-api-key
855
- export MAILCHIMP_SERVER=us1
856
- ```
857
-
858
- **Actions**:
859
-
860
- - `getLists` - Get mailing lists
861
- - `addMember` - Add member to list
862
- - `createCampaign` - Create email campaign
863
- - `sendCampaign` - Send campaign
864
- - `addMemberTags` - Add tags to member
865
-
866
- **Example**:
867
-
868
- ```yaml
869
- action: mailchimp.addMember
870
- inputs:
871
- email_address: 'user@example.com'
872
- status: 'subscribed'
873
- merge_fields:
874
- FNAME: 'John'
875
- LNAME: 'Doe'
876
- ```
877
-
878
- ### Asana
879
-
880
- Task and project management platform.
881
-
882
- **Setup**:
883
-
884
- ```bash
885
- export ASANA_ACCESS_TOKEN=your-personal-access-token
886
- ```
887
-
888
- **Actions**:
889
-
890
- - `createTask` - Create task
891
- - `updateTask` - Update task
892
- - `getTasksInProject` - Get project tasks
893
- - `createProject` - Create project
894
- - `addComment` - Add comment to task
895
-
896
- **Example**:
897
-
898
- ```yaml
899
- action: asana.createTask
900
- inputs:
901
- name: 'Implement new feature'
902
- notes: 'Add user authentication'
903
- projects: ['project-gid-123']
904
- due_on: '2026-02-01'
905
- ```
906
-
907
- ### Trello
908
-
909
- Visual project management with boards and cards.
910
-
911
- **Setup**:
912
-
913
- ```bash
914
- export TRELLO_API_KEY=your-api-key
915
- export TRELLO_TOKEN=your-token
916
- ```
917
-
918
- **Actions**:
919
-
920
- - `createCard` - Create card
921
- - `updateCard` - Update card
922
- - `createList` - Create list
923
- - `addCommentToCard` - Add comment
924
- - `addChecklistToCard` - Add checklist
925
-
926
- **Example**:
927
-
928
- ```yaml
929
- action: trello.createCard
930
- inputs:
931
- name: 'New Task'
932
- desc: 'Task description'
933
- idList: 'list-id-123'
934
- due: '2026-02-01'
935
- ```
936
-
937
- ### Dropbox
938
-
939
- Cloud file storage and collaboration.
940
-
941
- **Setup**:
942
-
943
- ```bash
944
- export DROPBOX_ACCESS_TOKEN=your-access-token
945
- ```
946
-
947
- **Actions**:
948
-
949
- - `uploadFile` - Upload file
950
- - `downloadFile` - Download file
951
- - `listFolder` - List folder contents
952
- - `createFolder` - Create folder
953
- - `createSharedLink` - Create shared link
954
-
955
- **Example**:
956
-
957
- ```yaml
958
- action: dropbox.uploadFile
959
- inputs:
960
- path: '/documents/report.pdf'
961
- contents: '${file_contents}'
962
- mode: 'overwrite'
963
- ```
964
-
965
- ### AWS S3
966
-
967
- Amazon Simple Storage Service for object storage.
968
-
969
- **Setup**:
970
-
971
- ```bash
972
- export AWS_REGION=us-east-1
973
- export AWS_ACCESS_KEY_ID=your-access-key
974
- export AWS_SECRET_ACCESS_KEY=your-secret-key
975
- ```
976
-
977
- **Actions**:
978
-
979
- - `uploadObject` - Upload object
980
- - `getObject` - Get object
981
- - `listObjects` - List bucket objects
982
- - `deleteObject` - Delete object
983
- - `createBucket` - Create bucket
984
-
985
- **Example**:
986
-
987
- ```yaml
988
- action: aws-s3.uploadObject
989
- inputs:
990
- bucket: 'my-bucket'
991
- key: 'uploads/file.txt'
992
- body: 'File contents'
993
- contentType: 'text/plain'
994
- ```
995
-
996
- ## AI Agent Adapters
997
-
998
- ### Ollama
999
-
1000
- Run local LLMs via Ollama.
1001
-
1002
- **Setup**:
1003
-
1004
- ```bash
1005
- export OLLAMA_BASE_URL=http://localhost:11434
1006
- ```
1007
-
1008
- **Example**:
1009
-
1010
- ```yaml
1011
- tools:
1012
- ollama:
1013
- adapter: ollama
1014
-
1015
- steps:
1016
- - action: ollama.generate
1017
- inputs:
1018
- model: llama2
1019
- prompt: 'Explain quantum computing'
1020
- ```
1021
-
1022
- **Production Examples:**
1023
- - [doc-maintenance](https://github.com/marktoflow/marktoflow/tree/main/examples/doc-maintenance) - Smart documentation updates with Ollama
1024
-
1025
- ### Claude Agent
1026
-
1027
- Anthropic Claude Agent SDK integration with agentic workflows.
1028
-
1029
- **Setup**:
1030
-
1031
- ```bash
1032
- export ANTHROPIC_API_KEY=sk-ant-your-key
1033
- ```
1034
-
1035
- **Features**:
1036
-
1037
- - Multi-turn conversations with memory
1038
- - Tool calling and custom tools
1039
- - Streaming responses
1040
- - Extended thinking mode
1041
-
1042
- **Example**:
1043
-
1044
- ```yaml
1045
- tools:
1046
- claude:
1047
- adapter: claude-agent
1048
- config:
1049
- model: claude-3-5-sonnet-20241022
1050
-
1051
- steps:
1052
- - action: claude.send
1053
- inputs:
1054
- prompt: 'Analyze this codebase'
1055
- tools:
1056
- - name: read_file
1057
- description: Read file contents
1058
- output_variable: analysis
1059
- ```
1060
-
1061
- ### Claude Code
1062
-
1063
- Anthropic Claude Code CLI integration.
1064
-
1065
- **Setup**:
1066
-
1067
- ```bash
1068
- # Install Claude Code CLI
1069
- # Follow: https://github.com/anthropics/claude-code
1070
-
1071
- export ANTHROPIC_API_KEY=sk-ant-your-key
1072
- ```
1073
-
1074
- **Features**:
1075
-
1076
- - File-based context awareness
1077
- - Native MCP server integration
1078
- - Extended reasoning capabilities
1079
-
1080
- ### OpenAI Codex
1081
-
1082
- OpenAI Codex SDK integration with workflow execution capabilities.
1083
-
1084
- **Setup**:
1085
-
1086
- ```bash
1087
- # Authenticate via Codex CLI
1088
- # Follow OpenAI Codex documentation for setup
1089
- ```
1090
-
1091
- **Features**:
1092
-
1093
- - Code generation and analysis
1094
- - Function calling support
1095
- - Streaming responses
1096
- - Sandboxed execution environment
1097
-
1098
- **Example**:
1099
-
1100
- ```yaml
1101
- tools:
1102
- codex:
1103
- adapter: openai-codex
1104
- config:
1105
- model: codex-latest
1106
-
1107
- steps:
1108
- - action: codex.complete
1109
- inputs:
1110
- prompt: 'Write a function to sort an array'
1111
- output_variable: code
1112
- ```
1113
-
1114
- ### OpenCode
1115
-
1116
- OpenCode AI integration supporting 75+ backends.
1117
-
1118
- **Setup**:
1119
-
1120
- ```bash
1121
- # Configure OpenCode
1122
- opencode /connect
1123
- ```
1124
-
1125
- **Features**:
1126
-
1127
- - GitHub Copilot backend (free with subscription)
1128
- - Ollama for local models
1129
- - Multiple cloud providers (GPT-4, Claude, Gemini)
1130
- - CLI and server modes
1131
-
1132
- **Example**:
1133
-
1134
- ```yaml
1135
- tools:
1136
- opencode:
1137
- adapter: opencode
1138
- config:
1139
- backend: copilot # or ollama, claude, gpt-4, etc.
1140
-
1141
- steps:
1142
- - action: opencode.complete
1143
- inputs:
1144
- prompt: 'Explain async/await in JavaScript'
1145
- output_variable: explanation
1146
- ```
1147
-
1148
- ### GitHub Copilot
1149
-
1150
- GitHub Copilot CLI integration with advanced agentic capabilities.
1151
-
1152
- **Requirements**:
1153
-
1154
- - GitHub Copilot subscription (Individual, Business, or Enterprise)
1155
- - Copilot CLI installed: [Installation Guide](https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli)
1156
-
1157
- **Installation**:
1158
-
1159
- ```bash
1160
- # Install Copilot CLI
1161
- npm install -g @githubnext/github-copilot-cli
1162
-
1163
- # Verify installation
1164
- copilot --version
1165
- ```
1166
-
1167
- **Authentication**:
1168
-
1169
- The GitHub Copilot adapter uses **OAuth authentication** managed by the Copilot CLI, not API keys. Authentication is a one-time setup:
1170
-
1171
- ```bash
1172
- # Authenticate with GitHub via OAuth
1173
- copilot auth login
1174
- ```
1175
-
1176
- This command will:
1177
-
1178
- 1. Open your browser to GitHub's OAuth consent page
1179
- 2. Prompt you to authorize GitHub Copilot CLI
1180
- 3. Save the OAuth token locally in `~/.copilot/`
1181
-
1182
- **No API keys are required** - the adapter automatically uses the CLI's stored OAuth token. Your GitHub Copilot subscription determines your access level.
1183
-
1184
- **Verify Authentication**:
1185
-
1186
- ```bash
1187
- # Test CLI connectivity
1188
- copilot --version
1189
- copilot ping
1190
- ```
1191
-
1192
- **Basic Usage**:
1193
-
1194
- ```yaml
1195
- tools:
1196
- copilot:
1197
- adapter: github-copilot
1198
- config:
1199
- model: gpt-4.1 # Optional, defaults to gpt-4.1
1200
-
1201
- steps:
1202
- - action: copilot.send
1203
- inputs:
1204
- prompt: 'Explain TypeScript generics'
1205
- output_variable: explanation
1206
- ```
1207
-
1208
- **Streaming Responses**:
1209
-
1210
- ```yaml
1211
- steps:
1212
- - action: copilot.stream
1213
- inputs:
1214
- prompt: 'Write a function to calculate fibonacci'
1215
- onChunk: '${print_chunk}' # Callback for each chunk
1216
- output_variable: code
1217
- ```
1218
-
1219
- **With File Attachments**:
1220
-
1221
- ```yaml
1222
- steps:
1223
- - action: copilot.send
1224
- inputs:
1225
- prompt: 'Review this code for security issues'
1226
- attachments:
1227
- - type: file
1228
- path: ./src/app.ts
1229
- displayName: app.ts
1230
- output_variable: review
1231
- ```
1232
-
1233
- **System Message Customization**:
1234
-
1235
- ```yaml
1236
- steps:
1237
- - action: copilot.send
1238
- inputs:
1239
- prompt: 'Help me optimize this function'
1240
- systemMessage: |
1241
- You are a performance optimization expert.
1242
- Focus on time and space complexity.
1243
- output_variable: suggestions
1244
- ```
1245
-
1246
- **External CLI Server**:
1247
-
1248
- For development or shared CLI instances:
1249
-
1250
- ```bash
1251
- # Terminal 1: Start CLI in server mode
1252
- copilot --server --port 4321
1253
-
1254
- # Terminal 2: Use in workflow
1255
- ```
1256
-
1257
- ```yaml
1258
- tools:
1259
- copilot:
1260
- adapter: github-copilot
1261
- auth:
1262
- cli_url: localhost:4321 # Connect to external server
1263
- ```
1264
-
1265
- **Configuration Options**:
1266
-
1267
- - `model`: Model to use (gpt-4.1, gpt-5, claude-sonnet-4.5, etc.)
1268
- - `cli_path`: Custom path to CLI binary (default: 'copilot')
1269
- - `cli_url`: External CLI server URL (mutually exclusive with cli_path)
1270
- - `autoStart`: Auto-start CLI (default: true)
1271
- - `logLevel`: Log verbosity (info, debug, error, warning, none, all)
1272
-
1273
- **Troubleshooting Authentication**:
1274
-
1275
- If you encounter authentication issues:
1276
-
1277
- ```bash
1278
- # Check if authenticated
1279
- copilot ping
1280
-
1281
- # Re-authenticate if needed
1282
- copilot auth logout
1283
- copilot auth login
1284
-
1285
- # Verify subscription status at https://github.com/settings/copilot
1286
- ```
1287
-
1288
- **Note**: The adapter does **not** require or use API keys. All authentication is handled through the CLI's OAuth flow.
1289
-
1290
- **Advanced Features** (See [COPILOT_SDK_ANALYSIS.md](../../docs/COPILOT_SDK_ANALYSIS.md)):
1291
-
1292
- - Custom tool definitions
1293
- - MCP server integration
1294
- - Session persistence
1295
- - Infinite sessions (automatic context compaction)
1296
- - Multi-turn conversations
1297
-
1298
- **Production Examples:**
1299
- - [copilot-code-review](https://github.com/marktoflow/marktoflow/tree/main/examples/copilot-code-review) - Advanced PR review with GitHub Copilot
1300
-
1301
- ## Advanced Usage
1302
-
1303
- ### Custom Integration
1304
-
1305
- Create your own integration:
1306
-
1307
- ```typescript
1308
- import type { SDKInitializer } from '@marktoflow/core';
1309
-
1310
- export const MyServiceInitializer: SDKInitializer = {
1311
- name: 'myservice',
1312
- async initialize(config) {
1313
- return new MyServiceClient(config.auth.apiKey);
1314
- },
1315
- actions: {
1316
- doSomething: async (sdk, inputs) => {
1317
- return sdk.doSomething(inputs);
1318
- },
1319
- },
1320
- };
1321
- ```
1322
-
1323
- ### Error Handling
1324
-
1325
- All integrations support automatic retry and error handling:
1326
-
1327
- ```yaml
1328
- steps:
1329
- - action: slack.chat.postMessage
1330
- inputs:
1331
- channel: '#general'
1332
- text: 'Message'
1333
- retry:
1334
- max_attempts: 3
1335
- backoff: exponential
1336
- initial_delay: 1000
1337
- on_error: continue # or 'fail', 'retry'
1338
- ```
1339
-
1340
- ## OAuth Setup Guides
1341
-
1342
- For Gmail and Outlook, use the CLI to set up OAuth:
1343
-
1344
- ```bash
1345
- # Gmail OAuth
1346
- npx @marktoflow/cli@alpha connect gmail
1347
-
1348
- # Outlook OAuth
1349
- npx @marktoflow/cli@alpha connect outlook
1350
- ```
1351
-
1352
- ## Testing
1353
-
1354
- ```bash
1355
- npm test
1356
- ```
115
+ For per-service setup details (environment variables, OAuth, examples), see the [full documentation](https://github.com/marktoflow/marktoflow#integrations).
1357
116
 
1358
- ## Links
117
+ ## Contributing
1359
118
 
1360
- - [Main Repository](https://github.com/marktoflow/marktoflow)
1361
- - [Documentation](https://github.com/marktoflow/marktoflow#readme)
1362
- - [Core Package](@marktoflow/core)
1363
- - [CLI Package](@marktoflow/cli)
119
+ See the [contributing guide](../../CONTRIBUTING.md).
1364
120
 
1365
121
  ## License
1366
122