@vibesdotdev/integrations-miro 0.0.0-stage → 1.0.0-rc.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 (119) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +52 -2
  3. package/dist/client/helper.d.ts +5 -0
  4. package/dist/client/helper.d.ts.map +1 -0
  5. package/dist/client/helper.js +6 -0
  6. package/dist/client/helper.js.map +1 -0
  7. package/dist/client/index.d.ts +3 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +3 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/client/runtime-client.d.ts +36 -0
  12. package/dist/client/runtime-client.d.ts.map +1 -0
  13. package/dist/client/runtime-client.js +108 -0
  14. package/dist/client/runtime-client.js.map +1 -0
  15. package/dist/docs/integrations-miro.docs.descriptor.d.ts +19 -0
  16. package/dist/docs/integrations-miro.docs.descriptor.d.ts.map +1 -0
  17. package/dist/docs/integrations-miro.docs.descriptor.js +47 -0
  18. package/dist/docs/integrations-miro.docs.descriptor.js.map +1 -0
  19. package/dist/index.d.ts +12 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +10 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/integrations-miro.plugin.d.ts +4 -0
  24. package/dist/integrations-miro.plugin.d.ts.map +1 -0
  25. package/dist/integrations-miro.plugin.js +22 -0
  26. package/dist/integrations-miro.plugin.js.map +1 -0
  27. package/dist/miro/errors.d.ts +10 -0
  28. package/dist/miro/errors.d.ts.map +1 -0
  29. package/dist/miro/errors.js +23 -0
  30. package/dist/miro/errors.js.map +1 -0
  31. package/dist/miro/index.d.ts +7 -0
  32. package/dist/miro/index.d.ts.map +1 -0
  33. package/dist/miro/index.js +5 -0
  34. package/dist/miro/index.js.map +1 -0
  35. package/dist/miro/miro-client.d.ts +22 -0
  36. package/dist/miro/miro-client.d.ts.map +1 -0
  37. package/dist/miro/miro-client.js +225 -0
  38. package/dist/miro/miro-client.js.map +1 -0
  39. package/dist/miro/miro-implementation.d.ts +17 -0
  40. package/dist/miro/miro-implementation.d.ts.map +1 -0
  41. package/dist/miro/miro-implementation.js +108 -0
  42. package/dist/miro/miro-implementation.js.map +1 -0
  43. package/dist/miro/miro-schemas.d.ts +2 -0
  44. package/dist/miro/miro-schemas.d.ts.map +1 -0
  45. package/dist/miro/miro-schemas.js +2 -0
  46. package/dist/miro/miro-schemas.js.map +1 -0
  47. package/dist/miro/system.integration.miro.descriptor.d.ts +69 -0
  48. package/dist/miro/system.integration.miro.descriptor.d.ts.map +1 -0
  49. package/dist/miro/system.integration.miro.descriptor.js +109 -0
  50. package/dist/miro/system.integration.miro.descriptor.js.map +1 -0
  51. package/dist/miro.catalog.plugin.d.ts +78 -0
  52. package/dist/miro.catalog.plugin.d.ts.map +1 -0
  53. package/dist/miro.catalog.plugin.js +21 -0
  54. package/dist/miro.catalog.plugin.js.map +1 -0
  55. package/dist/miro.client.plugin.d.ts +9 -0
  56. package/dist/miro.client.plugin.d.ts.map +1 -0
  57. package/dist/miro.client.plugin.js +38 -0
  58. package/dist/miro.client.plugin.js.map +1 -0
  59. package/dist/schemas/http.d.ts +42 -0
  60. package/dist/schemas/http.d.ts.map +1 -0
  61. package/dist/schemas/http.js +33 -0
  62. package/dist/schemas/http.js.map +1 -0
  63. package/dist/schemas/miro.d.ts +445 -0
  64. package/dist/schemas/miro.d.ts.map +1 -0
  65. package/dist/schemas/miro.js +171 -0
  66. package/dist/schemas/miro.js.map +1 -0
  67. package/dist/schemas/oauth.d.ts +136 -0
  68. package/dist/schemas/oauth.d.ts.map +1 -0
  69. package/dist/schemas/oauth.js +42 -0
  70. package/dist/schemas/oauth.js.map +1 -0
  71. package/dist/schemas/operations.d.ts +540 -0
  72. package/dist/schemas/operations.d.ts.map +1 -0
  73. package/dist/schemas/operations.js +58 -0
  74. package/dist/schemas/operations.js.map +1 -0
  75. package/dist/schemas/sync.d.ts +340 -0
  76. package/dist/schemas/sync.d.ts.map +1 -0
  77. package/dist/schemas/sync.js +40 -0
  78. package/dist/schemas/sync.js.map +1 -0
  79. package/dist/schemas/tools.d.ts +533 -0
  80. package/dist/schemas/tools.d.ts.map +1 -0
  81. package/dist/schemas/tools.js +58 -0
  82. package/dist/schemas/tools.js.map +1 -0
  83. package/dist/server/oauth.d.ts +17 -0
  84. package/dist/server/oauth.d.ts.map +1 -0
  85. package/dist/server/oauth.js +74 -0
  86. package/dist/server/oauth.js.map +1 -0
  87. package/dist/sync/miro.sync-endpoint.descriptor.d.ts +14 -0
  88. package/dist/sync/miro.sync-endpoint.descriptor.d.ts.map +1 -0
  89. package/dist/sync/miro.sync-endpoint.descriptor.js +10 -0
  90. package/dist/sync/miro.sync-endpoint.descriptor.js.map +1 -0
  91. package/dist/sync/miro.sync-endpoint.impl.d.ts +31 -0
  92. package/dist/sync/miro.sync-endpoint.impl.d.ts.map +1 -0
  93. package/dist/sync/miro.sync-endpoint.impl.js +353 -0
  94. package/dist/sync/miro.sync-endpoint.impl.js.map +1 -0
  95. package/dist/sync/miro.title.sync-mapping.descriptor.d.ts +15 -0
  96. package/dist/sync/miro.title.sync-mapping.descriptor.d.ts.map +1 -0
  97. package/dist/sync/miro.title.sync-mapping.descriptor.js +15 -0
  98. package/dist/sync/miro.title.sync-mapping.descriptor.js.map +1 -0
  99. package/dist/sync/miro.title.sync-mapping.impl.d.ts +17 -0
  100. package/dist/sync/miro.title.sync-mapping.impl.d.ts.map +1 -0
  101. package/dist/sync/miro.title.sync-mapping.impl.js +20 -0
  102. package/dist/sync/miro.title.sync-mapping.impl.js.map +1 -0
  103. package/dist/tools/descriptors.d.ts +1049 -0
  104. package/dist/tools/descriptors.d.ts.map +1 -0
  105. package/dist/tools/descriptors.js +152 -0
  106. package/dist/tools/descriptors.js.map +1 -0
  107. package/dist/tools/impl.d.ts +13 -0
  108. package/dist/tools/impl.d.ts.map +1 -0
  109. package/dist/tools/impl.js +60 -0
  110. package/dist/tools/impl.js.map +1 -0
  111. package/dist/tools/index.d.ts +3 -0
  112. package/dist/tools/index.d.ts.map +1 -0
  113. package/dist/tools/index.js +3 -0
  114. package/dist/tools/index.js.map +1 -0
  115. package/dist/tools/schemas.d.ts +2 -0
  116. package/dist/tools/schemas.d.ts.map +1 -0
  117. package/dist/tools/schemas.js +2 -0
  118. package/dist/tools/schemas.js.map +1 -0
  119. package/package.json +104 -4
@@ -0,0 +1,22 @@
1
+ import { type MiroClientConfig } from '../schemas/http.ts';
2
+ import { type CreateMiroBoardInput, type CreateMiroItemInput, type DeleteMiroItemResult, type MiroBoard, type MiroBoardIdInput, type MiroBoardListOptions, type MiroBoardListResult, type MiroBoardUpdateResult, type MiroItem, type MiroItemIdInput, type MiroItemListOptions, type MiroItemListResult, type UpdateMiroBoardInput, type UpdateMiroItemInput } from './miro-schemas.ts';
3
+ export { MiroAPIError } from './errors.ts';
4
+ export type { MiroFetch, MiroClientConfig } from '../schemas/http.ts';
5
+ /** Typed, bounded transport for Miro REST API v2. */
6
+ export declare class MiroAPIClient {
7
+ private readonly apiToken;
8
+ private readonly fetchFn;
9
+ constructor(config: MiroClientConfig);
10
+ listBoards(options?: MiroBoardListOptions): Promise<MiroBoardListResult>;
11
+ getBoard(input: MiroBoardIdInput | string): Promise<MiroBoard | null>;
12
+ createBoard(input: CreateMiroBoardInput): Promise<MiroBoard>;
13
+ updateBoard(input: UpdateMiroBoardInput): Promise<MiroBoardUpdateResult>;
14
+ listItems(options: MiroItemListOptions): Promise<MiroItemListResult>;
15
+ getItem(input: MiroItemIdInput): Promise<MiroItem | null>;
16
+ createItem(input: CreateMiroItemInput): Promise<MiroItem>;
17
+ updateItem(input: UpdateMiroItemInput): Promise<MiroItem>;
18
+ deleteItem(input: MiroItemIdInput): Promise<DeleteMiroItemResult>;
19
+ private request;
20
+ private requestResult;
21
+ }
22
+ //# sourceMappingURL=miro-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-client.d.ts","sourceRoot":"","sources":["../../src/miro/miro-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoF,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG7I,OAAO,EAeN,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAGvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtE,qDAAqD;AACrD,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;gBAExB,MAAM,EAAE,gBAAgB;IAO9B,UAAU,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsB5E,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAUrE,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;IAO5D,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAyBxE,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBpE,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAczD,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAWzD,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAWzD,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC;YASzD,OAAO;YAOP,aAAa;CAgC3B"}
@@ -0,0 +1,225 @@
1
+ import { CapabilityError, valueFreeFailure, settle } from '@vibesdotdev/kernel';
2
+ import { MiroAPIError } from "./errors.js";
3
+ import { RawMiroListSchema, MiroBoardLookupSchema, MiroClientConfigSchema } from "../schemas/http.js";
4
+ import { MiroJsonValueSchema, MiroJsonRecordSchema } from "../schemas/miro.js";
5
+ import { parseMiroBoundary, parseMiroResponse } from "../schemas/operations.js";
6
+ import { CreateMiroBoardInputSchema, CreateMiroItemInputSchema, DeleteMiroItemResultSchema, MiroBoardListOptionsSchema, MiroBoardListResultSchema, MiroBoardSchema, MiroBoardUpdateResultSchema, MiroItemIdInputSchema, MiroItemListOptionsSchema, MiroItemListResultSchema, MiroItemSchema, MiroRateLimitMetadataSchema, UpdateMiroBoardInputSchema, UpdateMiroItemInputSchema } from "./miro-schemas.js";
7
+ const MIRO_API_BASE = 'https://api.miro.com/v2';
8
+ const ITEM_ENDPOINTS = {
9
+ card: 'cards', shape: 'shapes', sticky_note: 'sticky_notes', text: 'texts'
10
+ };
11
+ export { MiroAPIError } from "./errors.js";
12
+ /** Typed, bounded transport for Miro REST API v2. */
13
+ export class MiroAPIClient {
14
+ apiToken;
15
+ fetchFn;
16
+ constructor(config) {
17
+ const parsed = MiroClientConfigSchema.safeParse(config);
18
+ if (!parsed.success)
19
+ throw new MiroAPIError('Miro token is required.', { reason: 'miro-token-required' });
20
+ this.apiToken = parsed.data.apiToken;
21
+ this.fetchFn = parsed.data.fetchFn ?? fetch;
22
+ }
23
+ async listBoards(options = {}) {
24
+ const input = parseMiroBoundary(MiroBoardListOptionsSchema, options);
25
+ const params = new URLSearchParams({
26
+ limit: String(input.limit),
27
+ offset: String(input.offset)
28
+ });
29
+ setParam(params, 'team_id', input.teamId);
30
+ setParam(params, 'project_id', input.projectId);
31
+ setParam(params, 'query', input.query);
32
+ setParam(params, 'owner', input.owner);
33
+ setParam(params, 'sort', input.sort);
34
+ const raw = parseMiroResponse(RawMiroListSchema, await this.request(`/boards?${params.toString()}`));
35
+ return parseMiroResponse(MiroBoardListResultSchema, {
36
+ boards: raw.data.map((board) => parseMiroResponse(MiroBoardSchema, board)),
37
+ size: raw.size ?? raw.data.length,
38
+ limit: raw.limit ?? input.limit,
39
+ offset: raw.offset ?? input.offset,
40
+ total: raw.total
41
+ });
42
+ }
43
+ async getBoard(input) {
44
+ const { boardId } = parseMiroBoundary(MiroBoardLookupSchema, input);
45
+ try {
46
+ return parseMiroResponse(MiroBoardSchema, await this.request(`/boards/${encodeURIComponent(boardId)}`));
47
+ }
48
+ catch (error) {
49
+ if (error instanceof MiroAPIError && error.code === 'NOT_FOUND' && error.reason === 'record-absent' && error.details?.failure === undefined)
50
+ return null;
51
+ throw error;
52
+ }
53
+ }
54
+ async createBoard(input) {
55
+ const request = parseMiroBoundary(CreateMiroBoardInputSchema, input);
56
+ return parseMiroResponse(MiroBoardSchema, await this.request('/boards', { method: 'POST', body: mutableBoardBody(request) }));
57
+ }
58
+ async updateBoard(input) {
59
+ const request = parseMiroBoundary(UpdateMiroBoardInputSchema, input);
60
+ const result = await this.requestResult(`/boards/${encodeURIComponent(request.boardId)}`, {
61
+ method: 'PATCH',
62
+ body: mutableBoardBody(request)
63
+ });
64
+ if (result.status !== 202) {
65
+ return parseMiroResponse(MiroBoardUpdateResultSchema, {
66
+ boardId: request.boardId,
67
+ state: 'completed',
68
+ board: parseMiroResponse(MiroBoardSchema, result.data),
69
+ pendingFields: []
70
+ });
71
+ }
72
+ const board = await this.getBoard(request.boardId);
73
+ const pendingFields = board ? pendingBoardFields(board, request) : mutableBoardFieldNames(request);
74
+ return parseMiroResponse(MiroBoardUpdateResultSchema, {
75
+ boardId: request.boardId,
76
+ state: pendingFields.length === 0 ? 'completed' : 'accepted',
77
+ board: board ?? undefined,
78
+ pendingFields
79
+ });
80
+ }
81
+ async listItems(options) {
82
+ const input = parseMiroBoundary(MiroItemListOptionsSchema, options);
83
+ const params = new URLSearchParams({ limit: String(input.limit) });
84
+ setParam(params, 'cursor', input.cursor);
85
+ setParam(params, 'type', input.type);
86
+ const raw = parseMiroResponse(RawMiroListSchema, await this.request(`/boards/${encodeURIComponent(input.boardId)}/items?${params.toString()}`));
87
+ return parseMiroResponse(MiroItemListResultSchema, {
88
+ items: raw.data.map((item) => parseMiroResponse(MiroItemSchema, item)),
89
+ hasMore: Boolean(raw.cursor),
90
+ nextCursor: raw.cursor
91
+ });
92
+ }
93
+ async getItem(input) {
94
+ const request = parseMiroBoundary(MiroItemIdInputSchema, input);
95
+ try {
96
+ return parseMiroResponse(MiroItemSchema, await this.request(`/boards/${encodeURIComponent(request.boardId)}/items/${encodeURIComponent(request.itemId)}`));
97
+ }
98
+ catch (error) {
99
+ if (error instanceof MiroAPIError && error.code === 'NOT_FOUND' && error.reason === 'record-absent' && error.details?.failure === undefined)
100
+ return null;
101
+ throw error;
102
+ }
103
+ }
104
+ async createItem(input) {
105
+ const request = parseMiroBoundary(CreateMiroItemInputSchema, input);
106
+ const endpoint = ITEM_ENDPOINTS[request.type];
107
+ return parseMiroResponse(MiroItemSchema, await this.request(`/boards/${encodeURIComponent(request.boardId)}/${endpoint}`, {
108
+ method: 'POST',
109
+ body: mutableItemBody(request)
110
+ }));
111
+ }
112
+ async updateItem(input) {
113
+ const request = parseMiroBoundary(UpdateMiroItemInputSchema, input);
114
+ const endpoint = ITEM_ENDPOINTS[request.type];
115
+ return parseMiroResponse(MiroItemSchema, await this.request(`/boards/${encodeURIComponent(request.boardId)}/${endpoint}/${encodeURIComponent(request.itemId)}`, { method: 'PATCH', body: mutableItemBody(request) }));
116
+ }
117
+ async deleteItem(input) {
118
+ const request = parseMiroBoundary(MiroItemIdInputSchema, input);
119
+ await this.request(`/boards/${encodeURIComponent(request.boardId)}/items/${encodeURIComponent(request.itemId)}`, { method: 'DELETE' });
120
+ return parseMiroResponse(DeleteMiroItemResultSchema, { deleted: true, itemId: request.itemId });
121
+ }
122
+ async request(path, options = {}) {
123
+ return (await this.requestResult(path, options)).data;
124
+ }
125
+ async requestResult(path, options = {}) {
126
+ const headers = new Headers({ Accept: 'application/json' });
127
+ if (this.apiToken !== undefined) {
128
+ headers.set('Authorization', `Bearer ${this.apiToken}`);
129
+ }
130
+ if (options.body)
131
+ headers.set('Content-Type', 'application/json');
132
+ const attempt = await settle(() => this.fetchFn(`${MIRO_API_BASE}${path}`, {
133
+ method: options.method ?? 'GET', headers,
134
+ body: options.body ? JSON.stringify(options.body) : undefined
135
+ }));
136
+ if (!attempt.ok) {
137
+ if (attempt.cause instanceof CapabilityError)
138
+ throw attempt.cause;
139
+ throw new MiroAPIError('Miro transport failed.', {
140
+ reason: 'miro-transport-failed', failure: valueFreeFailure(attempt.cause)
141
+ });
142
+ }
143
+ const response = attempt.value;
144
+ if (!response.ok) {
145
+ const released = await settle(() => response.body?.cancel());
146
+ throw new MiroAPIError('Miro request failed.', {
147
+ status: response.status, rateLimit: rateLimitMetadata(response.headers),
148
+ failure: released.ok ? undefined : valueFreeFailure(released.cause)
149
+ });
150
+ }
151
+ if (response.status === 204)
152
+ return { status: response.status, data: undefined };
153
+ const payload = await readJson(response);
154
+ return { status: response.status, data: payload };
155
+ }
156
+ }
157
+ function mutableItemBody(input) {
158
+ return parseMiroBoundary(MiroJsonRecordSchema, Object.fromEntries(Object.entries({
159
+ data: input.data, style: input.style, position: input.position,
160
+ geometry: input.geometry, parent: input.parent
161
+ }).filter(([, value]) => value !== undefined)));
162
+ }
163
+ function mutableBoardBody(input) {
164
+ return parseMiroBoundary(MiroJsonRecordSchema, Object.fromEntries(Object.entries({
165
+ name: input.name, description: input.description, teamId: input.teamId, projectId: input.projectId
166
+ }).filter(([, value]) => value !== undefined)));
167
+ }
168
+ function mutableBoardFieldNames(input) {
169
+ return ['name', 'description', 'teamId', 'projectId'].filter((field) => input[field] !== undefined);
170
+ }
171
+ function pendingBoardFields(board, input) {
172
+ return mutableBoardFieldNames(input).filter((field) => {
173
+ switch (field) {
174
+ case 'name':
175
+ return board.name !== input.name;
176
+ case 'description':
177
+ return (board.description ?? '') !== input.description;
178
+ case 'teamId':
179
+ return board.team?.id !== input.teamId;
180
+ case 'projectId':
181
+ return board.project?.id !== input.projectId;
182
+ }
183
+ });
184
+ }
185
+ async function readJson(response) {
186
+ const attempt = await settle(async () => {
187
+ const text = await response.text();
188
+ if (text.length === 0)
189
+ return undefined;
190
+ return parseMiroResponse(MiroJsonValueSchema, JSON.parse(text));
191
+ });
192
+ if (!attempt.ok) {
193
+ if (attempt.cause instanceof CapabilityError)
194
+ throw attempt.cause;
195
+ throw new MiroAPIError('Miro response is invalid.', {
196
+ failure: valueFreeFailure(attempt.cause),
197
+ status: response.status, reason: 'miro-response-invalid',
198
+ rateLimit: rateLimitMetadata(response.headers)
199
+ });
200
+ }
201
+ return attempt.value;
202
+ }
203
+ function rateLimitMetadata(headers) {
204
+ const candidate = {
205
+ limitCredits: headerNumber(headers, 'X-RateLimit-Limit'),
206
+ remainingCredits: headerNumber(headers, 'X-RateLimit-Remaining'),
207
+ resetAt: headerNumber(headers, 'X-RateLimit-Reset'),
208
+ retryAfterSeconds: headerNumber(headers, 'Retry-After')
209
+ };
210
+ if (Object.values(candidate).every((value) => value === undefined))
211
+ return undefined;
212
+ return MiroRateLimitMetadataSchema.parse(candidate);
213
+ }
214
+ function headerNumber(headers, name) {
215
+ const raw = headers.get(name);
216
+ if (raw === null || raw.trim().length === 0)
217
+ return undefined;
218
+ const value = Number(raw);
219
+ return Number.isFinite(value) && value >= 0 ? value : undefined;
220
+ }
221
+ function setParam(params, key, value) {
222
+ if (value !== undefined)
223
+ params.set(key, value);
224
+ }
225
+ //# sourceMappingURL=miro-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-client.js","sourceRoot":"","sources":["../../src/miro/miro-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type MiroOperationInput } from '../schemas/operations.ts';
2
+ import type { IntegrationConnectionSelector, IntegrationOAuthAuthorization, IntegrationOAuthCompletion, IntegrationOAuthStart, IntegrationOperationResult } from '@vibesdotdev/integrations/schemas/integration-descriptor';
3
+ import { BaseIntegrationProvider } from '@vibesdotdev/integrations/kinds/integration';
4
+ import { MiroAPIClient } from './miro-client.ts';
5
+ import { type MiroPullOptions, type MiroPullResult } from './miro-schemas.ts';
6
+ /** Hosted Miro integration provider. */
7
+ export declare class MiroIntegration extends BaseIntegrationProvider {
8
+ startAuthorization(_input: IntegrationOAuthStart): Promise<IntegrationOAuthAuthorization>;
9
+ completeAuthorization(_input: IntegrationOAuthCompletion): Promise<void>;
10
+ invokeOperation<T = unknown>(opId: string, args?: MiroOperationInput): Promise<IntegrationOperationResult<T>>;
11
+ invokeOperationForConnection<T = unknown>(selector: Readonly<IntegrationConnectionSelector>, opId: string, args?: MiroOperationInput): Promise<IntegrationOperationResult<T>>;
12
+ private dispatch;
13
+ getClient(selector?: Readonly<IntegrationConnectionSelector>): Promise<MiroAPIClient>;
14
+ /** Pull one page only; cursor persistence and mapping belong to the sync owner. */
15
+ pullBoardItems(options: MiroPullOptions, selector?: Readonly<IntegrationConnectionSelector>): Promise<MiroPullResult>;
16
+ }
17
+ //# sourceMappingURL=miro-implementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-implementation.d.ts","sourceRoot":"","sources":["../../src/miro/miro-implementation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAA+C,MAAM,0BAA0B,CAAC;AAChH,OAAO,KAAK,EACX,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAUN,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,mBAAmB,CAAC;AAE3B,wCAAwC;AACxC,qBAAa,eAAgB,SAAQ,uBAAuB;IAE5C,kBAAkB,CAChC,MAAM,EAAE,qBAAqB,GAC3B,OAAO,CAAC,6BAA6B,CAAC;IAI1B,qBAAqB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;IAKtH,4BAA4B,CAAC,CAAC,GAAG,OAAO,EACvC,QAAQ,EAAE,QAAQ,CAAC,6BAA6B,CAAC,EACjD,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAS3B,QAAQ;IAmDhB,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAgC3F,mFAAmF;IAC7E,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CAU3H"}
@@ -0,0 +1,108 @@
1
+ import * as z from 'zod/v4';
2
+ import { CapabilityError } from '@vibesdotdev/kernel';
3
+ import { parseMiroBoundary } from "../schemas/operations.js";
4
+ import { BaseIntegrationProvider } from '@vibesdotdev/integrations/kinds/integration';
5
+ import { MiroAPIClient } from "./miro-client.js";
6
+ import { sendIntegrationAuthenticatedRequest } from '@vibesdotdev/integrations/server/secrets';
7
+ import { CreateMiroBoardInputSchema, CreateMiroItemInputSchema, MiroBoardIdInputSchema, MiroBoardListOptionsSchema, MiroItemIdInputSchema, MiroItemListOptionsSchema, MiroPullOptionsSchema, UpdateMiroBoardInputSchema, UpdateMiroItemInputSchema } from "./miro-schemas.js";
8
+ /** Hosted Miro integration provider. */
9
+ export class MiroIntegration extends BaseIntegrationProvider {
10
+ async startAuthorization(_input) {
11
+ throw new CapabilityError('Miro OAuth is owned by the platform host.', 'UNAVAILABLE', { reason: 'miro-oauth-host-required' });
12
+ }
13
+ async completeAuthorization(_input) {
14
+ throw new CapabilityError('Miro OAuth is owned by the platform host.', 'UNAVAILABLE', { reason: 'miro-oauth-host-required' });
15
+ }
16
+ async invokeOperation(opId, args) {
17
+ return this.dispatch(opId, args);
18
+ }
19
+ async invokeOperationForConnection(selector, opId, args) {
20
+ return this.dispatch(opId, args, selector);
21
+ }
22
+ async dispatch(opId, args, selector) {
23
+ const declared = (this.descriptor.operations ?? []).some((operation) => operation.id === opId);
24
+ if (!declared) {
25
+ throw new CapabilityError('Miro does not declare this operation.', 'INVALID_INPUT', { reason: 'miro-operation-undeclared' });
26
+ }
27
+ const client = await this.getClient(selector);
28
+ let data;
29
+ switch (opId) {
30
+ case 'listBoards':
31
+ data = await client.listBoards(parseMiroBoundary(MiroBoardListOptionsSchema, args ?? {}));
32
+ break;
33
+ case 'getBoard':
34
+ data = await client.getBoard(parseMiroBoundary(MiroBoardIdInputSchema, args));
35
+ break;
36
+ case 'createBoard':
37
+ data = await client.createBoard(parseMiroBoundary(CreateMiroBoardInputSchema, args));
38
+ break;
39
+ case 'updateBoard':
40
+ data = await client.updateBoard(parseMiroBoundary(UpdateMiroBoardInputSchema, args));
41
+ break;
42
+ case 'listItems':
43
+ data = await client.listItems(parseMiroBoundary(MiroItemListOptionsSchema, args));
44
+ break;
45
+ case 'getItem':
46
+ data = await client.getItem(parseMiroBoundary(MiroItemIdInputSchema, args));
47
+ break;
48
+ case 'createItem':
49
+ data = await client.createItem(parseMiroBoundary(CreateMiroItemInputSchema, args));
50
+ break;
51
+ case 'updateItem':
52
+ data = await client.updateItem(parseMiroBoundary(UpdateMiroItemInputSchema, args));
53
+ break;
54
+ case 'deleteItem':
55
+ data = await client.deleteItem(parseMiroBoundary(MiroItemIdInputSchema, args));
56
+ break;
57
+ case 'pull-board-items':
58
+ data = await this.pullBoardItems(parseMiroBoundary(MiroPullOptionsSchema, args), selector);
59
+ break;
60
+ default:
61
+ throw new CapabilityError('Miro operation is not implemented.', 'INVALID_INPUT', { reason: 'miro-operation-undeclared' });
62
+ }
63
+ return { ok: true, data };
64
+ }
65
+ async getClient(selector) {
66
+ const runtime = this.context.runtime;
67
+ if (!runtime) {
68
+ throw new CapabilityError('Miro runtime is required.', 'UNAVAILABLE', { reason: 'miro-runtime-required' });
69
+ }
70
+ const resolved = await this.getCredentialUseConfiguration(selector);
71
+ const candidates = resolved.credentialReferences.accessToken ?? [];
72
+ if (candidates.length === 0) {
73
+ throw new CapabilityError('Miro access credential is required.', 'PERMISSION_DENIED', { reason: 'miro-token-required' });
74
+ }
75
+ return new MiroAPIClient({ fetchFn: async (input, init) => {
76
+ const request = new Request(input, init);
77
+ const method = request.method;
78
+ if (method !== 'GET' && method !== 'POST' && method !== 'PUT' && method !== 'PATCH' && method !== 'DELETE') {
79
+ throw new CapabilityError('Miro request method is unsupported.', 'INVALID_INPUT', { reason: 'miro-request-method-invalid' });
80
+ }
81
+ const textBody = z.string().safeParse(init?.body);
82
+ return sendIntegrationAuthenticatedRequest(runtime, {
83
+ url: request.url,
84
+ signal: request.signal,
85
+ options: {
86
+ method,
87
+ headers: Object.fromEntries(request.headers),
88
+ body: textBody.success ? textBody.data : request.body ?? undefined,
89
+ credentialBindings: [{
90
+ kind: 'header', candidates, header: 'authorization', prefix: 'Bearer '
91
+ }]
92
+ }
93
+ });
94
+ } });
95
+ }
96
+ /** Pull one page only; cursor persistence and mapping belong to the sync owner. */
97
+ async pullBoardItems(options, selector) {
98
+ const request = parseMiroBoundary(MiroPullOptionsSchema, options);
99
+ const response = await (await this.getClient(selector)).listItems(request);
100
+ return {
101
+ items: response.items,
102
+ hasMore: response.hasMore,
103
+ nextCursor: response.nextCursor,
104
+ scanned: response.items.length
105
+ };
106
+ }
107
+ }
108
+ //# sourceMappingURL=miro-implementation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-implementation.js","sourceRoot":"","sources":["../../src/miro/miro-implementation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from '../schemas/miro.ts';
2
+ //# sourceMappingURL=miro-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-schemas.d.ts","sourceRoot":"","sources":["../../src/miro/miro-schemas.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "../schemas/miro.js";
2
+ //# sourceMappingURL=miro-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-schemas.js","sourceRoot":"","sources":["../../src/miro/miro-schemas.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,69 @@
1
+ declare const _default: {
2
+ id: string;
3
+ kind: "integration/provider";
4
+ name?: string | undefined;
5
+ description?: string | undefined;
6
+ tags?: string[] | undefined;
7
+ hardware?: string[] | undefined;
8
+ enabled?: boolean | undefined;
9
+ capabilityId?: string | undefined;
10
+ retention?: string | {
11
+ reason: string;
12
+ maxAgeDays?: number | undefined;
13
+ maxEntries?: number | undefined;
14
+ maxBytes?: number | undefined;
15
+ cascadeFrom?: string | undefined;
16
+ ageField?: string | undefined;
17
+ enforcedBy?: string | undefined;
18
+ } | undefined;
19
+ requiredContext?: string[] | undefined;
20
+ optionalContext?: string[] | undefined;
21
+ provider?: string | undefined;
22
+ category?: "push" | "email" | "webhook" | "accounting" | "vcs" | "issue-tracker" | "productivity" | "ocr" | "messaging" | "sms" | "storage" | "analytics" | "observability" | "crm" | "calendar" | "other" | undefined;
23
+ priority?: number | undefined;
24
+ baseUrl?: string | undefined;
25
+ config?: Record<string, import("@vibesdotdev/kernel/bootstrap").JsonValue> | undefined;
26
+ protectedConfigKeys?: string[] | undefined;
27
+ configurationSource?: "account" | "host" | undefined;
28
+ configSettingKey?: string | undefined;
29
+ credentials?: {
30
+ key: string;
31
+ source: "secret" | "setting";
32
+ reference?: {
33
+ source: "secret";
34
+ key: string;
35
+ store?: string | undefined;
36
+ operation?: object | undefined;
37
+ } | undefined;
38
+ providerType?: string | undefined;
39
+ scope?: "project" | "user" | "platform" | "org" | undefined;
40
+ scopeId?: string | undefined;
41
+ settingKey?: string | undefined;
42
+ required?: boolean | undefined;
43
+ }[] | undefined;
44
+ oauth?: {
45
+ authorizationEndpoint: string;
46
+ tokenEndpoint: string;
47
+ scopes?: string[] | undefined;
48
+ authorizationParams?: Record<string, string> | undefined;
49
+ configFromCallback?: string[] | undefined;
50
+ clientAuthentication?: "form" | "basic" | undefined;
51
+ bodyEncoding?: "form" | "json" | undefined;
52
+ headers?: Record<string, string> | undefined;
53
+ scopeIdCallbackParam?: string | undefined;
54
+ } | undefined;
55
+ operations?: {
56
+ id: string;
57
+ name: string;
58
+ description?: string | undefined;
59
+ requiresOrg?: boolean | undefined;
60
+ }[] | undefined;
61
+ connection?: {
62
+ authMode?: "oauth" | "webhook" | "delegated" | "system-config" | undefined;
63
+ connectable?: boolean | undefined;
64
+ checkable?: boolean | undefined;
65
+ requiresProviderAdmin?: boolean | undefined;
66
+ } | undefined;
67
+ };
68
+ export default _default;
69
+ //# sourceMappingURL=system.integration.miro.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.integration.miro.descriptor.d.ts","sourceRoot":"","sources":["../../src/miro/system.integration.miro.descriptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wBA4GG"}
@@ -0,0 +1,109 @@
1
+ import { createRuntimeAsset } from '@vibesdotdev/kernel/factory';
2
+ import {} from '@vibesdotdev/integrations/schemas/integration-descriptor';
3
+ export default createRuntimeAsset({
4
+ kind: 'integration/provider',
5
+ id: 'integration.miro',
6
+ name: 'Miro',
7
+ description: 'Miro v2 boards and board-items transport for domain-owned projections.',
8
+ provider: 'miro',
9
+ category: 'productivity',
10
+ enabled: true,
11
+ priority: 90,
12
+ baseUrl: 'https://api.miro.com/v2',
13
+ configSettingKey: 'integrations.miro.config',
14
+ config: {
15
+ teamId: '',
16
+ boardId: ''
17
+ },
18
+ credentials: [
19
+ {
20
+ key: 'accessToken',
21
+ source: 'secret',
22
+ providerType: 'miro',
23
+ scope: 'org',
24
+ required: false
25
+ },
26
+ {
27
+ key: 'accessToken',
28
+ source: 'secret',
29
+ reference: { source: 'secret', key: 'MIRO_API_TOKEN' },
30
+ required: false
31
+ }
32
+ ],
33
+ oauth: {
34
+ authorizationEndpoint: 'https://miro.com/oauth/authorize',
35
+ tokenEndpoint: 'https://api.miro.com/v1/oauth/token',
36
+ scopes: ['boards:read', 'boards:write'],
37
+ configFromCallback: []
38
+ },
39
+ connection: {
40
+ authMode: 'oauth',
41
+ connectable: true,
42
+ checkable: true,
43
+ requiresProviderAdmin: false
44
+ },
45
+ operations: [
46
+ {
47
+ id: 'listBoards',
48
+ name: 'List boards',
49
+ description: 'List one bounded offset page of boards. Args: `MiroBoardListOptions`.',
50
+ requiresOrg: true
51
+ },
52
+ {
53
+ id: 'getBoard',
54
+ name: 'Get board',
55
+ description: 'Fetch a board by id. Args: `{ boardId: string }`.',
56
+ requiresOrg: true
57
+ },
58
+ {
59
+ id: 'createBoard',
60
+ name: 'Create board',
61
+ description: 'Create a board and optionally place it in an explicit team and Space. Args: `CreateMiroBoardInput`.',
62
+ requiresOrg: true
63
+ },
64
+ {
65
+ id: 'updateBoard',
66
+ name: 'Update board',
67
+ description: 'Update a board or move it to an explicit team and Space. Args: `UpdateMiroBoardInput`.',
68
+ requiresOrg: true
69
+ },
70
+ {
71
+ id: 'listItems',
72
+ name: 'List board items',
73
+ description: 'List one bounded cursor page of board items. Args: `MiroItemListOptions`.',
74
+ requiresOrg: true
75
+ },
76
+ {
77
+ id: 'getItem',
78
+ name: 'Get board item',
79
+ description: 'Fetch a board item by id. Args: `{ boardId: string; itemId: string }`.',
80
+ requiresOrg: true
81
+ },
82
+ {
83
+ id: 'createItem',
84
+ name: 'Create board item',
85
+ description: 'Create a supported board item. Args: `CreateMiroItemInput`.',
86
+ requiresOrg: true
87
+ },
88
+ {
89
+ id: 'updateItem',
90
+ name: 'Update board item',
91
+ description: 'Update a supported board item. Args: `UpdateMiroItemInput`.',
92
+ requiresOrg: true
93
+ },
94
+ {
95
+ id: 'deleteItem',
96
+ name: 'Delete board item',
97
+ description: 'Delete a board item. Args: `{ boardId: string; itemId: string }`.',
98
+ requiresOrg: true
99
+ },
100
+ {
101
+ id: 'pull-board-items',
102
+ name: 'Pull board items',
103
+ description: 'Pull exactly one bounded cursor page for a domain-owned sync binding. Args: `MiroPullOptions`.',
104
+ requiresOrg: true
105
+ }
106
+ ],
107
+ tags: ['system', 'integration', 'miro', 'boards', 'planning', 'sync']
108
+ });
109
+ //# sourceMappingURL=system.integration.miro.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.integration.miro.descriptor.js","sourceRoot":"","sources":["../../src/miro/system.integration.miro.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAEN,MAAM,0DAA0D,CAAC;AAElE,eAAe,kBAAkB,CAAqC;IACrE,IAAI,EAAE,sBAAsB;IAC5B,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,wEAAwE;IACrF,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,yBAAyB;IAClC,gBAAgB,EAAE,0BAA0B;IAC5C,MAAM,EAAE;QACP,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;KACX;IACD,WAAW,EAAE;QACZ;YACC,GAAG,EAAE,aAAa;YAClB,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,MAAM;YACpB,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,KAAK;SACf;QACD;YACC,GAAG,EAAE,aAAa;YAClB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,EAAE;YACtD,QAAQ,EAAE,KAAK;SACf;KACD;IACD,KAAK,EAAE;QACN,qBAAqB,EAAE,kCAAkC;QACzD,aAAa,EAAE,qCAAqC;QACpD,MAAM,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;QACvC,kBAAkB,EAAE,EAAE;KACtB;IACD,UAAU,EAAE;QACX,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,IAAI;QACf,qBAAqB,EAAE,KAAK;KAC5B;IACD,UAAU,EAAE;QACX;YACC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,uEAAuE;YACpF,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,mDAAmD;YAChE,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,cAAc;YACpB,WAAW,EACV,qGAAqG;YACtG,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,cAAc;YACpB,WAAW,EACV,wFAAwF;YACzF,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,2EAA2E;YACxF,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,wEAAwE;YACrF,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,6DAA6D;YAC1E,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,6DAA6D;YAC1E,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,mEAAmE;YAChF,WAAW,EAAE,IAAI;SACjB;QACD;YACC,EAAE,EAAE,kBAAkB;YACtB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EACV,gGAAgG;YACjG,WAAW,EAAE,IAAI;SACjB;KACD;IACD,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;CACrE,CAAC,CAAC"}