@hasna/connectors 0.3.16 → 0.4.0

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 (127) hide show
  1. package/bin/index.js +71 -1
  2. package/bin/mcp.js +71 -1
  3. package/bin/serve.js +70 -0
  4. package/connectors/connect-asana/.env.example +11 -0
  5. package/connectors/connect-asana/CLAUDE.md +128 -0
  6. package/connectors/connect-asana/README.md +193 -0
  7. package/connectors/connect-asana/package.json +52 -0
  8. package/connectors/connect-asana/src/api/client.ts +119 -0
  9. package/connectors/connect-asana/src/api/index.ts +319 -0
  10. package/connectors/connect-asana/src/cli/index.ts +731 -0
  11. package/connectors/connect-asana/src/index.ts +19 -0
  12. package/connectors/connect-asana/src/types/index.ts +270 -0
  13. package/connectors/connect-asana/src/utils/config.ts +171 -0
  14. package/connectors/connect-asana/src/utils/output.ts +119 -0
  15. package/connectors/connect-asana/tsconfig.json +16 -0
  16. package/connectors/connect-clickup/.env.example +11 -0
  17. package/connectors/connect-clickup/CLAUDE.md +128 -0
  18. package/connectors/connect-clickup/README.md +193 -0
  19. package/connectors/connect-clickup/package.json +52 -0
  20. package/connectors/connect-clickup/src/api/client.ts +116 -0
  21. package/connectors/connect-clickup/src/api/index.ts +400 -0
  22. package/connectors/connect-clickup/src/cli/index.ts +625 -0
  23. package/connectors/connect-clickup/src/index.ts +19 -0
  24. package/connectors/connect-clickup/src/types/index.ts +591 -0
  25. package/connectors/connect-clickup/src/utils/config.ts +157 -0
  26. package/connectors/connect-clickup/src/utils/output.ts +119 -0
  27. package/connectors/connect-clickup/tsconfig.json +16 -0
  28. package/connectors/connect-confluence/.env.example +11 -0
  29. package/connectors/connect-confluence/CLAUDE.md +272 -0
  30. package/connectors/connect-confluence/README.md +193 -0
  31. package/connectors/connect-confluence/package.json +53 -0
  32. package/connectors/connect-confluence/scripts/release.ts +179 -0
  33. package/connectors/connect-confluence/src/api/client.ts +213 -0
  34. package/connectors/connect-confluence/src/api/example.ts +48 -0
  35. package/connectors/connect-confluence/src/api/index.ts +51 -0
  36. package/connectors/connect-confluence/src/cli/index.ts +254 -0
  37. package/connectors/connect-confluence/src/index.ts +103 -0
  38. package/connectors/connect-confluence/src/types/index.ts +237 -0
  39. package/connectors/connect-confluence/src/utils/auth.ts +274 -0
  40. package/connectors/connect-confluence/src/utils/bulk.ts +212 -0
  41. package/connectors/connect-confluence/src/utils/config.ts +326 -0
  42. package/connectors/connect-confluence/src/utils/output.ts +175 -0
  43. package/connectors/connect-confluence/src/utils/settings.ts +114 -0
  44. package/connectors/connect-confluence/src/utils/storage.ts +198 -0
  45. package/connectors/connect-confluence/tsconfig.json +16 -0
  46. package/connectors/connect-jira/.env.example +11 -0
  47. package/connectors/connect-jira/CLAUDE.md +128 -0
  48. package/connectors/connect-jira/README.md +193 -0
  49. package/connectors/connect-jira/package.json +53 -0
  50. package/connectors/connect-jira/src/api/client.ts +131 -0
  51. package/connectors/connect-jira/src/api/index.ts +266 -0
  52. package/connectors/connect-jira/src/cli/index.ts +653 -0
  53. package/connectors/connect-jira/src/index.ts +23 -0
  54. package/connectors/connect-jira/src/types/index.ts +448 -0
  55. package/connectors/connect-jira/src/utils/config.ts +179 -0
  56. package/connectors/connect-jira/src/utils/output.ts +119 -0
  57. package/connectors/connect-jira/tsconfig.json +16 -0
  58. package/connectors/connect-linear/CLAUDE.md +88 -0
  59. package/connectors/connect-linear/README.md +201 -0
  60. package/connectors/connect-linear/package.json +45 -0
  61. package/connectors/connect-linear/src/api/client.ts +62 -0
  62. package/connectors/connect-linear/src/api/index.ts +46 -0
  63. package/connectors/connect-linear/src/api/issues.ts +247 -0
  64. package/connectors/connect-linear/src/api/projects.ts +179 -0
  65. package/connectors/connect-linear/src/api/teams.ts +125 -0
  66. package/connectors/connect-linear/src/api/users.ts +112 -0
  67. package/connectors/connect-linear/src/cli/index.ts +560 -0
  68. package/connectors/connect-linear/src/index.ts +27 -0
  69. package/connectors/connect-linear/src/types/index.ts +275 -0
  70. package/connectors/connect-linear/src/utils/config.ts +249 -0
  71. package/connectors/connect-linear/src/utils/output.ts +119 -0
  72. package/connectors/connect-linear/tsconfig.json +16 -0
  73. package/connectors/connect-slack/.env.example +7 -0
  74. package/connectors/connect-slack/CLAUDE.md +69 -0
  75. package/connectors/connect-slack/README.md +150 -0
  76. package/connectors/connect-slack/package.json +44 -0
  77. package/connectors/connect-slack/src/api/channels.ts +112 -0
  78. package/connectors/connect-slack/src/api/client.ts +97 -0
  79. package/connectors/connect-slack/src/api/index.ts +42 -0
  80. package/connectors/connect-slack/src/api/messages.ts +127 -0
  81. package/connectors/connect-slack/src/api/users.ts +110 -0
  82. package/connectors/connect-slack/src/cli/index.ts +494 -0
  83. package/connectors/connect-slack/src/index.ts +21 -0
  84. package/connectors/connect-slack/src/types/index.ts +263 -0
  85. package/connectors/connect-slack/src/utils/config.ts +297 -0
  86. package/connectors/connect-slack/src/utils/output.ts +119 -0
  87. package/connectors/connect-slack/tsconfig.json +16 -0
  88. package/connectors/connect-telegram/.env.example +2 -0
  89. package/connectors/connect-telegram/package.json +49 -0
  90. package/connectors/connect-todoist/.env.example +11 -0
  91. package/connectors/connect-todoist/CLAUDE.md +104 -0
  92. package/connectors/connect-todoist/README.md +193 -0
  93. package/connectors/connect-todoist/package.json +52 -0
  94. package/connectors/connect-todoist/src/api/client.ts +117 -0
  95. package/connectors/connect-todoist/src/api/index.ts +188 -0
  96. package/connectors/connect-todoist/src/cli/index.ts +990 -0
  97. package/connectors/connect-todoist/src/index.ts +21 -0
  98. package/connectors/connect-todoist/src/types/index.ts +240 -0
  99. package/connectors/connect-todoist/src/utils/config.ts +157 -0
  100. package/connectors/connect-todoist/src/utils/output.ts +119 -0
  101. package/connectors/connect-todoist/tsconfig.json +16 -0
  102. package/connectors/connect-trello/.env.example +11 -0
  103. package/connectors/connect-trello/CLAUDE.md +128 -0
  104. package/connectors/connect-trello/README.md +193 -0
  105. package/connectors/connect-trello/package.json +53 -0
  106. package/connectors/connect-trello/src/api/client.ts +128 -0
  107. package/connectors/connect-trello/src/api/index.ts +278 -0
  108. package/connectors/connect-trello/src/cli/index.ts +737 -0
  109. package/connectors/connect-trello/src/index.ts +21 -0
  110. package/connectors/connect-trello/src/types/index.ts +314 -0
  111. package/connectors/connect-trello/src/utils/config.ts +182 -0
  112. package/connectors/connect-trello/src/utils/output.ts +119 -0
  113. package/connectors/connect-trello/tsconfig.json +16 -0
  114. package/connectors/connect-whatsapp/.env.example +11 -0
  115. package/connectors/connect-whatsapp/CLAUDE.md +113 -0
  116. package/connectors/connect-whatsapp/README.md +193 -0
  117. package/connectors/connect-whatsapp/package.json +53 -0
  118. package/connectors/connect-whatsapp/src/api/client.ts +133 -0
  119. package/connectors/connect-whatsapp/src/api/index.ts +365 -0
  120. package/connectors/connect-whatsapp/src/cli/index.ts +686 -0
  121. package/connectors/connect-whatsapp/src/index.ts +25 -0
  122. package/connectors/connect-whatsapp/src/types/index.ts +502 -0
  123. package/connectors/connect-whatsapp/src/utils/config.ts +179 -0
  124. package/connectors/connect-whatsapp/src/utils/output.ts +119 -0
  125. package/connectors/connect-whatsapp/tsconfig.json +16 -0
  126. package/dist/index.js +70 -0
  127. package/package.json +1 -1
@@ -0,0 +1,188 @@
1
+ // Todoist Connector
2
+ // Projects, tasks, sections, labels, and comments management
3
+
4
+ import { TodoistClient } from './client';
5
+ import type {
6
+ TodoistConfig,
7
+ Project,
8
+ Section,
9
+ Task,
10
+ Label,
11
+ Comment,
12
+ Collaborator,
13
+ CreateProjectInput,
14
+ UpdateProjectInput,
15
+ CreateSectionInput,
16
+ UpdateSectionInput,
17
+ CreateTaskInput,
18
+ UpdateTaskInput,
19
+ CreateLabelInput,
20
+ UpdateLabelInput,
21
+ CreateCommentInput,
22
+ UpdateCommentInput,
23
+ } from '../types';
24
+
25
+ export { TodoistClient } from './client';
26
+
27
+ export class Todoist {
28
+ private client: TodoistClient;
29
+
30
+ constructor(config: TodoistConfig) {
31
+ this.client = new TodoistClient(config);
32
+ }
33
+
34
+ // ============================================
35
+ // Project Operations
36
+ // ============================================
37
+
38
+ async listProjects(): Promise<Project[]> {
39
+ return this.client.get<Project[]>('/projects');
40
+ }
41
+
42
+ async getProject(projectId: string): Promise<Project> {
43
+ return this.client.get<Project>(`/projects/${projectId}`);
44
+ }
45
+
46
+ async createProject(input: CreateProjectInput): Promise<Project> {
47
+ return this.client.post<Project>('/projects', input);
48
+ }
49
+
50
+ async updateProject(projectId: string, input: UpdateProjectInput): Promise<Project> {
51
+ return this.client.post<Project>(`/projects/${projectId}`, input);
52
+ }
53
+
54
+ async deleteProject(projectId: string): Promise<void> {
55
+ await this.client.delete(`/projects/${projectId}`);
56
+ }
57
+
58
+ async getCollaborators(projectId: string): Promise<Collaborator[]> {
59
+ return this.client.get<Collaborator[]>(`/projects/${projectId}/collaborators`);
60
+ }
61
+
62
+ // ============================================
63
+ // Section Operations
64
+ // ============================================
65
+
66
+ async listSections(projectId?: string): Promise<Section[]> {
67
+ return this.client.get<Section[]>('/sections', { project_id: projectId });
68
+ }
69
+
70
+ async getSection(sectionId: string): Promise<Section> {
71
+ return this.client.get<Section>(`/sections/${sectionId}`);
72
+ }
73
+
74
+ async createSection(input: CreateSectionInput): Promise<Section> {
75
+ return this.client.post<Section>('/sections', input);
76
+ }
77
+
78
+ async updateSection(sectionId: string, input: UpdateSectionInput): Promise<Section> {
79
+ return this.client.post<Section>(`/sections/${sectionId}`, input);
80
+ }
81
+
82
+ async deleteSection(sectionId: string): Promise<void> {
83
+ await this.client.delete(`/sections/${sectionId}`);
84
+ }
85
+
86
+ // ============================================
87
+ // Task Operations
88
+ // ============================================
89
+
90
+ async listTasks(options?: {
91
+ project_id?: string;
92
+ section_id?: string;
93
+ label?: string;
94
+ filter?: string;
95
+ lang?: string;
96
+ ids?: string[];
97
+ }): Promise<Task[]> {
98
+ const params: Record<string, string | undefined> = {
99
+ project_id: options?.project_id,
100
+ section_id: options?.section_id,
101
+ label: options?.label,
102
+ filter: options?.filter,
103
+ lang: options?.lang,
104
+ ids: options?.ids?.join(','),
105
+ };
106
+ return this.client.get<Task[]>('/tasks', params);
107
+ }
108
+
109
+ async getTask(taskId: string): Promise<Task> {
110
+ return this.client.get<Task>(`/tasks/${taskId}`);
111
+ }
112
+
113
+ async createTask(input: CreateTaskInput): Promise<Task> {
114
+ return this.client.post<Task>('/tasks', input);
115
+ }
116
+
117
+ async updateTask(taskId: string, input: UpdateTaskInput): Promise<Task> {
118
+ return this.client.post<Task>(`/tasks/${taskId}`, input);
119
+ }
120
+
121
+ async closeTask(taskId: string): Promise<void> {
122
+ await this.client.post(`/tasks/${taskId}/close`);
123
+ }
124
+
125
+ async reopenTask(taskId: string): Promise<void> {
126
+ await this.client.post(`/tasks/${taskId}/reopen`);
127
+ }
128
+
129
+ async deleteTask(taskId: string): Promise<void> {
130
+ await this.client.delete(`/tasks/${taskId}`);
131
+ }
132
+
133
+ // ============================================
134
+ // Label Operations
135
+ // ============================================
136
+
137
+ async listLabels(): Promise<Label[]> {
138
+ return this.client.get<Label[]>('/labels');
139
+ }
140
+
141
+ async getLabel(labelId: string): Promise<Label> {
142
+ return this.client.get<Label>(`/labels/${labelId}`);
143
+ }
144
+
145
+ async createLabel(input: CreateLabelInput): Promise<Label> {
146
+ return this.client.post<Label>('/labels', input);
147
+ }
148
+
149
+ async updateLabel(labelId: string, input: UpdateLabelInput): Promise<Label> {
150
+ return this.client.post<Label>(`/labels/${labelId}`, input);
151
+ }
152
+
153
+ async deleteLabel(labelId: string): Promise<void> {
154
+ await this.client.delete(`/labels/${labelId}`);
155
+ }
156
+
157
+ // ============================================
158
+ // Comment Operations
159
+ // ============================================
160
+
161
+ async listComments(options: { task_id?: string; project_id?: string }): Promise<Comment[]> {
162
+ return this.client.get<Comment[]>('/comments', options);
163
+ }
164
+
165
+ async getComment(commentId: string): Promise<Comment> {
166
+ return this.client.get<Comment>(`/comments/${commentId}`);
167
+ }
168
+
169
+ async createComment(input: CreateCommentInput): Promise<Comment> {
170
+ return this.client.post<Comment>('/comments', input);
171
+ }
172
+
173
+ async updateComment(commentId: string, input: UpdateCommentInput): Promise<Comment> {
174
+ return this.client.post<Comment>(`/comments/${commentId}`, input);
175
+ }
176
+
177
+ async deleteComment(commentId: string): Promise<void> {
178
+ await this.client.delete(`/comments/${commentId}`);
179
+ }
180
+
181
+ // ============================================
182
+ // Utility Methods
183
+ // ============================================
184
+
185
+ getClient(): TodoistClient {
186
+ return this.client;
187
+ }
188
+ }