@assistant-ui/react 0.10.22 → 0.10.24

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 (194) hide show
  1. package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts +1 -1
  2. package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  3. package/dist/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  4. package/dist/cloud/auiV0.d.ts +1 -1
  5. package/dist/cloud/auiV0.d.ts.map +1 -1
  6. package/dist/cloud/auiV0.js.map +1 -1
  7. package/dist/cloud/index.d.ts +1 -1
  8. package/dist/cloud/index.d.ts.map +1 -1
  9. package/dist/cloud/index.js +1 -1
  10. package/dist/cloud/index.js.map +1 -1
  11. package/dist/cloud/useCloudThreadListRuntime.d.ts +1 -1
  12. package/dist/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  13. package/dist/cloud/useCloudThreadListRuntime.js.map +1 -1
  14. package/dist/context/react/AssistantContext.d.ts +23 -0
  15. package/dist/context/react/AssistantContext.d.ts.map +1 -1
  16. package/dist/context/react/AssistantContext.js.map +1 -1
  17. package/dist/context/react/ComposerContext.d.ts +64 -0
  18. package/dist/context/react/ComposerContext.d.ts.map +1 -1
  19. package/dist/context/react/ComposerContext.js.map +1 -1
  20. package/dist/context/react/MessageContext.d.ts +56 -0
  21. package/dist/context/react/MessageContext.d.ts.map +1 -1
  22. package/dist/context/react/MessageContext.js.map +1 -1
  23. package/dist/context/react/ThreadContext.d.ts +42 -0
  24. package/dist/context/react/ThreadContext.d.ts.map +1 -1
  25. package/dist/context/react/ThreadContext.js.map +1 -1
  26. package/dist/primitives/actionBar/ActionBarCopy.d.ts +42 -0
  27. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  28. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  29. package/dist/primitives/actionBar/ActionBarEdit.d.ts +38 -0
  30. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  31. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  32. package/dist/primitives/actionBar/ActionBarReload.d.ts +39 -0
  33. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  34. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  35. package/dist/primitives/actionBar/ActionBarRoot.d.ts +56 -0
  36. package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
  37. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  38. package/dist/primitives/attachment/AttachmentRoot.d.ts +18 -0
  39. package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
  40. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
  41. package/dist/primitives/branchPicker/BranchPickerCount.d.ts +17 -0
  42. package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -1
  43. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  44. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +17 -0
  45. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  46. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  47. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +38 -0
  48. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  49. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  50. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +27 -0
  51. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
  52. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  53. package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  54. package/dist/primitives/composer/ComposerAttachments.js +11 -8
  55. package/dist/primitives/composer/ComposerAttachments.js.map +1 -1
  56. package/dist/primitives/composer/ComposerCancel.d.ts +17 -0
  57. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  58. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  59. package/dist/primitives/composer/ComposerInput.d.ts +72 -0
  60. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  61. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  62. package/dist/primitives/composer/ComposerRoot.d.ts +19 -0
  63. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  64. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  65. package/dist/primitives/composer/ComposerSend.d.ts +18 -0
  66. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  67. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  68. package/dist/primitives/contentPart/ContentPartImage.d.ts +19 -0
  69. package/dist/primitives/contentPart/ContentPartImage.d.ts.map +1 -1
  70. package/dist/primitives/contentPart/ContentPartImage.js.map +1 -1
  71. package/dist/primitives/contentPart/ContentPartText.d.ts +34 -0
  72. package/dist/primitives/contentPart/ContentPartText.d.ts.map +1 -1
  73. package/dist/primitives/contentPart/ContentPartText.js.map +1 -1
  74. package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
  75. package/dist/primitives/message/MessageAttachments.js +11 -8
  76. package/dist/primitives/message/MessageAttachments.js.map +1 -1
  77. package/dist/primitives/message/MessageContent.d.ts +41 -0
  78. package/dist/primitives/message/MessageContent.d.ts.map +1 -1
  79. package/dist/primitives/message/MessageContent.js +14 -11
  80. package/dist/primitives/message/MessageContent.js.map +1 -1
  81. package/dist/primitives/message/MessageRoot.d.ts +22 -0
  82. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  83. package/dist/primitives/message/MessageRoot.js.map +1 -1
  84. package/dist/primitives/thread/ThreadMessages.d.ts +44 -0
  85. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  86. package/dist/primitives/thread/ThreadMessages.js +5 -2
  87. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  88. package/dist/primitives/thread/ThreadRoot.d.ts +19 -0
  89. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  90. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  91. package/dist/primitives/thread/ThreadViewport.d.ts +24 -0
  92. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  93. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  94. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  95. package/dist/primitives/threadList/ThreadListItems.js +12 -9
  96. package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
  97. package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts +54 -0
  98. package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts.map +1 -1
  99. package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts +33 -0
  100. package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts.map +1 -1
  101. package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts +47 -0
  102. package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts.map +1 -1
  103. package/dist/runtimes/local/LocalRuntimeOptions.d.ts +2 -2
  104. package/dist/runtimes/local/LocalRuntimeOptions.d.ts.map +1 -1
  105. package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
  106. package/dist/runtimes/local/index.d.ts +1 -1
  107. package/dist/runtimes/local/index.d.ts.map +1 -1
  108. package/dist/runtimes/local/index.js +3 -2
  109. package/dist/runtimes/local/index.js.map +1 -1
  110. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts +1 -1
  111. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts.map +1 -1
  112. package/dist/runtimes/remote-thread-list/adapter/cloud.js +1 -1
  113. package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
  114. package/dist/tests/setup.js +8 -8
  115. package/dist/tests/setup.js.map +1 -1
  116. package/package.json +8 -7
  117. package/src/cloud/AssistantCloudThreadHistoryAdapter.tsx +1 -1
  118. package/src/cloud/auiV0.ts +1 -1
  119. package/src/cloud/index.ts +1 -1
  120. package/src/cloud/useCloudThreadListRuntime.tsx +1 -1
  121. package/src/context/react/AssistantContext.ts +23 -0
  122. package/src/context/react/ComposerContext.ts +64 -0
  123. package/src/context/react/MessageContext.ts +56 -0
  124. package/src/context/react/ThreadContext.ts +42 -0
  125. package/src/primitives/actionBar/ActionBarCopy.tsx +42 -0
  126. package/src/primitives/actionBar/ActionBarEdit.tsx +38 -0
  127. package/src/primitives/actionBar/ActionBarReload.tsx +39 -0
  128. package/src/primitives/actionBar/ActionBarRoot.tsx +38 -0
  129. package/src/primitives/attachment/AttachmentRoot.tsx +18 -0
  130. package/src/primitives/branchPicker/BranchPickerCount.tsx +17 -0
  131. package/src/primitives/branchPicker/BranchPickerNext.tsx +17 -0
  132. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +38 -0
  133. package/src/primitives/branchPicker/BranchPickerRoot.tsx +22 -0
  134. package/src/primitives/composer/ComposerAttachments.tsx +11 -7
  135. package/src/primitives/composer/ComposerCancel.tsx +17 -0
  136. package/src/primitives/composer/ComposerInput.tsx +44 -0
  137. package/src/primitives/composer/ComposerRoot.tsx +19 -0
  138. package/src/primitives/composer/ComposerSend.tsx +18 -0
  139. package/src/primitives/contentPart/ContentPartImage.tsx +19 -0
  140. package/src/primitives/contentPart/ContentPartText.tsx +25 -0
  141. package/src/primitives/message/MessageAttachments.tsx +11 -7
  142. package/src/primitives/message/MessageContent.tsx +54 -18
  143. package/src/primitives/message/MessageRoot.tsx +22 -0
  144. package/src/primitives/thread/ThreadMessages.tsx +52 -4
  145. package/src/primitives/thread/ThreadRoot.tsx +19 -0
  146. package/src/primitives/thread/ThreadViewport.tsx +19 -0
  147. package/src/primitives/threadList/ThreadListItems.tsx +12 -8
  148. package/src/runtimes/adapters/attachment/AttachmentAdapter.ts +56 -0
  149. package/src/runtimes/adapters/feedback/FeedbackAdapter.ts +33 -0
  150. package/src/runtimes/adapters/speech/SpeechAdapterTypes.ts +47 -0
  151. package/src/runtimes/local/LocalRuntimeOptions.tsx +1 -1
  152. package/src/runtimes/local/index.ts +1 -1
  153. package/src/runtimes/remote-thread-list/adapter/cloud.tsx +1 -1
  154. package/dist/cloud/AssistantCloud.d.ts +0 -15
  155. package/dist/cloud/AssistantCloud.d.ts.map +0 -1
  156. package/dist/cloud/AssistantCloud.js +0 -25
  157. package/dist/cloud/AssistantCloud.js.map +0 -1
  158. package/dist/cloud/AssistantCloudAPI.d.ts +0 -28
  159. package/dist/cloud/AssistantCloudAPI.d.ts.map +0 -1
  160. package/dist/cloud/AssistantCloudAPI.js +0 -87
  161. package/dist/cloud/AssistantCloudAPI.js.map +0 -1
  162. package/dist/cloud/AssistantCloudAuthStrategy.d.ts +0 -30
  163. package/dist/cloud/AssistantCloudAuthStrategy.d.ts.map +0 -1
  164. package/dist/cloud/AssistantCloudAuthStrategy.js +0 -139
  165. package/dist/cloud/AssistantCloudAuthStrategy.js.map +0 -1
  166. package/dist/cloud/AssistantCloudAuthTokens.d.ts +0 -11
  167. package/dist/cloud/AssistantCloudAuthTokens.d.ts.map +0 -1
  168. package/dist/cloud/AssistantCloudAuthTokens.js +0 -13
  169. package/dist/cloud/AssistantCloudAuthTokens.js.map +0 -1
  170. package/dist/cloud/AssistantCloudFiles.d.ts +0 -27
  171. package/dist/cloud/AssistantCloudFiles.d.ts.map +0 -1
  172. package/dist/cloud/AssistantCloudFiles.js +0 -22
  173. package/dist/cloud/AssistantCloudFiles.js.map +0 -1
  174. package/dist/cloud/AssistantCloudRuns.d.ts +0 -26
  175. package/dist/cloud/AssistantCloudRuns.d.ts.map +0 -1
  176. package/dist/cloud/AssistantCloudRuns.js +0 -39
  177. package/dist/cloud/AssistantCloudRuns.js.map +0 -1
  178. package/dist/cloud/AssistantCloudThreadMessages.d.ts +0 -30
  179. package/dist/cloud/AssistantCloudThreadMessages.d.ts.map +0 -1
  180. package/dist/cloud/AssistantCloudThreadMessages.js +0 -21
  181. package/dist/cloud/AssistantCloudThreadMessages.js.map +0 -1
  182. package/dist/cloud/AssistantCloudThreads.d.ts +0 -48
  183. package/dist/cloud/AssistantCloudThreads.d.ts.map +0 -1
  184. package/dist/cloud/AssistantCloudThreads.js +0 -30
  185. package/dist/cloud/AssistantCloudThreads.js.map +0 -1
  186. package/src/cloud/AssistantCloud.tsx +0 -22
  187. package/src/cloud/AssistantCloudAPI.tsx +0 -121
  188. package/src/cloud/AssistantCloudAuthStrategy.tsx +0 -193
  189. package/src/cloud/AssistantCloudAuthTokens.tsx +0 -13
  190. package/src/cloud/AssistantCloudFiles.tsx +0 -45
  191. package/src/cloud/AssistantCloudRuns.tsx +0 -45
  192. package/src/cloud/AssistantCloudThreadMessages.tsx +0 -48
  193. package/src/cloud/AssistantCloudThreads.tsx +0 -79
  194. package/src/tests/AssistantCloudFiles.test.ts +0 -521
@@ -1,22 +0,0 @@
1
- // src/cloud/AssistantCloudFiles.tsx
2
- var AssistantCloudFiles = class {
3
- constructor(cloud) {
4
- this.cloud = cloud;
5
- }
6
- async pdfToImages(body) {
7
- return this.cloud.makeRequest("/files/pdf-to-images", {
8
- method: "POST",
9
- body
10
- });
11
- }
12
- async generatePresignedUploadUrl(body) {
13
- return this.cloud.makeRequest("/files/attachments/generate-presigned-upload-url", {
14
- method: "POST",
15
- body
16
- });
17
- }
18
- };
19
- export {
20
- AssistantCloudFiles
21
- };
22
- //# sourceMappingURL=AssistantCloudFiles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cloud/AssistantCloudFiles.tsx"],"sourcesContent":["import { AssistantCloudAPI } from \"./AssistantCloudAPI\";\n\ntype PdfToImagesRequestBody = {\n file_blob?: string | undefined;\n file_url?: string | undefined;\n};\n\ntype PdfToImagesResponse = {\n success: boolean;\n urls: string[];\n message: string;\n};\n\ntype GeneratePresignedUploadUrlRequestBody = {\n filename: string;\n};\n\ntype GeneratePresignedUploadUrlResponse = {\n success: boolean;\n signedUrl: string;\n expiresAt: string;\n publicUrl: string;\n};\n\nexport class AssistantCloudFiles {\n constructor(private cloud: AssistantCloudAPI) {}\n\n public async pdfToImages(\n body: PdfToImagesRequestBody,\n ): Promise<PdfToImagesResponse> {\n return this.cloud.makeRequest(\"/files/pdf-to-images\", {\n method: \"POST\",\n body,\n });\n }\n\n public async generatePresignedUploadUrl(\n body: GeneratePresignedUploadUrlRequestBody,\n ): Promise<GeneratePresignedUploadUrlResponse> {\n return this.cloud.makeRequest(\"/files/attachments/generate-presigned-upload-url\", {\n method: \"POST\",\n body,\n });\n }\n} "],"mappings":";AAwBO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAAoB,OAA0B;AAA1B;AAAA,EAA2B;AAAA,EAE/C,MAAa,YACX,MAC8B;AAC9B,WAAO,KAAK,MAAM,YAAY,wBAAwB;AAAA,MACpD,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,2BACX,MAC6C;AAC7C,WAAO,KAAK,MAAM,YAAY,oDAAoD;AAAA,MAChF,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -1,26 +0,0 @@
1
- import { ThreadMessage } from "../types";
2
- import { AssistantCloudAPI } from "./AssistantCloudAPI";
3
- import { AssistantStream } from "assistant-stream";
4
- type AssistantCloudRunsStreamBody = {
5
- thread_id: string;
6
- assistant_id: "system/thread_title";
7
- messages: readonly ThreadMessage[];
8
- };
9
- export declare class AssistantCloudRuns {
10
- private cloud;
11
- constructor(cloud: AssistantCloudAPI);
12
- __internal_getAssistantOptions(assistantId: string): {
13
- api: string;
14
- headers: () => Promise<{
15
- Accept: string;
16
- }>;
17
- body: {
18
- assistant_id: string;
19
- response_format: string;
20
- thread_id: string;
21
- };
22
- };
23
- stream(body: AssistantCloudRunsStreamBody): Promise<AssistantStream>;
24
- }
25
- export {};
26
- //# sourceMappingURL=AssistantCloudRuns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssistantCloudRuns.d.ts","sourceRoot":"","sources":["../../src/cloud/AssistantCloudRuns.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAoB,MAAM,kBAAkB,CAAC;AAErE,KAAK,4BAA4B,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,qBAAqB,CAAC;IACpC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;CACpC,CAAC;AAEF,qBAAa,kBAAkB;IACjB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,iBAAiB;IAErC,8BAA8B,CAAC,WAAW,EAAE,MAAM;;;;;;;;;;;IAmB5C,MAAM,CACjB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,eAAe,CAAC;CAU5B"}
@@ -1,39 +0,0 @@
1
- // src/cloud/AssistantCloudRuns.tsx
2
- import { AssistantStream, PlainTextDecoder } from "assistant-stream";
3
- var AssistantCloudRuns = class {
4
- constructor(cloud) {
5
- this.cloud = cloud;
6
- }
7
- __internal_getAssistantOptions(assistantId) {
8
- return {
9
- api: this.cloud._baseUrl + "/v1/runs/stream",
10
- headers: async () => {
11
- const headers = await this.cloud._auth.getAuthHeaders();
12
- if (!headers) throw new Error("Authorization failed");
13
- return {
14
- ...headers,
15
- Accept: "text/plain"
16
- };
17
- },
18
- body: {
19
- assistant_id: assistantId,
20
- response_format: "vercel-ai-data-stream/v1",
21
- thread_id: "unstable_todo"
22
- }
23
- };
24
- }
25
- async stream(body) {
26
- const response = await this.cloud.makeRawRequest("/runs/stream", {
27
- method: "POST",
28
- headers: {
29
- Accept: "text/plain"
30
- },
31
- body
32
- });
33
- return AssistantStream.fromResponse(response, new PlainTextDecoder());
34
- }
35
- };
36
- export {
37
- AssistantCloudRuns
38
- };
39
- //# sourceMappingURL=AssistantCloudRuns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cloud/AssistantCloudRuns.tsx"],"sourcesContent":["import { ThreadMessage } from \"../types\";\nimport { AssistantCloudAPI } from \"./AssistantCloudAPI\";\nimport { AssistantStream, PlainTextDecoder } from \"assistant-stream\";\n\ntype AssistantCloudRunsStreamBody = {\n thread_id: string;\n assistant_id: \"system/thread_title\";\n messages: readonly ThreadMessage[];\n};\n\nexport class AssistantCloudRuns {\n constructor(private cloud: AssistantCloudAPI) {}\n\n public __internal_getAssistantOptions(assistantId: string) {\n return {\n api: this.cloud._baseUrl + \"/v1/runs/stream\",\n headers: async () => {\n const headers = await this.cloud._auth.getAuthHeaders();\n if (!headers) throw new Error(\"Authorization failed\");\n return {\n ...headers,\n Accept: \"text/plain\",\n };\n },\n body: {\n assistant_id: assistantId,\n response_format: \"vercel-ai-data-stream/v1\",\n thread_id: \"unstable_todo\",\n },\n };\n }\n\n public async stream(\n body: AssistantCloudRunsStreamBody,\n ): Promise<AssistantStream> {\n const response = await this.cloud.makeRawRequest(\"/runs/stream\", {\n method: \"POST\",\n headers: {\n Accept: \"text/plain\",\n },\n body,\n });\n return AssistantStream.fromResponse(response, new PlainTextDecoder());\n }\n}\n"],"mappings":";AAEA,SAAS,iBAAiB,wBAAwB;AAQ3C,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAAoB,OAA0B;AAA1B;AAAA,EAA2B;AAAA,EAExC,+BAA+B,aAAqB;AACzD,WAAO;AAAA,MACL,KAAK,KAAK,MAAM,WAAW;AAAA,MAC3B,SAAS,YAAY;AACnB,cAAM,UAAU,MAAM,KAAK,MAAM,MAAM,eAAe;AACtD,YAAI,CAAC,QAAS,OAAM,IAAI,MAAM,sBAAsB;AACpD,eAAO;AAAA,UACL,GAAG;AAAA,UACH,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,OACX,MAC0B;AAC1B,UAAM,WAAW,MAAM,KAAK,MAAM,eAAe,gBAAgB;AAAA,MAC/D,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,MACA;AAAA,IACF,CAAC;AACD,WAAO,gBAAgB,aAAa,UAAU,IAAI,iBAAiB,CAAC;AAAA,EACtE;AACF;","names":[]}
@@ -1,30 +0,0 @@
1
- import { ReadonlyJSONObject } from "assistant-stream/utils";
2
- import { AssistantCloudAPI } from "./AssistantCloudAPI";
3
- export type CloudMessage = {
4
- id: string;
5
- parent_id: string | null;
6
- height: number;
7
- created_at: Date;
8
- updated_at: Date;
9
- format: "aui/v0" | string;
10
- content: ReadonlyJSONObject;
11
- };
12
- type AssistantCloudThreadMessageListResponse = {
13
- messages: CloudMessage[];
14
- };
15
- type AssistantCloudThreadMessageCreateBody = {
16
- parent_id: string | null;
17
- format: "aui/v0" | string;
18
- content: ReadonlyJSONObject;
19
- };
20
- type AssistantCloudMessageCreateResponse = {
21
- message_id: string;
22
- };
23
- export declare class AssistantCloudThreadMessages {
24
- private cloud;
25
- constructor(cloud: AssistantCloudAPI);
26
- list(threadId: string): Promise<AssistantCloudThreadMessageListResponse>;
27
- create(threadId: string, body: AssistantCloudThreadMessageCreateBody): Promise<AssistantCloudMessageCreateResponse>;
28
- }
29
- export {};
30
- //# sourceMappingURL=AssistantCloudThreadMessages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssistantCloudThreadMessages.d.ts","sourceRoot":"","sources":["../../src/cloud/AssistantCloudThreadMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,KAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B,CAAC;AAEF,KAAK,qCAAqC,GAAG;IAC3C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,KAAK,mCAAmC,GAAG;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,4BAA4B;IAC3B,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,iBAAiB;IAE/B,IAAI,CACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,uCAAuC,CAAC;IAMtC,MAAM,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,qCAAqC,GAC1C,OAAO,CAAC,mCAAmC,CAAC;CAMhD"}
@@ -1,21 +0,0 @@
1
- // src/cloud/AssistantCloudThreadMessages.tsx
2
- var AssistantCloudThreadMessages = class {
3
- constructor(cloud) {
4
- this.cloud = cloud;
5
- }
6
- async list(threadId) {
7
- return this.cloud.makeRequest(
8
- `/threads/${encodeURIComponent(threadId)}/messages`
9
- );
10
- }
11
- async create(threadId, body) {
12
- return this.cloud.makeRequest(
13
- `/threads/${encodeURIComponent(threadId)}/messages`,
14
- { method: "POST", body }
15
- );
16
- }
17
- };
18
- export {
19
- AssistantCloudThreadMessages
20
- };
21
- //# sourceMappingURL=AssistantCloudThreadMessages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cloud/AssistantCloudThreadMessages.tsx"],"sourcesContent":["import { ReadonlyJSONObject } from \"assistant-stream/utils\";\nimport { AssistantCloudAPI } from \"./AssistantCloudAPI\";\n\nexport type CloudMessage = {\n id: string;\n parent_id: string | null;\n height: number;\n created_at: Date;\n updated_at: Date;\n format: \"aui/v0\" | string;\n content: ReadonlyJSONObject;\n};\n\ntype AssistantCloudThreadMessageListResponse = {\n messages: CloudMessage[];\n};\n\ntype AssistantCloudThreadMessageCreateBody = {\n parent_id: string | null;\n format: \"aui/v0\" | string;\n content: ReadonlyJSONObject;\n};\n\ntype AssistantCloudMessageCreateResponse = {\n message_id: string;\n};\n\nexport class AssistantCloudThreadMessages {\n constructor(private cloud: AssistantCloudAPI) {}\n\n public async list(\n threadId: string,\n ): Promise<AssistantCloudThreadMessageListResponse> {\n return this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages`,\n );\n }\n\n public async create(\n threadId: string,\n body: AssistantCloudThreadMessageCreateBody,\n ): Promise<AssistantCloudMessageCreateResponse> {\n return this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages`,\n { method: \"POST\", body },\n );\n }\n}\n"],"mappings":";AA2BO,IAAM,+BAAN,MAAmC;AAAA,EACxC,YAAoB,OAA0B;AAA1B;AAAA,EAA2B;AAAA,EAE/C,MAAa,KACX,UACkD;AAClD,WAAO,KAAK,MAAM;AAAA,MAChB,YAAY,mBAAmB,QAAQ,CAAC;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,MAAa,OACX,UACA,MAC8C;AAC9C,WAAO,KAAK,MAAM;AAAA,MAChB,YAAY,mBAAmB,QAAQ,CAAC;AAAA,MACxC,EAAE,QAAQ,QAAQ,KAAK;AAAA,IACzB;AAAA,EACF;AACF;","names":[]}
@@ -1,48 +0,0 @@
1
- import { AssistantCloudAPI } from "./AssistantCloudAPI";
2
- import { AssistantCloudThreadMessages } from "./AssistantCloudThreadMessages";
3
- type AssistantCloudThreadsListQuery = {
4
- is_archived?: boolean;
5
- limit?: number;
6
- after?: string;
7
- };
8
- type CloudThread = {
9
- title: string;
10
- last_message_at: Date;
11
- metadata: unknown;
12
- external_id: string | null;
13
- id: string;
14
- project_id: string;
15
- created_at: Date;
16
- updated_at: Date;
17
- workspace_id: string;
18
- is_archived: boolean;
19
- };
20
- type AssistantCloudThreadsListResponse = {
21
- threads: CloudThread[];
22
- };
23
- type AssistantCloudThreadsCreateBody = {
24
- title?: string | undefined;
25
- last_message_at: Date;
26
- metadata?: unknown | undefined;
27
- external_id?: string | undefined;
28
- };
29
- type AssistantCloudThreadsCreateResponse = {
30
- thread_id: string;
31
- };
32
- type AssistantCloudThreadsUpdateBody = {
33
- title?: string | undefined;
34
- last_message_at?: Date | undefined;
35
- metadata?: unknown | undefined;
36
- is_archived?: boolean | undefined;
37
- };
38
- export declare class AssistantCloudThreads {
39
- private cloud;
40
- readonly messages: AssistantCloudThreadMessages;
41
- constructor(cloud: AssistantCloudAPI);
42
- list(query?: AssistantCloudThreadsListQuery): Promise<AssistantCloudThreadsListResponse>;
43
- create(body: AssistantCloudThreadsCreateBody): Promise<AssistantCloudThreadsCreateResponse>;
44
- update(threadId: string, body: AssistantCloudThreadsUpdateBody): Promise<void>;
45
- delete(threadId: string): Promise<void>;
46
- }
47
- export {};
48
- //# sourceMappingURL=AssistantCloudThreads.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssistantCloudThreads.d.ts","sourceRoot":"","sources":["../../src/cloud/AssistantCloudThreads.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,KAAK,8BAA8B,GAAG;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,iCAAiC,GAAG;IACvC,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,eAAe,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,KAAK,mCAAmC,GAAG;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,eAAe,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,KAAK;IAFzB,SAAgB,QAAQ,EAAE,4BAA4B,CAAC;gBAEnC,KAAK,EAAE,iBAAiB;IAI/B,IAAI,CACf,KAAK,CAAC,EAAE,8BAA8B,GACrC,OAAO,CAAC,iCAAiC,CAAC;IAIhC,MAAM,CACjB,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,mCAAmC,CAAC;IAIlC,MAAM,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,IAAI,CAAC;IAOH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKrD"}
@@ -1,30 +0,0 @@
1
- // src/cloud/AssistantCloudThreads.tsx
2
- import { AssistantCloudThreadMessages } from "./AssistantCloudThreadMessages.js";
3
- var AssistantCloudThreads = class {
4
- constructor(cloud) {
5
- this.cloud = cloud;
6
- this.messages = new AssistantCloudThreadMessages(cloud);
7
- }
8
- messages;
9
- async list(query) {
10
- return this.cloud.makeRequest("/threads", { query });
11
- }
12
- async create(body) {
13
- return this.cloud.makeRequest("/threads", { method: "POST", body });
14
- }
15
- async update(threadId, body) {
16
- return this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}`, {
17
- method: "PUT",
18
- body
19
- });
20
- }
21
- async delete(threadId) {
22
- return this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}`, {
23
- method: "DELETE"
24
- });
25
- }
26
- };
27
- export {
28
- AssistantCloudThreads
29
- };
30
- //# sourceMappingURL=AssistantCloudThreads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cloud/AssistantCloudThreads.tsx"],"sourcesContent":["import { AssistantCloudAPI } from \"./AssistantCloudAPI\";\nimport { AssistantCloudThreadMessages } from \"./AssistantCloudThreadMessages\";\n\ntype AssistantCloudThreadsListQuery = {\n is_archived?: boolean;\n limit?: number;\n after?: string;\n};\n\ntype CloudThread = {\n title: string;\n last_message_at: Date;\n metadata: unknown;\n external_id: string | null;\n id: string;\n project_id: string;\n created_at: Date;\n updated_at: Date;\n workspace_id: string;\n is_archived: boolean;\n};\n\ntype AssistantCloudThreadsListResponse = {\n threads: CloudThread[];\n};\n\ntype AssistantCloudThreadsCreateBody = {\n title?: string | undefined;\n last_message_at: Date;\n metadata?: unknown | undefined;\n external_id?: string | undefined;\n};\n\ntype AssistantCloudThreadsCreateResponse = {\n thread_id: string;\n};\n\ntype AssistantCloudThreadsUpdateBody = {\n title?: string | undefined;\n last_message_at?: Date | undefined;\n metadata?: unknown | undefined;\n is_archived?: boolean | undefined;\n};\n\nexport class AssistantCloudThreads {\n public readonly messages: AssistantCloudThreadMessages;\n\n constructor(private cloud: AssistantCloudAPI) {\n this.messages = new AssistantCloudThreadMessages(cloud);\n }\n\n public async list(\n query?: AssistantCloudThreadsListQuery,\n ): Promise<AssistantCloudThreadsListResponse> {\n return this.cloud.makeRequest(\"/threads\", { query });\n }\n\n public async create(\n body: AssistantCloudThreadsCreateBody,\n ): Promise<AssistantCloudThreadsCreateResponse> {\n return this.cloud.makeRequest(\"/threads\", { method: \"POST\", body });\n }\n\n public async update(\n threadId: string,\n body: AssistantCloudThreadsUpdateBody,\n ): Promise<void> {\n return this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}`, {\n method: \"PUT\",\n body,\n });\n }\n\n public async delete(threadId: string): Promise<void> {\n return this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}`, {\n method: \"DELETE\",\n });\n }\n}\n"],"mappings":";AACA,SAAS,oCAAoC;AA2CtC,IAAM,wBAAN,MAA4B;AAAA,EAGjC,YAAoB,OAA0B;AAA1B;AAClB,SAAK,WAAW,IAAI,6BAA6B,KAAK;AAAA,EACxD;AAAA,EAJgB;AAAA,EAMhB,MAAa,KACX,OAC4C;AAC5C,WAAO,KAAK,MAAM,YAAY,YAAY,EAAE,MAAM,CAAC;AAAA,EACrD;AAAA,EAEA,MAAa,OACX,MAC8C;AAC9C,WAAO,KAAK,MAAM,YAAY,YAAY,EAAE,QAAQ,QAAQ,KAAK,CAAC;AAAA,EACpE;AAAA,EAEA,MAAa,OACX,UACA,MACe;AACf,WAAO,KAAK,MAAM,YAAY,YAAY,mBAAmB,QAAQ,CAAC,IAAI;AAAA,MACxE,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,OAAO,UAAiC;AACnD,WAAO,KAAK,MAAM,YAAY,YAAY,mBAAmB,QAAQ,CAAC,IAAI;AAAA,MACxE,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -1,22 +0,0 @@
1
- import { AssistantCloudAPI, AssistantCloudConfig } from "./AssistantCloudAPI";
2
- import { AssistantCloudAuthTokens } from "./AssistantCloudAuthTokens";
3
- import { AssistantCloudRuns } from "./AssistantCloudRuns";
4
- import { AssistantCloudThreads } from "./AssistantCloudThreads";
5
- import { AssistantCloudFiles } from "./AssistantCloudFiles";
6
-
7
- export class AssistantCloud {
8
- public readonly threads;
9
- public readonly auth;
10
- public readonly runs;
11
- public readonly files;
12
-
13
- constructor(config: AssistantCloudConfig) {
14
- const api = new AssistantCloudAPI(config);
15
- this.threads = new AssistantCloudThreads(api);
16
- this.auth = {
17
- tokens: new AssistantCloudAuthTokens(api),
18
- };
19
- this.runs = new AssistantCloudRuns(api);
20
- this.files = new AssistantCloudFiles(api);
21
- }
22
- }
@@ -1,121 +0,0 @@
1
- import {
2
- AssistantCloudAuthStrategy,
3
- AssistantCloudJWTAuthStrategy,
4
- AssistantCloudAPIKeyAuthStrategy,
5
- AssistantCloudAnonymousAuthStrategy,
6
- } from "./AssistantCloudAuthStrategy";
7
-
8
- export type AssistantCloudConfig =
9
- | {
10
- baseUrl: string;
11
- authToken: () => Promise<string | null>;
12
- }
13
- | {
14
- apiKey: string;
15
- userId: string;
16
- workspaceId: string;
17
- }
18
- | {
19
- baseUrl: string;
20
- anonymous: true;
21
- };
22
-
23
- class CloudAPIError extends Error {
24
- constructor(message: string) {
25
- super(message);
26
- this.name = "APIError";
27
- }
28
- }
29
-
30
- type MakeRequestOptions = {
31
- method?: "POST" | "PUT" | "DELETE" | undefined;
32
- headers?: Record<string, string> | undefined;
33
- query?: Record<string, string | number | boolean> | undefined;
34
- body?: object | undefined;
35
- };
36
-
37
- export class AssistantCloudAPI {
38
- public _auth: AssistantCloudAuthStrategy;
39
- public _baseUrl;
40
-
41
- constructor(config: AssistantCloudConfig) {
42
- if ("authToken" in config) {
43
- this._baseUrl = config.baseUrl;
44
- this._auth = new AssistantCloudJWTAuthStrategy(config.authToken);
45
- } else if ("apiKey" in config) {
46
- this._baseUrl = "https://backend.assistant-api.com";
47
- this._auth = new AssistantCloudAPIKeyAuthStrategy(
48
- config.apiKey,
49
- config.userId,
50
- config.workspaceId,
51
- );
52
- } else if ("anonymous" in config) {
53
- this._baseUrl = config.baseUrl;
54
- this._auth = new AssistantCloudAnonymousAuthStrategy(config.baseUrl);
55
- } else {
56
- throw new Error(
57
- "Invalid configuration: Must provide authToken, apiKey, or anonymous configuration",
58
- );
59
- }
60
- }
61
-
62
- public async initializeAuth() {
63
- return !!this._auth.getAuthHeaders();
64
- }
65
-
66
- public async makeRawRequest(
67
- endpoint: string,
68
- options: MakeRequestOptions = {},
69
- ) {
70
- const authHeaders = await this._auth.getAuthHeaders();
71
- if (!authHeaders) throw new Error("Authorization failed");
72
-
73
- const headers = {
74
- ...authHeaders,
75
- ...options.headers,
76
- "Content-Type": "application/json",
77
- };
78
-
79
- const queryParams = new URLSearchParams();
80
- if (options.query) {
81
- for (const [key, value] of Object.entries(options.query)) {
82
- if (value === false) continue;
83
- if (value === true) {
84
- queryParams.set(key, "true");
85
- } else {
86
- queryParams.set(key, value.toString());
87
- }
88
- }
89
- }
90
-
91
- const url = new URL(`${this._baseUrl}/v1${endpoint}`);
92
- url.search = queryParams.toString();
93
-
94
- const response = await fetch(url, {
95
- method: options.method ?? "GET",
96
- headers,
97
- body: options.body ? JSON.stringify(options.body) : null,
98
- });
99
-
100
- this._auth.readAuthHeaders(response.headers);
101
-
102
- if (!response.ok) {
103
- const text = await response.text();
104
- try {
105
- const body = JSON.parse(text);
106
- throw new CloudAPIError(body.message);
107
- } catch {
108
- throw new Error(
109
- `Request failed with status ${response.status}, ${text}`,
110
- );
111
- }
112
- }
113
-
114
- return response;
115
- }
116
-
117
- public async makeRequest(endpoint: string, options: MakeRequestOptions = {}) {
118
- const response = await this.makeRawRequest(endpoint, options);
119
- return response.json();
120
- }
121
- }
@@ -1,193 +0,0 @@
1
- export type AssistantCloudAuthStrategy = {
2
- readonly strategy: "anon" | "jwt" | "api-key";
3
- getAuthHeaders(): Promise<Record<string, string> | false>;
4
- readAuthHeaders(headers: Headers): void;
5
- };
6
-
7
- const getJwtExpiry = (jwt: string): number => {
8
- try {
9
- const parts = jwt.split(".");
10
- const bodyPart = parts[1];
11
- if (!bodyPart) {
12
- throw new Error("Invalid JWT format");
13
- }
14
-
15
- // Convert from Base64Url to Base64 and add padding if necessary
16
- let base64 = bodyPart.replace(/-/g, "+").replace(/_/g, "/");
17
- while (base64.length % 4 !== 0) {
18
- base64 += "=";
19
- }
20
-
21
- // Decode the Base64 string and parse the payload
22
- const payload = atob(base64);
23
- const payloadObj = JSON.parse(payload);
24
- const exp = payloadObj.exp;
25
-
26
- if (!exp || typeof exp !== "number") {
27
- throw new Error('JWT does not contain a valid "exp" field');
28
- }
29
-
30
- // Convert expiration time to milliseconds
31
- return exp * 1000;
32
- } catch (error) {
33
- throw new Error("Unable to determine the token expiry: " + error);
34
- }
35
- };
36
-
37
- export class AssistantCloudJWTAuthStrategy
38
- implements AssistantCloudAuthStrategy
39
- {
40
- public readonly strategy = "jwt";
41
-
42
- private cachedToken: string | null = null;
43
- private tokenExpiry: number | null = null;
44
- #authTokenCallback: () => Promise<string | null>;
45
-
46
- constructor(authTokenCallback: () => Promise<string | null>) {
47
- this.#authTokenCallback = authTokenCallback;
48
- }
49
-
50
- public async getAuthHeaders(): Promise<Record<string, string> | false> {
51
- const currentTime = Date.now();
52
-
53
- // Use cached token if it's valid for at least 30 more seconds
54
- if (
55
- this.cachedToken &&
56
- this.tokenExpiry &&
57
- this.tokenExpiry - currentTime > 30 * 1000
58
- ) {
59
- return { Authorization: `Bearer ${this.cachedToken}` };
60
- }
61
-
62
- // Fetch a new token via the callback
63
- const newToken = await this.#authTokenCallback();
64
- if (!newToken) return false;
65
-
66
- this.cachedToken = newToken;
67
- this.tokenExpiry = getJwtExpiry(newToken);
68
-
69
- return { Authorization: `Bearer ${newToken}` };
70
- }
71
-
72
- public readAuthHeaders(headers: Headers) {
73
- const authHeader = headers.get("Authorization");
74
- if (!authHeader) return;
75
-
76
- const [scheme, token] = authHeader.split(" ");
77
- if (scheme !== "Bearer" || !token) {
78
- throw new Error("Invalid auth header received");
79
- }
80
-
81
- this.cachedToken = token;
82
- this.tokenExpiry = getJwtExpiry(token);
83
- }
84
- }
85
-
86
- export class AssistantCloudAPIKeyAuthStrategy
87
- implements AssistantCloudAuthStrategy
88
- {
89
- public readonly strategy = "api-key";
90
-
91
- #apiKey: string;
92
- #userId: string;
93
- #workspaceId: string;
94
-
95
- constructor(apiKey: string, userId: string, workspaceId: string) {
96
- this.#apiKey = apiKey;
97
- this.#userId = userId;
98
- this.#workspaceId = workspaceId;
99
- }
100
-
101
- public async getAuthHeaders(): Promise<Record<string, string>> {
102
- return {
103
- Authorization: `Bearer ${this.#apiKey}`,
104
- "Aui-User-Id": this.#userId,
105
- "Aui-Workspace-Id": this.#workspaceId,
106
- };
107
- }
108
-
109
- public readAuthHeaders() {
110
- // No operation needed for API key auth
111
- }
112
- }
113
-
114
- const AUI_REFRESH_TOKEN_NAME = "aui:refresh_token";
115
-
116
- export class AssistantCloudAnonymousAuthStrategy
117
- implements AssistantCloudAuthStrategy
118
- {
119
- public readonly strategy = "anon";
120
-
121
- private baseUrl: string;
122
- private jwtStrategy: AssistantCloudJWTAuthStrategy;
123
-
124
- constructor(baseUrl: string) {
125
- this.baseUrl = baseUrl;
126
- this.jwtStrategy = new AssistantCloudJWTAuthStrategy(async () => {
127
- const currentTime = Date.now();
128
- const storedRefreshTokenJson = localStorage.getItem(
129
- AUI_REFRESH_TOKEN_NAME,
130
- );
131
- const storedRefreshToken = storedRefreshTokenJson
132
- ? (JSON.parse(storedRefreshTokenJson) as {
133
- token: string;
134
- expires_at: string;
135
- })
136
- : undefined;
137
-
138
- if (storedRefreshToken) {
139
- const refreshExpiry = new Date(storedRefreshToken.expires_at).getTime();
140
- if (refreshExpiry - currentTime > 30 * 1000) {
141
- const response = await fetch(
142
- `${this.baseUrl}/v1/auth/tokens/refresh`,
143
- {
144
- method: "POST",
145
- headers: { "Content-Type": "application/json" },
146
- body: JSON.stringify({ refresh_token: storedRefreshToken.token }),
147
- },
148
- );
149
-
150
- if (response.ok) {
151
- const data = await response.json();
152
- const { access_token, refresh_token } = data;
153
- if (refresh_token) {
154
- localStorage.setItem(
155
- AUI_REFRESH_TOKEN_NAME,
156
- JSON.stringify(refresh_token),
157
- );
158
- }
159
- return access_token;
160
- }
161
- } else {
162
- localStorage.removeItem(AUI_REFRESH_TOKEN_NAME);
163
- }
164
- }
165
-
166
- // No valid refresh token; request a new anonymous token
167
- const response = await fetch(`${this.baseUrl}/v1/auth/tokens/anonymous`, {
168
- method: "POST",
169
- });
170
-
171
- if (!response.ok) return null;
172
-
173
- const data = await response.json();
174
- const { access_token, refresh_token } = data;
175
-
176
- if (!access_token || !refresh_token) return null;
177
-
178
- localStorage.setItem(
179
- AUI_REFRESH_TOKEN_NAME,
180
- JSON.stringify(refresh_token),
181
- );
182
- return access_token;
183
- });
184
- }
185
-
186
- public async getAuthHeaders(): Promise<Record<string, string> | false> {
187
- return this.jwtStrategy.getAuthHeaders();
188
- }
189
-
190
- public readAuthHeaders(headers: Headers): void {
191
- this.jwtStrategy.readAuthHeaders(headers);
192
- }
193
- }
@@ -1,13 +0,0 @@
1
- import { AssistantCloudAPI } from "./AssistantCloudAPI";
2
-
3
- type AssistantCloudAuthTokensCreateResponse = {
4
- token: string;
5
- };
6
-
7
- export class AssistantCloudAuthTokens {
8
- constructor(private cloud: AssistantCloudAPI) {}
9
-
10
- public async create(): Promise<AssistantCloudAuthTokensCreateResponse> {
11
- return this.cloud.makeRequest("/auth/tokens", { method: "POST" });
12
- }
13
- }
@@ -1,45 +0,0 @@
1
- import { AssistantCloudAPI } from "./AssistantCloudAPI";
2
-
3
- type PdfToImagesRequestBody = {
4
- file_blob?: string | undefined;
5
- file_url?: string | undefined;
6
- };
7
-
8
- type PdfToImagesResponse = {
9
- success: boolean;
10
- urls: string[];
11
- message: string;
12
- };
13
-
14
- type GeneratePresignedUploadUrlRequestBody = {
15
- filename: string;
16
- };
17
-
18
- type GeneratePresignedUploadUrlResponse = {
19
- success: boolean;
20
- signedUrl: string;
21
- expiresAt: string;
22
- publicUrl: string;
23
- };
24
-
25
- export class AssistantCloudFiles {
26
- constructor(private cloud: AssistantCloudAPI) {}
27
-
28
- public async pdfToImages(
29
- body: PdfToImagesRequestBody,
30
- ): Promise<PdfToImagesResponse> {
31
- return this.cloud.makeRequest("/files/pdf-to-images", {
32
- method: "POST",
33
- body,
34
- });
35
- }
36
-
37
- public async generatePresignedUploadUrl(
38
- body: GeneratePresignedUploadUrlRequestBody,
39
- ): Promise<GeneratePresignedUploadUrlResponse> {
40
- return this.cloud.makeRequest("/files/attachments/generate-presigned-upload-url", {
41
- method: "POST",
42
- body,
43
- });
44
- }
45
- }