@jazzmind/busibox-app 3.0.18 → 3.0.20

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 (482) hide show
  1. package/dist/components/UserDropdown.d.ts +0 -16
  2. package/dist/components/UserDropdown.d.ts.map +1 -1
  3. package/dist/components/UserDropdown.js +2 -2
  4. package/dist/components/UserDropdown.js.map +1 -1
  5. package/dist/components/auth/PasskeyRequiredWrapper.d.ts +0 -8
  6. package/dist/components/auth/PasskeyRequiredWrapper.d.ts.map +1 -1
  7. package/dist/components/auth/PasskeyRequiredWrapper.js +2 -2
  8. package/dist/components/auth/PasskeyRequiredWrapper.js.map +1 -1
  9. package/dist/components/auth/ProtectedRoute.d.ts +0 -9
  10. package/dist/components/auth/ProtectedRoute.d.ts.map +1 -1
  11. package/dist/components/auth/ProtectedRoute.js +2 -2
  12. package/dist/components/auth/ProtectedRoute.js.map +1 -1
  13. package/dist/components/auth/SessionProvider.d.ts +0 -40
  14. package/dist/components/auth/SessionProvider.d.ts.map +1 -1
  15. package/dist/components/auth/SessionProvider.js +2 -2
  16. package/dist/components/auth/SessionProvider.js.map +1 -1
  17. package/dist/components/chat/AgentBadge.d.ts +0 -5
  18. package/dist/components/chat/AgentBadge.d.ts.map +1 -1
  19. package/dist/components/chat/AgentBadge.js +2 -2
  20. package/dist/components/chat/AgentBadge.js.map +1 -1
  21. package/dist/components/chat/AgentSelectionPanel.d.ts +0 -6
  22. package/dist/components/chat/AgentSelectionPanel.d.ts.map +1 -1
  23. package/dist/components/chat/AgentSelectionPanel.js +2 -2
  24. package/dist/components/chat/AgentSelectionPanel.js.map +1 -1
  25. package/dist/components/chat/AgentSelector.d.ts +0 -6
  26. package/dist/components/chat/AgentSelector.d.ts.map +1 -1
  27. package/dist/components/chat/AgentSelector.js +2 -2
  28. package/dist/components/chat/AgentSelector.js.map +1 -1
  29. package/dist/components/chat/AgentToolSelector.d.ts +0 -7
  30. package/dist/components/chat/AgentToolSelector.d.ts.map +1 -1
  31. package/dist/components/chat/AgentToolSelector.js +2 -2
  32. package/dist/components/chat/AgentToolSelector.js.map +1 -1
  33. package/dist/components/chat/AttachmentPreview.d.ts.map +1 -1
  34. package/dist/components/chat/AttachmentPreview.js +0 -5
  35. package/dist/components/chat/AttachmentPreview.js.map +1 -1
  36. package/dist/components/chat/AttachmentUploader.d.ts +0 -5
  37. package/dist/components/chat/AttachmentUploader.d.ts.map +1 -1
  38. package/dist/components/chat/AttachmentUploader.js +2 -2
  39. package/dist/components/chat/AttachmentUploader.js.map +1 -1
  40. package/dist/components/chat/ChatContainer.d.ts +0 -6
  41. package/dist/components/chat/ChatContainer.d.ts.map +1 -1
  42. package/dist/components/chat/ChatContainer.js +2 -2
  43. package/dist/components/chat/ChatContainer.js.map +1 -1
  44. package/dist/components/chat/ConversationSidebar.d.ts +0 -5
  45. package/dist/components/chat/ConversationSidebar.d.ts.map +1 -1
  46. package/dist/components/chat/ConversationSidebar.js +2 -2
  47. package/dist/components/chat/ConversationSidebar.js.map +1 -1
  48. package/dist/components/chat/DeleteConversationModal.d.ts +0 -3
  49. package/dist/components/chat/DeleteConversationModal.d.ts.map +1 -1
  50. package/dist/components/chat/DeleteConversationModal.js +2 -2
  51. package/dist/components/chat/DeleteConversationModal.js.map +1 -1
  52. package/dist/components/chat/FullChatInterface.d.ts +0 -23
  53. package/dist/components/chat/FullChatInterface.d.ts.map +1 -1
  54. package/dist/components/chat/FullChatInterface.js +2 -2
  55. package/dist/components/chat/FullChatInterface.js.map +1 -1
  56. package/dist/components/chat/InsightEditModal.d.ts +0 -5
  57. package/dist/components/chat/InsightEditModal.d.ts.map +1 -1
  58. package/dist/components/chat/InsightEditModal.js +2 -2
  59. package/dist/components/chat/InsightEditModal.js.map +1 -1
  60. package/dist/components/chat/LibrarySelector.d.ts +0 -6
  61. package/dist/components/chat/LibrarySelector.d.ts.map +1 -1
  62. package/dist/components/chat/LibrarySelector.js +2 -2
  63. package/dist/components/chat/LibrarySelector.js.map +1 -1
  64. package/dist/components/chat/MessageInput.d.ts +0 -5
  65. package/dist/components/chat/MessageInput.d.ts.map +1 -1
  66. package/dist/components/chat/MessageInput.js +2 -2
  67. package/dist/components/chat/MessageInput.js.map +1 -1
  68. package/dist/components/chat/MessageList.d.ts +0 -5
  69. package/dist/components/chat/MessageList.d.ts.map +1 -1
  70. package/dist/components/chat/MessageList.js +2 -2
  71. package/dist/components/chat/MessageList.js.map +1 -1
  72. package/dist/components/chat/RawContentToggle.d.ts.map +1 -1
  73. package/dist/components/chat/RawContentToggle.js +0 -6
  74. package/dist/components/chat/RawContentToggle.js.map +1 -1
  75. package/dist/components/chat/SearchToggles.d.ts +0 -5
  76. package/dist/components/chat/SearchToggles.d.ts.map +1 -1
  77. package/dist/components/chat/SearchToggles.js +2 -2
  78. package/dist/components/chat/SearchToggles.js.map +1 -1
  79. package/dist/components/chat/SimpleChatInterface.d.ts +0 -25
  80. package/dist/components/chat/SimpleChatInterface.d.ts.map +1 -1
  81. package/dist/components/chat/SimpleChatInterface.js +2 -2
  82. package/dist/components/chat/SimpleChatInterface.js.map +1 -1
  83. package/dist/components/chat/ThinkingSection.d.ts +0 -7
  84. package/dist/components/chat/ThinkingSection.d.ts.map +1 -1
  85. package/dist/components/chat/ThinkingSection.js +2 -2
  86. package/dist/components/chat/ThinkingSection.js.map +1 -1
  87. package/dist/components/chat/ThinkingToggle.d.ts +0 -6
  88. package/dist/components/chat/ThinkingToggle.d.ts.map +1 -1
  89. package/dist/components/chat/ThinkingToggle.js +2 -2
  90. package/dist/components/chat/ThinkingToggle.js.map +1 -1
  91. package/dist/components/chat/ToolSelector.d.ts +0 -6
  92. package/dist/components/chat/ToolSelector.d.ts.map +1 -1
  93. package/dist/components/chat/ToolSelector.js +2 -2
  94. package/dist/components/chat/ToolSelector.js.map +1 -1
  95. package/dist/components/shared/AppIcon.d.ts.map +1 -1
  96. package/dist/components/shared/AppIcon.js +2 -2
  97. package/dist/components/shared/AppIcon.js.map +1 -1
  98. package/dist/components/shared/Modal.d.ts.map +1 -1
  99. package/dist/components/shared/Modal.js +2 -2
  100. package/dist/components/shared/Modal.js.map +1 -1
  101. package/dist/components/workflow/WorkflowList.d.ts.map +1 -1
  102. package/dist/components/workflow/WorkflowList.js +2 -2
  103. package/dist/components/workflow/WorkflowList.js.map +1 -1
  104. package/dist/contexts/AuthContext.d.ts.map +1 -1
  105. package/dist/contexts/AuthContext.js +2 -2
  106. package/dist/contexts/AuthContext.js.map +1 -1
  107. package/dist/contexts/CustomizationContext.d.ts.map +1 -1
  108. package/dist/contexts/CustomizationContext.js +2 -2
  109. package/dist/contexts/CustomizationContext.js.map +1 -1
  110. package/dist/contexts/ThemeContext.d.ts.map +1 -1
  111. package/dist/contexts/ThemeContext.js +2 -2
  112. package/dist/contexts/ThemeContext.js.map +1 -1
  113. package/dist/layout/AdminHeader.d.ts +0 -5
  114. package/dist/layout/AdminHeader.d.ts.map +1 -1
  115. package/dist/layout/AdminHeader.js +2 -2
  116. package/dist/layout/AdminHeader.js.map +1 -1
  117. package/dist/layout/Footer.d.ts +0 -5
  118. package/dist/layout/Footer.d.ts.map +1 -1
  119. package/dist/layout/Footer.js +2 -2
  120. package/dist/layout/Footer.js.map +1 -1
  121. package/dist/layout/Header.d.ts.map +1 -1
  122. package/dist/layout/Header.js +2 -2
  123. package/dist/layout/Header.js.map +1 -1
  124. package/dist/layout/ThemeToggle.d.ts +0 -5
  125. package/dist/layout/ThemeToggle.d.ts.map +1 -1
  126. package/dist/layout/ThemeToggle.js +2 -2
  127. package/dist/layout/ThemeToggle.js.map +1 -1
  128. package/dist/lib/authz/sso-generator.d.ts.map +1 -1
  129. package/dist/lib/authz/sso-generator.js +7 -4
  130. package/dist/lib/authz/sso-generator.js.map +1 -1
  131. package/dist/lib/data/index.d.ts +2 -0
  132. package/dist/lib/data/index.d.ts.map +1 -1
  133. package/dist/lib/data/index.js +2 -0
  134. package/dist/lib/data/index.js.map +1 -1
  135. package/dist/lib/data/sharing.d.ts +154 -0
  136. package/dist/lib/data/sharing.d.ts.map +1 -0
  137. package/dist/lib/data/sharing.js +293 -0
  138. package/dist/lib/data/sharing.js.map +1 -0
  139. package/dist/lib/deploy/app-config.d.ts.map +1 -1
  140. package/dist/lib/deploy/app-config.js +5 -1
  141. package/dist/lib/deploy/app-config.js.map +1 -1
  142. package/dist/lib/deploy/app-permissions.d.ts +2 -0
  143. package/dist/lib/deploy/app-permissions.d.ts.map +1 -1
  144. package/dist/lib/deploy/app-permissions.js +2 -0
  145. package/dist/lib/deploy/app-permissions.js.map +1 -1
  146. package/package.json +1 -1
  147. package/dist/lib/agent/agent-api-helpers.d.ts +0 -16
  148. package/dist/lib/agent/agent-api-helpers.d.ts.map +0 -1
  149. package/dist/lib/agent/agent-api-helpers.js +0 -50
  150. package/dist/lib/agent/agent-api-helpers.js.map +0 -1
  151. package/dist/lib/agent/api-helpers.d.ts +0 -16
  152. package/dist/lib/agent/api-helpers.d.ts.map +0 -1
  153. package/dist/lib/agent/api-helpers.js +0 -50
  154. package/dist/lib/agent/api-helpers.js.map +0 -1
  155. package/dist/lib/agent/chat-cleanup.d.ts +0 -34
  156. package/dist/lib/agent/chat-cleanup.d.ts.map +0 -1
  157. package/dist/lib/agent/chat-cleanup.js +0 -133
  158. package/dist/lib/agent/chat-cleanup.js.map +0 -1
  159. package/dist/lib/agent/client.d.ts +0 -55
  160. package/dist/lib/agent/client.d.ts.map +0 -1
  161. package/dist/lib/agent/client.js +0 -103
  162. package/dist/lib/agent/client.js.map +0 -1
  163. package/dist/lib/agent/openai.d.ts +0 -94
  164. package/dist/lib/agent/openai.d.ts.map +0 -1
  165. package/dist/lib/agent/openai.js +0 -290
  166. package/dist/lib/agent/openai.js.map +0 -1
  167. package/dist/lib/ai/dual-model-router.d.ts +0 -130
  168. package/dist/lib/ai/dual-model-router.d.ts.map +0 -1
  169. package/dist/lib/ai/dual-model-router.js +0 -413
  170. package/dist/lib/ai/dual-model-router.js.map +0 -1
  171. package/dist/lib/ai/openai.d.ts +0 -94
  172. package/dist/lib/ai/openai.d.ts.map +0 -1
  173. package/dist/lib/ai/openai.js +0 -290
  174. package/dist/lib/ai/openai.js.map +0 -1
  175. package/dist/lib/ai/tools.d.ts +0 -64
  176. package/dist/lib/ai/tools.d.ts.map +0 -1
  177. package/dist/lib/ai/tools.js +0 -159
  178. package/dist/lib/ai/tools.js.map +0 -1
  179. package/dist/lib/audit/client.d.ts +0 -138
  180. package/dist/lib/audit/client.d.ts.map +0 -1
  181. package/dist/lib/audit/client.js +0 -486
  182. package/dist/lib/audit/client.js.map +0 -1
  183. package/dist/lib/audit/index.d.ts +0 -6
  184. package/dist/lib/audit/index.d.ts.map +0 -1
  185. package/dist/lib/audit/index.js +0 -6
  186. package/dist/lib/audit/index.js.map +0 -1
  187. package/dist/lib/auth/auth-helper.d.ts +0 -167
  188. package/dist/lib/auth/auth-helper.d.ts.map +0 -1
  189. package/dist/lib/auth/auth-helper.js +0 -345
  190. package/dist/lib/auth/auth-helper.js.map +0 -1
  191. package/dist/lib/auth/auth-state-manager.d.ts +0 -201
  192. package/dist/lib/auth/auth-state-manager.d.ts.map +0 -1
  193. package/dist/lib/auth/auth-state-manager.js +0 -597
  194. package/dist/lib/auth/auth-state-manager.js.map +0 -1
  195. package/dist/lib/auth/client.d.ts +0 -276
  196. package/dist/lib/auth/client.d.ts.map +0 -1
  197. package/dist/lib/auth/client.js +0 -325
  198. package/dist/lib/auth/client.js.map +0 -1
  199. package/dist/lib/auth/index.d.ts +0 -10
  200. package/dist/lib/auth/index.d.ts.map +0 -1
  201. package/dist/lib/auth/index.js +0 -10
  202. package/dist/lib/auth/index.js.map +0 -1
  203. package/dist/lib/auth/sso-route-handler.d.ts +0 -114
  204. package/dist/lib/auth/sso-route-handler.d.ts.map +0 -1
  205. package/dist/lib/auth/sso-route-handler.js +0 -199
  206. package/dist/lib/auth/sso-route-handler.js.map +0 -1
  207. package/dist/lib/auth/sso.d.ts +0 -162
  208. package/dist/lib/auth/sso.d.ts.map +0 -1
  209. package/dist/lib/auth/sso.js +0 -282
  210. package/dist/lib/auth/sso.js.map +0 -1
  211. package/dist/lib/authz/email.d.ts +0 -65
  212. package/dist/lib/authz/email.d.ts.map +0 -1
  213. package/dist/lib/authz/email.js +0 -112
  214. package/dist/lib/authz/email.js.map +0 -1
  215. package/dist/lib/authz/permissions.d.ts +0 -109
  216. package/dist/lib/authz/permissions.d.ts.map +0 -1
  217. package/dist/lib/authz/permissions.js +0 -238
  218. package/dist/lib/authz/permissions.js.map +0 -1
  219. package/dist/lib/authz/service-audit.d.ts +0 -41
  220. package/dist/lib/authz/service-audit.d.ts.map +0 -1
  221. package/dist/lib/authz/service-audit.js +0 -60
  222. package/dist/lib/authz/service-audit.js.map +0 -1
  223. package/dist/lib/chat-server/agent-api-client.d.ts +0 -151
  224. package/dist/lib/chat-server/agent-api-client.d.ts.map +0 -1
  225. package/dist/lib/chat-server/agent-api-client.js +0 -162
  226. package/dist/lib/chat-server/agent-api-client.js.map +0 -1
  227. package/dist/lib/chat-server/attachments.d.ts +0 -118
  228. package/dist/lib/chat-server/attachments.d.ts.map +0 -1
  229. package/dist/lib/chat-server/attachments.js +0 -317
  230. package/dist/lib/chat-server/attachments.js.map +0 -1
  231. package/dist/lib/chat-server/cleanup.d.ts +0 -34
  232. package/dist/lib/chat-server/cleanup.d.ts.map +0 -1
  233. package/dist/lib/chat-server/cleanup.js +0 -133
  234. package/dist/lib/chat-server/cleanup.js.map +0 -1
  235. package/dist/lib/chat-server/conversations.d.ts +0 -159
  236. package/dist/lib/chat-server/conversations.d.ts.map +0 -1
  237. package/dist/lib/chat-server/conversations.js +0 -278
  238. package/dist/lib/chat-server/conversations.js.map +0 -1
  239. package/dist/lib/chat-server/insights.d.ts +0 -84
  240. package/dist/lib/chat-server/insights.d.ts.map +0 -1
  241. package/dist/lib/chat-server/insights.js +0 -193
  242. package/dist/lib/chat-server/insights.js.map +0 -1
  243. package/dist/lib/chat-server/messages.d.ts +0 -154
  244. package/dist/lib/chat-server/messages.d.ts.map +0 -1
  245. package/dist/lib/chat-server/messages.js +0 -282
  246. package/dist/lib/chat-server/messages.js.map +0 -1
  247. package/dist/lib/chat-server/middleware.d.ts +0 -119
  248. package/dist/lib/chat-server/middleware.d.ts.map +0 -1
  249. package/dist/lib/chat-server/middleware.js +0 -234
  250. package/dist/lib/chat-server/middleware.js.map +0 -1
  251. package/dist/lib/chat-server/models.d.ts +0 -60
  252. package/dist/lib/chat-server/models.d.ts.map +0 -1
  253. package/dist/lib/chat-server/models.js +0 -205
  254. package/dist/lib/chat-server/models.js.map +0 -1
  255. package/dist/lib/chat-server/search.d.ts +0 -89
  256. package/dist/lib/chat-server/search.d.ts.map +0 -1
  257. package/dist/lib/chat-server/search.js +0 -203
  258. package/dist/lib/chat-server/search.js.map +0 -1
  259. package/dist/lib/chat-server/sharing.d.ts +0 -70
  260. package/dist/lib/chat-server/sharing.d.ts.map +0 -1
  261. package/dist/lib/chat-server/sharing.js +0 -146
  262. package/dist/lib/chat-server/sharing.js.map +0 -1
  263. package/dist/lib/data/embeddings-app-client.d.ts +0 -37
  264. package/dist/lib/data/embeddings-app-client.d.ts.map +0 -1
  265. package/dist/lib/data/embeddings-app-client.js +0 -72
  266. package/dist/lib/data/embeddings-app-client.js.map +0 -1
  267. package/dist/lib/deploy/manifest-validator.d.ts +0 -25
  268. package/dist/lib/deploy/manifest-validator.d.ts.map +0 -1
  269. package/dist/lib/deploy/manifest-validator.js +0 -142
  270. package/dist/lib/deploy/manifest-validator.js.map +0 -1
  271. package/dist/lib/embeddings/data-client.d.ts +0 -37
  272. package/dist/lib/embeddings/data-client.d.ts.map +0 -1
  273. package/dist/lib/embeddings/data-client.js +0 -72
  274. package/dist/lib/embeddings/data-client.js.map +0 -1
  275. package/dist/lib/hooks/useMediaQuery.d.ts +0 -6
  276. package/dist/lib/hooks/useMediaQuery.d.ts.map +0 -1
  277. package/dist/lib/hooks/useMediaQuery.js +0 -18
  278. package/dist/lib/hooks/useMediaQuery.js.map +0 -1
  279. package/dist/lib/insights/client.d.ts +0 -131
  280. package/dist/lib/insights/client.d.ts.map +0 -1
  281. package/dist/lib/insights/client.js +0 -306
  282. package/dist/lib/insights/client.js.map +0 -1
  283. package/dist/lib/insights/index.d.ts +0 -5
  284. package/dist/lib/insights/index.d.ts.map +0 -1
  285. package/dist/lib/insights/index.js +0 -5
  286. package/dist/lib/insights/index.js.map +0 -1
  287. package/dist/lib/next/authz-client.d.ts +0 -120
  288. package/dist/lib/next/authz-client.d.ts.map +0 -1
  289. package/dist/lib/next/authz-client.js +0 -203
  290. package/dist/lib/next/authz-client.js.map +0 -1
  291. package/dist/lib/next/passkey.d.ts +0 -78
  292. package/dist/lib/next/passkey.d.ts.map +0 -1
  293. package/dist/lib/next/passkey.js +0 -380
  294. package/dist/lib/next/passkey.js.map +0 -1
  295. package/dist/lib/next/sso.d.ts +0 -51
  296. package/dist/lib/next/sso.d.ts.map +0 -1
  297. package/dist/lib/next/sso.js +0 -167
  298. package/dist/lib/next/sso.js.map +0 -1
  299. package/dist/lib/rbac/client.d.ts +0 -320
  300. package/dist/lib/rbac/client.d.ts.map +0 -1
  301. package/dist/lib/rbac/client.js +0 -532
  302. package/dist/lib/rbac/client.js.map +0 -1
  303. package/dist/lib/rbac/index.d.ts +0 -6
  304. package/dist/lib/rbac/index.d.ts.map +0 -1
  305. package/dist/lib/rbac/index.js +0 -6
  306. package/dist/lib/rbac/index.js.map +0 -1
  307. package/dist/lib/search/providers.d.ts +0 -105
  308. package/dist/lib/search/providers.d.ts.map +0 -1
  309. package/dist/lib/search/providers.js +0 -140
  310. package/dist/lib/search/providers.js.map +0 -1
  311. package/dist/lib/services/api-client.d.ts +0 -46
  312. package/dist/lib/services/api-client.d.ts.map +0 -1
  313. package/dist/lib/services/api-client.js +0 -80
  314. package/dist/lib/services/api-client.js.map +0 -1
  315. package/dist/lib/services/app-library.d.ts +0 -36
  316. package/dist/lib/services/app-library.d.ts.map +0 -1
  317. package/dist/lib/services/app-library.js +0 -123
  318. package/dist/lib/services/app-library.js.map +0 -1
  319. package/dist/lib/services/app-utils.d.ts +0 -22
  320. package/dist/lib/services/app-utils.d.ts.map +0 -1
  321. package/dist/lib/services/app-utils.js +0 -36
  322. package/dist/lib/services/app-utils.js.map +0 -1
  323. package/dist/lib/services/audit.d.ts +0 -41
  324. package/dist/lib/services/audit.d.ts.map +0 -1
  325. package/dist/lib/services/audit.js +0 -60
  326. package/dist/lib/services/audit.js.map +0 -1
  327. package/dist/lib/services/database-cloner.d.ts +0 -28
  328. package/dist/lib/services/database-cloner.d.ts.map +0 -1
  329. package/dist/lib/services/database-cloner.js +0 -197
  330. package/dist/lib/services/database-cloner.js.map +0 -1
  331. package/dist/lib/services/default-apps.d.ts +0 -31
  332. package/dist/lib/services/default-apps.d.ts.map +0 -1
  333. package/dist/lib/services/default-apps.js +0 -121
  334. package/dist/lib/services/default-apps.js.map +0 -1
  335. package/dist/lib/services/deploy-api-client.d.ts +0 -184
  336. package/dist/lib/services/deploy-api-client.d.ts.map +0 -1
  337. package/dist/lib/services/deploy-api-client.js +0 -208
  338. package/dist/lib/services/deploy-api-client.js.map +0 -1
  339. package/dist/lib/services/deployment-service-client.d.ts +0 -122
  340. package/dist/lib/services/deployment-service-client.d.ts.map +0 -1
  341. package/dist/lib/services/deployment-service-client.js +0 -245
  342. package/dist/lib/services/deployment-service-client.js.map +0 -1
  343. package/dist/lib/services/docs.d.ts +0 -80
  344. package/dist/lib/services/docs.d.ts.map +0 -1
  345. package/dist/lib/services/docs.js +0 -160
  346. package/dist/lib/services/docs.js.map +0 -1
  347. package/dist/lib/services/email-validation.d.ts +0 -33
  348. package/dist/lib/services/email-validation.d.ts.map +0 -1
  349. package/dist/lib/services/email-validation.js +0 -70
  350. package/dist/lib/services/email-validation.js.map +0 -1
  351. package/dist/lib/services/email.d.ts +0 -65
  352. package/dist/lib/services/email.d.ts.map +0 -1
  353. package/dist/lib/services/email.js +0 -112
  354. package/dist/lib/services/email.js.map +0 -1
  355. package/dist/lib/services/github-manifest-fetcher.d.ts +0 -74
  356. package/dist/lib/services/github-manifest-fetcher.d.ts.map +0 -1
  357. package/dist/lib/services/github-manifest-fetcher.js +0 -168
  358. package/dist/lib/services/github-manifest-fetcher.js.map +0 -1
  359. package/dist/lib/services/libraries.d.ts +0 -124
  360. package/dist/lib/services/libraries.d.ts.map +0 -1
  361. package/dist/lib/services/libraries.js +0 -507
  362. package/dist/lib/services/libraries.js.map +0 -1
  363. package/dist/lib/services/litellm.d.ts +0 -33
  364. package/dist/lib/services/litellm.d.ts.map +0 -1
  365. package/dist/lib/services/litellm.js +0 -222
  366. package/dist/lib/services/litellm.js.map +0 -1
  367. package/dist/lib/services/manifest-schema.d.ts +0 -66
  368. package/dist/lib/services/manifest-schema.d.ts.map +0 -1
  369. package/dist/lib/services/manifest-schema.js +0 -86
  370. package/dist/lib/services/manifest-schema.js.map +0 -1
  371. package/dist/lib/services/manifest-validator.d.ts +0 -25
  372. package/dist/lib/services/manifest-validator.d.ts.map +0 -1
  373. package/dist/lib/services/manifest-validator.js +0 -142
  374. package/dist/lib/services/manifest-validator.js.map +0 -1
  375. package/dist/lib/services/manifest.d.ts +0 -45
  376. package/dist/lib/services/manifest.d.ts.map +0 -1
  377. package/dist/lib/services/manifest.js +0 -137
  378. package/dist/lib/services/manifest.js.map +0 -1
  379. package/dist/lib/services/permissions.d.ts +0 -109
  380. package/dist/lib/services/permissions.d.ts.map +0 -1
  381. package/dist/lib/services/permissions.js +0 -238
  382. package/dist/lib/services/permissions.js.map +0 -1
  383. package/dist/lib/services/service-client.d.ts +0 -99
  384. package/dist/lib/services/service-client.d.ts.map +0 -1
  385. package/dist/lib/services/service-client.js +0 -146
  386. package/dist/lib/services/service-client.js.map +0 -1
  387. package/dist/lib/services/tags.d.ts +0 -37
  388. package/dist/lib/services/tags.d.ts.map +0 -1
  389. package/dist/lib/services/tags.js +0 -189
  390. package/dist/lib/services/tags.js.map +0 -1
  391. package/dist/lib/services/url-validation.d.ts +0 -22
  392. package/dist/lib/services/url-validation.d.ts.map +0 -1
  393. package/dist/lib/services/url-validation.js +0 -86
  394. package/dist/lib/services/url-validation.js.map +0 -1
  395. package/dist/lib/services/user-management.d.ts +0 -81
  396. package/dist/lib/services/user-management.d.ts.map +0 -1
  397. package/dist/lib/services/user-management.js +0 -154
  398. package/dist/lib/services/user-management.js.map +0 -1
  399. package/dist/lib/storage/index.d.ts +0 -11
  400. package/dist/lib/storage/index.d.ts.map +0 -1
  401. package/dist/lib/storage/index.js +0 -12
  402. package/dist/lib/storage/index.js.map +0 -1
  403. package/dist/lib/storage/types.d.ts +0 -61
  404. package/dist/lib/storage/types.d.ts.map +0 -1
  405. package/dist/lib/storage/types.js +0 -8
  406. package/dist/lib/storage/types.js.map +0 -1
  407. package/dist/lib/stores/app-config-store.d.ts +0 -90
  408. package/dist/lib/stores/app-config-store.d.ts.map +0 -1
  409. package/dist/lib/stores/app-config-store.js +0 -491
  410. package/dist/lib/stores/app-config-store.js.map +0 -1
  411. package/dist/lib/stores/bridge-config-store.d.ts +0 -44
  412. package/dist/lib/stores/bridge-config-store.d.ts.map +0 -1
  413. package/dist/lib/stores/bridge-config-store.js +0 -207
  414. package/dist/lib/stores/bridge-config-store.js.map +0 -1
  415. package/dist/lib/stores/chat-config-store.d.ts +0 -28
  416. package/dist/lib/stores/chat-config-store.d.ts.map +0 -1
  417. package/dist/lib/stores/chat-config-store.js +0 -152
  418. package/dist/lib/stores/chat-config-store.js.map +0 -1
  419. package/dist/lib/stores/data-settings-store.d.ts +0 -44
  420. package/dist/lib/stores/data-settings-store.d.ts.map +0 -1
  421. package/dist/lib/stores/data-settings-store.js +0 -202
  422. package/dist/lib/stores/data-settings-store.js.map +0 -1
  423. package/dist/lib/stores/email-config-store.d.ts +0 -45
  424. package/dist/lib/stores/email-config-store.d.ts.map +0 -1
  425. package/dist/lib/stores/email-config-store.js +0 -185
  426. package/dist/lib/stores/email-config-store.js.map +0 -1
  427. package/dist/lib/stores/portal-config-store.d.ts +0 -38
  428. package/dist/lib/stores/portal-config-store.d.ts.map +0 -1
  429. package/dist/lib/stores/portal-config-store.js +0 -238
  430. package/dist/lib/stores/portal-config-store.js.map +0 -1
  431. package/dist/lib/stores/video-store.d.ts +0 -91
  432. package/dist/lib/stores/video-store.d.ts.map +0 -1
  433. package/dist/lib/stores/video-store.js +0 -451
  434. package/dist/lib/stores/video-store.js.map +0 -1
  435. package/dist/lib/videos/access-control.d.ts +0 -35
  436. package/dist/lib/videos/access-control.d.ts.map +0 -1
  437. package/dist/lib/videos/access-control.js +0 -63
  438. package/dist/lib/videos/access-control.js.map +0 -1
  439. package/dist/lib/videos/agent-api-client.d.ts +0 -46
  440. package/dist/lib/videos/agent-api-client.d.ts.map +0 -1
  441. package/dist/lib/videos/agent-api-client.js +0 -75
  442. package/dist/lib/videos/agent-api-client.js.map +0 -1
  443. package/dist/lib/videos/creation.d.ts +0 -24
  444. package/dist/lib/videos/creation.d.ts.map +0 -1
  445. package/dist/lib/videos/creation.js +0 -112
  446. package/dist/lib/videos/creation.js.map +0 -1
  447. package/dist/lib/videos/expiration.d.ts +0 -13
  448. package/dist/lib/videos/expiration.d.ts.map +0 -1
  449. package/dist/lib/videos/expiration.js +0 -95
  450. package/dist/lib/videos/expiration.js.map +0 -1
  451. package/dist/lib/videos/image-resize.d.ts +0 -42
  452. package/dist/lib/videos/image-resize.d.ts.map +0 -1
  453. package/dist/lib/videos/image-resize.js +0 -106
  454. package/dist/lib/videos/image-resize.js.map +0 -1
  455. package/dist/lib/videos/processing.d.ts +0 -35
  456. package/dist/lib/videos/processing.d.ts.map +0 -1
  457. package/dist/lib/videos/processing.js +0 -154
  458. package/dist/lib/videos/processing.js.map +0 -1
  459. package/dist/lib/videos/status.d.ts +0 -2
  460. package/dist/lib/videos/status.d.ts.map +0 -1
  461. package/dist/lib/videos/status.js +0 -141
  462. package/dist/lib/videos/status.js.map +0 -1
  463. package/dist/lib/videos/upload.d.ts +0 -41
  464. package/dist/lib/videos/upload.d.ts.map +0 -1
  465. package/dist/lib/videos/upload.js +0 -118
  466. package/dist/lib/videos/upload.js.map +0 -1
  467. package/dist/lib/videos/url-normalization.d.ts +0 -29
  468. package/dist/lib/videos/url-normalization.d.ts.map +0 -1
  469. package/dist/lib/videos/url-normalization.js +0 -61
  470. package/dist/lib/videos/url-normalization.js.map +0 -1
  471. package/dist/sso/index.d.ts +0 -3
  472. package/dist/sso/index.d.ts.map +0 -1
  473. package/dist/sso/index.js +0 -3
  474. package/dist/sso/index.js.map +0 -1
  475. package/dist/sso/token.d.ts +0 -17
  476. package/dist/sso/token.d.ts.map +0 -1
  477. package/dist/sso/token.js +0 -57
  478. package/dist/sso/token.js.map +0 -1
  479. package/dist/types/sso.d.ts +0 -37
  480. package/dist/types/sso.d.ts.map +0 -1
  481. package/dist/types/sso.js +0 -2
  482. package/dist/types/sso.js.map +0 -1
@@ -1,597 +0,0 @@
1
- /**
2
- * Auth State Manager for client-side apps.
3
- *
4
- * Provides centralized authentication state management including:
5
- * - Proactive token refresh before expiration
6
- * - Auth state change detection and broadcasting
7
- * - Automatic redirect to portal when re-authentication is required
8
- * - Event-based architecture for loose coupling
9
- *
10
- * This acts as a "service worker-like" auth listener that monitors
11
- * authentication state and prevents users from discovering expired
12
- * tokens only after submitting a request.
13
- *
14
- * Usage:
15
- * ```typescript
16
- * const authManager = createAuthStateManager({
17
- * refreshEndpoint: '/api/auth/refresh',
18
- * sessionEndpoint: '/api/session',
19
- * portalUrl: 'https://portal.example.com',
20
- * appId: 'busibox-agents',
21
- * });
22
- *
23
- * // Start monitoring
24
- * authManager.start();
25
- *
26
- * // Subscribe to auth state changes
27
- * authManager.on('authStateChanged', (state) => {
28
- * console.log('Auth state:', state.isAuthenticated);
29
- * });
30
- *
31
- * // Subscribe to re-auth requirements
32
- * authManager.on('requiresReauth', () => {
33
- * // Will auto-redirect if autoRedirect is true
34
- * });
35
- * ```
36
- */
37
- // Parse JWT payload without verification (for expiry checking)
38
- function parseJWTPayload(token) {
39
- try {
40
- const parts = token.split('.');
41
- if (parts.length !== 3)
42
- return null;
43
- // Handle both browser and Node.js environments
44
- let decoded;
45
- if (typeof window !== 'undefined' && typeof atob === 'function') {
46
- decoded = atob(parts[1].replace(/-/g, '+').replace(/_/g, '/'));
47
- }
48
- else {
49
- decoded = Buffer.from(parts[1], 'base64').toString('utf-8');
50
- }
51
- return JSON.parse(decoded);
52
- }
53
- catch {
54
- return null;
55
- }
56
- }
57
- function getTokenExpiry(token) {
58
- const payload = parseJWTPayload(token);
59
- if (!payload || typeof payload.exp !== 'number')
60
- return null;
61
- return payload.exp * 1000; // Convert to ms
62
- }
63
- /**
64
- * Create an auth state manager instance.
65
- */
66
- export function createAuthStateManager(config) {
67
- const { refreshEndpoint, sessionEndpoint, portalUrl, appId, checkIntervalMs = 30000, refreshBufferMs = 5 * 60 * 1000, // 5 minutes
68
- autoRedirect = true, getToken, setToken, basePath = '', exchangeEndpoint = '/api/sso', tokenExpiresOverrideMs, } = config;
69
- // Derive the silent refresh URL from portalUrl if not explicitly provided.
70
- // portalUrl typically ends with '/home' (e.g., 'https://localhost/portal/home'),
71
- // so strip that to get the portal base, then append the refresh API path.
72
- const portalBase = portalUrl.replace(/\/home\/?$/, '');
73
- const silentRefreshUrl = config.silentRefreshUrl || (portalBase ? `${portalBase}/api/sso/refresh` : '');
74
- // Track when the token was first observed (for tokenExpiresOverrideMs)
75
- let tokenFirstSeen = null;
76
- // State
77
- let state = {
78
- isAuthenticated: false,
79
- user: null,
80
- tokenExpiresAt: null,
81
- lastChecked: 0,
82
- };
83
- let intervalId = null;
84
- let isRefreshing = false;
85
- let pendingRefresh = null;
86
- let isRedirecting = false; // Once set, all further auth activity is suppressed
87
- let consecutive401AfterRefresh = 0; // Track when refresh "succeeds" but APIs still fail
88
- const MAX_401_AFTER_REFRESH = 2; // After this many, redirect to portal
89
- // Event listeners
90
- const listeners = new Map();
91
- function emit(event, data) {
92
- const eventListeners = listeners.get(event);
93
- if (eventListeners) {
94
- eventListeners.forEach((callback) => {
95
- try {
96
- callback(data);
97
- }
98
- catch (error) {
99
- console.error(`[AuthStateManager] Error in ${event} listener:`, error);
100
- }
101
- });
102
- }
103
- }
104
- function on(event, callback) {
105
- if (!listeners.has(event)) {
106
- listeners.set(event, new Set());
107
- }
108
- listeners.get(event).add(callback);
109
- return () => off(event, callback);
110
- }
111
- function off(event, callback) {
112
- const eventListeners = listeners.get(event);
113
- if (eventListeners) {
114
- eventListeners.delete(callback);
115
- }
116
- }
117
- function redirectToPortal(reason) {
118
- if (typeof window === 'undefined')
119
- return;
120
- if (isRedirecting)
121
- return; // Prevent duplicate redirects
122
- isRedirecting = true;
123
- // Stop all monitoring immediately so no more checks/retries fire
124
- stop();
125
- const currentUrl = new URL(window.location.href);
126
- currentUrl.searchParams.delete('token');
127
- currentUrl.searchParams.delete('returnUrl');
128
- currentUrl.searchParams.delete('reason');
129
- currentUrl.searchParams.delete('appId');
130
- const cleanReturnUrl = currentUrl.toString();
131
- const encodedReturn = encodeURIComponent(cleanReturnUrl);
132
- let redirectUrl = `${portalUrl}?returnUrl=${encodedReturn}`;
133
- if (reason) {
134
- redirectUrl += `&reason=${encodeURIComponent(reason)}`;
135
- }
136
- if (appId) {
137
- redirectUrl += `&appId=${encodeURIComponent(appId)}`;
138
- }
139
- console.log('[AuthStateManager] Redirecting to portal:', redirectUrl);
140
- window.location.href = redirectUrl;
141
- }
142
- async function checkSession() {
143
- if (isRedirecting)
144
- return;
145
- try {
146
- const response = await fetch(sessionEndpoint, {
147
- method: 'GET',
148
- credentials: 'include',
149
- });
150
- if (!response.ok) {
151
- throw new Error(`Session check failed: ${response.status}`);
152
- }
153
- const data = await response.json();
154
- const newState = {
155
- isAuthenticated: data.isAuthenticated ?? false,
156
- user: data.user ?? null,
157
- tokenExpiresAt: state.tokenExpiresAt, // Preserve token expiry
158
- lastChecked: Date.now(),
159
- };
160
- // Check if token expiry from client-side token
161
- if (getToken) {
162
- const token = getToken();
163
- if (token) {
164
- const expiry = getTokenExpiry(token);
165
- if (expiry) {
166
- // Apply testing override if configured
167
- if (tokenExpiresOverrideMs) {
168
- if (!tokenFirstSeen) {
169
- tokenFirstSeen = Date.now();
170
- console.log(`[AuthStateManager] Testing: token override active, will expire in ${tokenExpiresOverrideMs}ms`);
171
- }
172
- newState.tokenExpiresAt = tokenFirstSeen + tokenExpiresOverrideMs;
173
- }
174
- else {
175
- newState.tokenExpiresAt = expiry;
176
- }
177
- }
178
- }
179
- }
180
- const stateChanged = state.isAuthenticated !== newState.isAuthenticated ||
181
- state.user?.id !== newState.user?.id;
182
- state = newState;
183
- // Session check succeeded - reset 401 counter since things are working
184
- if (state.isAuthenticated) {
185
- consecutive401AfterRefresh = 0;
186
- }
187
- if (stateChanged) {
188
- emit('authStateChanged', state);
189
- }
190
- // If not authenticated, try silent SSO refresh before redirecting
191
- if (!state.isAuthenticated) {
192
- console.log('[AuthStateManager] Session check shows not authenticated, attempting silent SSO refresh...');
193
- const silentRefreshed = await silentRefreshSSO();
194
- if (silentRefreshed) {
195
- console.log('[AuthStateManager] Silent SSO refresh succeeded after session loss, rechecking...');
196
- // Re-check session after silent refresh
197
- const recheckResponse = await fetch(sessionEndpoint, {
198
- method: 'GET',
199
- credentials: 'include',
200
- });
201
- if (recheckResponse.ok) {
202
- const recheckData = await recheckResponse.json();
203
- if (recheckData.isAuthenticated) {
204
- state = {
205
- isAuthenticated: true,
206
- user: recheckData.user ?? null,
207
- tokenExpiresAt: state.tokenExpiresAt,
208
- lastChecked: Date.now(),
209
- };
210
- emit('authStateChanged', state);
211
- console.log('[AuthStateManager] Session restored after silent refresh');
212
- return;
213
- }
214
- }
215
- }
216
- // Silent refresh failed or didn't help - redirect
217
- if (autoRedirect) {
218
- emit('sessionExpired', { reason: 'Session not authenticated' });
219
- redirectToPortal('session_expired');
220
- }
221
- }
222
- }
223
- catch (error) {
224
- console.error('[AuthStateManager] Session check failed:', error);
225
- // Don't immediately redirect on network errors
226
- }
227
- }
228
- /**
229
- * Try to silently refresh the SSO token via the portal.
230
- *
231
- * This calls the portal's /api/sso/refresh endpoint. Since the portal and
232
- * sub-apps are on the same origin, the browser automatically sends the
233
- * portal's session cookie. If the portal session is still valid, it returns
234
- * a fresh SSO token which we exchange locally for new cookies.
235
- *
236
- * Returns true if a fresh SSO token was obtained and exchanged.
237
- */
238
- async function silentRefreshSSO() {
239
- if (!silentRefreshUrl || !appId) {
240
- console.log('[AuthStateManager] Silent refresh not available (no silentRefreshUrl or appId)');
241
- return false;
242
- }
243
- try {
244
- console.log('[AuthStateManager] Attempting silent SSO refresh via portal...');
245
- // Call the portal's refresh endpoint - browser sends portal cookies automatically
246
- const response = await fetch(silentRefreshUrl, {
247
- method: 'POST',
248
- headers: { 'Content-Type': 'application/json' },
249
- body: JSON.stringify({ appName: appId }),
250
- credentials: 'include',
251
- });
252
- if (!response.ok) {
253
- const errorData = await response.json().catch(() => ({}));
254
- console.log('[AuthStateManager] Silent refresh failed:', response.status, errorData);
255
- return false;
256
- }
257
- const data = await response.json();
258
- const freshToken = data?.data?.token || data?.token;
259
- if (!freshToken) {
260
- console.log('[AuthStateManager] Silent refresh returned no token');
261
- return false;
262
- }
263
- console.log('[AuthStateManager] Got fresh SSO token from portal, exchanging locally...');
264
- // Exchange the fresh SSO token for local session cookies
265
- const exchangeResponse = await fetch(exchangeEndpoint, {
266
- method: 'POST',
267
- headers: { 'Content-Type': 'application/json' },
268
- body: JSON.stringify({ token: freshToken }),
269
- credentials: 'include',
270
- });
271
- if (!exchangeResponse.ok) {
272
- console.log('[AuthStateManager] Local token exchange failed:', exchangeResponse.status);
273
- return false;
274
- }
275
- // Update local token storage
276
- if (setToken) {
277
- setToken(freshToken);
278
- }
279
- // Update expiry from the fresh token
280
- const expiry = getTokenExpiry(freshToken);
281
- if (expiry) {
282
- state = {
283
- ...state,
284
- tokenExpiresAt: expiry,
285
- };
286
- }
287
- // Reset the testing override timer so the new token gets a fresh window
288
- if (tokenExpiresOverrideMs) {
289
- tokenFirstSeen = Date.now();
290
- console.log(`[AuthStateManager] Testing: reset token expiry override, next expire in ${tokenExpiresOverrideMs}ms`);
291
- }
292
- console.log('[AuthStateManager] Silent SSO refresh successful');
293
- return true;
294
- }
295
- catch (error) {
296
- console.error('[AuthStateManager] Silent SSO refresh error:', error);
297
- return false;
298
- }
299
- }
300
- async function refreshToken() {
301
- if (isRedirecting)
302
- return false;
303
- // Prevent concurrent refresh attempts
304
- if (isRefreshing && pendingRefresh) {
305
- return pendingRefresh;
306
- }
307
- isRefreshing = true;
308
- pendingRefresh = (async () => {
309
- try {
310
- const currentToken = getToken?.() ?? '';
311
- const response = await fetch(refreshEndpoint, {
312
- method: 'POST',
313
- headers: {
314
- 'Content-Type': 'application/json',
315
- ...(currentToken ? { Authorization: `Bearer ${currentToken}` } : {}),
316
- },
317
- credentials: 'include',
318
- });
319
- const data = await response.json();
320
- if (!response.ok) {
321
- // Check if re-authentication is required (SSO token expired)
322
- if (data.requiresReauth) {
323
- console.log('[AuthStateManager] Local refresh says re-auth needed, trying silent SSO refresh...');
324
- // Try silent refresh via portal before giving up
325
- const silentRefreshed = await silentRefreshSSO();
326
- if (silentRefreshed) {
327
- // SSO token was refreshed - now retry the local refresh
328
- console.log('[AuthStateManager] Silent refresh succeeded, retrying local refresh...');
329
- const retryResponse = await fetch(refreshEndpoint, {
330
- method: 'POST',
331
- headers: { 'Content-Type': 'application/json' },
332
- credentials: 'include',
333
- });
334
- const retryData = await retryResponse.json();
335
- if (retryResponse.ok) {
336
- // Update token if we have a setter
337
- if (retryData.token && setToken) {
338
- setToken(retryData.token);
339
- }
340
- const expiresIn = retryData.expiresIn ?? 900;
341
- state = {
342
- ...state,
343
- tokenExpiresAt: Date.now() + expiresIn * 1000,
344
- };
345
- emit('tokenRefreshed', { expiresIn });
346
- console.log('[AuthStateManager] Token refreshed successfully after silent SSO refresh');
347
- return true;
348
- }
349
- console.log('[AuthStateManager] Retry after silent refresh still failed:', retryData);
350
- }
351
- // Silent refresh failed too - redirect to portal
352
- emit('requiresReauth', { reason: data.message || 'Token refresh failed' });
353
- if (autoRedirect) {
354
- redirectToPortal('token_expired');
355
- }
356
- return false;
357
- }
358
- emit('tokenRefreshFailed', { error: data.error || 'Unknown error' });
359
- return false;
360
- }
361
- // Update token if we have a setter
362
- if (data.token && setToken) {
363
- setToken(data.token);
364
- }
365
- // Update expiry
366
- const expiresIn = data.expiresIn ?? 900; // Default 15 minutes
367
- state = {
368
- ...state,
369
- tokenExpiresAt: Date.now() + expiresIn * 1000,
370
- };
371
- // Reset the testing override timer so the refreshed token gets a fresh window
372
- if (tokenExpiresOverrideMs) {
373
- tokenFirstSeen = Date.now();
374
- console.log(`[AuthStateManager] Testing: reset token expiry override after refresh, next expire in ${tokenExpiresOverrideMs}ms`);
375
- }
376
- emit('tokenRefreshed', { expiresIn });
377
- console.log('[AuthStateManager] Token refreshed successfully');
378
- return true;
379
- }
380
- catch (error) {
381
- console.error('[AuthStateManager] Token refresh failed:', error);
382
- emit('tokenRefreshFailed', { error });
383
- return false;
384
- }
385
- finally {
386
- isRefreshing = false;
387
- pendingRefresh = null;
388
- }
389
- })();
390
- return pendingRefresh;
391
- }
392
- async function checkAndRefresh() {
393
- if (isRedirecting)
394
- return;
395
- // First, check if we need to refresh the token proactively
396
- if (state.tokenExpiresAt) {
397
- const timeUntilExpiry = state.tokenExpiresAt - Date.now();
398
- if (timeUntilExpiry <= 0) {
399
- // Token already expired
400
- console.log('[AuthStateManager] Token expired, attempting refresh');
401
- const refreshed = await refreshToken();
402
- if (!refreshed) {
403
- // refreshToken() already handles redirect after trying silent refresh
404
- return;
405
- }
406
- }
407
- else if (timeUntilExpiry <= refreshBufferMs) {
408
- // Token expiring soon, refresh proactively
409
- console.log('[AuthStateManager] Token expiring soon, refreshing proactively');
410
- await refreshToken();
411
- }
412
- }
413
- // Then check session state
414
- await checkSession();
415
- }
416
- async function handle401Response() {
417
- if (isRedirecting)
418
- return false;
419
- console.log('[AuthStateManager] Handling 401 response');
420
- // If refresh keeps "succeeding" but APIs still return 401,
421
- // the underlying SSO token is expired and refresh can't fix it.
422
- consecutive401AfterRefresh++;
423
- if (consecutive401AfterRefresh > MAX_401_AFTER_REFRESH) {
424
- console.log('[AuthStateManager] Multiple 401s after refresh - trying silent SSO refresh before redirect');
425
- // Last resort: try silent SSO refresh before giving up
426
- const silentRefreshed = await silentRefreshSSO();
427
- if (silentRefreshed) {
428
- console.log('[AuthStateManager] Silent SSO refresh succeeded, resetting 401 counter');
429
- consecutive401AfterRefresh = 0;
430
- // Now try the local refresh with the new SSO token
431
- return refreshToken();
432
- }
433
- emit('requiresReauth', { reason: 'SSO token expired - refresh cannot fix' });
434
- if (autoRedirect) {
435
- redirectToPortal('token_expired');
436
- }
437
- return false;
438
- }
439
- // Try to refresh the token (refreshToken now includes silent SSO refresh fallback)
440
- const refreshed = await refreshToken();
441
- if (!refreshed) {
442
- // refreshToken() already handles redirect after trying silent refresh
443
- }
444
- return refreshed;
445
- }
446
- function start() {
447
- if (intervalId) {
448
- console.warn('[AuthStateManager] Already started');
449
- return;
450
- }
451
- console.log('[AuthStateManager] Starting auth state monitoring');
452
- // Initial check
453
- checkAndRefresh();
454
- // Set up interval
455
- intervalId = setInterval(checkAndRefresh, checkIntervalMs);
456
- }
457
- function stop() {
458
- if (intervalId) {
459
- clearInterval(intervalId);
460
- intervalId = null;
461
- console.log('[AuthStateManager] Stopped auth state monitoring');
462
- }
463
- }
464
- function getState() {
465
- return { ...state };
466
- }
467
- async function checkNow() {
468
- await checkAndRefresh();
469
- }
470
- async function refreshNow() {
471
- return refreshToken();
472
- }
473
- function isAuthenticated() {
474
- return state.isAuthenticated;
475
- }
476
- async function logout() {
477
- console.log('[AuthStateManager] Performing system-wide logout');
478
- // Stop monitoring
479
- stop();
480
- // Clear local token
481
- if (setToken) {
482
- setToken(null);
483
- }
484
- // Clear localStorage
485
- if (typeof window !== 'undefined') {
486
- try {
487
- localStorage.removeItem('auth_token');
488
- // Clear any other auth-related items
489
- const keysToRemove = Object.keys(localStorage).filter(key => key.includes('auth') || key.includes('token') || key.includes('session'));
490
- keysToRemove.forEach(key => localStorage.removeItem(key));
491
- }
492
- catch {
493
- // Ignore localStorage errors
494
- }
495
- // Clear sessionStorage auth items
496
- try {
497
- const sessionKeysToRemove = Object.keys(sessionStorage).filter(key => key.includes('auth') || key.includes('token') || key.includes('busibox'));
498
- sessionKeysToRemove.forEach(key => sessionStorage.removeItem(key));
499
- }
500
- catch {
501
- // Ignore sessionStorage errors
502
- }
503
- }
504
- // Call the local app's logout endpoint to clear cookies
505
- try {
506
- await fetch('/api/logout', {
507
- method: 'POST',
508
- credentials: 'include',
509
- });
510
- }
511
- catch (error) {
512
- console.warn('[AuthStateManager] Local logout failed:', error);
513
- }
514
- // Call the portal's logout endpoint to invalidate the session system-wide
515
- try {
516
- await fetch(`${portalBase}/api/auth/logout`, {
517
- method: 'POST',
518
- credentials: 'include',
519
- });
520
- }
521
- catch (error) {
522
- console.warn('[AuthStateManager] Portal logout failed:', error);
523
- // This might fail due to CORS, which is okay - we'll redirect anyway
524
- }
525
- // Update state
526
- state = {
527
- isAuthenticated: false,
528
- user: null,
529
- tokenExpiresAt: null,
530
- lastChecked: Date.now(),
531
- };
532
- emit('authStateChanged', state);
533
- // Redirect to portal login page (use portalBase - portalUrl may include /home)
534
- if (typeof window !== 'undefined') {
535
- window.location.href = `${portalBase}/login`;
536
- }
537
- }
538
- return {
539
- start,
540
- stop,
541
- getState,
542
- checkNow,
543
- refreshNow,
544
- on,
545
- off,
546
- redirectToPortal,
547
- handle401Response,
548
- isAuthenticated,
549
- logout,
550
- };
551
- }
552
- // Singleton instance for global access
553
- let globalAuthManager = null;
554
- // Flag to indicate auth is initializing (token exchange in progress)
555
- // When true, FetchWrapper should NOT trigger redirects on 401
556
- let authInitializing = false;
557
- /**
558
- * Get or create the global auth state manager.
559
- * Use this when you need app-wide auth state monitoring.
560
- */
561
- export function getGlobalAuthManager(config) {
562
- if (!globalAuthManager && config) {
563
- globalAuthManager = createAuthStateManager(config);
564
- }
565
- return globalAuthManager;
566
- }
567
- /**
568
- * Set the global auth state manager.
569
- */
570
- export function setGlobalAuthManager(manager) {
571
- globalAuthManager = manager;
572
- }
573
- /**
574
- * Clear the global auth state manager.
575
- */
576
- export function clearGlobalAuthManager() {
577
- if (globalAuthManager) {
578
- globalAuthManager.stop();
579
- globalAuthManager = null;
580
- }
581
- }
582
- /**
583
- * Check if auth is currently initializing (token exchange in progress).
584
- * When true, 401 responses should NOT trigger redirects - just return them as-is.
585
- */
586
- export function isAuthInitializing() {
587
- return authInitializing;
588
- }
589
- /**
590
- * Set the auth initializing flag.
591
- * Call with `true` before token exchange, `false` after.
592
- */
593
- export function setAuthInitializing(initializing) {
594
- authInitializing = initializing;
595
- console.log('[AuthStateManager] Auth initializing:', initializing);
596
- }
597
- //# sourceMappingURL=auth-state-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-state-manager.js","sourceRoot":"","sources":["../../../src/lib/auth/auth-state-manager.ts"],"names":[],"mappings":"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"}