@data-club/ai-hub 0.0.1
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/dist/auth/passwordPolicy.d.ts +55 -0
- package/dist/auth/passwordPolicy.d.ts.map +1 -0
- package/dist/auth/passwordPolicy.js +63 -0
- package/dist/auth/passwordPolicy.js.map +1 -0
- package/dist/auth/texts.d.ts +815 -0
- package/dist/auth/texts.d.ts.map +1 -0
- package/dist/auth/texts.js +429 -0
- package/dist/auth/texts.js.map +1 -0
- package/dist/client/AIHubClient.d.ts +1058 -0
- package/dist/client/AIHubClient.d.ts.map +1 -0
- package/dist/client/AIHubClient.js +950 -0
- package/dist/client/AIHubClient.js.map +1 -0
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +9 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/sseParser.d.ts +41 -0
- package/dist/client/sseParser.d.ts.map +1 -0
- package/dist/client/sseParser.js +153 -0
- package/dist/client/sseParser.js.map +1 -0
- package/dist/client/tokenStorage.d.ts +56 -0
- package/dist/client/tokenStorage.d.ts.map +1 -0
- package/dist/client/tokenStorage.js +116 -0
- package/dist/client/tokenStorage.js.map +1 -0
- package/dist/components/AgentsPicker/index.d.ts +70 -0
- package/dist/components/AgentsPicker/index.d.ts.map +1 -0
- package/dist/components/AgentsPicker/index.js +63 -0
- package/dist/components/AgentsPicker/index.js.map +1 -0
- package/dist/components/AuthGate/index.d.ts +79 -0
- package/dist/components/AuthGate/index.d.ts.map +1 -0
- package/dist/components/AuthGate/index.js +61 -0
- package/dist/components/AuthGate/index.js.map +1 -0
- package/dist/components/CacheBadge/index.d.ts +88 -0
- package/dist/components/CacheBadge/index.d.ts.map +1 -0
- package/dist/components/CacheBadge/index.js +127 -0
- package/dist/components/CacheBadge/index.js.map +1 -0
- package/dist/components/ChangePassword/index.d.ts +109 -0
- package/dist/components/ChangePassword/index.d.ts.map +1 -0
- package/dist/components/ChangePassword/index.js +142 -0
- package/dist/components/ChangePassword/index.js.map +1 -0
- package/dist/components/ChatShell/ShellHeader.d.ts +44 -0
- package/dist/components/ChatShell/ShellHeader.d.ts.map +1 -0
- package/dist/components/ChatShell/ShellHeader.js +14 -0
- package/dist/components/ChatShell/ShellHeader.js.map +1 -0
- package/dist/components/ChatShell/UserMenu.d.ts +48 -0
- package/dist/components/ChatShell/UserMenu.d.ts.map +1 -0
- package/dist/components/ChatShell/UserMenu.js +86 -0
- package/dist/components/ChatShell/UserMenu.js.map +1 -0
- package/dist/components/ChatShell/index.d.ts +98 -0
- package/dist/components/ChatShell/index.d.ts.map +1 -0
- package/dist/components/ChatShell/index.js +124 -0
- package/dist/components/ChatShell/index.js.map +1 -0
- package/dist/components/DataClubAIHub/index.d.ts +132 -0
- package/dist/components/DataClubAIHub/index.d.ts.map +1 -0
- package/dist/components/DataClubAIHub/index.js +124 -0
- package/dist/components/DataClubAIHub/index.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/AgentEditorModal.d.ts +89 -0
- package/dist/components/DataClubAIHubAdmin/AgentEditorModal.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/AgentEditorModal.js +199 -0
- package/dist/components/DataClubAIHubAdmin/AgentEditorModal.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/AgentsPage.d.ts +33 -0
- package/dist/components/DataClubAIHubAdmin/AgentsPage.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/AgentsPage.js +137 -0
- package/dist/components/DataClubAIHubAdmin/AgentsPage.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/CreateUserModal.d.ts +50 -0
- package/dist/components/DataClubAIHubAdmin/CreateUserModal.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/CreateUserModal.js +93 -0
- package/dist/components/DataClubAIHubAdmin/CreateUserModal.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/PasswordRevealModal.d.ts +49 -0
- package/dist/components/DataClubAIHubAdmin/PasswordRevealModal.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/PasswordRevealModal.js +94 -0
- package/dist/components/DataClubAIHubAdmin/PasswordRevealModal.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/ResetPasswordModal.d.ts +37 -0
- package/dist/components/DataClubAIHubAdmin/ResetPasswordModal.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/ResetPasswordModal.js +44 -0
- package/dist/components/DataClubAIHubAdmin/ResetPasswordModal.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/RotatingMessageEditorModal.d.ts +56 -0
- package/dist/components/DataClubAIHubAdmin/RotatingMessageEditorModal.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/RotatingMessageEditorModal.js +158 -0
- package/dist/components/DataClubAIHubAdmin/RotatingMessageEditorModal.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/RotatingMessagesPage.d.ts +29 -0
- package/dist/components/DataClubAIHubAdmin/RotatingMessagesPage.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/RotatingMessagesPage.js +183 -0
- package/dist/components/DataClubAIHubAdmin/RotatingMessagesPage.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/SessionsOverviewPage.d.ts +38 -0
- package/dist/components/DataClubAIHubAdmin/SessionsOverviewPage.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/SessionsOverviewPage.js +294 -0
- package/dist/components/DataClubAIHubAdmin/SessionsOverviewPage.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/SettingsPage.d.ts +36 -0
- package/dist/components/DataClubAIHubAdmin/SettingsPage.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/SettingsPage.js +373 -0
- package/dist/components/DataClubAIHubAdmin/SettingsPage.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/UsersPage.d.ts +47 -0
- package/dist/components/DataClubAIHubAdmin/UsersPage.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/UsersPage.js +233 -0
- package/dist/components/DataClubAIHubAdmin/UsersPage.js.map +1 -0
- package/dist/components/DataClubAIHubAdmin/index.d.ts +87 -0
- package/dist/components/DataClubAIHubAdmin/index.d.ts.map +1 -0
- package/dist/components/DataClubAIHubAdmin/index.js +137 -0
- package/dist/components/DataClubAIHubAdmin/index.js.map +1 -0
- package/dist/components/DataClubAIHubLogin/index.d.ts +113 -0
- package/dist/components/DataClubAIHubLogin/index.d.ts.map +1 -0
- package/dist/components/DataClubAIHubLogin/index.js +123 -0
- package/dist/components/DataClubAIHubLogin/index.js.map +1 -0
- package/dist/components/EffortControl/index.d.ts +57 -0
- package/dist/components/EffortControl/index.d.ts.map +1 -0
- package/dist/components/EffortControl/index.js +84 -0
- package/dist/components/EffortControl/index.js.map +1 -0
- package/dist/components/Layout/index.d.ts +63 -0
- package/dist/components/Layout/index.d.ts.map +1 -0
- package/dist/components/Layout/index.js +45 -0
- package/dist/components/Layout/index.js.map +1 -0
- package/dist/components/MainColumn/index.d.ts +69 -0
- package/dist/components/MainColumn/index.d.ts.map +1 -0
- package/dist/components/MainColumn/index.js +47 -0
- package/dist/components/MainColumn/index.js.map +1 -0
- package/dist/components/MarkdownRenderer/index.d.ts +66 -0
- package/dist/components/MarkdownRenderer/index.d.ts.map +1 -0
- package/dist/components/MarkdownRenderer/index.js +153 -0
- package/dist/components/MarkdownRenderer/index.js.map +1 -0
- package/dist/components/MessageInput/index.d.ts +85 -0
- package/dist/components/MessageInput/index.d.ts.map +1 -0
- package/dist/components/MessageInput/index.js +139 -0
- package/dist/components/MessageInput/index.js.map +1 -0
- package/dist/components/MessageList/index.d.ts +156 -0
- package/dist/components/MessageList/index.d.ts.map +1 -0
- package/dist/components/MessageList/index.js +352 -0
- package/dist/components/MessageList/index.js.map +1 -0
- package/dist/components/ReasoningSelector/index.d.ts +77 -0
- package/dist/components/ReasoningSelector/index.d.ts.map +1 -0
- package/dist/components/ReasoningSelector/index.js +156 -0
- package/dist/components/ReasoningSelector/index.js.map +1 -0
- package/dist/components/ReasoningView/index.d.ts +94 -0
- package/dist/components/ReasoningView/index.d.ts.map +1 -0
- package/dist/components/ReasoningView/index.js +83 -0
- package/dist/components/ReasoningView/index.js.map +1 -0
- package/dist/components/ScrollToPresentButton/index.d.ts +54 -0
- package/dist/components/ScrollToPresentButton/index.d.ts.map +1 -0
- package/dist/components/ScrollToPresentButton/index.js +44 -0
- package/dist/components/ScrollToPresentButton/index.js.map +1 -0
- package/dist/components/SessionsPanel/SessionTitleModal.d.ts +79 -0
- package/dist/components/SessionsPanel/SessionTitleModal.d.ts.map +1 -0
- package/dist/components/SessionsPanel/SessionTitleModal.js +102 -0
- package/dist/components/SessionsPanel/SessionTitleModal.js.map +1 -0
- package/dist/components/SessionsPanel/index.d.ts +100 -0
- package/dist/components/SessionsPanel/index.d.ts.map +1 -0
- package/dist/components/SessionsPanel/index.js +176 -0
- package/dist/components/SessionsPanel/index.js.map +1 -0
- package/dist/components/SystemNotice/index.d.ts +66 -0
- package/dist/components/SystemNotice/index.d.ts.map +1 -0
- package/dist/components/SystemNotice/index.js +81 -0
- package/dist/components/SystemNotice/index.js.map +1 -0
- package/dist/components/ThemeSwitcher/index.d.ts +66 -0
- package/dist/components/ThemeSwitcher/index.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher/index.js +73 -0
- package/dist/components/ThemeSwitcher/index.js.map +1 -0
- package/dist/components/ToolCallView/formatContent.d.ts +36 -0
- package/dist/components/ToolCallView/formatContent.d.ts.map +1 -0
- package/dist/components/ToolCallView/formatContent.js +53 -0
- package/dist/components/ToolCallView/formatContent.js.map +1 -0
- package/dist/components/ToolCallView/index.d.ts +120 -0
- package/dist/components/ToolCallView/index.d.ts.map +1 -0
- package/dist/components/ToolCallView/index.js +104 -0
- package/dist/components/ToolCallView/index.js.map +1 -0
- package/dist/components/TpmBanner/index.d.ts +53 -0
- package/dist/components/TpmBanner/index.d.ts.map +1 -0
- package/dist/components/TpmBanner/index.js +116 -0
- package/dist/components/TpmBanner/index.js.map +1 -0
- package/dist/components/TurnStatusIndicator/index.d.ts +77 -0
- package/dist/components/TurnStatusIndicator/index.d.ts.map +1 -0
- package/dist/components/TurnStatusIndicator/index.js +122 -0
- package/dist/components/TurnStatusIndicator/index.js.map +1 -0
- package/dist/components/internal/PasswordInput.d.ts +62 -0
- package/dist/components/internal/PasswordInput.d.ts.map +1 -0
- package/dist/components/internal/PasswordInput.js +42 -0
- package/dist/components/internal/PasswordInput.js.map +1 -0
- package/dist/context/AIHubContext.d.ts +220 -0
- package/dist/context/AIHubContext.d.ts.map +1 -0
- package/dist/context/AIHubContext.js +19 -0
- package/dist/context/AIHubContext.js.map +1 -0
- package/dist/context/AIHubProvider.d.ts +75 -0
- package/dist/context/AIHubProvider.d.ts.map +1 -0
- package/dist/context/AIHubProvider.js +954 -0
- package/dist/context/AIHubProvider.js.map +1 -0
- package/dist/context/index.d.ts +9 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +9 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/theme.d.ts +43 -0
- package/dist/context/theme.d.ts.map +1 -0
- package/dist/context/theme.js +70 -0
- package/dist/context/theme.js.map +1 -0
- package/dist/context/useAIHub.d.ts +104 -0
- package/dist/context/useAIHub.d.ts.map +1 -0
- package/dist/context/useAIHub.js +63 -0
- package/dist/context/useAIHub.js.map +1 -0
- package/dist/context/useAIHubAuth.d.ts +44 -0
- package/dist/context/useAIHubAuth.d.ts.map +1 -0
- package/dist/context/useAIHubAuth.js +35 -0
- package/dist/context/useAIHubAuth.js.map +1 -0
- package/dist/index.d.ts +76 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/primitives/index.d.ts +99 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +97 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/state/affordances.d.ts +182 -0
- package/dist/state/affordances.d.ts.map +1 -0
- package/dist/state/affordances.js +189 -0
- package/dist/state/affordances.js.map +1 -0
- package/dist/state/stateReducer.d.ts +72 -0
- package/dist/state/stateReducer.d.ts.map +1 -0
- package/dist/state/stateReducer.js +122 -0
- package/dist/state/stateReducer.js.map +1 -0
- package/dist/stories/EffortControl.stories.d.ts +14 -0
- package/dist/stories/EffortControl.stories.d.ts.map +1 -0
- package/dist/stories/EffortControl.stories.js +43 -0
- package/dist/stories/EffortControl.stories.js.map +1 -0
- package/dist/stories/MarkdownRenderer.stories.d.ts +25 -0
- package/dist/stories/MarkdownRenderer.stories.d.ts.map +1 -0
- package/dist/stories/MarkdownRenderer.stories.js +178 -0
- package/dist/stories/MarkdownRenderer.stories.js.map +1 -0
- package/dist/stories/MessageBubble.stories.d.ts +21 -0
- package/dist/stories/MessageBubble.stories.d.ts.map +1 -0
- package/dist/stories/MessageBubble.stories.js +59 -0
- package/dist/stories/MessageBubble.stories.js.map +1 -0
- package/dist/stories/ReasoningView.stories.d.ts +18 -0
- package/dist/stories/ReasoningView.stories.d.ts.map +1 -0
- package/dist/stories/ReasoningView.stories.js +62 -0
- package/dist/stories/ReasoningView.stories.js.map +1 -0
- package/dist/stories/ScrollToPresentButton.stories.d.ts +18 -0
- package/dist/stories/ScrollToPresentButton.stories.d.ts.map +1 -0
- package/dist/stories/ScrollToPresentButton.stories.js +34 -0
- package/dist/stories/ScrollToPresentButton.stories.js.map +1 -0
- package/dist/stories/SystemNotice.stories.d.ts +17 -0
- package/dist/stories/SystemNotice.stories.d.ts.map +1 -0
- package/dist/stories/SystemNotice.stories.js +42 -0
- package/dist/stories/SystemNotice.stories.js.map +1 -0
- package/dist/stories/ThemeSwitcher.stories.d.ts +15 -0
- package/dist/stories/ThemeSwitcher.stories.d.ts.map +1 -0
- package/dist/stories/ThemeSwitcher.stories.js +35 -0
- package/dist/stories/ThemeSwitcher.stories.js.map +1 -0
- package/dist/stories/ToolCallView.stories.d.ts +20 -0
- package/dist/stories/ToolCallView.stories.d.ts.map +1 -0
- package/dist/stories/ToolCallView.stories.js +65 -0
- package/dist/stories/ToolCallView.stories.js.map +1 -0
- package/dist/stories/TpmBanner.stories.d.ts +24 -0
- package/dist/stories/TpmBanner.stories.d.ts.map +1 -0
- package/dist/stories/TpmBanner.stories.js +63 -0
- package/dist/stories/TpmBanner.stories.js.map +1 -0
- package/dist/stories/TurnStatusIndicator.stories.d.ts +25 -0
- package/dist/stories/TurnStatusIndicator.stories.d.ts.map +1 -0
- package/dist/stories/TurnStatusIndicator.stories.js +56 -0
- package/dist/stories/TurnStatusIndicator.stories.js.map +1 -0
- package/dist/stories/_mockProvider.d.ts +44 -0
- package/dist/stories/_mockProvider.d.ts.map +1 -0
- package/dist/stories/_mockProvider.js +84 -0
- package/dist/stories/_mockProvider.js.map +1 -0
- package/dist/types.d.ts +787 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/dist/webcomponent/defineWebComponent.d.ts +106 -0
- package/dist/webcomponent/defineWebComponent.d.ts.map +1 -0
- package/dist/webcomponent/defineWebComponent.js +126 -0
- package/dist/webcomponent/defineWebComponent.js.map +1 -0
- package/dist/webcomponent/index.d.ts +7 -0
- package/dist/webcomponent/index.d.ts.map +1 -0
- package/dist/webcomponent/index.js +7 -0
- package/dist/webcomponent/index.js.map +1 -0
- package/package.json +63 -0
- package/src/__lint-canary__/step1-lint-canary.ts.disabled +28 -0
- package/src/auth/passwordPolicy.ts +75 -0
- package/src/auth/texts.ts +1294 -0
- package/src/client/AIHubClient.ts +1718 -0
- package/src/client/index.ts +30 -0
- package/src/client/sseParser.ts +168 -0
- package/src/client/tokenStorage.ts +131 -0
- package/src/components/AgentsPicker/index.tsx +147 -0
- package/src/components/AuthGate/index.tsx +132 -0
- package/src/components/CacheBadge/index.tsx +245 -0
- package/src/components/ChangePassword/index.tsx +375 -0
- package/src/components/ChatShell/ShellHeader.tsx +80 -0
- package/src/components/ChatShell/UserMenu.tsx +196 -0
- package/src/components/ChatShell/index.tsx +307 -0
- package/src/components/DataClubAIHub/index.tsx +300 -0
- package/src/components/DataClubAIHubAdmin/AgentEditorModal.tsx +505 -0
- package/src/components/DataClubAIHubAdmin/AgentsPage.tsx +342 -0
- package/src/components/DataClubAIHubAdmin/CreateUserModal.tsx +214 -0
- package/src/components/DataClubAIHubAdmin/PasswordRevealModal.tsx +204 -0
- package/src/components/DataClubAIHubAdmin/ResetPasswordModal.tsx +122 -0
- package/src/components/DataClubAIHubAdmin/RotatingMessageEditorModal.tsx +408 -0
- package/src/components/DataClubAIHubAdmin/RotatingMessagesPage.tsx +373 -0
- package/src/components/DataClubAIHubAdmin/SessionsOverviewPage.tsx +639 -0
- package/src/components/DataClubAIHubAdmin/SettingsPage.tsx +979 -0
- package/src/components/DataClubAIHubAdmin/UsersPage.tsx +495 -0
- package/src/components/DataClubAIHubAdmin/index.tsx +277 -0
- package/src/components/DataClubAIHubLogin/index.tsx +282 -0
- package/src/components/EffortControl/index.tsx +138 -0
- package/src/components/Layout/index.tsx +92 -0
- package/src/components/MainColumn/index.tsx +131 -0
- package/src/components/MarkdownRenderer/index.tsx +256 -0
- package/src/components/MessageInput/index.tsx +283 -0
- package/src/components/MessageList/index.tsx +753 -0
- package/src/components/ReasoningSelector/index.tsx +268 -0
- package/src/components/ReasoningView/index.tsx +183 -0
- package/src/components/ScrollToPresentButton/index.tsx +85 -0
- package/src/components/SessionsPanel/SessionTitleModal.tsx +256 -0
- package/src/components/SessionsPanel/index.tsx +406 -0
- package/src/components/SystemNotice/index.tsx +151 -0
- package/src/components/ThemeSwitcher/index.tsx +136 -0
- package/src/components/ToolCallView/formatContent.ts +50 -0
- package/src/components/ToolCallView/index.tsx +274 -0
- package/src/components/TpmBanner/index.tsx +172 -0
- package/src/components/TurnStatusIndicator/index.tsx +203 -0
- package/src/components/internal/PasswordInput.tsx +145 -0
- package/src/context/AIHubContext.ts +249 -0
- package/src/context/AIHubProvider.tsx +1084 -0
- package/src/context/index.ts +9 -0
- package/src/context/theme.ts +76 -0
- package/src/context/useAIHub.ts +151 -0
- package/src/context/useAIHubAuth.ts +65 -0
- package/src/index.ts +275 -0
- package/src/primitives/index.ts +101 -0
- package/src/state/affordances.ts +321 -0
- package/src/state/stateReducer.ts +131 -0
- package/src/stories/EffortControl.stories.tsx +63 -0
- package/src/stories/MarkdownRenderer.stories.tsx +201 -0
- package/src/stories/MessageBubble.stories.tsx +101 -0
- package/src/stories/ReasoningView.stories.tsx +81 -0
- package/src/stories/ScrollToPresentButton.stories.tsx +52 -0
- package/src/stories/SystemNotice.stories.tsx +59 -0
- package/src/stories/ThemeSwitcher.stories.tsx +55 -0
- package/src/stories/ToolCallView.stories.tsx +95 -0
- package/src/stories/TpmBanner.stories.tsx +93 -0
- package/src/stories/TurnStatusIndicator.stories.tsx +86 -0
- package/src/stories/_mockProvider.tsx +116 -0
- package/src/styles/CLASSES.md +356 -0
- package/src/styles/default.css +2937 -0
- package/src/types.ts +867 -0
- package/src/webcomponent/defineWebComponent.tsx +193 -0
- package/src/webcomponent/index.ts +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIHubClient.js","sourceRoot":"","sources":["../../src/client/AIHubClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public re-exports for the `client/` directory.
|
|
3
|
+
*
|
|
4
|
+
* @see SPECIFICATIONS.md §7.8 — client SDK
|
|
5
|
+
*/
|
|
6
|
+
export { AIHubClient, AIHubRequestError } from "./AIHubClient.js";
|
|
7
|
+
export type { AIHubClientOptions, LoginResponse, ListSessionsOptions, CreateSessionOptions, PatchSessionOptions, PatchSessionReasoningOptions, AIHubEffort, StreamChatBody, StreamChatOptions, AgentSummary, CancelTurnResponse, AdminUserView, CreateUserBody, AdminUserPasswordReveal, CreateUserResponse, } from "./AIHubClient.js";
|
|
8
|
+
export { createMemoryTokenStorage, resolveTokenStorage, } from "./tokenStorage.js";
|
|
9
|
+
export type { TokenStorage, TokenStorageMode } from "./tokenStorage.js";
|
|
10
|
+
export { parseSseStream } from "./sseParser.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,4BAA4B,EAC5B,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public re-exports for the `client/` directory.
|
|
3
|
+
*
|
|
4
|
+
* @see SPECIFICATIONS.md §7.8 — client SDK
|
|
5
|
+
*/
|
|
6
|
+
export { AIHubClient, AIHubRequestError } from "./AIHubClient.js";
|
|
7
|
+
export { createMemoryTokenStorage, resolveTokenStorage, } from "./tokenStorage.js";
|
|
8
|
+
export { parseSseStream } from "./sseParser.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAkBlE,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE → `AIHubEvent` parser.
|
|
3
|
+
*
|
|
4
|
+
* The ai-hub server emits each event as:
|
|
5
|
+
*
|
|
6
|
+
* ```
|
|
7
|
+
* event: <event-name>
|
|
8
|
+
* data: <json-payload>
|
|
9
|
+
*
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* where `<json-payload>` is `{ seq, data?, state }` (see
|
|
13
|
+
* `packages/ai-hub-server/src/handlers/sse.ts`). The library does not use
|
|
14
|
+
* the browser's `EventSource` API (§9.5 — it can't carry custom auth
|
|
15
|
+
* headers); instead the SDK consumes the response body via
|
|
16
|
+
* `fetch` + `ReadableStream` and runs it through this parser.
|
|
17
|
+
*
|
|
18
|
+
* Heartbeat lines (`:hb\n\n`) are SSE comments and are skipped entirely —
|
|
19
|
+
* they reach the parser as a block whose only line starts with `:` and
|
|
20
|
+
* produce no event.
|
|
21
|
+
*
|
|
22
|
+
* @see SPECIFICATIONS.md §9.5 — why SSE (not EventSource)
|
|
23
|
+
*/
|
|
24
|
+
import type { AIHubEvent } from "../types.js";
|
|
25
|
+
/**
|
|
26
|
+
* Parses a streaming `ReadableStream<Uint8Array>` of SSE bytes into an
|
|
27
|
+
* `AsyncIterable<AIHubEvent>`.
|
|
28
|
+
*
|
|
29
|
+
* The async generator stops when the underlying stream ends or when the
|
|
30
|
+
* stream's reader is released (e.g. on `AbortSignal` abort upstream).
|
|
31
|
+
* Malformed event blocks (no `event:` line, or `data:` JSON that doesn't
|
|
32
|
+
* parse) are skipped silently — the contract is "yield every valid event,"
|
|
33
|
+
* not "throw on the first garbage chunk." Real network corruption surfaces
|
|
34
|
+
* as a `stream_end` from the server (or a transport-level error from
|
|
35
|
+
* fetch, which the caller catches separately).
|
|
36
|
+
*
|
|
37
|
+
* @param body - the response body to parse.
|
|
38
|
+
* @yields each `AIHubEvent` decoded from the byte stream, in emission order.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseSseStream(body: ReadableStream<Uint8Array>): AsyncIterable<AIHubEvent>;
|
|
41
|
+
//# sourceMappingURL=sseParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sseParser.d.ts","sourceRoot":"","sources":["../../src/client/sseParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;GAcG;AACH,wBAAuB,cAAc,CACnC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAC/B,aAAa,CAAC,UAAU,CAAC,CA0C3B"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE → `AIHubEvent` parser.
|
|
3
|
+
*
|
|
4
|
+
* The ai-hub server emits each event as:
|
|
5
|
+
*
|
|
6
|
+
* ```
|
|
7
|
+
* event: <event-name>
|
|
8
|
+
* data: <json-payload>
|
|
9
|
+
*
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* where `<json-payload>` is `{ seq, data?, state }` (see
|
|
13
|
+
* `packages/ai-hub-server/src/handlers/sse.ts`). The library does not use
|
|
14
|
+
* the browser's `EventSource` API (§9.5 — it can't carry custom auth
|
|
15
|
+
* headers); instead the SDK consumes the response body via
|
|
16
|
+
* `fetch` + `ReadableStream` and runs it through this parser.
|
|
17
|
+
*
|
|
18
|
+
* Heartbeat lines (`:hb\n\n`) are SSE comments and are skipped entirely —
|
|
19
|
+
* they reach the parser as a block whose only line starts with `:` and
|
|
20
|
+
* produce no event.
|
|
21
|
+
*
|
|
22
|
+
* @see SPECIFICATIONS.md §9.5 — why SSE (not EventSource)
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Parses a streaming `ReadableStream<Uint8Array>` of SSE bytes into an
|
|
26
|
+
* `AsyncIterable<AIHubEvent>`.
|
|
27
|
+
*
|
|
28
|
+
* The async generator stops when the underlying stream ends or when the
|
|
29
|
+
* stream's reader is released (e.g. on `AbortSignal` abort upstream).
|
|
30
|
+
* Malformed event blocks (no `event:` line, or `data:` JSON that doesn't
|
|
31
|
+
* parse) are skipped silently — the contract is "yield every valid event,"
|
|
32
|
+
* not "throw on the first garbage chunk." Real network corruption surfaces
|
|
33
|
+
* as a `stream_end` from the server (or a transport-level error from
|
|
34
|
+
* fetch, which the caller catches separately).
|
|
35
|
+
*
|
|
36
|
+
* @param body - the response body to parse.
|
|
37
|
+
* @yields each `AIHubEvent` decoded from the byte stream, in emission order.
|
|
38
|
+
*/
|
|
39
|
+
export async function* parseSseStream(body) {
|
|
40
|
+
const reader = body.getReader();
|
|
41
|
+
const decoder = new TextDecoder("utf-8");
|
|
42
|
+
let buffer = "";
|
|
43
|
+
try {
|
|
44
|
+
while (true) {
|
|
45
|
+
const { done, value } = await reader.read();
|
|
46
|
+
if (done) {
|
|
47
|
+
// Flush any trailing block (server didn't send the terminating
|
|
48
|
+
// blank line). Defensive — the server always closes cleanly.
|
|
49
|
+
const tail = buffer.trim();
|
|
50
|
+
if (tail.length > 0) {
|
|
51
|
+
const event = parseEventBlock(tail);
|
|
52
|
+
if (event)
|
|
53
|
+
yield event;
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
buffer += decoder.decode(value, { stream: true });
|
|
58
|
+
// Event blocks are separated by a blank line. Handle both `\n\n`
|
|
59
|
+
// (what our server emits) and `\r\n\r\n` (what some intermediaries
|
|
60
|
+
// and the spec officially require) for resilience.
|
|
61
|
+
// eslint-disable-next-line no-constant-condition
|
|
62
|
+
while (true) {
|
|
63
|
+
const sep = findBlockSeparator(buffer);
|
|
64
|
+
if (sep === null)
|
|
65
|
+
break;
|
|
66
|
+
const block = buffer.slice(0, sep.end);
|
|
67
|
+
buffer = buffer.slice(sep.next);
|
|
68
|
+
const event = parseEventBlock(block);
|
|
69
|
+
if (event)
|
|
70
|
+
yield event;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
// Release the reader so the stream can be cancelled cleanly upstream.
|
|
76
|
+
try {
|
|
77
|
+
reader.releaseLock();
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
/* already released */
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Standalone helper so `parseSseStream` stays readable. */
|
|
85
|
+
function findBlockSeparator(s) {
|
|
86
|
+
const lf = s.indexOf("\n\n");
|
|
87
|
+
const crlf = s.indexOf("\r\n\r\n");
|
|
88
|
+
if (lf === -1 && crlf === -1)
|
|
89
|
+
return null;
|
|
90
|
+
if (crlf !== -1 && (lf === -1 || crlf < lf)) {
|
|
91
|
+
return { end: crlf, next: crlf + 4 };
|
|
92
|
+
}
|
|
93
|
+
return { end: lf, next: lf + 2 };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Parses one event block (lines up to but not including the blank-line
|
|
97
|
+
* separator) into an `AIHubEvent`, or returns null if the block is a
|
|
98
|
+
* comment / malformed.
|
|
99
|
+
*
|
|
100
|
+
* @param block - the raw text of one block.
|
|
101
|
+
* @returns the parsed event, or null on skip.
|
|
102
|
+
*/
|
|
103
|
+
function parseEventBlock(block) {
|
|
104
|
+
let eventName = null;
|
|
105
|
+
// Per the SSE spec, multi-line `data:` payloads are concatenated with
|
|
106
|
+
// newlines. Our server only ever emits single-line JSON, but accept
|
|
107
|
+
// multi-line payloads defensively.
|
|
108
|
+
const dataLines = [];
|
|
109
|
+
for (const line of block.split(/\r?\n/)) {
|
|
110
|
+
if (line.length === 0)
|
|
111
|
+
continue;
|
|
112
|
+
if (line.startsWith(":"))
|
|
113
|
+
continue; // SSE comment — skip
|
|
114
|
+
const colonIdx = line.indexOf(":");
|
|
115
|
+
if (colonIdx === -1)
|
|
116
|
+
continue;
|
|
117
|
+
const field = line.slice(0, colonIdx);
|
|
118
|
+
// Per the spec, a single space after the colon is stripped if present.
|
|
119
|
+
const valueStart = line.charAt(colonIdx + 1) === " " ? colonIdx + 2 : colonIdx + 1;
|
|
120
|
+
const value = line.slice(valueStart);
|
|
121
|
+
if (field === "event")
|
|
122
|
+
eventName = value;
|
|
123
|
+
else if (field === "data")
|
|
124
|
+
dataLines.push(value);
|
|
125
|
+
// id / retry fields are unused — ignore them.
|
|
126
|
+
}
|
|
127
|
+
if (!eventName || dataLines.length === 0)
|
|
128
|
+
return null;
|
|
129
|
+
let payload;
|
|
130
|
+
try {
|
|
131
|
+
payload = JSON.parse(dataLines.join("\n"));
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
if (typeof payload !== "object" ||
|
|
137
|
+
payload === null ||
|
|
138
|
+
typeof payload.seq !== "number" ||
|
|
139
|
+
typeof payload.state !== "object" ||
|
|
140
|
+
payload.state === null) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
// The shape on the wire mirrors `AIHubEvent` exactly minus the discriminator
|
|
144
|
+
// (which lives on the `event:` line, not in the JSON payload). Re-attach it
|
|
145
|
+
// here. `heartbeat` events carry no `data` field per the union.
|
|
146
|
+
return {
|
|
147
|
+
event: eventName,
|
|
148
|
+
seq: payload.seq,
|
|
149
|
+
state: payload.state,
|
|
150
|
+
...(payload.data !== undefined ? { data: payload.data } : {}),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=sseParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sseParser.js","sourceRoot":"","sources":["../../src/client/sseParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token storage adapters for `AIHubClient`.
|
|
3
|
+
*
|
|
4
|
+
* Three modes per §7.2 (the `tokenStorage` prop on `<AIHubProvider>`):
|
|
5
|
+
*
|
|
6
|
+
* - `"localStorage"` (default) — persists across tabs and browser restarts.
|
|
7
|
+
* - `"sessionStorage"` — persists across reloads within a tab; cleared on
|
|
8
|
+
* tab close. Useful for embeds where the embedding page is itself
|
|
9
|
+
* ephemeral.
|
|
10
|
+
* - `"memory"` — never persisted. Useful for tests, server-side rendering,
|
|
11
|
+
* and embedding contexts where the host page provides its own persistence
|
|
12
|
+
* strategy.
|
|
13
|
+
*
|
|
14
|
+
* The adapter is a tiny three-method interface so future modes (e.g. an
|
|
15
|
+
* IndexedDB-backed one for very-large session counts, or a host-supplied
|
|
16
|
+
* one for embedding contexts that want to share storage with the parent
|
|
17
|
+
* page) are an additive change.
|
|
18
|
+
*
|
|
19
|
+
* @see SPECIFICATIONS.md §7.2 — `<AIHubProvider>` props
|
|
20
|
+
* @see SPECIFICATIONS.md §6.7 — token lifetimes
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* The storage adapter `AIHubClient` reads/writes the session JWT through.
|
|
24
|
+
* The contract is intentionally minimal — three pure methods, no async.
|
|
25
|
+
*/
|
|
26
|
+
export interface TokenStorage {
|
|
27
|
+
/** Returns the stored token, or `null` if none is set. */
|
|
28
|
+
get(): string | null;
|
|
29
|
+
/** Replaces any existing token. */
|
|
30
|
+
set(token: string): void;
|
|
31
|
+
/** Removes the stored token (idempotent — no-op when none was set). */
|
|
32
|
+
clear(): void;
|
|
33
|
+
}
|
|
34
|
+
/** Identifier strings for the three built-in adapters. */
|
|
35
|
+
export type TokenStorageMode = "localStorage" | "sessionStorage" | "memory";
|
|
36
|
+
/**
|
|
37
|
+
* Builds an in-memory token storage. Used by the `"memory"` mode and as a
|
|
38
|
+
* fallback when the browser's storage APIs throw (Safari private mode, etc.).
|
|
39
|
+
*
|
|
40
|
+
* @returns a fresh in-memory storage adapter.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createMemoryTokenStorage(): TokenStorage;
|
|
43
|
+
/**
|
|
44
|
+
* Resolves a `TokenStorageMode` (or a custom `TokenStorage` instance) into
|
|
45
|
+
* a concrete adapter.
|
|
46
|
+
*
|
|
47
|
+
* In non-browser environments (SSR, Node tests without jsdom), the
|
|
48
|
+
* `"localStorage"` / `"sessionStorage"` modes silently fall back to
|
|
49
|
+
* `"memory"` — this is what keeps SSR-rendering an `<AIHubProvider>` from
|
|
50
|
+
* crashing on missing globals.
|
|
51
|
+
*
|
|
52
|
+
* @param mode - either one of the three mode strings or a custom adapter.
|
|
53
|
+
* @returns the concrete adapter.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveTokenStorage(mode: TokenStorageMode | TokenStorage): TokenStorage;
|
|
56
|
+
//# sourceMappingURL=tokenStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenStorage.d.ts","sourceRoot":"","sources":["../../src/client/tokenStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC;IACrB,mCAAmC;IACnC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uEAAuE;IACvE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAI5E;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,YAAY,CAWvD;AA2CD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,gBAAgB,GAAG,YAAY,GACpC,YAAY,CAgBd"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token storage adapters for `AIHubClient`.
|
|
3
|
+
*
|
|
4
|
+
* Three modes per §7.2 (the `tokenStorage` prop on `<AIHubProvider>`):
|
|
5
|
+
*
|
|
6
|
+
* - `"localStorage"` (default) — persists across tabs and browser restarts.
|
|
7
|
+
* - `"sessionStorage"` — persists across reloads within a tab; cleared on
|
|
8
|
+
* tab close. Useful for embeds where the embedding page is itself
|
|
9
|
+
* ephemeral.
|
|
10
|
+
* - `"memory"` — never persisted. Useful for tests, server-side rendering,
|
|
11
|
+
* and embedding contexts where the host page provides its own persistence
|
|
12
|
+
* strategy.
|
|
13
|
+
*
|
|
14
|
+
* The adapter is a tiny three-method interface so future modes (e.g. an
|
|
15
|
+
* IndexedDB-backed one for very-large session counts, or a host-supplied
|
|
16
|
+
* one for embedding contexts that want to share storage with the parent
|
|
17
|
+
* page) are an additive change.
|
|
18
|
+
*
|
|
19
|
+
* @see SPECIFICATIONS.md §7.2 — `<AIHubProvider>` props
|
|
20
|
+
* @see SPECIFICATIONS.md §6.7 — token lifetimes
|
|
21
|
+
*/
|
|
22
|
+
const STORAGE_KEY = "data-club-ai-hub:token";
|
|
23
|
+
/**
|
|
24
|
+
* Builds an in-memory token storage. Used by the `"memory"` mode and as a
|
|
25
|
+
* fallback when the browser's storage APIs throw (Safari private mode, etc.).
|
|
26
|
+
*
|
|
27
|
+
* @returns a fresh in-memory storage adapter.
|
|
28
|
+
*/
|
|
29
|
+
export function createMemoryTokenStorage() {
|
|
30
|
+
let value = null;
|
|
31
|
+
return {
|
|
32
|
+
get: () => value,
|
|
33
|
+
set: (token) => {
|
|
34
|
+
value = token;
|
|
35
|
+
},
|
|
36
|
+
clear: () => {
|
|
37
|
+
value = null;
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Builds a `Storage`-backed adapter (localStorage or sessionStorage).
|
|
43
|
+
*
|
|
44
|
+
* Falls back to an in-memory adapter if the underlying storage throws on
|
|
45
|
+
* the first call (Safari private mode, embedded iframe with storage
|
|
46
|
+
* blocked, etc.) — we'd rather degrade silently than break the auth flow.
|
|
47
|
+
*
|
|
48
|
+
* @param storage - the underlying `Storage` instance.
|
|
49
|
+
* @returns an adapter that reads/writes through the given storage.
|
|
50
|
+
*/
|
|
51
|
+
function createWebStorageTokenStorage(storage) {
|
|
52
|
+
try {
|
|
53
|
+
storage.getItem(STORAGE_KEY);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return createMemoryTokenStorage();
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
get: () => {
|
|
60
|
+
try {
|
|
61
|
+
return storage.getItem(STORAGE_KEY);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
set: (token) => {
|
|
68
|
+
try {
|
|
69
|
+
storage.setItem(STORAGE_KEY, token);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
/* ignore */
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
clear: () => {
|
|
76
|
+
try {
|
|
77
|
+
storage.removeItem(STORAGE_KEY);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
/* ignore */
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Resolves a `TokenStorageMode` (or a custom `TokenStorage` instance) into
|
|
87
|
+
* a concrete adapter.
|
|
88
|
+
*
|
|
89
|
+
* In non-browser environments (SSR, Node tests without jsdom), the
|
|
90
|
+
* `"localStorage"` / `"sessionStorage"` modes silently fall back to
|
|
91
|
+
* `"memory"` — this is what keeps SSR-rendering an `<AIHubProvider>` from
|
|
92
|
+
* crashing on missing globals.
|
|
93
|
+
*
|
|
94
|
+
* @param mode - either one of the three mode strings or a custom adapter.
|
|
95
|
+
* @returns the concrete adapter.
|
|
96
|
+
*/
|
|
97
|
+
export function resolveTokenStorage(mode) {
|
|
98
|
+
if (typeof mode === "object")
|
|
99
|
+
return mode;
|
|
100
|
+
if (mode === "memory")
|
|
101
|
+
return createMemoryTokenStorage();
|
|
102
|
+
const globalRef = typeof globalThis !== "undefined" ? globalThis : undefined;
|
|
103
|
+
const win = globalRef && "window" in globalRef
|
|
104
|
+
? globalRef.window
|
|
105
|
+
: undefined;
|
|
106
|
+
if (!win)
|
|
107
|
+
return createMemoryTokenStorage();
|
|
108
|
+
if (mode === "localStorage" && win.localStorage) {
|
|
109
|
+
return createWebStorageTokenStorage(win.localStorage);
|
|
110
|
+
}
|
|
111
|
+
if (mode === "sessionStorage" && win.sessionStorage) {
|
|
112
|
+
return createWebStorageTokenStorage(win.sessionStorage);
|
|
113
|
+
}
|
|
114
|
+
return createMemoryTokenStorage();
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=tokenStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenStorage.js","sourceRoot":"","sources":["../../src/client/tokenStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAkBH,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;QAChB,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;YACb,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,4BAA4B,CAAC,OAAgB;IACpD,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAwB,EAAE,CAAC;IACpC,CAAC;IACD,OAAO;QACL,GAAG,EAAE,GAAG,EAAE;YACR,IAAI,CAAC;gBACH,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,IAAI,CAAC;gBACH,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAqC;IAErC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,wBAAwB,EAAE,CAAC;IACzD,MAAM,SAAS,GAAG,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,GAAG,GACP,SAAS,IAAI,QAAQ,IAAI,SAAS;QAChC,CAAC,CAAE,SAAiC,CAAC,MAAM;QAC3C,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,CAAC,GAAG;QAAE,OAAO,wBAAwB,EAAE,CAAC;IAC5C,IAAI,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QAChD,OAAO,4BAA4B,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,IAAI,KAAK,gBAAgB,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACpD,OAAO,4BAA4B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,wBAAwB,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<AgentsPicker />` — the post-login landing view.
|
|
3
|
+
*
|
|
4
|
+
* Renders one card per non-archived ai-hub agent the caller has access to,
|
|
5
|
+
* with the caller-scoped `session_count` baked into the subtitle so a
|
|
6
|
+
* single round-trip populates the entire picker (§6.3.3). Clicking a card
|
|
7
|
+
* calls `useAIHub().setActiveAgent(id)` — the parent shell then renders
|
|
8
|
+
* the chat layout for that agent.
|
|
9
|
+
*
|
|
10
|
+
* Auto-skip behaviour (consumed by `ChatShell` above): the picker is
|
|
11
|
+
* skipped entirely when `showAgentsPicker={false}` *or* when the
|
|
12
|
+
* deployment ships exactly one agent — those skips happen at the
|
|
13
|
+
* `ChatShell` level so this component stays a pure listing view.
|
|
14
|
+
*
|
|
15
|
+
* Exported under the `AIHub.AgentsPicker` Tier-3 primitive.
|
|
16
|
+
*
|
|
17
|
+
* @see SPECIFICATIONS.md §7.1 — exports
|
|
18
|
+
* @see SPECIFICATIONS.md §6.3.3 — `/agents`
|
|
19
|
+
* @see ui-sketches/03-chat.md — visual contract for the picker
|
|
20
|
+
*/
|
|
21
|
+
import { type ReactNode } from "react";
|
|
22
|
+
import { type AIHubTexts, type DeepPartial } from "../../auth/texts.js";
|
|
23
|
+
/**
|
|
24
|
+
* BEM class names emitted by `<AgentsPicker />`. Per-customer wrappers
|
|
25
|
+
* pass a partial of this map via the `classNames` prop to override
|
|
26
|
+
* individual names for utility-CSS frameworks.
|
|
27
|
+
*/
|
|
28
|
+
export interface AgentsPickerClassNames {
|
|
29
|
+
/** Outer wrapper (centers the picker, scrolls when too tall). */
|
|
30
|
+
root: string;
|
|
31
|
+
/** Page heading at the top. */
|
|
32
|
+
heading: string;
|
|
33
|
+
/** Loading line shown while `/agents` is in flight. */
|
|
34
|
+
loading: string;
|
|
35
|
+
/** Error banner shown when `/agents` fails. */
|
|
36
|
+
error: string;
|
|
37
|
+
/** Empty-state container. */
|
|
38
|
+
empty: string;
|
|
39
|
+
/** Empty-state heading. */
|
|
40
|
+
emptyHeading: string;
|
|
41
|
+
/** Empty-state body. */
|
|
42
|
+
emptyBody: string;
|
|
43
|
+
/** Card grid wrapper. */
|
|
44
|
+
grid: string;
|
|
45
|
+
/** A single agent card (the clickable tile). */
|
|
46
|
+
card: string;
|
|
47
|
+
/** Card display name. */
|
|
48
|
+
cardName: string;
|
|
49
|
+
/** Card subtitle line (session count). */
|
|
50
|
+
cardSubtitle: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Props for `<AgentsPicker />`.
|
|
54
|
+
*/
|
|
55
|
+
export interface AgentsPickerProps {
|
|
56
|
+
/** Extra class merged onto the root wrapper. */
|
|
57
|
+
className?: string;
|
|
58
|
+
/** Per-element class-name overrides. */
|
|
59
|
+
classNames?: Partial<AgentsPickerClassNames>;
|
|
60
|
+
/** Wrapper-supplied i18n. */
|
|
61
|
+
texts?: DeepPartial<AIHubTexts>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Renders the agents picker.
|
|
65
|
+
*
|
|
66
|
+
* @param props - see `AgentsPickerProps`.
|
|
67
|
+
* @returns the rendered picker.
|
|
68
|
+
*/
|
|
69
|
+
export declare function AgentsPicker(props: AgentsPickerProps): ReactNode;
|
|
70
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AgentsPicker/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAqB,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAG3F;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;CACtB;AAqBD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC7C,6BAA6B;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,CAqDhE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* `<AgentsPicker />` — the post-login landing view.
|
|
4
|
+
*
|
|
5
|
+
* Renders one card per non-archived ai-hub agent the caller has access to,
|
|
6
|
+
* with the caller-scoped `session_count` baked into the subtitle so a
|
|
7
|
+
* single round-trip populates the entire picker (§6.3.3). Clicking a card
|
|
8
|
+
* calls `useAIHub().setActiveAgent(id)` — the parent shell then renders
|
|
9
|
+
* the chat layout for that agent.
|
|
10
|
+
*
|
|
11
|
+
* Auto-skip behaviour (consumed by `ChatShell` above): the picker is
|
|
12
|
+
* skipped entirely when `showAgentsPicker={false}` *or* when the
|
|
13
|
+
* deployment ships exactly one agent — those skips happen at the
|
|
14
|
+
* `ChatShell` level so this component stays a pure listing view.
|
|
15
|
+
*
|
|
16
|
+
* Exported under the `AIHub.AgentsPicker` Tier-3 primitive.
|
|
17
|
+
*
|
|
18
|
+
* @see SPECIFICATIONS.md §7.1 — exports
|
|
19
|
+
* @see SPECIFICATIONS.md §6.3.3 — `/agents`
|
|
20
|
+
* @see ui-sketches/03-chat.md — visual contract for the picker
|
|
21
|
+
*/
|
|
22
|
+
import {} from "react";
|
|
23
|
+
import { resolveAIHubTexts } from "../../auth/texts.js";
|
|
24
|
+
import { useAIHub } from "../../context/useAIHub.js";
|
|
25
|
+
/**
|
|
26
|
+
* Default BEM class names. Stable, kebab-case, scoped under
|
|
27
|
+
* `data-club-ai-hub__agents-picker`. Wrappers override individual entries
|
|
28
|
+
* via the `classNames` prop.
|
|
29
|
+
*/
|
|
30
|
+
const DEFAULT_CLASS_NAMES = Object.freeze({
|
|
31
|
+
root: "data-club-ai-hub__agents-picker",
|
|
32
|
+
heading: "data-club-ai-hub__agents-picker__heading",
|
|
33
|
+
loading: "data-club-ai-hub__agents-picker__loading",
|
|
34
|
+
error: "data-club-ai-hub__agents-picker__error",
|
|
35
|
+
empty: "data-club-ai-hub__agents-picker__empty",
|
|
36
|
+
emptyHeading: "data-club-ai-hub__agents-picker__empty-heading",
|
|
37
|
+
emptyBody: "data-club-ai-hub__agents-picker__empty-body",
|
|
38
|
+
grid: "data-club-ai-hub__agents-picker__grid",
|
|
39
|
+
card: "data-club-ai-hub__agent-card",
|
|
40
|
+
cardName: "data-club-ai-hub__agent-card__name",
|
|
41
|
+
cardSubtitle: "data-club-ai-hub__agent-card__subtitle",
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* Renders the agents picker.
|
|
45
|
+
*
|
|
46
|
+
* @param props - see `AgentsPickerProps`.
|
|
47
|
+
* @returns the rendered picker.
|
|
48
|
+
*/
|
|
49
|
+
export function AgentsPicker(props) {
|
|
50
|
+
const { agents, agentsLoading, setActiveAgent } = useAIHub();
|
|
51
|
+
const texts = resolveAIHubTexts(props.texts);
|
|
52
|
+
const cls = { ...DEFAULT_CLASS_NAMES, ...(props.classNames ?? {}) };
|
|
53
|
+
const rootClass = props.className
|
|
54
|
+
? `${cls.root} ${props.className}`
|
|
55
|
+
: cls.root;
|
|
56
|
+
return (_jsxs("div", { className: rootClass, "data-testid": "agents-picker", children: [_jsx("h1", { className: cls.heading, children: texts.chat.agentsPickerHeading }), agentsLoading && agents.length === 0 ? (_jsx("p", { className: cls.loading, "data-testid": "agents-picker-loading", children: texts.chat.agentsPickerLoading })) : null, !agentsLoading && agents.length === 0 ? (_jsxs("div", { className: cls.empty, "data-testid": "agents-picker-empty", children: [_jsx("h2", { className: cls.emptyHeading, children: texts.chat.agentsPickerEmptyHeading }), _jsx("p", { className: cls.emptyBody, children: texts.chat.agentsPickerEmptyBody })] })) : null, agents.length > 0 ? (_jsx("div", { className: cls.grid, role: "list", children: agents.map((agent) => {
|
|
57
|
+
const subtitle = agent.session_count === 0
|
|
58
|
+
? texts.chat.agentCardNoSessionsSubtitle
|
|
59
|
+
: texts.chat.agentCardSessionsSubtitle.replace("{count}", String(agent.session_count));
|
|
60
|
+
return (_jsxs("button", { type: "button", role: "listitem", className: cls.card, "data-testid": "agent-card", "data-agent-id": agent.id, onClick: () => setActiveAgent(agent.id), children: [_jsx("span", { className: cls.cardName, children: agent.display_name }), _jsx("span", { className: cls.cardSubtitle, children: subtitle })] }, agent.id));
|
|
61
|
+
}) })) : null] }));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/AgentsPicker/index.tsx"],"names":[],"mappings":"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"}
|