@marktoflow/integrations 2.0.0-alpha.3

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 (105) hide show
  1. package/dist/adapters/claude-code.d.ts +16 -0
  2. package/dist/adapters/claude-code.d.ts.map +1 -0
  3. package/dist/adapters/claude-code.js +56 -0
  4. package/dist/adapters/claude-code.js.map +1 -0
  5. package/dist/adapters/ollama.d.ts +3 -0
  6. package/dist/adapters/ollama.d.ts.map +1 -0
  7. package/dist/adapters/ollama.js +9 -0
  8. package/dist/adapters/ollama.js.map +1 -0
  9. package/dist/adapters/opencode.d.ts +21 -0
  10. package/dist/adapters/opencode.d.ts.map +1 -0
  11. package/dist/adapters/opencode.js +119 -0
  12. package/dist/adapters/opencode.js.map +1 -0
  13. package/dist/claude-code.d.ts +16 -0
  14. package/dist/claude-code.d.ts.map +1 -0
  15. package/dist/claude-code.js +56 -0
  16. package/dist/claude-code.js.map +1 -0
  17. package/dist/github.d.ts +3 -0
  18. package/dist/github.d.ts.map +1 -0
  19. package/dist/github.js +13 -0
  20. package/dist/github.js.map +1 -0
  21. package/dist/index.d.ts +21 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +67 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/jira.d.ts +3 -0
  26. package/dist/jira.d.ts.map +1 -0
  27. package/dist/jira.js +21 -0
  28. package/dist/jira.js.map +1 -0
  29. package/dist/ollama.d.ts +3 -0
  30. package/dist/ollama.d.ts.map +1 -0
  31. package/dist/ollama.js +9 -0
  32. package/dist/ollama.js.map +1 -0
  33. package/dist/opencode.d.ts +19 -0
  34. package/dist/opencode.d.ts.map +1 -0
  35. package/dist/opencode.js +104 -0
  36. package/dist/opencode.js.map +1 -0
  37. package/dist/script.d.ts +3 -0
  38. package/dist/script.d.ts.map +1 -0
  39. package/dist/script.js +21 -0
  40. package/dist/script.js.map +1 -0
  41. package/dist/services/airtable.d.ts +145 -0
  42. package/dist/services/airtable.d.ts.map +1 -0
  43. package/dist/services/airtable.js +295 -0
  44. package/dist/services/airtable.js.map +1 -0
  45. package/dist/services/confluence.d.ts +205 -0
  46. package/dist/services/confluence.d.ts.map +1 -0
  47. package/dist/services/confluence.js +356 -0
  48. package/dist/services/confluence.js.map +1 -0
  49. package/dist/services/discord.d.ts +212 -0
  50. package/dist/services/discord.d.ts.map +1 -0
  51. package/dist/services/discord.js +279 -0
  52. package/dist/services/discord.js.map +1 -0
  53. package/dist/services/github.d.ts +3 -0
  54. package/dist/services/github.d.ts.map +1 -0
  55. package/dist/services/github.js +13 -0
  56. package/dist/services/github.js.map +1 -0
  57. package/dist/services/gmail-trigger.d.ts +92 -0
  58. package/dist/services/gmail-trigger.d.ts.map +1 -0
  59. package/dist/services/gmail-trigger.js +172 -0
  60. package/dist/services/gmail-trigger.js.map +1 -0
  61. package/dist/services/gmail.d.ts +116 -0
  62. package/dist/services/gmail.d.ts.map +1 -0
  63. package/dist/services/gmail.js +333 -0
  64. package/dist/services/gmail.js.map +1 -0
  65. package/dist/services/http.d.ts +120 -0
  66. package/dist/services/http.d.ts.map +1 -0
  67. package/dist/services/http.js +284 -0
  68. package/dist/services/http.js.map +1 -0
  69. package/dist/services/jira.d.ts +3 -0
  70. package/dist/services/jira.d.ts.map +1 -0
  71. package/dist/services/jira.js +21 -0
  72. package/dist/services/jira.js.map +1 -0
  73. package/dist/services/linear.d.ts +163 -0
  74. package/dist/services/linear.d.ts.map +1 -0
  75. package/dist/services/linear.js +326 -0
  76. package/dist/services/linear.js.map +1 -0
  77. package/dist/services/notion.d.ts +206 -0
  78. package/dist/services/notion.d.ts.map +1 -0
  79. package/dist/services/notion.js +358 -0
  80. package/dist/services/notion.js.map +1 -0
  81. package/dist/services/outlook-trigger.d.ts +121 -0
  82. package/dist/services/outlook-trigger.d.ts.map +1 -0
  83. package/dist/services/outlook-trigger.js +204 -0
  84. package/dist/services/outlook-trigger.js.map +1 -0
  85. package/dist/services/outlook.d.ts +237 -0
  86. package/dist/services/outlook.d.ts.map +1 -0
  87. package/dist/services/outlook.js +475 -0
  88. package/dist/services/outlook.js.map +1 -0
  89. package/dist/services/slack-socket.d.ts +18 -0
  90. package/dist/services/slack-socket.d.ts.map +1 -0
  91. package/dist/services/slack-socket.js +46 -0
  92. package/dist/services/slack-socket.js.map +1 -0
  93. package/dist/services/slack.d.ts +3 -0
  94. package/dist/services/slack.d.ts.map +1 -0
  95. package/dist/services/slack.js +11 -0
  96. package/dist/services/slack.js.map +1 -0
  97. package/dist/slack.d.ts +3 -0
  98. package/dist/slack.d.ts.map +1 -0
  99. package/dist/slack.js +11 -0
  100. package/dist/slack.js.map +1 -0
  101. package/dist/tools/script.d.ts +3 -0
  102. package/dist/tools/script.d.ts.map +1 -0
  103. package/dist/tools/script.js +21 -0
  104. package/dist/tools/script.js.map +1 -0
  105. package/package.json +57 -0
@@ -0,0 +1,326 @@
1
+ /**
2
+ * Linear Integration
3
+ *
4
+ * Modern issue tracking for development teams.
5
+ * API Docs: https://developers.linear.app/docs/graphql/working-with-the-graphql-api
6
+ */
7
+ const LINEAR_API_URL = 'https://api.linear.app/graphql';
8
+ /**
9
+ * Linear GraphQL client for workflow integration
10
+ */
11
+ export class LinearClient {
12
+ apiKey;
13
+ constructor(apiKey) {
14
+ this.apiKey = apiKey;
15
+ }
16
+ async query(query, variables) {
17
+ const response = await fetch(LINEAR_API_URL, {
18
+ method: 'POST',
19
+ headers: {
20
+ 'Content-Type': 'application/json',
21
+ Authorization: this.apiKey,
22
+ },
23
+ body: JSON.stringify({ query, variables }),
24
+ });
25
+ if (!response.ok) {
26
+ throw new Error(`Linear API error: ${response.status} ${response.statusText}`);
27
+ }
28
+ const result = (await response.json());
29
+ if (result.errors?.length) {
30
+ throw new Error(`Linear GraphQL error: ${result.errors.map((e) => e.message).join(', ')}`);
31
+ }
32
+ return result.data;
33
+ }
34
+ /**
35
+ * Get the current user
36
+ */
37
+ async getViewer() {
38
+ const data = await this.query(`
39
+ query {
40
+ viewer {
41
+ id
42
+ name
43
+ email
44
+ }
45
+ }
46
+ `);
47
+ return data.viewer;
48
+ }
49
+ /**
50
+ * List teams
51
+ */
52
+ async listTeams() {
53
+ const data = await this.query(`
54
+ query {
55
+ teams {
56
+ nodes {
57
+ id
58
+ name
59
+ key
60
+ description
61
+ issueCount
62
+ }
63
+ }
64
+ }
65
+ `);
66
+ return data.teams.nodes;
67
+ }
68
+ /**
69
+ * Get an issue by ID or identifier
70
+ */
71
+ async getIssue(idOrIdentifier) {
72
+ const isIdentifier = idOrIdentifier.includes('-');
73
+ const queryField = isIdentifier ? 'issueVcsBranchSearch' : 'issue';
74
+ const queryArg = isIdentifier ? 'branchName' : 'id';
75
+ const data = await this.query(`
76
+ query GetIssue($id: String!) {
77
+ ${queryField}(${queryArg}: $id) {
78
+ id
79
+ identifier
80
+ title
81
+ description
82
+ priority
83
+ priorityLabel
84
+ state { id name type }
85
+ assignee { id name email }
86
+ team { id name key }
87
+ project { id name }
88
+ labels { nodes { id name color } }
89
+ createdAt
90
+ updatedAt
91
+ url
92
+ }
93
+ }
94
+ `, { id: idOrIdentifier });
95
+ const issue = data.issue ?? data.issueVcsBranchSearch;
96
+ if (!issue) {
97
+ throw new Error(`Issue not found: ${idOrIdentifier}`);
98
+ }
99
+ // Flatten labels
100
+ return {
101
+ ...issue,
102
+ labels: issue.labels?.nodes ?? [],
103
+ };
104
+ }
105
+ /**
106
+ * Create an issue
107
+ */
108
+ async createIssue(options) {
109
+ const data = await this.query(`
110
+ mutation CreateIssue($input: IssueCreateInput!) {
111
+ issueCreate(input: $input) {
112
+ success
113
+ issue {
114
+ id
115
+ identifier
116
+ title
117
+ description
118
+ priority
119
+ priorityLabel
120
+ state { id name type }
121
+ assignee { id name email }
122
+ team { id name key }
123
+ project { id name }
124
+ labels { nodes { id name color } }
125
+ createdAt
126
+ updatedAt
127
+ url
128
+ }
129
+ }
130
+ }
131
+ `, { input: options });
132
+ if (!data.issueCreate.success) {
133
+ throw new Error('Failed to create issue');
134
+ }
135
+ const issue = data.issueCreate.issue;
136
+ return {
137
+ ...issue,
138
+ labels: issue.labels?.nodes ?? [],
139
+ };
140
+ }
141
+ /**
142
+ * Update an issue
143
+ */
144
+ async updateIssue(issueId, options) {
145
+ const data = await this.query(`
146
+ mutation UpdateIssue($id: String!, $input: IssueUpdateInput!) {
147
+ issueUpdate(id: $id, input: $input) {
148
+ success
149
+ issue {
150
+ id
151
+ identifier
152
+ title
153
+ description
154
+ priority
155
+ priorityLabel
156
+ state { id name type }
157
+ assignee { id name email }
158
+ team { id name key }
159
+ project { id name }
160
+ labels { nodes { id name color } }
161
+ createdAt
162
+ updatedAt
163
+ url
164
+ }
165
+ }
166
+ }
167
+ `, { id: issueId, input: options });
168
+ if (!data.issueUpdate.success) {
169
+ throw new Error('Failed to update issue');
170
+ }
171
+ const issue = data.issueUpdate.issue;
172
+ return {
173
+ ...issue,
174
+ labels: issue.labels?.nodes ?? [],
175
+ };
176
+ }
177
+ /**
178
+ * Search issues
179
+ */
180
+ async searchIssues(options = {}) {
181
+ const { query, teamId, assigneeId, projectId, priority, first = 25, after } = options;
182
+ // Build filter
183
+ const filters = [];
184
+ if (teamId)
185
+ filters.push(`team: { id: { eq: "${teamId}" } }`);
186
+ if (assigneeId)
187
+ filters.push(`assignee: { id: { eq: "${assigneeId}" } }`);
188
+ if (projectId)
189
+ filters.push(`project: { id: { eq: "${projectId}" } }`);
190
+ if (priority !== undefined)
191
+ filters.push(`priority: { eq: ${priority} }`);
192
+ const filterArg = filters.length > 0 ? `filter: { ${filters.join(', ')} }` : '';
193
+ const queryArg = query ? `query: "${query}"` : '';
194
+ const paginationArgs = `first: ${first}${after ? `, after: "${after}"` : ''}`;
195
+ const allArgs = [queryArg, filterArg, paginationArgs].filter(Boolean).join(', ');
196
+ const data = await this.query(`
197
+ query {
198
+ issues(${allArgs}) {
199
+ nodes {
200
+ id
201
+ identifier
202
+ title
203
+ description
204
+ priority
205
+ priorityLabel
206
+ state { id name type }
207
+ assignee { id name email }
208
+ team { id name key }
209
+ project { id name }
210
+ labels { nodes { id name color } }
211
+ createdAt
212
+ updatedAt
213
+ url
214
+ }
215
+ pageInfo {
216
+ hasNextPage
217
+ endCursor
218
+ }
219
+ }
220
+ }
221
+ `);
222
+ return {
223
+ issues: data.issues.nodes.map((issue) => ({
224
+ ...issue,
225
+ labels: issue.labels?.nodes ?? [],
226
+ })),
227
+ hasMore: data.issues.pageInfo.hasNextPage,
228
+ endCursor: data.issues.pageInfo.endCursor,
229
+ };
230
+ }
231
+ /**
232
+ * List projects
233
+ */
234
+ async listProjects(teamId) {
235
+ const filter = teamId ? `filter: { accessibleTeams: { id: { eq: "${teamId}" } } }` : '';
236
+ const data = await this.query(`
237
+ query {
238
+ projects(${filter}) {
239
+ nodes {
240
+ id
241
+ name
242
+ description
243
+ state
244
+ progress
245
+ targetDate
246
+ teams { nodes { id name } }
247
+ }
248
+ }
249
+ }
250
+ `);
251
+ return data.projects.nodes.map((project) => ({
252
+ ...project,
253
+ teams: project.teams?.nodes ?? [],
254
+ }));
255
+ }
256
+ /**
257
+ * Get workflow states for a team
258
+ */
259
+ async getWorkflowStates(teamId) {
260
+ const data = await this.query(`
261
+ query GetStates($teamId: String!) {
262
+ team(id: $teamId) {
263
+ states {
264
+ nodes {
265
+ id
266
+ name
267
+ type
268
+ position
269
+ }
270
+ }
271
+ }
272
+ }
273
+ `, { teamId });
274
+ return data.team.states.nodes;
275
+ }
276
+ /**
277
+ * Add a comment to an issue
278
+ */
279
+ async addComment(issueId, body) {
280
+ const data = await this.query(`
281
+ mutation AddComment($issueId: String!, $body: String!) {
282
+ commentCreate(input: { issueId: $issueId, body: $body }) {
283
+ success
284
+ comment {
285
+ id
286
+ body
287
+ createdAt
288
+ }
289
+ }
290
+ }
291
+ `, { issueId, body });
292
+ if (!data.commentCreate.success) {
293
+ throw new Error('Failed to add comment');
294
+ }
295
+ return data.commentCreate.comment;
296
+ }
297
+ /**
298
+ * Archive an issue
299
+ */
300
+ async archiveIssue(issueId) {
301
+ const data = await this.query(`
302
+ mutation ArchiveIssue($id: String!) {
303
+ issueArchive(id: $id) {
304
+ success
305
+ }
306
+ }
307
+ `, { id: issueId });
308
+ if (!data.issueArchive.success) {
309
+ throw new Error('Failed to archive issue');
310
+ }
311
+ }
312
+ }
313
+ export const LinearInitializer = {
314
+ async initialize(_module, config) {
315
+ const apiKey = config.auth?.['api_key'];
316
+ if (!apiKey) {
317
+ throw new Error('Linear SDK requires auth.api_key');
318
+ }
319
+ const client = new LinearClient(apiKey);
320
+ return {
321
+ client,
322
+ actions: client,
323
+ };
324
+ },
325
+ };
326
+ //# sourceMappingURL=linear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/services/linear.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Notion Integration
3
+ *
4
+ * All-in-one workspace for docs, databases, and knowledge management.
5
+ * API Docs: https://developers.notion.com/
6
+ */
7
+ import { SDKInitializer } from '@marktoflow/core';
8
+ export interface NotionPage {
9
+ id: string;
10
+ url: string;
11
+ title: string;
12
+ icon?: {
13
+ type: string;
14
+ emoji?: string;
15
+ external?: {
16
+ url: string;
17
+ };
18
+ };
19
+ cover?: {
20
+ type: string;
21
+ external?: {
22
+ url: string;
23
+ };
24
+ };
25
+ parent: {
26
+ type: string;
27
+ page_id?: string;
28
+ database_id?: string;
29
+ workspace?: boolean;
30
+ };
31
+ createdTime: string;
32
+ lastEditedTime: string;
33
+ createdBy: {
34
+ id: string;
35
+ };
36
+ lastEditedBy: {
37
+ id: string;
38
+ };
39
+ archived: boolean;
40
+ properties?: Record<string, unknown>;
41
+ }
42
+ export interface NotionDatabase {
43
+ id: string;
44
+ url: string;
45
+ title: string;
46
+ description?: string;
47
+ icon?: {
48
+ type: string;
49
+ emoji?: string;
50
+ };
51
+ properties: Record<string, {
52
+ id: string;
53
+ type: string;
54
+ name: string;
55
+ }>;
56
+ createdTime: string;
57
+ lastEditedTime: string;
58
+ archived: boolean;
59
+ }
60
+ export interface NotionBlock {
61
+ id: string;
62
+ type: string;
63
+ hasChildren: boolean;
64
+ createdTime: string;
65
+ lastEditedTime: string;
66
+ content: unknown;
67
+ }
68
+ export interface CreatePageOptions {
69
+ parentPageId?: string;
70
+ parentDatabaseId?: string;
71
+ title: string;
72
+ icon?: {
73
+ emoji: string;
74
+ } | {
75
+ external: {
76
+ url: string;
77
+ };
78
+ };
79
+ cover?: {
80
+ external: {
81
+ url: string;
82
+ };
83
+ };
84
+ properties?: Record<string, unknown>;
85
+ children?: NotionBlockInput[];
86
+ }
87
+ export interface NotionBlockInput {
88
+ type: 'paragraph' | 'heading_1' | 'heading_2' | 'heading_3' | 'bulleted_list_item' | 'numbered_list_item' | 'to_do' | 'toggle' | 'code' | 'quote' | 'callout' | 'divider';
89
+ content?: string;
90
+ language?: string;
91
+ checked?: boolean;
92
+ children?: NotionBlockInput[];
93
+ }
94
+ export interface QueryDatabaseOptions {
95
+ filter?: Record<string, unknown>;
96
+ sorts?: Array<{
97
+ property: string;
98
+ direction: 'ascending' | 'descending';
99
+ } | {
100
+ timestamp: 'created_time' | 'last_edited_time';
101
+ direction: 'ascending' | 'descending';
102
+ }>;
103
+ startCursor?: string;
104
+ pageSize?: number;
105
+ }
106
+ export interface SearchOptions {
107
+ query?: string;
108
+ filter?: {
109
+ property: 'object';
110
+ value: 'page' | 'database';
111
+ };
112
+ sort?: {
113
+ direction: 'ascending' | 'descending';
114
+ timestamp: 'last_edited_time';
115
+ };
116
+ startCursor?: string;
117
+ pageSize?: number;
118
+ }
119
+ /**
120
+ * Notion API client for workflow integration
121
+ */
122
+ export declare class NotionClient {
123
+ private token;
124
+ constructor(token: string);
125
+ private request;
126
+ /**
127
+ * Get the current user
128
+ */
129
+ getMe(): Promise<{
130
+ id: string;
131
+ name: string;
132
+ type: string;
133
+ }>;
134
+ /**
135
+ * Search pages and databases
136
+ */
137
+ search(options?: SearchOptions): Promise<{
138
+ results: (NotionPage | NotionDatabase)[];
139
+ hasMore: boolean;
140
+ nextCursor?: string;
141
+ }>;
142
+ /**
143
+ * Get a page by ID
144
+ */
145
+ getPage(pageId: string): Promise<NotionPage>;
146
+ /**
147
+ * Create a page
148
+ */
149
+ createPage(options: CreatePageOptions): Promise<NotionPage>;
150
+ /**
151
+ * Update page properties
152
+ */
153
+ updatePage(pageId: string, options: {
154
+ properties?: Record<string, unknown>;
155
+ icon?: {
156
+ emoji: string;
157
+ } | {
158
+ external: {
159
+ url: string;
160
+ };
161
+ } | null;
162
+ cover?: {
163
+ external: {
164
+ url: string;
165
+ };
166
+ } | null;
167
+ archived?: boolean;
168
+ }): Promise<NotionPage>;
169
+ /**
170
+ * Get a database by ID
171
+ */
172
+ getDatabase(databaseId: string): Promise<NotionDatabase>;
173
+ /**
174
+ * Query a database
175
+ */
176
+ queryDatabase(databaseId: string, options?: QueryDatabaseOptions): Promise<{
177
+ results: NotionPage[];
178
+ hasMore: boolean;
179
+ nextCursor?: string;
180
+ }>;
181
+ /**
182
+ * Get block children (page content)
183
+ */
184
+ getBlockChildren(blockId: string, options?: {
185
+ startCursor?: string;
186
+ pageSize?: number;
187
+ }): Promise<{
188
+ blocks: NotionBlock[];
189
+ hasMore: boolean;
190
+ nextCursor?: string;
191
+ }>;
192
+ /**
193
+ * Append blocks to a page
194
+ */
195
+ appendBlocks(pageId: string, blocks: NotionBlockInput[]): Promise<NotionBlock[]>;
196
+ /**
197
+ * Delete a block
198
+ */
199
+ deleteBlock(blockId: string): Promise<void>;
200
+ /**
201
+ * Archive a page (soft delete)
202
+ */
203
+ archivePage(pageId: string): Promise<void>;
204
+ }
205
+ export declare const NotionInitializer: SDKInitializer;
206
+ //# sourceMappingURL=notion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion.d.ts","sourceRoot":"","sources":["../../src/services/notion.ts"],"names":[],"mappings":"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"}