@grigoreo-dev/otask-mcp 1.2.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 (142) hide show
  1. package/README.md +168 -0
  2. package/dist/constants.d.ts +3 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +3 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/docs/parser.d.ts +3 -0
  7. package/dist/docs/parser.d.ts.map +1 -0
  8. package/dist/docs/parser.js +123 -0
  9. package/dist/docs/parser.js.map +1 -0
  10. package/dist/docs/types.d.ts +29 -0
  11. package/dist/docs/types.d.ts.map +1 -0
  12. package/dist/docs/types.js +2 -0
  13. package/dist/docs/types.js.map +1 -0
  14. package/dist/http-server.d.ts +3 -0
  15. package/dist/http-server.d.ts.map +1 -0
  16. package/dist/http-server.js +92 -0
  17. package/dist/http-server.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +23 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/mcp-http.d.ts +3 -0
  23. package/dist/mcp-http.d.ts.map +1 -0
  24. package/dist/mcp-http.js +98 -0
  25. package/dist/mcp-http.js.map +1 -0
  26. package/dist/proxy/headers.d.ts +3 -0
  27. package/dist/proxy/headers.d.ts.map +1 -0
  28. package/dist/proxy/headers.js +37 -0
  29. package/dist/proxy/headers.js.map +1 -0
  30. package/dist/proxy/read-body.d.ts +3 -0
  31. package/dist/proxy/read-body.d.ts.map +1 -0
  32. package/dist/proxy/read-body.js +18 -0
  33. package/dist/proxy/read-body.js.map +1 -0
  34. package/dist/schemas/task.d.ts +241 -0
  35. package/dist/schemas/task.d.ts.map +1 -0
  36. package/dist/schemas/task.js +95 -0
  37. package/dist/schemas/task.js.map +1 -0
  38. package/dist/schemas/workspace.d.ts +66 -0
  39. package/dist/schemas/workspace.d.ts.map +1 -0
  40. package/dist/schemas/workspace.js +30 -0
  41. package/dist/schemas/workspace.js.map +1 -0
  42. package/dist/server.d.ts +5 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +13 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/services/api.d.ts +23 -0
  47. package/dist/services/api.d.ts.map +1 -0
  48. package/dist/services/api.js +215 -0
  49. package/dist/services/api.js.map +1 -0
  50. package/dist/services/auth.d.ts +23 -0
  51. package/dist/services/auth.d.ts.map +1 -0
  52. package/dist/services/auth.js +122 -0
  53. package/dist/services/auth.js.map +1 -0
  54. package/dist/services/client.d.ts +21 -0
  55. package/dist/services/client.d.ts.map +1 -0
  56. package/dist/services/client.js +17 -0
  57. package/dist/services/client.js.map +1 -0
  58. package/dist/services/format.d.ts +6 -0
  59. package/dist/services/format.d.ts.map +1 -0
  60. package/dist/services/format.js +8 -0
  61. package/dist/services/format.js.map +1 -0
  62. package/dist/services/http-auth-context.d.ts +7 -0
  63. package/dist/services/http-auth-context.d.ts.map +1 -0
  64. package/dist/services/http-auth-context.js +9 -0
  65. package/dist/services/http-auth-context.js.map +1 -0
  66. package/dist/services/project-guard.d.ts +35 -0
  67. package/dist/services/project-guard.d.ts.map +1 -0
  68. package/dist/services/project-guard.js +85 -0
  69. package/dist/services/project-guard.js.map +1 -0
  70. package/dist/services/task-mapper.d.ts +90 -0
  71. package/dist/services/task-mapper.d.ts.map +1 -0
  72. package/dist/services/task-mapper.js +148 -0
  73. package/dist/services/task-mapper.js.map +1 -0
  74. package/dist/tools/add-comment.d.ts +4 -0
  75. package/dist/tools/add-comment.d.ts.map +1 -0
  76. package/dist/tools/add-comment.js +43 -0
  77. package/dist/tools/add-comment.js.map +1 -0
  78. package/dist/tools/archive-task.d.ts +4 -0
  79. package/dist/tools/archive-task.d.ts.map +1 -0
  80. package/dist/tools/archive-task.js +43 -0
  81. package/dist/tools/archive-task.js.map +1 -0
  82. package/dist/tools/create-task.d.ts +4 -0
  83. package/dist/tools/create-task.d.ts.map +1 -0
  84. package/dist/tools/create-task.js +45 -0
  85. package/dist/tools/create-task.js.map +1 -0
  86. package/dist/tools/get-task.d.ts +4 -0
  87. package/dist/tools/get-task.d.ts.map +1 -0
  88. package/dist/tools/get-task.js +44 -0
  89. package/dist/tools/get-task.js.map +1 -0
  90. package/dist/tools/helpers.d.ts +15 -0
  91. package/dist/tools/helpers.d.ts.map +1 -0
  92. package/dist/tools/helpers.js +19 -0
  93. package/dist/tools/helpers.js.map +1 -0
  94. package/dist/tools/list-board.d.ts +4 -0
  95. package/dist/tools/list-board.d.ts.map +1 -0
  96. package/dist/tools/list-board.js +52 -0
  97. package/dist/tools/list-board.js.map +1 -0
  98. package/dist/tools/list-comments.d.ts +4 -0
  99. package/dist/tools/list-comments.d.ts.map +1 -0
  100. package/dist/tools/list-comments.js +41 -0
  101. package/dist/tools/list-comments.js.map +1 -0
  102. package/dist/tools/list-members.d.ts +4 -0
  103. package/dist/tools/list-members.d.ts.map +1 -0
  104. package/dist/tools/list-members.js +39 -0
  105. package/dist/tools/list-members.js.map +1 -0
  106. package/dist/tools/list-project-tasks.d.ts +4 -0
  107. package/dist/tools/list-project-tasks.d.ts.map +1 -0
  108. package/dist/tools/list-project-tasks.js +52 -0
  109. package/dist/tools/list-project-tasks.js.map +1 -0
  110. package/dist/tools/list-projects.d.ts +4 -0
  111. package/dist/tools/list-projects.d.ts.map +1 -0
  112. package/dist/tools/list-projects.js +40 -0
  113. package/dist/tools/list-projects.js.map +1 -0
  114. package/dist/tools/list-tags.d.ts +4 -0
  115. package/dist/tools/list-tags.d.ts.map +1 -0
  116. package/dist/tools/list-tags.js +39 -0
  117. package/dist/tools/list-tags.js.map +1 -0
  118. package/dist/tools/move-task.d.ts +4 -0
  119. package/dist/tools/move-task.d.ts.map +1 -0
  120. package/dist/tools/move-task.js +59 -0
  121. package/dist/tools/move-task.js.map +1 -0
  122. package/dist/tools/register.d.ts +4 -0
  123. package/dist/tools/register.d.ts.map +1 -0
  124. package/dist/tools/register.js +8 -0
  125. package/dist/tools/register.js.map +1 -0
  126. package/dist/tools/registry.d.ts +15 -0
  127. package/dist/tools/registry.d.ts.map +1 -0
  128. package/dist/tools/registry.js +28 -0
  129. package/dist/tools/registry.js.map +1 -0
  130. package/dist/tools/types.d.ts +29 -0
  131. package/dist/tools/types.d.ts.map +1 -0
  132. package/dist/tools/types.js +2 -0
  133. package/dist/tools/types.js.map +1 -0
  134. package/dist/tools/update-task.d.ts +4 -0
  135. package/dist/tools/update-task.d.ts.map +1 -0
  136. package/dist/tools/update-task.js +96 -0
  137. package/dist/tools/update-task.js.map +1 -0
  138. package/dist/types.d.ts +92 -0
  139. package/dist/types.d.ts.map +1 -0
  140. package/dist/types.js +2 -0
  141. package/dist/types.js.map +1 -0
  142. package/package.json +44 -0
@@ -0,0 +1,37 @@
1
+ const HOP_BY_HOP = new Set([
2
+ "connection",
3
+ "keep-alive",
4
+ "proxy-authenticate",
5
+ "proxy-authorization",
6
+ "te",
7
+ "trailers",
8
+ "transfer-encoding",
9
+ "upgrade",
10
+ ]);
11
+ export function pickForwardRequestHeaders(headers) {
12
+ const forward = {};
13
+ for (const [key, value] of Object.entries(headers)) {
14
+ const lower = key.toLowerCase();
15
+ if (HOP_BY_HOP.has(lower) || lower === "host" || lower === "authorization") {
16
+ continue;
17
+ }
18
+ if (typeof value === "string") {
19
+ forward[key] = value;
20
+ }
21
+ else if (Array.isArray(value) && value[0]) {
22
+ forward[key] = value[0];
23
+ }
24
+ }
25
+ return forward;
26
+ }
27
+ export function pickForwardResponseHeaders(headers) {
28
+ const forward = {};
29
+ headers.forEach((value, key) => {
30
+ if (HOP_BY_HOP.has(key.toLowerCase())) {
31
+ return;
32
+ }
33
+ forward[key] = value;
34
+ });
35
+ return forward;
36
+ }
37
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/proxy/headers.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,YAAY;IACZ,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,IAAI;IACJ,UAAU;IACV,mBAAmB;IACnB,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CACvC,OAAsD;IAEtD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;YAC3E,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAgB;IAEhB,MAAM,OAAO,GAAsC,EAAE,CAAC;IAEtD,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7B,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IncomingMessage } from "node:http";
2
+ export declare function readBody(req: IncomingMessage): Promise<Buffer | undefined>;
3
+ //# sourceMappingURL=read-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-body.d.ts","sourceRoot":"","sources":["../../src/proxy/read-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB1E"}
@@ -0,0 +1,18 @@
1
+ export function readBody(req) {
2
+ if (req.method === "GET" || req.method === "HEAD") {
3
+ return Promise.resolve(undefined);
4
+ }
5
+ return new Promise((resolve, reject) => {
6
+ const chunks = [];
7
+ req.on("data", (chunk) => chunks.push(chunk));
8
+ req.on("end", () => {
9
+ if (chunks.length === 0) {
10
+ resolve(undefined);
11
+ return;
12
+ }
13
+ resolve(Buffer.concat(chunks));
14
+ });
15
+ req.on("error", reject);
16
+ });
17
+ }
18
+ //# sourceMappingURL=read-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-body.js","sourceRoot":"","sources":["../../src/proxy/read-body.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,241 @@
1
+ import { z } from "zod";
2
+ export declare const WsTaskSlugSchema: z.ZodObject<{
3
+ ws_slug: z.ZodString;
4
+ task_slug: z.ZodString;
5
+ }, "strict", z.ZodTypeAny, {
6
+ ws_slug: string;
7
+ task_slug: string;
8
+ }, {
9
+ ws_slug: string;
10
+ task_slug: string;
11
+ }>;
12
+ export declare const SubtaskSchema: z.ZodObject<{
13
+ id: z.ZodNullable<z.ZodNumber>;
14
+ end_at: z.ZodString;
15
+ is_completed: z.ZodBoolean;
16
+ name: z.ZodString;
17
+ performers: z.ZodArray<z.ZodNumber, "many">;
18
+ }, "strict", z.ZodTypeAny, {
19
+ id: number | null;
20
+ name: string;
21
+ end_at: string;
22
+ performers: number[];
23
+ is_completed: boolean;
24
+ }, {
25
+ id: number | null;
26
+ name: string;
27
+ end_at: string;
28
+ performers: number[];
29
+ is_completed: boolean;
30
+ }>;
31
+ export declare const FileSchema: z.ZodObject<{
32
+ name: z.ZodString;
33
+ temp_src: z.ZodString;
34
+ }, "strict", z.ZodTypeAny, {
35
+ name: string;
36
+ temp_src: string;
37
+ }, {
38
+ name: string;
39
+ temp_src: string;
40
+ }>;
41
+ export declare const UpdateTaskInputSchema: z.ZodObject<{
42
+ ws_slug: z.ZodString;
43
+ task_slug: z.ZodString;
44
+ } & {
45
+ name: z.ZodOptional<z.ZodString>;
46
+ board_id: z.ZodOptional<z.ZodNumber>;
47
+ board_column_id: z.ZodOptional<z.ZodNumber>;
48
+ comment: z.ZodOptional<z.ZodString>;
49
+ description: z.ZodOptional<z.ZodString>;
50
+ end_at: z.ZodOptional<z.ZodString>;
51
+ files: z.ZodOptional<z.ZodArray<z.ZodObject<{
52
+ name: z.ZodString;
53
+ temp_src: z.ZodString;
54
+ }, "strict", z.ZodTypeAny, {
55
+ name: string;
56
+ temp_src: string;
57
+ }, {
58
+ name: string;
59
+ temp_src: string;
60
+ }>, "many">>;
61
+ performers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
62
+ priority_id: z.ZodOptional<z.ZodNumber>;
63
+ project_id: z.ZodOptional<z.ZodNumber>;
64
+ subtasks: z.ZodOptional<z.ZodArray<z.ZodObject<{
65
+ id: z.ZodNullable<z.ZodNumber>;
66
+ end_at: z.ZodString;
67
+ is_completed: z.ZodBoolean;
68
+ name: z.ZodString;
69
+ performers: z.ZodArray<z.ZodNumber, "many">;
70
+ }, "strict", z.ZodTypeAny, {
71
+ id: number | null;
72
+ name: string;
73
+ end_at: string;
74
+ performers: number[];
75
+ is_completed: boolean;
76
+ }, {
77
+ id: number | null;
78
+ name: string;
79
+ end_at: string;
80
+ performers: number[];
81
+ is_completed: boolean;
82
+ }>, "many">>;
83
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
84
+ }, "strict", z.ZodTypeAny, {
85
+ ws_slug: string;
86
+ task_slug: string;
87
+ name?: string | undefined;
88
+ priority_id?: number | undefined;
89
+ description?: string | undefined;
90
+ end_at?: string | undefined;
91
+ project_id?: number | undefined;
92
+ board_id?: number | undefined;
93
+ board_column_id?: number | undefined;
94
+ performers?: string[] | undefined;
95
+ tags?: string[] | undefined;
96
+ subtasks?: {
97
+ id: number | null;
98
+ name: string;
99
+ end_at: string;
100
+ performers: number[];
101
+ is_completed: boolean;
102
+ }[] | undefined;
103
+ files?: {
104
+ name: string;
105
+ temp_src: string;
106
+ }[] | undefined;
107
+ comment?: string | undefined;
108
+ }, {
109
+ ws_slug: string;
110
+ task_slug: string;
111
+ name?: string | undefined;
112
+ priority_id?: number | undefined;
113
+ description?: string | undefined;
114
+ end_at?: string | undefined;
115
+ project_id?: number | undefined;
116
+ board_id?: number | undefined;
117
+ board_column_id?: number | undefined;
118
+ performers?: string[] | undefined;
119
+ tags?: string[] | undefined;
120
+ subtasks?: {
121
+ id: number | null;
122
+ name: string;
123
+ end_at: string;
124
+ performers: number[];
125
+ is_completed: boolean;
126
+ }[] | undefined;
127
+ files?: {
128
+ name: string;
129
+ temp_src: string;
130
+ }[] | undefined;
131
+ comment?: string | undefined;
132
+ }>;
133
+ export type UpdateTaskInput = z.infer<typeof UpdateTaskInputSchema>;
134
+ export declare const GetTaskInputSchema: z.ZodObject<{
135
+ ws_slug: z.ZodString;
136
+ task_slug: z.ZodString;
137
+ }, "strict", z.ZodTypeAny, {
138
+ ws_slug: string;
139
+ task_slug: string;
140
+ }, {
141
+ ws_slug: string;
142
+ task_slug: string;
143
+ }>;
144
+ export type GetTaskInput = z.infer<typeof GetTaskInputSchema>;
145
+ export declare const MoveTaskInputSchema: z.ZodObject<{
146
+ ws_slug: z.ZodString;
147
+ task_slug: z.ZodString;
148
+ } & {
149
+ board_column_id: z.ZodNumber;
150
+ board_id: z.ZodOptional<z.ZodNumber>;
151
+ }, "strict", z.ZodTypeAny, {
152
+ board_column_id: number;
153
+ ws_slug: string;
154
+ task_slug: string;
155
+ board_id?: number | undefined;
156
+ }, {
157
+ board_column_id: number;
158
+ ws_slug: string;
159
+ task_slug: string;
160
+ board_id?: number | undefined;
161
+ }>;
162
+ export type MoveTaskInput = z.infer<typeof MoveTaskInputSchema>;
163
+ export declare const CreateTaskInputSchema: z.ZodObject<{
164
+ ws_slug: z.ZodString;
165
+ project_id: z.ZodNumber;
166
+ name: z.ZodString;
167
+ board_id: z.ZodNumber;
168
+ board_column_id: z.ZodNumber;
169
+ end_at: z.ZodString;
170
+ comment: z.ZodOptional<z.ZodString>;
171
+ description: z.ZodOptional<z.ZodString>;
172
+ priority_id: z.ZodOptional<z.ZodNumber>;
173
+ performers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
174
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
175
+ }, "strict", z.ZodTypeAny, {
176
+ name: string;
177
+ end_at: string;
178
+ project_id: number;
179
+ board_id: number;
180
+ board_column_id: number;
181
+ ws_slug: string;
182
+ priority_id?: number | undefined;
183
+ description?: string | undefined;
184
+ performers?: string[] | undefined;
185
+ tags?: string[] | undefined;
186
+ comment?: string | undefined;
187
+ }, {
188
+ name: string;
189
+ end_at: string;
190
+ project_id: number;
191
+ board_id: number;
192
+ board_column_id: number;
193
+ ws_slug: string;
194
+ priority_id?: number | undefined;
195
+ description?: string | undefined;
196
+ performers?: string[] | undefined;
197
+ tags?: string[] | undefined;
198
+ comment?: string | undefined;
199
+ }>;
200
+ export type CreateTaskInput = z.infer<typeof CreateTaskInputSchema>;
201
+ export declare const ArchiveTaskInputSchema: z.ZodObject<{
202
+ ws_slug: z.ZodString;
203
+ task_slug: z.ZodString;
204
+ }, "strict", z.ZodTypeAny, {
205
+ ws_slug: string;
206
+ task_slug: string;
207
+ }, {
208
+ ws_slug: string;
209
+ task_slug: string;
210
+ }>;
211
+ export type ArchiveTaskInput = z.infer<typeof ArchiveTaskInputSchema>;
212
+ export declare const ListCommentsInputSchema: z.ZodObject<{
213
+ ws_slug: z.ZodString;
214
+ task_slug: z.ZodString;
215
+ }, "strict", z.ZodTypeAny, {
216
+ ws_slug: string;
217
+ task_slug: string;
218
+ }, {
219
+ ws_slug: string;
220
+ task_slug: string;
221
+ }>;
222
+ export type ListCommentsInput = z.infer<typeof ListCommentsInputSchema>;
223
+ export declare const AddCommentInputSchema: z.ZodObject<{
224
+ ws_slug: z.ZodString;
225
+ task_slug: z.ZodString;
226
+ } & {
227
+ comment: z.ZodString;
228
+ parent_id: z.ZodOptional<z.ZodNumber>;
229
+ }, "strict", z.ZodTypeAny, {
230
+ ws_slug: string;
231
+ task_slug: string;
232
+ comment: string;
233
+ parent_id?: number | undefined;
234
+ }, {
235
+ ws_slug: string;
236
+ task_slug: string;
237
+ comment: string;
238
+ parent_id?: number | undefined;
239
+ }>;
240
+ export type AddCommentInput = z.infer<typeof AddCommentInputSchema>;
241
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;EAWlB,CAAC;AAEZ,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;EAQf,CAAC;AAEZ,eAAO,MAAM,UAAU;;;;;;;;;EAKZ,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,kBAAkB;;;;;;;;;EAAmB,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;EAOrB,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,sBAAsB;;;;;;;;;EAAmB,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,uBAAuB;;;;;;;;;EAAmB,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;EAOvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { z } from "zod";
2
+ export const WsTaskSlugSchema = z
3
+ .object({
4
+ ws_slug: z
5
+ .string()
6
+ .min(1)
7
+ .describe("Workspace slug (UUID from panel.otask.ru URL)"),
8
+ task_slug: z
9
+ .string()
10
+ .min(1)
11
+ .describe("Task slug (UUID from panel.otask.ru URL)"),
12
+ })
13
+ .strict();
14
+ export const SubtaskSchema = z
15
+ .object({
16
+ id: z.number().nullable().describe("Subtask ID, null for new subtasks"),
17
+ end_at: z.string().describe("Subtask due date (ISO 8601)"),
18
+ is_completed: z.boolean(),
19
+ name: z.string(),
20
+ performers: z.array(z.number()).describe("Performer user IDs"),
21
+ })
22
+ .strict();
23
+ export const FileSchema = z
24
+ .object({
25
+ name: z.string(),
26
+ temp_src: z.string().describe("Temporary upload filename from O!task"),
27
+ })
28
+ .strict();
29
+ export const UpdateTaskInputSchema = WsTaskSlugSchema.extend({
30
+ name: z.string().optional().describe("Task title"),
31
+ board_id: z.number().int().optional().describe("Board ID"),
32
+ board_column_id: z.number().int().optional().describe("Column/status ID"),
33
+ comment: z
34
+ .string()
35
+ .optional()
36
+ .describe("Comment added with the update (use empty string to skip)"),
37
+ description: z.string().optional().describe("Task description (HTML allowed)"),
38
+ end_at: z.string().optional().describe("Due date (ISO 8601)"),
39
+ files: z.array(FileSchema).optional().describe("Attached files"),
40
+ performers: z
41
+ .array(z.string())
42
+ .optional()
43
+ .describe("Performer IDs as strings"),
44
+ priority_id: z.number().int().optional().describe("Priority ID"),
45
+ project_id: z.number().int().optional().describe("Project ID"),
46
+ subtasks: z.array(SubtaskSchema).optional(),
47
+ tags: z.array(z.string()).optional().describe("Tag IDs as strings"),
48
+ }).strict();
49
+ export const GetTaskInputSchema = WsTaskSlugSchema;
50
+ export const MoveTaskInputSchema = WsTaskSlugSchema.extend({
51
+ board_column_id: z.number().int().describe("Target column/status ID"),
52
+ board_id: z
53
+ .number()
54
+ .int()
55
+ .optional()
56
+ .describe("Target board ID if changing board"),
57
+ }).strict();
58
+ export const CreateTaskInputSchema = z
59
+ .object({
60
+ ws_slug: z
61
+ .string()
62
+ .min(1)
63
+ .describe("Workspace slug (UUID from panel.otask.ru URL)"),
64
+ project_id: z.number().int().describe("Project ID (must be allow-listed)"),
65
+ name: z.string().min(1).describe("Task title"),
66
+ board_id: z
67
+ .number()
68
+ .int()
69
+ .describe("Board ID — discover via otask_list_board"),
70
+ board_column_id: z
71
+ .number()
72
+ .int()
73
+ .describe("Column ID — discover via otask_list_board"),
74
+ end_at: z.string().describe("Due date (ISO 8601)"),
75
+ comment: z.string().optional(),
76
+ description: z.string().optional(),
77
+ priority_id: z.number().int().optional(),
78
+ performers: z
79
+ .array(z.string())
80
+ .optional()
81
+ .describe("Performer IDs as strings"),
82
+ tags: z.array(z.string()).optional().describe("Tag IDs as strings"),
83
+ })
84
+ .strict();
85
+ export const ArchiveTaskInputSchema = WsTaskSlugSchema;
86
+ export const ListCommentsInputSchema = WsTaskSlugSchema;
87
+ export const AddCommentInputSchema = WsTaskSlugSchema.extend({
88
+ comment: z.string().min(1).describe("Comment body"),
89
+ parent_id: z
90
+ .number()
91
+ .int()
92
+ .optional()
93
+ .describe("Parent comment ID for replies"),
94
+ }).strict();
95
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { z } from "zod";
2
+ export declare const WsSlugSchema: z.ZodObject<{
3
+ ws_slug: z.ZodString;
4
+ }, "strict", z.ZodTypeAny, {
5
+ ws_slug: string;
6
+ }, {
7
+ ws_slug: string;
8
+ }>;
9
+ export type WsSlugInput = z.infer<typeof WsSlugSchema>;
10
+ export declare const ProjectSlugSchema: z.ZodObject<{
11
+ ws_slug: z.ZodString;
12
+ } & {
13
+ project_slug: z.ZodString;
14
+ }, "strict", z.ZodTypeAny, {
15
+ ws_slug: string;
16
+ project_slug: string;
17
+ }, {
18
+ ws_slug: string;
19
+ project_slug: string;
20
+ }>;
21
+ export type ProjectSlugInput = z.infer<typeof ProjectSlugSchema>;
22
+ export declare const ListProjectTasksInputSchema: z.ZodObject<{
23
+ ws_slug: z.ZodString;
24
+ } & {
25
+ project_slug: z.ZodString;
26
+ } & {
27
+ page: z.ZodOptional<z.ZodNumber>;
28
+ status_id: z.ZodOptional<z.ZodNumber>;
29
+ board_id: z.ZodOptional<z.ZodNumber>;
30
+ board_column_id: z.ZodOptional<z.ZodNumber>;
31
+ }, "strict", z.ZodTypeAny, {
32
+ ws_slug: string;
33
+ project_slug: string;
34
+ status_id?: number | undefined;
35
+ board_id?: number | undefined;
36
+ board_column_id?: number | undefined;
37
+ page?: number | undefined;
38
+ }, {
39
+ ws_slug: string;
40
+ project_slug: string;
41
+ status_id?: number | undefined;
42
+ board_id?: number | undefined;
43
+ board_column_id?: number | undefined;
44
+ page?: number | undefined;
45
+ }>;
46
+ export type ListProjectTasksInput = z.infer<typeof ListProjectTasksInputSchema>;
47
+ export declare const ListBoardInputSchema: z.ZodObject<{
48
+ ws_slug: z.ZodString;
49
+ } & {
50
+ project_slug: z.ZodString;
51
+ } & {
52
+ type: z.ZodOptional<z.ZodString>;
53
+ board_slug: z.ZodOptional<z.ZodString>;
54
+ }, "strict", z.ZodTypeAny, {
55
+ ws_slug: string;
56
+ project_slug: string;
57
+ type?: string | undefined;
58
+ board_slug?: string | undefined;
59
+ }, {
60
+ ws_slug: string;
61
+ project_slug: string;
62
+ type?: string | undefined;
63
+ board_slug?: string | undefined;
64
+ }>;
65
+ export type ListBoardInput = z.infer<typeof ListBoardInputSchema>;
66
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/schemas/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;EAOd,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,iBAAiB;;;;;;;;;;EAKnB,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;EAGtB,CAAC;AAEZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ export const WsSlugSchema = z
3
+ .object({
4
+ ws_slug: z
5
+ .string()
6
+ .min(1)
7
+ .describe("Workspace slug (UUID from panel.otask.ru URL)"),
8
+ })
9
+ .strict();
10
+ export const ProjectSlugSchema = WsSlugSchema.extend({
11
+ project_slug: z
12
+ .string()
13
+ .min(1)
14
+ .describe("Project slug (UUID from panel.otask.ru URL)"),
15
+ }).strict();
16
+ export const ListProjectTasksInputSchema = ProjectSlugSchema.extend({
17
+ page: z.number().int().optional().describe("Page number for pagination"),
18
+ status_id: z.number().int().optional().describe("Filter by status id"),
19
+ board_id: z.number().int().optional().describe("Filter by board id"),
20
+ board_column_id: z
21
+ .number()
22
+ .int()
23
+ .optional()
24
+ .describe("Filter by board column id"),
25
+ }).strict();
26
+ export const ListBoardInputSchema = ProjectSlugSchema.extend({
27
+ type: z.string().optional().describe("Board type filter"),
28
+ board_slug: z.string().optional().describe("Specific board slug"),
29
+ }).strict();
30
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/schemas/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;IACnD,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACtE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACpE,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,2BAA2B,CAAC;CACzC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAClE,CAAC,CAAC,MAAM,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { OtaskAuthResolver } from "./services/auth.js";
3
+ import { type ProjectGuard } from "./services/project-guard.js";
4
+ export declare function createMcpServer(auth: OtaskAuthResolver, guard?: ProjectGuard): McpServer;
5
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AAGrC,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,EACvB,KAAK,GAAE,YAAmE,GACzE,SAAS,CASX"}
package/dist/server.js ADDED
@@ -0,0 +1,13 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { createOtaskClient } from "./services/client.js";
3
+ import { createProjectGuard, parseProjectAllowList, } from "./services/project-guard.js";
4
+ import { registerAllTools } from "./tools/register.js";
5
+ export function createMcpServer(auth, guard = createProjectGuard(parseProjectAllowList(undefined))) {
6
+ const server = new McpServer({
7
+ name: "otask-mcp-server",
8
+ version: "1.2.0",
9
+ });
10
+ registerAllTools(server, { api: createOtaskClient(auth), guard });
11
+ return server;
12
+ }
13
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,UAAU,eAAe,CAC7B,IAAuB,EACvB,QAAsB,kBAAkB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gBAAgB,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { OtaskAuthResolver } from "./auth.js";
2
+ import type { CreateTaskBody, ListBoardResult, ListProjectTasksResult, OtaskProjectSummary, OtaskTask, UpdateTaskBody, UpdateTaskResult } from "../types.js";
3
+ export declare class OtaskApiError extends Error {
4
+ readonly status: number;
5
+ readonly body?: unknown | undefined;
6
+ constructor(message: string, status: number, body?: unknown | undefined);
7
+ }
8
+ export declare function getTask(wsSlug: string, taskSlug: string, auth: OtaskAuthResolver): Promise<OtaskTask>;
9
+ export declare function updateTask(wsSlug: string, taskSlug: string, body: UpdateTaskBody, auth: OtaskAuthResolver): Promise<UpdateTaskResult>;
10
+ export declare function listProjects(wsSlug: string, auth: OtaskAuthResolver): Promise<OtaskProjectSummary[]>;
11
+ export declare function listProjectTasks(wsSlug: string, projectSlug: string, query: Record<string, string | number | undefined> | undefined, auth: OtaskAuthResolver): Promise<ListProjectTasksResult>;
12
+ export declare function listBoard(wsSlug: string, projectSlug: string, query: {
13
+ type?: string;
14
+ board_slug?: string;
15
+ } | undefined, auth: OtaskAuthResolver): Promise<ListBoardResult>;
16
+ export declare function listMembers(wsSlug: string, auth: OtaskAuthResolver): Promise<unknown[]>;
17
+ export declare function listTags(wsSlug: string, auth: OtaskAuthResolver): Promise<unknown[]>;
18
+ export declare function listComments(wsSlug: string, taskSlug: string, body: object | undefined, auth: OtaskAuthResolver): Promise<unknown>;
19
+ export declare function addComment(wsSlug: string, taskSlug: string, comment: string, parentId: number | undefined, auth: OtaskAuthResolver): Promise<unknown>;
20
+ export declare function createTask(wsSlug: string, body: CreateTaskBody, auth: OtaskAuthResolver): Promise<OtaskTask>;
21
+ export declare function archiveTask(wsSlug: string, taskSlug: string, auth: OtaskAuthResolver): Promise<OtaskTask>;
22
+ export declare function formatApiError(error: unknown): string;
23
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EAEtB,mBAAmB,EACnB,SAAS,EACT,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAGrB,qBAAa,aAAc,SAAQ,KAAK;aAGpB,MAAM,EAAE,MAAM;aACd,IAAI,CAAC,EAAE,OAAO;gBAF9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO,YAAA;CAKjC;AA+ED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,SAAS,CAAC,CASpB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA4B3B;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAUhC;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,EAC9D,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,sBAAsB,CAAC,CA6BjC;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EACzD,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,eAAe,CAAC,CA0B1B;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC,CAUpB;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC,CAUpB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,SAAS,CAAC,CAWpB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,SAAS,CAAC,CAapB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAmBrD"}