@marktoflow/integrations 2.0.0-alpha.7 → 2.0.0-alpha.9

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 (130) hide show
  1. package/README.md +738 -9
  2. package/dist/adapters/claude-agent-hooks.d.ts +176 -0
  3. package/dist/adapters/claude-agent-hooks.d.ts.map +1 -0
  4. package/dist/adapters/claude-agent-hooks.js +339 -0
  5. package/dist/adapters/claude-agent-hooks.js.map +1 -0
  6. package/dist/adapters/claude-agent-types.d.ts +426 -0
  7. package/dist/adapters/claude-agent-types.d.ts.map +1 -0
  8. package/dist/adapters/claude-agent-types.js +62 -0
  9. package/dist/adapters/claude-agent-types.js.map +1 -0
  10. package/dist/adapters/claude-agent-workflow.d.ts +393 -0
  11. package/dist/adapters/claude-agent-workflow.d.ts.map +1 -0
  12. package/dist/adapters/claude-agent-workflow.js +445 -0
  13. package/dist/adapters/claude-agent-workflow.js.map +1 -0
  14. package/dist/adapters/claude-agent.d.ts +171 -0
  15. package/dist/adapters/claude-agent.d.ts.map +1 -0
  16. package/dist/adapters/claude-agent.js +468 -0
  17. package/dist/adapters/claude-agent.js.map +1 -0
  18. package/dist/adapters/codex-types.d.ts +463 -0
  19. package/dist/adapters/codex-types.d.ts.map +1 -0
  20. package/dist/adapters/codex-types.js +53 -0
  21. package/dist/adapters/codex-types.js.map +1 -0
  22. package/dist/adapters/codex-workflow.d.ts +414 -0
  23. package/dist/adapters/codex-workflow.d.ts.map +1 -0
  24. package/dist/adapters/codex-workflow.js +470 -0
  25. package/dist/adapters/codex-workflow.js.map +1 -0
  26. package/dist/adapters/codex.d.ts +136 -0
  27. package/dist/adapters/codex.d.ts.map +1 -0
  28. package/dist/adapters/codex.js +390 -0
  29. package/dist/adapters/codex.js.map +1 -0
  30. package/dist/adapters/github-copilot-types.d.ts +1012 -0
  31. package/dist/adapters/github-copilot-types.d.ts.map +1 -0
  32. package/dist/adapters/github-copilot-types.js +80 -0
  33. package/dist/adapters/github-copilot-types.js.map +1 -0
  34. package/dist/adapters/github-copilot-workflow.d.ts +462 -0
  35. package/dist/adapters/github-copilot-workflow.d.ts.map +1 -0
  36. package/dist/adapters/github-copilot-workflow.js +473 -0
  37. package/dist/adapters/github-copilot-workflow.js.map +1 -0
  38. package/dist/adapters/github-copilot.d.ts +221 -37
  39. package/dist/adapters/github-copilot.d.ts.map +1 -1
  40. package/dist/adapters/github-copilot.js +336 -58
  41. package/dist/adapters/github-copilot.js.map +1 -1
  42. package/dist/adapters/opencode.d.ts +2 -0
  43. package/dist/adapters/opencode.d.ts.map +1 -1
  44. package/dist/adapters/opencode.js +6 -0
  45. package/dist/adapters/opencode.js.map +1 -1
  46. package/dist/index.d.ts +21 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +59 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/services/ai-browser.d.ts +112 -0
  51. package/dist/services/ai-browser.d.ts.map +1 -0
  52. package/dist/services/ai-browser.js +363 -0
  53. package/dist/services/ai-browser.js.map +1 -0
  54. package/dist/services/asana.d.ts +159 -0
  55. package/dist/services/asana.d.ts.map +1 -0
  56. package/dist/services/asana.js +196 -0
  57. package/dist/services/asana.js.map +1 -0
  58. package/dist/services/aws-s3.d.ts +89 -0
  59. package/dist/services/aws-s3.d.ts.map +1 -0
  60. package/dist/services/aws-s3.js +154 -0
  61. package/dist/services/aws-s3.js.map +1 -0
  62. package/dist/services/dropbox.d.ts +134 -0
  63. package/dist/services/dropbox.d.ts.map +1 -0
  64. package/dist/services/dropbox.js +190 -0
  65. package/dist/services/dropbox.js.map +1 -0
  66. package/dist/services/mailchimp.d.ts +169 -0
  67. package/dist/services/mailchimp.d.ts.map +1 -0
  68. package/dist/services/mailchimp.js +180 -0
  69. package/dist/services/mailchimp.js.map +1 -0
  70. package/dist/services/playwright.d.ts +678 -0
  71. package/dist/services/playwright.d.ts.map +1 -0
  72. package/dist/services/playwright.js +1141 -0
  73. package/dist/services/playwright.js.map +1 -0
  74. package/dist/services/sendgrid.d.ts +43 -0
  75. package/dist/services/sendgrid.d.ts.map +1 -0
  76. package/dist/services/sendgrid.js +87 -0
  77. package/dist/services/sendgrid.js.map +1 -0
  78. package/dist/services/shopify.d.ts +160 -0
  79. package/dist/services/shopify.d.ts.map +1 -0
  80. package/dist/services/shopify.js +166 -0
  81. package/dist/services/shopify.js.map +1 -0
  82. package/dist/services/stripe.d.ts +275 -0
  83. package/dist/services/stripe.d.ts.map +1 -0
  84. package/dist/services/stripe.js +229 -0
  85. package/dist/services/stripe.js.map +1 -0
  86. package/dist/services/teams.d.ts +224 -0
  87. package/dist/services/teams.d.ts.map +1 -0
  88. package/dist/services/teams.js +229 -0
  89. package/dist/services/teams.js.map +1 -0
  90. package/dist/services/trello.d.ts +160 -0
  91. package/dist/services/trello.d.ts.map +1 -0
  92. package/dist/services/trello.js +194 -0
  93. package/dist/services/trello.js.map +1 -0
  94. package/dist/services/twilio.d.ts +126 -0
  95. package/dist/services/twilio.d.ts.map +1 -0
  96. package/dist/services/twilio.js +153 -0
  97. package/dist/services/twilio.js.map +1 -0
  98. package/dist/services/zendesk.d.ts +134 -0
  99. package/dist/services/zendesk.d.ts.map +1 -0
  100. package/dist/services/zendesk.js +148 -0
  101. package/dist/services/zendesk.js.map +1 -0
  102. package/package.json +26 -4
  103. package/dist/claude-code.d.ts +0 -16
  104. package/dist/claude-code.d.ts.map +0 -1
  105. package/dist/claude-code.js +0 -56
  106. package/dist/claude-code.js.map +0 -1
  107. package/dist/github.d.ts +0 -3
  108. package/dist/github.d.ts.map +0 -1
  109. package/dist/github.js +0 -13
  110. package/dist/github.js.map +0 -1
  111. package/dist/jira.d.ts +0 -3
  112. package/dist/jira.d.ts.map +0 -1
  113. package/dist/jira.js +0 -21
  114. package/dist/jira.js.map +0 -1
  115. package/dist/ollama.d.ts +0 -3
  116. package/dist/ollama.d.ts.map +0 -1
  117. package/dist/ollama.js +0 -9
  118. package/dist/ollama.js.map +0 -1
  119. package/dist/opencode.d.ts +0 -19
  120. package/dist/opencode.d.ts.map +0 -1
  121. package/dist/opencode.js +0 -104
  122. package/dist/opencode.js.map +0 -1
  123. package/dist/script.d.ts +0 -3
  124. package/dist/script.d.ts.map +0 -1
  125. package/dist/script.js +0 -21
  126. package/dist/script.js.map +0 -1
  127. package/dist/slack.d.ts +0 -3
  128. package/dist/slack.d.ts.map +0 -1
  129. package/dist/slack.js +0 -11
  130. package/dist/slack.js.map +0 -1
@@ -0,0 +1,390 @@
1
+ /**
2
+ * OpenAI Codex SDK Adapter for marktoflow
3
+ *
4
+ * This adapter provides integration with the OpenAI Codex SDK,
5
+ * enabling AI-powered coding workflows with file changes, command execution,
6
+ * web search, structured output, and streaming capabilities.
7
+ */
8
+ import { Codex, } from '@openai/codex-sdk';
9
+ // ============================================================================
10
+ // Codex Client
11
+ // ============================================================================
12
+ /**
13
+ * Client for interacting with OpenAI Codex via the SDK
14
+ *
15
+ * Provides multiple interfaces for different use cases:
16
+ * - send(): Simple prompt-response
17
+ * - stream(): Streaming responses with callbacks
18
+ * - sendWithThread(): Full thread control
19
+ * - resumeThread(): Continue previous conversations
20
+ */
21
+ export class CodexClient {
22
+ codex;
23
+ defaultThreadOptions;
24
+ activeThread = null;
25
+ lastThreadId = null;
26
+ constructor(config = {}) {
27
+ this.codex = new Codex({
28
+ codexPathOverride: config.codexPathOverride,
29
+ baseUrl: config.baseUrl,
30
+ apiKey: config.apiKey,
31
+ env: config.env,
32
+ });
33
+ this.defaultThreadOptions = config.defaultThreadOptions || {
34
+ skipGitRepoCheck: true,
35
+ sandboxMode: 'workspace-write',
36
+ };
37
+ }
38
+ // ============================================================================
39
+ // Simple Interface
40
+ // ============================================================================
41
+ /**
42
+ * Send a message and wait for the complete response
43
+ */
44
+ async send(inputs) {
45
+ const thread = this.codex.startThread(this.buildThreadOptions(inputs.threadOptions));
46
+ this.activeThread = thread;
47
+ const turnOptions = {};
48
+ if (inputs.turnOptions?.outputSchema) {
49
+ turnOptions.outputSchema = inputs.turnOptions.outputSchema;
50
+ }
51
+ if (inputs.turnOptions?.signal) {
52
+ turnOptions.signal = inputs.turnOptions.signal;
53
+ }
54
+ const result = await thread.run(inputs.prompt, turnOptions);
55
+ this.lastThreadId = thread.id;
56
+ // Extract the final response text
57
+ const agentMessage = result.items.find((item) => item.type === 'agent_message');
58
+ return agentMessage?.text || result.finalResponse || '';
59
+ }
60
+ /**
61
+ * Send a message and stream the response
62
+ */
63
+ async stream(inputs) {
64
+ const thread = this.codex.startThread(this.buildThreadOptions(inputs.threadOptions));
65
+ this.activeThread = thread;
66
+ const turnOptions = {};
67
+ if (inputs.turnOptions?.outputSchema) {
68
+ turnOptions.outputSchema = inputs.turnOptions.outputSchema;
69
+ }
70
+ if (inputs.turnOptions?.signal) {
71
+ turnOptions.signal = inputs.turnOptions.signal;
72
+ }
73
+ const streamResult = await thread.runStreamed(inputs.prompt, turnOptions);
74
+ const items = [];
75
+ let finalResponse = '';
76
+ let usage = null;
77
+ for await (const event of streamResult.events) {
78
+ // Call event callback if provided
79
+ if (inputs.onEvent) {
80
+ await Promise.resolve(inputs.onEvent('', event));
81
+ }
82
+ // Process events
83
+ if (event.type === 'thread.started') {
84
+ this.lastThreadId = event.thread_id;
85
+ }
86
+ else if (event.type === 'item.completed') {
87
+ items.push(event.item);
88
+ // Stream text chunks for agent messages
89
+ if (event.item.type === 'agent_message') {
90
+ const text = event.item.text;
91
+ if (inputs.onChunk) {
92
+ inputs.onChunk(text);
93
+ }
94
+ finalResponse = text;
95
+ }
96
+ }
97
+ else if (event.type === 'turn.completed') {
98
+ usage = event.usage;
99
+ }
100
+ else if (event.type === 'error') {
101
+ throw new Error(event.message);
102
+ }
103
+ else if (event.type === 'turn.failed') {
104
+ throw new Error(event.error.message);
105
+ }
106
+ }
107
+ const result = {
108
+ content: finalResponse,
109
+ threadId: thread.id,
110
+ items,
111
+ usage,
112
+ fileChanges: items.filter((item) => item.type === 'file_change'),
113
+ commands: items.filter((item) => item.type === 'command_execution'),
114
+ };
115
+ if (inputs.onComplete) {
116
+ inputs.onComplete(result);
117
+ }
118
+ return result;
119
+ }
120
+ // ============================================================================
121
+ // Full Thread Interface
122
+ // ============================================================================
123
+ /**
124
+ * Send a message with full thread configuration
125
+ */
126
+ async sendWithThread(message, threadOptions, turnOptions) {
127
+ const thread = this.codex.startThread(this.buildThreadOptions(threadOptions));
128
+ this.activeThread = thread;
129
+ const sdkTurnOptions = {};
130
+ if (turnOptions?.outputSchema) {
131
+ sdkTurnOptions.outputSchema = turnOptions.outputSchema;
132
+ }
133
+ if (turnOptions?.signal) {
134
+ sdkTurnOptions.signal = turnOptions.signal;
135
+ }
136
+ const result = await thread.run(message, sdkTurnOptions);
137
+ this.lastThreadId = thread.id;
138
+ const agentMessage = result.items.find((item) => item.type === 'agent_message');
139
+ return {
140
+ content: agentMessage?.text || result.finalResponse || '',
141
+ threadId: thread.id,
142
+ items: result.items,
143
+ usage: result.usage,
144
+ fileChanges: result.items.filter((item) => item.type === 'file_change'),
145
+ commands: result.items.filter((item) => item.type === 'command_execution'),
146
+ };
147
+ }
148
+ /**
149
+ * Stream with full thread configuration
150
+ */
151
+ async streamWithThread(message, callback, threadOptions, turnOptions) {
152
+ return this.stream({
153
+ prompt: message,
154
+ threadOptions,
155
+ turnOptions,
156
+ onEvent: callback,
157
+ });
158
+ }
159
+ // ============================================================================
160
+ // Thread Management
161
+ // ============================================================================
162
+ /**
163
+ * Resume a previous thread and send a message
164
+ */
165
+ async resumeAndSend(threadId, message, threadOptions, turnOptions) {
166
+ const thread = this.codex.resumeThread(threadId, this.buildThreadOptions(threadOptions));
167
+ this.activeThread = thread;
168
+ const sdkTurnOptions = {};
169
+ if (turnOptions?.outputSchema) {
170
+ sdkTurnOptions.outputSchema = turnOptions.outputSchema;
171
+ }
172
+ if (turnOptions?.signal) {
173
+ sdkTurnOptions.signal = turnOptions.signal;
174
+ }
175
+ const result = await thread.run(message, sdkTurnOptions);
176
+ this.lastThreadId = thread.id;
177
+ const agentMessage = result.items.find((item) => item.type === 'agent_message');
178
+ return {
179
+ content: agentMessage?.text || result.finalResponse || '',
180
+ threadId: thread.id,
181
+ items: result.items,
182
+ usage: result.usage,
183
+ fileChanges: result.items.filter((item) => item.type === 'file_change'),
184
+ commands: result.items.filter((item) => item.type === 'command_execution'),
185
+ };
186
+ }
187
+ /**
188
+ * Resume a thread and stream the response
189
+ */
190
+ async resumeAndStream(threadId, message, callback, threadOptions, turnOptions) {
191
+ const thread = this.codex.resumeThread(threadId, this.buildThreadOptions(threadOptions));
192
+ this.activeThread = thread;
193
+ const sdkTurnOptions = {};
194
+ if (turnOptions?.outputSchema) {
195
+ sdkTurnOptions.outputSchema = turnOptions.outputSchema;
196
+ }
197
+ if (turnOptions?.signal) {
198
+ sdkTurnOptions.signal = turnOptions.signal;
199
+ }
200
+ const streamResult = await thread.runStreamed(message, sdkTurnOptions);
201
+ const items = [];
202
+ let finalResponse = '';
203
+ let usage = null;
204
+ for await (const event of streamResult.events) {
205
+ await Promise.resolve(callback('', event));
206
+ if (event.type === 'thread.started') {
207
+ this.lastThreadId = event.thread_id;
208
+ }
209
+ else if (event.type === 'item.completed') {
210
+ items.push(event.item);
211
+ if (event.item.type === 'agent_message') {
212
+ finalResponse = event.item.text;
213
+ }
214
+ }
215
+ else if (event.type === 'turn.completed') {
216
+ usage = event.usage;
217
+ }
218
+ else if (event.type === 'error') {
219
+ throw new Error(event.message);
220
+ }
221
+ else if (event.type === 'turn.failed') {
222
+ throw new Error(event.error.message);
223
+ }
224
+ }
225
+ return {
226
+ content: finalResponse,
227
+ threadId: thread.id,
228
+ items,
229
+ usage,
230
+ fileChanges: items.filter((item) => item.type === 'file_change'),
231
+ commands: items.filter((item) => item.type === 'command_execution'),
232
+ };
233
+ }
234
+ /**
235
+ * Create a new thread for multi-turn conversations
236
+ */
237
+ startThread(options) {
238
+ const thread = this.codex.startThread(this.buildThreadOptions(options));
239
+ this.activeThread = thread;
240
+ return thread;
241
+ }
242
+ /**
243
+ * Resume an existing thread
244
+ */
245
+ resumeThread(threadId, options) {
246
+ const thread = this.codex.resumeThread(threadId, this.buildThreadOptions(options));
247
+ this.activeThread = thread;
248
+ return thread;
249
+ }
250
+ /**
251
+ * Get the last thread ID
252
+ */
253
+ getLastThreadId() {
254
+ return this.lastThreadId;
255
+ }
256
+ /**
257
+ * Get the active thread
258
+ */
259
+ getActiveThread() {
260
+ return this.activeThread;
261
+ }
262
+ // ============================================================================
263
+ // Structured Output
264
+ // ============================================================================
265
+ /**
266
+ * Send with structured JSON output
267
+ */
268
+ async sendStructured(inputs) {
269
+ const response = await this.send({
270
+ prompt: inputs.prompt,
271
+ threadOptions: inputs.threadOptions,
272
+ turnOptions: {
273
+ outputSchema: inputs.schema,
274
+ },
275
+ });
276
+ try {
277
+ return JSON.parse(response);
278
+ }
279
+ catch {
280
+ throw new Error(`Failed to parse structured output: ${response}`);
281
+ }
282
+ }
283
+ // ============================================================================
284
+ // Specialized Methods
285
+ // ============================================================================
286
+ /**
287
+ * Execute code modifications
288
+ */
289
+ async modifyCode(inputs) {
290
+ return this.sendWithThread(inputs.prompt, {
291
+ workingDirectory: inputs.workingDirectory || process.cwd(),
292
+ additionalDirectories: inputs.additionalDirectories,
293
+ excludeFiles: inputs.excludeFiles,
294
+ modelReasoningEffort: inputs.reasoningEffort || 'medium',
295
+ sandboxMode: 'workspace-write',
296
+ skipGitRepoCheck: true,
297
+ });
298
+ }
299
+ /**
300
+ * Execute shell commands via the agent
301
+ */
302
+ async executeCommands(inputs) {
303
+ return this.sendWithThread(inputs.prompt, {
304
+ workingDirectory: inputs.workingDirectory || process.cwd(),
305
+ approvalPolicy: inputs.approvalPolicy || 'never',
306
+ sandboxMode: 'danger-full-access',
307
+ skipGitRepoCheck: true,
308
+ });
309
+ }
310
+ /**
311
+ * Perform web research
312
+ */
313
+ async webSearch(inputs) {
314
+ return this.sendWithThread(inputs.prompt, {
315
+ webSearchMode: inputs.searchMode || 'live',
316
+ networkAccessEnabled: true,
317
+ skipGitRepoCheck: true,
318
+ });
319
+ }
320
+ /**
321
+ * Analyze code without making changes
322
+ */
323
+ async analyzeCode(inputs) {
324
+ return this.sendWithThread(inputs.prompt, {
325
+ workingDirectory: inputs.workingDirectory || process.cwd(),
326
+ additionalDirectories: inputs.additionalDirectories,
327
+ excludeFiles: inputs.excludeFiles,
328
+ sandboxMode: 'read-only',
329
+ skipGitRepoCheck: true,
330
+ });
331
+ }
332
+ // ============================================================================
333
+ // Private Helpers
334
+ // ============================================================================
335
+ /**
336
+ * Build thread options from configuration
337
+ */
338
+ buildThreadOptions(options) {
339
+ const merged = { ...this.defaultThreadOptions, ...options };
340
+ return {
341
+ model: merged.model,
342
+ sandboxMode: merged.sandboxMode,
343
+ workingDirectory: merged.workingDirectory,
344
+ skipGitRepoCheck: merged.skipGitRepoCheck,
345
+ modelReasoningEffort: merged.modelReasoningEffort,
346
+ networkAccessEnabled: merged.networkAccessEnabled,
347
+ webSearchMode: merged.webSearchMode,
348
+ webSearchEnabled: merged.webSearchEnabled,
349
+ approvalPolicy: merged.approvalPolicy,
350
+ additionalDirectories: merged.additionalDirectories,
351
+ // NOTE: excludeFiles is stored in merged but not passed to SDK yet
352
+ // as the underlying Codex SDK doesn't support it yet
353
+ };
354
+ }
355
+ }
356
+ // ============================================================================
357
+ // SDK Initializer for marktoflow Registry
358
+ // ============================================================================
359
+ /**
360
+ * SDK Initializer for OpenAI Codex
361
+ */
362
+ export const CodexInitializer = {
363
+ async initialize(_module, config) {
364
+ const options = config.options || {};
365
+ const auth = config.auth || {};
366
+ return new CodexClient({
367
+ codexPathOverride: auth['codex_path'] || options['codexPath'],
368
+ baseUrl: auth['base_url'] || options['baseUrl'],
369
+ apiKey: auth['api_key'] || options['apiKey'],
370
+ env: options['env'],
371
+ defaultThreadOptions: {
372
+ model: options['model'],
373
+ workingDirectory: options['workingDirectory'],
374
+ skipGitRepoCheck: options['skipGitRepoCheck'] ?? true,
375
+ sandboxMode: options['sandboxMode'] ||
376
+ 'workspace-write',
377
+ modelReasoningEffort: options['reasoningEffort'],
378
+ webSearchMode: options['webSearchMode'],
379
+ approvalPolicy: options['approvalPolicy'],
380
+ additionalDirectories: options['additionalDirectories'],
381
+ excludeFiles: options['excludeFiles'],
382
+ },
383
+ });
384
+ },
385
+ };
386
+ // ============================================================================
387
+ // Re-export SDK classes for convenience
388
+ // ============================================================================
389
+ export { Codex };
390
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"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"}