@kittl/sdk 0.0.5 → 0.0.7

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.
package/README.md CHANGED
@@ -8,6 +8,10 @@ Official JavaScript SDK for building apps on [Kittl](https://www.kittl.com).
8
8
  npm install @kittl/sdk
9
9
  ```
10
10
 
11
+ ## Backend helpers
12
+
13
+ For server-side token verification in your app backend, use [`@kittl/sdk-backend`](https://www.npmjs.com/package/@kittl/sdk-backend). See the [SDK backend guide](https://sdk-docs.kittl.dev/getting-started/sdk-backend) in the docs.
14
+
11
15
  ## Documentation
12
16
 
13
17
  Guides and API reference are in the [Kittl SDK documentation](https://sdk-docs.kittl.dev/getting-started/sdk).
@@ -2,24 +2,93 @@
2
2
  /*! Kittl SDK - https://kittl.com - see license for terms */
3
3
 
4
4
 
5
+ // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/shared/commands.js
6
+ var FROM_EXTENSION_COMMANDS = {
7
+ /** SDK API call */
8
+ SDK_CALL: "sdk-call",
9
+ /** AI handler registration */
10
+ AI_REGISTER_HANDLER: "ai-register-handler",
11
+ /** AI handler unregistration */
12
+ AI_UNREGISTER_HANDLER: "ai-unregister-handler",
13
+ /** File browser tab registration */
14
+ FILE_BROWSER_REGISTER: "file-browser-register",
15
+ /** File browser fetch content response */
16
+ FILE_BROWSER_FETCH_CONTENT_RESPONSE: "file-browser-fetch-content-response",
17
+ /** Stateless message send */
18
+ STATELESS_SEND: "stateless-send",
19
+ /** Stateless subscription */
20
+ STATELESS_SUBSCRIBE: "stateless-subscribe",
21
+ /** Stateless unsubscription */
22
+ STATELESS_UNSUBSCRIBE: "stateless-unsubscribe",
23
+ /** App state subscription */
24
+ APP_STATE_SUBSCRIBE: "app-state-subscribe",
25
+ /** App state unsubscription */
26
+ APP_STATE_UNSUBSCRIBE: "app-state-unsubscribe",
27
+ /** Batch creation */
28
+ BATCH_CREATE: "batch-create",
29
+ /** Batch commit */
30
+ BATCH_COMMIT: "batch-commit",
31
+ /** OAuth flow start */
32
+ AUTH_START: "auth-start",
33
+ /** OAuth token exchange */
34
+ AUTH_EXCHANGE: "auth-exchange",
35
+ /** Get OAuth token */
36
+ AUTH_GET_TOKEN: "auth-get-token",
37
+ /** Refresh OAuth token */
38
+ AUTH_REFRESH: "auth-refresh",
39
+ /** OAuth logout */
40
+ AUTH_LOGOUT: "auth-logout",
41
+ /** Get user token for authentication */
42
+ AUTH_GET_USER_TOKEN: "auth-get-user-token",
43
+ /** Context subscription */
44
+ CONTEXT_SUBSCRIBE: "context-subscribe",
45
+ /** Context unsubscription */
46
+ CONTEXT_UNSUBSCRIBE: "context-unsubscribe",
47
+ /** Design state subscription */
48
+ DESIGN_STATE_SUBSCRIBE: "design-state-subscribe",
49
+ /** Design state unsubscription */
50
+ DESIGN_STATE_UNSUBSCRIBE: "design-state-unsubscribe",
51
+ /** Extension loaded notification */
52
+ LOADED: "loaded"
53
+ };
54
+ var TO_EXTENSION_COMMANDS = {
55
+ /** SDK API response */
56
+ SDK_RESPONSE: "sdk-response",
57
+ /** File browser fetch content request */
58
+ FILE_BROWSER_FETCH_CONTENT_REQUEST: "file-browser-fetch-content-request",
59
+ /** Stateless message push */
60
+ STATELESS_MESSAGE: "stateless-message",
61
+ /** Context update push */
62
+ CONTEXT_UPDATE: "context-update",
63
+ /** AI generation update push */
64
+ AI_GENERATION_UPDATE: "ai-generation-update",
65
+ /** Design state update push */
66
+ DESIGN_STATE_UPDATE: "design-state-update",
67
+ /** App state update push */
68
+ APP_STATE_UPDATE: "app-state-update"
69
+ };
70
+
5
71
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/types/toExtensions.js
6
72
  var isSDKResponseMessage = (data) => {
7
- return typeof data === "object" && data !== null && "command" in data && data.command === "sdk-response" && "messageId" in data && typeof data.messageId === "string";
73
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.SDK_RESPONSE && "messageId" in data && typeof data.messageId === "string";
8
74
  };
9
75
  var isStatelessPushMessage = (data) => {
10
- return typeof data === "object" && data !== null && "command" in data && data.command === "stateless-message" && "type" in data && typeof data.type === "string" && "payload" in data && typeof data.payload === "object" && data.payload !== null;
76
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.STATELESS_MESSAGE && "type" in data && typeof data.type === "string" && "payload" in data && typeof data.payload === "object" && data.payload !== null;
11
77
  };
12
78
  var isAIGenerationUpdatePushMessage = (data) => {
13
- return typeof data === "object" && data !== null && "command" in data && data.command === "ai-generation-update" && "subscriptionId" in data && typeof data.subscriptionId === "string" && "update" in data && typeof data.update === "object" && data.update !== null;
79
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.AI_GENERATION_UPDATE && "subscriptionId" in data && typeof data.subscriptionId === "string" && "update" in data && typeof data.update === "object" && data.update !== null;
14
80
  };
15
81
  var isDesignStateUpdatePushMessage = (data) => {
16
- return typeof data === "object" && data !== null && "command" in data && data.command === "design-state-update" && "updates" in data && Array.isArray(data.updates);
82
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.DESIGN_STATE_UPDATE && "updates" in data && Array.isArray(data.updates);
17
83
  };
18
84
  var isAppStateUpdatePushMessage = (data) => {
19
- return typeof data === "object" && data !== null && "command" in data && data.command === "app-state-update" && "updates" in data && Array.isArray(data.updates);
85
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.APP_STATE_UPDATE && "updates" in data && Array.isArray(data.updates);
20
86
  };
21
87
  var isContextUpdatePushMessage = (data) => {
22
- return typeof data === "object" && data !== null && "command" in data && data.command === "context-update" && "subscriptionId" in data && typeof data.subscriptionId === "string" && "context" in data && typeof data.context === "object" && data.context !== null;
88
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.CONTEXT_UPDATE && "subscriptionId" in data && typeof data.subscriptionId === "string" && "context" in data && typeof data.context === "object" && data.context !== null;
89
+ };
90
+ var isFileBrowserFetchContentRequestMessage = (data) => {
91
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.FILE_BROWSER_FETCH_CONTENT_REQUEST && "requestId" in data && typeof data.requestId === "string" && "subscriptionId" in data && typeof data.subscriptionId === "string";
23
92
  };
24
93
 
25
94
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/shared/createApiProxyCore.js
@@ -148,56 +217,56 @@ var sendLoaded = () => {
148
217
  if (!parent || parent === window) {
149
218
  return;
150
219
  }
151
- const message = { command: "loaded" };
220
+ const message = { command: FROM_EXTENSION_COMMANDS.LOADED };
152
221
  postMessageToParent(message);
153
222
  };
154
223
 
155
224
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/apiProxy/index.js
156
225
  var createSDKCallMessage = {
157
226
  ai: (dots, args, messageId) => ({
158
- command: "sdk-call",
227
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
159
228
  dots,
160
229
  args,
161
230
  messageId,
162
231
  apiType: "ai"
163
232
  }),
164
233
  context: (dots, args, messageId) => ({
165
- command: "sdk-call",
234
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
166
235
  dots,
167
236
  args,
168
237
  messageId,
169
238
  apiType: "context"
170
239
  }),
171
240
  design: (dots, args, messageId) => ({
172
- command: "sdk-call",
241
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
173
242
  dots,
174
243
  args,
175
244
  messageId,
176
245
  apiType: "design"
177
246
  }),
178
247
  font: (dots, args, messageId) => ({
179
- command: "sdk-call",
248
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
180
249
  dots,
181
250
  args,
182
251
  messageId,
183
252
  apiType: "font"
184
253
  }),
185
254
  state: (dots, args, messageId) => ({
186
- command: "sdk-call",
255
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
187
256
  dots,
188
257
  args,
189
258
  messageId,
190
259
  apiType: "state"
191
260
  }),
192
261
  upload: (dots, args, messageId) => ({
193
- command: "sdk-call",
262
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
194
263
  dots,
195
264
  args,
196
265
  messageId,
197
266
  apiType: "upload"
198
267
  }),
199
268
  data: (dots, args, messageId) => ({
200
- command: "sdk-call",
269
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
201
270
  dots,
202
271
  args,
203
272
  messageId,
@@ -237,7 +306,7 @@ function createAIApiProxy() {
237
306
  generationHandlers.delete(subscriptionId);
238
307
  generationSubscriptions.delete(generatorId);
239
308
  const unregisterMessage = {
240
- command: "ai-unregister-handler",
309
+ command: FROM_EXTENSION_COMMANDS.AI_UNREGISTER_HANDLER,
241
310
  generatorId,
242
311
  subscriptionId
243
312
  };
@@ -247,7 +316,7 @@ function createAIApiProxy() {
247
316
  spendCredits: async (options) => {
248
317
  const { onAccept, onDecline, ...serializable } = options;
249
318
  const message = {
250
- command: "sdk-call",
319
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
251
320
  dots: ["spendCredits"],
252
321
  args: [serializable],
253
322
  messageId: generateMessageId(),
@@ -263,7 +332,7 @@ function createAIApiProxy() {
263
332
  },
264
333
  startGeneration: (generatorId, inputSettings, output) => {
265
334
  const message = {
266
- command: "sdk-call",
335
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
267
336
  dots: ["startGeneration"],
268
337
  args: [generatorId, inputSettings, output],
269
338
  messageId: generateMessageId(),
@@ -285,7 +354,7 @@ function createAIApiProxy() {
285
354
  generationHandlers.set(subscriptionId, onStatusUpdate);
286
355
  generationSubscriptions.set(generatorId, subscriptionId);
287
356
  const registerMessage = {
288
- command: "ai-register-handler",
357
+ command: FROM_EXTENSION_COMMANDS.AI_REGISTER_HANDLER,
289
358
  messageId: generateMessageId(),
290
359
  generatorId,
291
360
  subscriptionId
@@ -320,10 +389,87 @@ function createAIApiProxy() {
320
389
  };
321
390
  }
322
391
 
392
+ // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/apiProxy/fileBrowserApiProxy.js
393
+ var fetchContentHandlers = /* @__PURE__ */ new Map();
394
+ var tabIdToSubscriptionId = /* @__PURE__ */ new Map();
395
+ var dispatchFileBrowserFetchContentRequest = (requestId, subscriptionId, params) => {
396
+ const handler = fetchContentHandlers.get(subscriptionId);
397
+ if (!handler) {
398
+ const responseMessage = {
399
+ command: FROM_EXTENSION_COMMANDS.FILE_BROWSER_FETCH_CONTENT_RESPONSE,
400
+ requestId,
401
+ content: []
402
+ };
403
+ postMessageToParent(responseMessage);
404
+ return;
405
+ }
406
+ void handler(params).then((result) => {
407
+ const responseMessage = {
408
+ command: FROM_EXTENSION_COMMANDS.FILE_BROWSER_FETCH_CONTENT_RESPONSE,
409
+ requestId,
410
+ content: result.content,
411
+ next: result.next
412
+ };
413
+ postMessageToParent(responseMessage);
414
+ }).catch((e) => {
415
+ const responseMessage = {
416
+ command: FROM_EXTENSION_COMMANDS.FILE_BROWSER_FETCH_CONTENT_RESPONSE,
417
+ requestId,
418
+ content: [],
419
+ error: e instanceof Error ? e.message : "Unknown error"
420
+ };
421
+ postMessageToParent(responseMessage);
422
+ });
423
+ };
424
+ function createFileBrowserApiProxy() {
425
+ return {
426
+ registerUploadBrowser: async (tab) => {
427
+ const subscriptionId = generateMessageId();
428
+ const existingSubscriptionId = tabIdToSubscriptionId.get(tab.id);
429
+ if (existingSubscriptionId) {
430
+ fetchContentHandlers.delete(existingSubscriptionId);
431
+ }
432
+ fetchContentHandlers.set(subscriptionId, tab.fetchContent);
433
+ tabIdToSubscriptionId.set(tab.id, subscriptionId);
434
+ const registerMessage = {
435
+ command: FROM_EXTENSION_COMMANDS.FILE_BROWSER_REGISTER,
436
+ messageId: generateMessageId(),
437
+ tabId: tab.id,
438
+ label: tab.label,
439
+ subscriptionId
440
+ };
441
+ try {
442
+ const response = await sendMessage(registerMessage);
443
+ if (!response.isOk) {
444
+ fetchContentHandlers.delete(subscriptionId);
445
+ tabIdToSubscriptionId.delete(tab.id);
446
+ return {
447
+ isOk: false,
448
+ error: response.error
449
+ };
450
+ }
451
+ return {
452
+ isOk: true,
453
+ result: void 0
454
+ };
455
+ } catch {
456
+ fetchContentHandlers.delete(subscriptionId);
457
+ return {
458
+ isOk: false,
459
+ error: {
460
+ message: "Failed to register upload browser",
461
+ name: "SdkInternalError"
462
+ }
463
+ };
464
+ }
465
+ }
466
+ };
467
+ }
468
+
323
469
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/appState/index.js
324
470
  var sendUnsubscribe = (selectorIds) => {
325
471
  const message = {
326
- command: "app-state-unsubscribe",
472
+ command: FROM_EXTENSION_COMMANDS.APP_STATE_UNSUBSCRIBE,
327
473
  selectorIds
328
474
  };
329
475
  postMessageToParent(message);
@@ -350,7 +496,7 @@ var createAppStateBridgeApi = () => {
350
496
  }
351
497
  const messageId = generateMessageId();
352
498
  const subscribeMessage = {
353
- command: "app-state-subscribe",
499
+ command: FROM_EXTENSION_COMMANDS.APP_STATE_SUBSCRIBE,
354
500
  messageId,
355
501
  selectorIds,
356
502
  paths: pathArrays
@@ -413,7 +559,7 @@ var createAuthBridgeApi = () => {
413
559
  pkceCode = await hashPKCECode(code_verifier);
414
560
  }
415
561
  const message = {
416
- command: "auth-start",
562
+ command: FROM_EXTENSION_COMMANDS.AUTH_START,
417
563
  messageId: generateMessageId(),
418
564
  state,
419
565
  provider: request.provider,
@@ -439,7 +585,7 @@ var createAuthBridgeApi = () => {
439
585
  },
440
586
  exchangeCode: (request) => {
441
587
  const message = {
442
- command: "auth-exchange",
588
+ command: FROM_EXTENSION_COMMANDS.AUTH_EXCHANGE,
443
589
  messageId: generateMessageId(),
444
590
  code: request.code,
445
591
  code_verifier: request.code_verifier,
@@ -451,7 +597,7 @@ var createAuthBridgeApi = () => {
451
597
  },
452
598
  getAuthToken: (request) => {
453
599
  const message = {
454
- command: "auth-get-token",
600
+ command: FROM_EXTENSION_COMMANDS.AUTH_GET_TOKEN,
455
601
  messageId: generateMessageId(),
456
602
  provider: request.provider
457
603
  };
@@ -459,7 +605,7 @@ var createAuthBridgeApi = () => {
459
605
  },
460
606
  refreshToken: (request) => {
461
607
  const message = {
462
- command: "auth-refresh",
608
+ command: FROM_EXTENSION_COMMANDS.AUTH_REFRESH,
463
609
  messageId: generateMessageId(),
464
610
  provider: request.provider
465
611
  };
@@ -467,11 +613,18 @@ var createAuthBridgeApi = () => {
467
613
  },
468
614
  logout: (request) => {
469
615
  const message = {
470
- command: "auth-logout",
616
+ command: FROM_EXTENSION_COMMANDS.AUTH_LOGOUT,
471
617
  messageId: generateMessageId(),
472
618
  provider: request.provider
473
619
  };
474
620
  return sendMessage(message);
621
+ },
622
+ getUserToken: () => {
623
+ const message = {
624
+ command: "auth-get-user-token",
625
+ messageId: generateMessageId()
626
+ };
627
+ return sendMessage(message);
475
628
  }
476
629
  };
477
630
  };
@@ -479,7 +632,7 @@ var createAuthBridgeApi = () => {
479
632
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/batch/index.js
480
633
  var createBatch = async () => {
481
634
  const response = await sendMessage({
482
- command: "batch-create",
635
+ command: FROM_EXTENSION_COMMANDS.BATCH_CREATE,
483
636
  messageId: generateMessageId()
484
637
  });
485
638
  if (!response.isOk) {
@@ -487,7 +640,7 @@ var createBatch = async () => {
487
640
  }
488
641
  const { batchKey } = response.result;
489
642
  const sendDesignCall = (dots, args) => sendMessage({
490
- command: "sdk-call",
643
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
491
644
  dots,
492
645
  args,
493
646
  messageId: generateMessageId(),
@@ -496,7 +649,7 @@ var createBatch = async () => {
496
649
  });
497
650
  const commit = async () => {
498
651
  const res = await sendMessage({
499
- command: "batch-commit",
652
+ command: FROM_EXTENSION_COMMANDS.BATCH_COMMIT,
500
653
  messageId: generateMessageId(),
501
654
  batchKey
502
655
  });
@@ -536,7 +689,7 @@ var createContextBridgeApi = () => {
536
689
  let response;
537
690
  try {
538
691
  response = await sendMessage({
539
- command: "context-subscribe",
692
+ command: FROM_EXTENSION_COMMANDS.CONTEXT_SUBSCRIBE,
540
693
  messageId,
541
694
  subscriptionId
542
695
  });
@@ -551,7 +704,7 @@ var createContextBridgeApi = () => {
551
704
  return () => {
552
705
  subscriptionCallbacks.delete(subscriptionId);
553
706
  const message = {
554
- command: "context-unsubscribe",
707
+ command: FROM_EXTENSION_COMMANDS.CONTEXT_UNSUBSCRIBE,
555
708
  subscriptionId
556
709
  };
557
710
  postMessageToParent(message);
@@ -571,7 +724,7 @@ var createContextBridgeApi = () => {
571
724
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/designState/index.js
572
725
  var sendUnsubscribe2 = (selectorIds) => {
573
726
  const message = {
574
- command: "design-state-unsubscribe",
727
+ command: FROM_EXTENSION_COMMANDS.DESIGN_STATE_UNSUBSCRIBE,
575
728
  selectorIds
576
729
  };
577
730
  postMessageToParent(message);
@@ -598,7 +751,7 @@ var createDesignStateBridgeApi = () => {
598
751
  }
599
752
  const messageId = generateMessageId();
600
753
  const subscribeMessage = {
601
- command: "design-state-subscribe",
754
+ command: FROM_EXTENSION_COMMANDS.DESIGN_STATE_SUBSCRIBE,
602
755
  messageId,
603
756
  selectorIds,
604
757
  paths: pathArrays
@@ -642,7 +795,7 @@ var createStatelessBridgeApi = () => {
642
795
  send: (message) => {
643
796
  const messageId = generateMessageId();
644
797
  const bridgeMessage = {
645
- command: "stateless-send",
798
+ command: FROM_EXTENSION_COMMANDS.STATELESS_SEND,
646
799
  messageId,
647
800
  type: message.type,
648
801
  payload: message.payload
@@ -658,7 +811,7 @@ var createStatelessBridgeApi = () => {
658
811
  handlers.add(handler);
659
812
  const messageId = generateMessageId();
660
813
  const subscribeMessage = {
661
- command: "stateless-subscribe",
814
+ command: FROM_EXTENSION_COMMANDS.STATELESS_SUBSCRIBE,
662
815
  messageId,
663
816
  key
664
817
  };
@@ -668,7 +821,7 @@ var createStatelessBridgeApi = () => {
668
821
  subscribers.delete(key);
669
822
  const messageId = generateMessageId();
670
823
  const unsubscribeMessage = {
671
- command: "stateless-unsubscribe",
824
+ command: FROM_EXTENSION_COMMANDS.STATELESS_UNSUBSCRIBE,
672
825
  messageId,
673
826
  key
674
827
  };
@@ -726,6 +879,14 @@ var handleIncomingMessage = (event) => {
726
879
  }
727
880
  if (isContextUpdatePushMessage(data)) {
728
881
  dispatchContextUpdate(data);
882
+ return;
883
+ }
884
+ if (isFileBrowserFetchContentRequestMessage(data)) {
885
+ dispatchFileBrowserFetchContentRequest(
886
+ data.requestId,
887
+ data.subscriptionId,
888
+ data.params
889
+ );
729
890
  }
730
891
  };
731
892
  var bridgeHandlers = {
@@ -738,6 +899,7 @@ var bridgeHandlers = {
738
899
  font: createApiProxy("font"),
739
900
  state: createApiProxy("state"),
740
901
  upload: createApiProxy("upload"),
902
+ fileBrowser: createFileBrowserApiProxy(),
741
903
  auth: createAuthBridgeApi(),
742
904
  stateless: statelessApi,
743
905
  createBatch
@@ -1071,5 +1233,6 @@ if (typeof document !== "undefined" && typeof window !== "undefined") {
1071
1233
  }
1072
1234
  }
1073
1235
  export {
1074
- kittl
1236
+ kittl,
1237
+ unwrapResult
1075
1238
  };
package/dist/kittl-sdk.js CHANGED
@@ -3,24 +3,93 @@
3
3
 
4
4
  "use strict";
5
5
  (() => {
6
+ // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/shared/commands.js
7
+ var FROM_EXTENSION_COMMANDS = {
8
+ /** SDK API call */
9
+ SDK_CALL: "sdk-call",
10
+ /** AI handler registration */
11
+ AI_REGISTER_HANDLER: "ai-register-handler",
12
+ /** AI handler unregistration */
13
+ AI_UNREGISTER_HANDLER: "ai-unregister-handler",
14
+ /** File browser tab registration */
15
+ FILE_BROWSER_REGISTER: "file-browser-register",
16
+ /** File browser fetch content response */
17
+ FILE_BROWSER_FETCH_CONTENT_RESPONSE: "file-browser-fetch-content-response",
18
+ /** Stateless message send */
19
+ STATELESS_SEND: "stateless-send",
20
+ /** Stateless subscription */
21
+ STATELESS_SUBSCRIBE: "stateless-subscribe",
22
+ /** Stateless unsubscription */
23
+ STATELESS_UNSUBSCRIBE: "stateless-unsubscribe",
24
+ /** App state subscription */
25
+ APP_STATE_SUBSCRIBE: "app-state-subscribe",
26
+ /** App state unsubscription */
27
+ APP_STATE_UNSUBSCRIBE: "app-state-unsubscribe",
28
+ /** Batch creation */
29
+ BATCH_CREATE: "batch-create",
30
+ /** Batch commit */
31
+ BATCH_COMMIT: "batch-commit",
32
+ /** OAuth flow start */
33
+ AUTH_START: "auth-start",
34
+ /** OAuth token exchange */
35
+ AUTH_EXCHANGE: "auth-exchange",
36
+ /** Get OAuth token */
37
+ AUTH_GET_TOKEN: "auth-get-token",
38
+ /** Refresh OAuth token */
39
+ AUTH_REFRESH: "auth-refresh",
40
+ /** OAuth logout */
41
+ AUTH_LOGOUT: "auth-logout",
42
+ /** Get user token for authentication */
43
+ AUTH_GET_USER_TOKEN: "auth-get-user-token",
44
+ /** Context subscription */
45
+ CONTEXT_SUBSCRIBE: "context-subscribe",
46
+ /** Context unsubscription */
47
+ CONTEXT_UNSUBSCRIBE: "context-unsubscribe",
48
+ /** Design state subscription */
49
+ DESIGN_STATE_SUBSCRIBE: "design-state-subscribe",
50
+ /** Design state unsubscription */
51
+ DESIGN_STATE_UNSUBSCRIBE: "design-state-unsubscribe",
52
+ /** Extension loaded notification */
53
+ LOADED: "loaded"
54
+ };
55
+ var TO_EXTENSION_COMMANDS = {
56
+ /** SDK API response */
57
+ SDK_RESPONSE: "sdk-response",
58
+ /** File browser fetch content request */
59
+ FILE_BROWSER_FETCH_CONTENT_REQUEST: "file-browser-fetch-content-request",
60
+ /** Stateless message push */
61
+ STATELESS_MESSAGE: "stateless-message",
62
+ /** Context update push */
63
+ CONTEXT_UPDATE: "context-update",
64
+ /** AI generation update push */
65
+ AI_GENERATION_UPDATE: "ai-generation-update",
66
+ /** Design state update push */
67
+ DESIGN_STATE_UPDATE: "design-state-update",
68
+ /** App state update push */
69
+ APP_STATE_UPDATE: "app-state-update"
70
+ };
71
+
6
72
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/types/toExtensions.js
7
73
  var isSDKResponseMessage = (data) => {
8
- return typeof data === "object" && data !== null && "command" in data && data.command === "sdk-response" && "messageId" in data && typeof data.messageId === "string";
74
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.SDK_RESPONSE && "messageId" in data && typeof data.messageId === "string";
9
75
  };
10
76
  var isStatelessPushMessage = (data) => {
11
- return typeof data === "object" && data !== null && "command" in data && data.command === "stateless-message" && "type" in data && typeof data.type === "string" && "payload" in data && typeof data.payload === "object" && data.payload !== null;
77
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.STATELESS_MESSAGE && "type" in data && typeof data.type === "string" && "payload" in data && typeof data.payload === "object" && data.payload !== null;
12
78
  };
13
79
  var isAIGenerationUpdatePushMessage = (data) => {
14
- return typeof data === "object" && data !== null && "command" in data && data.command === "ai-generation-update" && "subscriptionId" in data && typeof data.subscriptionId === "string" && "update" in data && typeof data.update === "object" && data.update !== null;
80
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.AI_GENERATION_UPDATE && "subscriptionId" in data && typeof data.subscriptionId === "string" && "update" in data && typeof data.update === "object" && data.update !== null;
15
81
  };
16
82
  var isDesignStateUpdatePushMessage = (data) => {
17
- return typeof data === "object" && data !== null && "command" in data && data.command === "design-state-update" && "updates" in data && Array.isArray(data.updates);
83
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.DESIGN_STATE_UPDATE && "updates" in data && Array.isArray(data.updates);
18
84
  };
19
85
  var isAppStateUpdatePushMessage = (data) => {
20
- return typeof data === "object" && data !== null && "command" in data && data.command === "app-state-update" && "updates" in data && Array.isArray(data.updates);
86
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.APP_STATE_UPDATE && "updates" in data && Array.isArray(data.updates);
21
87
  };
22
88
  var isContextUpdatePushMessage = (data) => {
23
- return typeof data === "object" && data !== null && "command" in data && data.command === "context-update" && "subscriptionId" in data && typeof data.subscriptionId === "string" && "context" in data && typeof data.context === "object" && data.context !== null;
89
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.CONTEXT_UPDATE && "subscriptionId" in data && typeof data.subscriptionId === "string" && "context" in data && typeof data.context === "object" && data.context !== null;
90
+ };
91
+ var isFileBrowserFetchContentRequestMessage = (data) => {
92
+ return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.FILE_BROWSER_FETCH_CONTENT_REQUEST && "requestId" in data && typeof data.requestId === "string" && "subscriptionId" in data && typeof data.subscriptionId === "string";
24
93
  };
25
94
 
26
95
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/shared/createApiProxyCore.js
@@ -149,56 +218,56 @@
149
218
  if (!parent || parent === window) {
150
219
  return;
151
220
  }
152
- const message = { command: "loaded" };
221
+ const message = { command: FROM_EXTENSION_COMMANDS.LOADED };
153
222
  postMessageToParent(message);
154
223
  };
155
224
 
156
225
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/apiProxy/index.js
157
226
  var createSDKCallMessage = {
158
227
  ai: (dots, args, messageId) => ({
159
- command: "sdk-call",
228
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
160
229
  dots,
161
230
  args,
162
231
  messageId,
163
232
  apiType: "ai"
164
233
  }),
165
234
  context: (dots, args, messageId) => ({
166
- command: "sdk-call",
235
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
167
236
  dots,
168
237
  args,
169
238
  messageId,
170
239
  apiType: "context"
171
240
  }),
172
241
  design: (dots, args, messageId) => ({
173
- command: "sdk-call",
242
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
174
243
  dots,
175
244
  args,
176
245
  messageId,
177
246
  apiType: "design"
178
247
  }),
179
248
  font: (dots, args, messageId) => ({
180
- command: "sdk-call",
249
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
181
250
  dots,
182
251
  args,
183
252
  messageId,
184
253
  apiType: "font"
185
254
  }),
186
255
  state: (dots, args, messageId) => ({
187
- command: "sdk-call",
256
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
188
257
  dots,
189
258
  args,
190
259
  messageId,
191
260
  apiType: "state"
192
261
  }),
193
262
  upload: (dots, args, messageId) => ({
194
- command: "sdk-call",
263
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
195
264
  dots,
196
265
  args,
197
266
  messageId,
198
267
  apiType: "upload"
199
268
  }),
200
269
  data: (dots, args, messageId) => ({
201
- command: "sdk-call",
270
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
202
271
  dots,
203
272
  args,
204
273
  messageId,
@@ -238,7 +307,7 @@
238
307
  generationHandlers.delete(subscriptionId);
239
308
  generationSubscriptions.delete(generatorId);
240
309
  const unregisterMessage = {
241
- command: "ai-unregister-handler",
310
+ command: FROM_EXTENSION_COMMANDS.AI_UNREGISTER_HANDLER,
242
311
  generatorId,
243
312
  subscriptionId
244
313
  };
@@ -248,7 +317,7 @@
248
317
  spendCredits: async (options) => {
249
318
  const { onAccept, onDecline, ...serializable } = options;
250
319
  const message = {
251
- command: "sdk-call",
320
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
252
321
  dots: ["spendCredits"],
253
322
  args: [serializable],
254
323
  messageId: generateMessageId(),
@@ -264,7 +333,7 @@
264
333
  },
265
334
  startGeneration: (generatorId, inputSettings, output) => {
266
335
  const message = {
267
- command: "sdk-call",
336
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
268
337
  dots: ["startGeneration"],
269
338
  args: [generatorId, inputSettings, output],
270
339
  messageId: generateMessageId(),
@@ -286,7 +355,7 @@
286
355
  generationHandlers.set(subscriptionId, onStatusUpdate);
287
356
  generationSubscriptions.set(generatorId, subscriptionId);
288
357
  const registerMessage = {
289
- command: "ai-register-handler",
358
+ command: FROM_EXTENSION_COMMANDS.AI_REGISTER_HANDLER,
290
359
  messageId: generateMessageId(),
291
360
  generatorId,
292
361
  subscriptionId
@@ -321,10 +390,87 @@
321
390
  };
322
391
  }
323
392
 
393
+ // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/apiProxy/fileBrowserApiProxy.js
394
+ var fetchContentHandlers = /* @__PURE__ */ new Map();
395
+ var tabIdToSubscriptionId = /* @__PURE__ */ new Map();
396
+ var dispatchFileBrowserFetchContentRequest = (requestId, subscriptionId, params) => {
397
+ const handler = fetchContentHandlers.get(subscriptionId);
398
+ if (!handler) {
399
+ const responseMessage = {
400
+ command: FROM_EXTENSION_COMMANDS.FILE_BROWSER_FETCH_CONTENT_RESPONSE,
401
+ requestId,
402
+ content: []
403
+ };
404
+ postMessageToParent(responseMessage);
405
+ return;
406
+ }
407
+ void handler(params).then((result) => {
408
+ const responseMessage = {
409
+ command: FROM_EXTENSION_COMMANDS.FILE_BROWSER_FETCH_CONTENT_RESPONSE,
410
+ requestId,
411
+ content: result.content,
412
+ next: result.next
413
+ };
414
+ postMessageToParent(responseMessage);
415
+ }).catch((e) => {
416
+ const responseMessage = {
417
+ command: FROM_EXTENSION_COMMANDS.FILE_BROWSER_FETCH_CONTENT_RESPONSE,
418
+ requestId,
419
+ content: [],
420
+ error: e instanceof Error ? e.message : "Unknown error"
421
+ };
422
+ postMessageToParent(responseMessage);
423
+ });
424
+ };
425
+ function createFileBrowserApiProxy() {
426
+ return {
427
+ registerUploadBrowser: async (tab) => {
428
+ const subscriptionId = generateMessageId();
429
+ const existingSubscriptionId = tabIdToSubscriptionId.get(tab.id);
430
+ if (existingSubscriptionId) {
431
+ fetchContentHandlers.delete(existingSubscriptionId);
432
+ }
433
+ fetchContentHandlers.set(subscriptionId, tab.fetchContent);
434
+ tabIdToSubscriptionId.set(tab.id, subscriptionId);
435
+ const registerMessage = {
436
+ command: FROM_EXTENSION_COMMANDS.FILE_BROWSER_REGISTER,
437
+ messageId: generateMessageId(),
438
+ tabId: tab.id,
439
+ label: tab.label,
440
+ subscriptionId
441
+ };
442
+ try {
443
+ const response = await sendMessage(registerMessage);
444
+ if (!response.isOk) {
445
+ fetchContentHandlers.delete(subscriptionId);
446
+ tabIdToSubscriptionId.delete(tab.id);
447
+ return {
448
+ isOk: false,
449
+ error: response.error
450
+ };
451
+ }
452
+ return {
453
+ isOk: true,
454
+ result: void 0
455
+ };
456
+ } catch {
457
+ fetchContentHandlers.delete(subscriptionId);
458
+ return {
459
+ isOk: false,
460
+ error: {
461
+ message: "Failed to register upload browser",
462
+ name: "SdkInternalError"
463
+ }
464
+ };
465
+ }
466
+ }
467
+ };
468
+ }
469
+
324
470
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/appState/index.js
325
471
  var sendUnsubscribe = (selectorIds) => {
326
472
  const message = {
327
- command: "app-state-unsubscribe",
473
+ command: FROM_EXTENSION_COMMANDS.APP_STATE_UNSUBSCRIBE,
328
474
  selectorIds
329
475
  };
330
476
  postMessageToParent(message);
@@ -351,7 +497,7 @@
351
497
  }
352
498
  const messageId = generateMessageId();
353
499
  const subscribeMessage = {
354
- command: "app-state-subscribe",
500
+ command: FROM_EXTENSION_COMMANDS.APP_STATE_SUBSCRIBE,
355
501
  messageId,
356
502
  selectorIds,
357
503
  paths: pathArrays
@@ -414,7 +560,7 @@
414
560
  pkceCode = await hashPKCECode(code_verifier);
415
561
  }
416
562
  const message = {
417
- command: "auth-start",
563
+ command: FROM_EXTENSION_COMMANDS.AUTH_START,
418
564
  messageId: generateMessageId(),
419
565
  state,
420
566
  provider: request.provider,
@@ -440,7 +586,7 @@
440
586
  },
441
587
  exchangeCode: (request) => {
442
588
  const message = {
443
- command: "auth-exchange",
589
+ command: FROM_EXTENSION_COMMANDS.AUTH_EXCHANGE,
444
590
  messageId: generateMessageId(),
445
591
  code: request.code,
446
592
  code_verifier: request.code_verifier,
@@ -452,7 +598,7 @@
452
598
  },
453
599
  getAuthToken: (request) => {
454
600
  const message = {
455
- command: "auth-get-token",
601
+ command: FROM_EXTENSION_COMMANDS.AUTH_GET_TOKEN,
456
602
  messageId: generateMessageId(),
457
603
  provider: request.provider
458
604
  };
@@ -460,7 +606,7 @@
460
606
  },
461
607
  refreshToken: (request) => {
462
608
  const message = {
463
- command: "auth-refresh",
609
+ command: FROM_EXTENSION_COMMANDS.AUTH_REFRESH,
464
610
  messageId: generateMessageId(),
465
611
  provider: request.provider
466
612
  };
@@ -468,11 +614,18 @@
468
614
  },
469
615
  logout: (request) => {
470
616
  const message = {
471
- command: "auth-logout",
617
+ command: FROM_EXTENSION_COMMANDS.AUTH_LOGOUT,
472
618
  messageId: generateMessageId(),
473
619
  provider: request.provider
474
620
  };
475
621
  return sendMessage(message);
622
+ },
623
+ getUserToken: () => {
624
+ const message = {
625
+ command: "auth-get-user-token",
626
+ messageId: generateMessageId()
627
+ };
628
+ return sendMessage(message);
476
629
  }
477
630
  };
478
631
  };
@@ -480,7 +633,7 @@
480
633
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/batch/index.js
481
634
  var createBatch = async () => {
482
635
  const response = await sendMessage({
483
- command: "batch-create",
636
+ command: FROM_EXTENSION_COMMANDS.BATCH_CREATE,
484
637
  messageId: generateMessageId()
485
638
  });
486
639
  if (!response.isOk) {
@@ -488,7 +641,7 @@
488
641
  }
489
642
  const { batchKey } = response.result;
490
643
  const sendDesignCall = (dots, args) => sendMessage({
491
- command: "sdk-call",
644
+ command: FROM_EXTENSION_COMMANDS.SDK_CALL,
492
645
  dots,
493
646
  args,
494
647
  messageId: generateMessageId(),
@@ -497,7 +650,7 @@
497
650
  });
498
651
  const commit = async () => {
499
652
  const res = await sendMessage({
500
- command: "batch-commit",
653
+ command: FROM_EXTENSION_COMMANDS.BATCH_COMMIT,
501
654
  messageId: generateMessageId(),
502
655
  batchKey
503
656
  });
@@ -537,7 +690,7 @@
537
690
  let response;
538
691
  try {
539
692
  response = await sendMessage({
540
- command: "context-subscribe",
693
+ command: FROM_EXTENSION_COMMANDS.CONTEXT_SUBSCRIBE,
541
694
  messageId,
542
695
  subscriptionId
543
696
  });
@@ -552,7 +705,7 @@
552
705
  return () => {
553
706
  subscriptionCallbacks.delete(subscriptionId);
554
707
  const message = {
555
- command: "context-unsubscribe",
708
+ command: FROM_EXTENSION_COMMANDS.CONTEXT_UNSUBSCRIBE,
556
709
  subscriptionId
557
710
  };
558
711
  postMessageToParent(message);
@@ -572,7 +725,7 @@
572
725
  // ../../packages/editor-core/sdk/sdk-bridge/dist/bridge/sandboxed/handlers/designState/index.js
573
726
  var sendUnsubscribe2 = (selectorIds) => {
574
727
  const message = {
575
- command: "design-state-unsubscribe",
728
+ command: FROM_EXTENSION_COMMANDS.DESIGN_STATE_UNSUBSCRIBE,
576
729
  selectorIds
577
730
  };
578
731
  postMessageToParent(message);
@@ -599,7 +752,7 @@
599
752
  }
600
753
  const messageId = generateMessageId();
601
754
  const subscribeMessage = {
602
- command: "design-state-subscribe",
755
+ command: FROM_EXTENSION_COMMANDS.DESIGN_STATE_SUBSCRIBE,
603
756
  messageId,
604
757
  selectorIds,
605
758
  paths: pathArrays
@@ -643,7 +796,7 @@
643
796
  send: (message) => {
644
797
  const messageId = generateMessageId();
645
798
  const bridgeMessage = {
646
- command: "stateless-send",
799
+ command: FROM_EXTENSION_COMMANDS.STATELESS_SEND,
647
800
  messageId,
648
801
  type: message.type,
649
802
  payload: message.payload
@@ -659,7 +812,7 @@
659
812
  handlers.add(handler);
660
813
  const messageId = generateMessageId();
661
814
  const subscribeMessage = {
662
- command: "stateless-subscribe",
815
+ command: FROM_EXTENSION_COMMANDS.STATELESS_SUBSCRIBE,
663
816
  messageId,
664
817
  key
665
818
  };
@@ -669,7 +822,7 @@
669
822
  subscribers.delete(key);
670
823
  const messageId = generateMessageId();
671
824
  const unsubscribeMessage = {
672
- command: "stateless-unsubscribe",
825
+ command: FROM_EXTENSION_COMMANDS.STATELESS_UNSUBSCRIBE,
673
826
  messageId,
674
827
  key
675
828
  };
@@ -727,6 +880,14 @@
727
880
  }
728
881
  if (isContextUpdatePushMessage(data)) {
729
882
  dispatchContextUpdate(data);
883
+ return;
884
+ }
885
+ if (isFileBrowserFetchContentRequestMessage(data)) {
886
+ dispatchFileBrowserFetchContentRequest(
887
+ data.requestId,
888
+ data.subscriptionId,
889
+ data.params
890
+ );
730
891
  }
731
892
  };
732
893
  var bridgeHandlers = {
@@ -739,6 +900,7 @@
739
900
  font: createApiProxy("font"),
740
901
  state: createApiProxy("state"),
741
902
  upload: createApiProxy("upload"),
903
+ fileBrowser: createFileBrowserApiProxy(),
742
904
  auth: createAuthBridgeApi(),
743
905
  stateless: statelessApi,
744
906
  createBatch
package/dist/sdk.d.ts CHANGED
@@ -514,8 +514,7 @@ declare enum ObjectType {
514
514
  WarpControlRootPoint = "warpControlRootPoint",
515
515
  Group = "group",
516
516
  Circle = "circle",
517
- Rect = "rect",
518
- EditablePolygon = "editablePolygon"
517
+ Rect = "rect"
519
518
  }
520
519
  declare enum Orientation {
521
520
  HORIZONTAL = "horizontal",
@@ -547,6 +546,7 @@ declare global {
547
546
  }
548
547
  }
549
548
  export declare const kittl: KittlSDK;
549
+ export declare function unwrapResult<T>(result: SdkResult<T, Error>): T;
550
550
  export interface AIGenerationInputSettings {
551
551
  prompt: string;
552
552
  taskType?: AIGenerationModelTaskType;
@@ -632,6 +632,7 @@ export interface AsyncAuthAPI {
632
632
  exchangeCode: (request: AuthExchangeRequest) => Promise<SdkResult<AuthTokenResponse>>;
633
633
  getAuthToken: (request: AuthGetTokenRequest) => Promise<SdkResult<AuthTokenResponse | null>>;
634
634
  refreshToken: (request: AuthRefreshRequest) => Promise<SdkResult<AuthTokenResponse>>;
635
+ getUserToken: () => Promise<SdkResult<UserTokenResult>>;
635
636
  logout: (request: AuthLogoutRequest) => Promise<SdkResult<void>>;
636
637
  }
637
638
  export interface AsyncBatchDesignAPI extends AsyncDesignAPI {
@@ -882,6 +883,9 @@ export interface ErrorGenerationResult {
882
883
  subtitle: string;
883
884
  status: "warning" | "error";
884
885
  }
886
+ export interface FileBrowserAPI {
887
+ registerUploadBrowser: (tab: FileBrowserTab) => Promise<SdkResponse<void>>;
888
+ }
885
889
  export interface FontAPI {
886
890
  createFont: (params: {
887
891
  name: string;
@@ -900,11 +904,12 @@ export interface FontDataAPI {
900
904
  delete(ids: string[]): SdkResultAsync<void>;
901
905
  destroy(ids: string[]): SdkResultAsync<void>;
902
906
  addStyle(options: AddFontStyleOptions): SdkResultAsync<FontFamilyDto>;
903
- deleteStyle(options: DeleteFontStyleOptions): SdkResultAsync<void>;
904
907
  updateStyle(options: UpdateFontStyleOptions): SdkResultAsync<void>;
908
+ deleteStyle(options: DeleteFontStyleOptions): SdkResultAsync<void>;
905
909
  }
906
910
  export interface FontFamilyDto extends CatalogItem {
907
911
  styles: FontStyleDto[];
912
+ deletedAt: string | null;
908
913
  extension: {
909
914
  id: string;
910
915
  name?: string;
@@ -914,6 +919,7 @@ export interface FontStyleDto {
914
919
  id: string;
915
920
  name: string;
916
921
  style: string | null;
922
+ deletedAt: string | null;
917
923
  }
918
924
  export interface FontVariation {
919
925
  name: string;
@@ -931,6 +937,10 @@ export interface GeneratableObject {
931
937
  generatorKey: string;
932
938
  };
933
939
  }
940
+ export interface GenerationCreditUse {
941
+ amount: number;
942
+ refunded: number;
943
+ }
934
944
  export interface GenerationInputData {
935
945
  prompt?: string;
936
946
  style?: {
@@ -1066,6 +1076,7 @@ export interface KittlSDK {
1066
1076
  state: AsyncAppStateAPI;
1067
1077
  auth: AsyncAuthAPI;
1068
1078
  upload: AsyncUploadAPI;
1079
+ fileBrowser: FileBrowserAPI;
1069
1080
  stateless: AsyncStatelessAPI;
1070
1081
  font: AsyncFontAPI;
1071
1082
  createBatch: () => Promise<AsyncBatchDesignAPI>;
@@ -1327,6 +1338,10 @@ export interface UploadImageAPI {
1327
1338
  blob: Blob;
1328
1339
  }) => SdkResultAsync<TempUserImageUpload[], Error>;
1329
1340
  }
1341
+ export interface UserTokenResult {
1342
+ success: true;
1343
+ token: string;
1344
+ }
1330
1345
  export interface VideoAPI {
1331
1346
  addVideo(params: AddVideoParams, opts?: DesignApiOptions): Promise<NormalizedVideoObject>;
1332
1347
  updateVideo(params: UpdateVideoParams, opts?: DesignApiOptions): NormalizedVideoObject;
@@ -1370,7 +1385,7 @@ export interface WithObjectLayout {
1370
1385
  }
1371
1386
  export type AIGenerationActionOrigin = "COPILOT" | "RIGHT_PANEL" | "LEFT_PANEL" | "MICRO_APP" | "IMAGE_SETS" | "AI_CHAT" | "SMARTBOARD" | "AI_INPUT_GENERATE_IMAGE" | "AI_INPUT_REMIX_IMAGE" | "AI_INPUT_GENERATE_VIDEO" | "AI_HUB_GENERATE_IMAGE" | "AI_HUB_REMIX_IMAGE" | "AI_HUB_GENERATE_VIDEO" | "VIDEOBOARD" | "AGENT" | "WORKFLOW";
1372
1387
  export type AIGenerationContentType = "image" | "video";
1373
- export type AIGenerationModelTaskType = "IMAGE_TO_IMAGE" | "IMAGE_INPAINT" | "TEXT_TO_IMAGE" | "IMAGE_TO_VIDEO";
1388
+ export type AIGenerationModelTaskType = "IMAGE_TO_IMAGE" | "IMAGE_INPAINT" | "IMAGE_OUTPAINT" | "TEXT_TO_IMAGE" | "IMAGE_TO_VIDEO";
1374
1389
  export type APIOptions<T extends Record<string, unknown>> = {
1375
1390
  batchClient?: BatchClient<T>;
1376
1391
  } | {
@@ -1606,6 +1621,37 @@ export type ElementLocation = "origin" | "center";
1606
1621
  export type Expand<T> = T extends infer O ? {
1607
1622
  [K in keyof O]: O[K];
1608
1623
  } : never;
1624
+ export type FileBrowserContent = FileBrowserItem | FileBrowserFolder;
1625
+ export type FileBrowserFetchContentParams = {
1626
+ id?: string;
1627
+ next?: string | number;
1628
+ };
1629
+ export type FileBrowserFetchContentResult = {
1630
+ content: FileBrowserContent[];
1631
+ next?: string | number;
1632
+ error?: string;
1633
+ };
1634
+ export type FileBrowserFolder = {
1635
+ type: "folder";
1636
+ label: string;
1637
+ id: string;
1638
+ preview?: string;
1639
+ content?: Array<FileBrowserContent>;
1640
+ };
1641
+ export type FileBrowserItem = {
1642
+ type: "item";
1643
+ label: string;
1644
+ id: string;
1645
+ preview?: string;
1646
+ content: {
1647
+ data: string;
1648
+ };
1649
+ };
1650
+ export type FileBrowserTab = {
1651
+ id: string;
1652
+ label: string;
1653
+ fetchContent: (params?: FileBrowserFetchContentParams) => Promise<FileBrowserFetchContentResult>;
1654
+ };
1609
1655
  export type FillMetaTarget = "border" | "fill";
1610
1656
  export type FlattenUnion<T> = UnionToIntersection<T extends unknown ? Partial<T> : never>;
1611
1657
  export type FontListDto = PaginatedResult<FontFamilyDto>;
@@ -1623,21 +1669,25 @@ export type GenerationStatusUpdate = {
1623
1669
  generationId: string;
1624
1670
  status: typeof GenerationStatus.CREATED;
1625
1671
  inputData: undefined;
1672
+ creditUse: undefined;
1626
1673
  result: undefined;
1627
1674
  } | {
1628
1675
  generationId: string;
1629
1676
  status: typeof GenerationStatus.STARTED;
1630
1677
  inputData: GenerationInputData;
1678
+ creditUse?: GenerationCreditUse;
1631
1679
  result: StartedGenerationResult;
1632
1680
  } | {
1633
1681
  generationId: string;
1634
1682
  status: typeof GenerationStatus.COMPLETE;
1635
1683
  inputData: GenerationInputData;
1684
+ creditUse?: GenerationCreditUse;
1636
1685
  result: SuccessGenerationResult;
1637
1686
  } | {
1638
1687
  generationId: string;
1639
1688
  status: typeof GenerationStatus.FAILED;
1640
1689
  inputData: GenerationInputData | undefined;
1690
+ creditUse?: GenerationCreditUse;
1641
1691
  result: ErrorGenerationResult;
1642
1692
  };
1643
1693
  export type GuideSerializedObject = typeof GUIDE_DEFAULT_VALUES & OrientationDir;
@@ -1653,7 +1703,8 @@ export type IllustrationImageSerializedObject = typeof DEFAULT_VALUES$1 & {
1653
1703
  objectName: string | null;
1654
1704
  fallbackObjectName?: string;
1655
1705
  } | undefined;
1656
- _eraseStrokeWidth?: number | undefined;
1706
+ eraseStrokeWidth?: number | undefined;
1707
+ inpaintingStrokeWidth?: number | undefined;
1657
1708
  };
1658
1709
  export type IllustrationProperties = {
1659
1710
  angle?: IllustrationSerializedObject["angle"];
@@ -1987,6 +2038,13 @@ export type ScreenCoordinates = {
1987
2038
  y: number;
1988
2039
  };
1989
2040
  export type SdkError = SdkBadInputError | SdkInternalError;
2041
+ export type SdkResponse<T> = {
2042
+ isOk: true;
2043
+ result: T;
2044
+ } | {
2045
+ isOk: false;
2046
+ error: Error;
2047
+ };
1990
2048
  export type SdkResult<T, E = SdkError> = {
1991
2049
  isOk: true;
1992
2050
  result: T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kittl/sdk",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "license": "Apache-2.0",
5
5
  "private": false,
6
6
  "type": "module",