@yadsh/dsh-qa-surface 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -20
- package/compatibility.json +11 -3
- package/lib/account-remotes.js +100 -0
- package/lib/account-remotes.js.map +1 -0
- package/lib/accounts/credentials.js +27 -0
- package/lib/accounts/credentials.js.map +1 -0
- package/lib/accounts/errors.js +9 -0
- package/lib/accounts/errors.js.map +1 -0
- package/lib/accounts/file.js +101 -0
- package/lib/accounts/file.js.map +1 -0
- package/lib/accounts/index.js +2 -0
- package/lib/accounts/index.js.map +1 -0
- package/lib/accounts/store.js +461 -0
- package/lib/accounts/store.js.map +1 -0
- package/lib/accounts/token.js +61 -0
- package/lib/accounts/token.js.map +1 -0
- package/lib/attachment-rules.js +111 -0
- package/lib/attachment-rules.js.map +1 -0
- package/lib/attestation.js.map +1 -1
- package/lib/cli.js +256 -0
- package/lib/cli.js.map +1 -0
- package/lib/client/QaAccountsController.js +359 -0
- package/lib/client/QaAccountsController.js.map +1 -0
- package/lib/client/QaSessionController.js +238 -180
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +281 -105
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/QaTranscriptAdapter.js +95 -244
- package/lib/client/QaTranscriptAdapter.js.map +1 -1
- package/lib/client/attachments.js +150 -0
- package/lib/client/attachments.js.map +1 -0
- package/lib/client/attestation.js +7 -1
- package/lib/client/attestation.js.map +1 -1
- package/lib/client/base64.js +16 -0
- package/lib/client/base64.js.map +1 -0
- package/lib/client/chat-files.js +48 -0
- package/lib/client/chat-files.js.map +1 -0
- package/lib/client/components/Markdown.js +54 -13
- package/lib/client/components/Markdown.js.map +1 -1
- package/lib/client/components/QaAuthGate.js +40 -0
- package/lib/client/components/QaAuthGate.js.map +1 -0
- package/lib/client/components/QaChangelog.js +131 -0
- package/lib/client/components/QaChangelog.js.map +1 -0
- package/lib/client/components/QaComposer.js +56 -74
- package/lib/client/components/QaComposer.js.map +1 -1
- package/lib/client/components/QaFileAttachment.js +19 -0
- package/lib/client/components/QaFileAttachment.js.map +1 -0
- package/lib/client/components/QaFilesPanel.js +45 -0
- package/lib/client/components/QaFilesPanel.js.map +1 -0
- package/lib/client/components/QaHeader.js +34 -0
- package/lib/client/components/QaHeader.js.map +1 -0
- package/lib/client/components/QaMessage.js +61 -18
- package/lib/client/components/QaMessage.js.map +1 -1
- package/lib/client/components/QaModal.js +31 -0
- package/lib/client/components/QaModal.js.map +1 -0
- package/lib/client/components/QaProfile.js +64 -0
- package/lib/client/components/QaProfile.js.map +1 -0
- package/lib/client/components/QaRightRail.js +15 -0
- package/lib/client/components/QaRightRail.js.map +1 -0
- package/lib/client/components/QaSidebar.js +68 -20
- package/lib/client/components/QaSidebar.js.map +1 -1
- package/lib/client/components/QaSourcesPanel.js +127 -0
- package/lib/client/components/QaSourcesPanel.js.map +1 -0
- package/lib/client/components/QaTurnRail.js +296 -0
- package/lib/client/components/QaTurnRail.js.map +1 -0
- package/lib/client/components/QaWelcomeNotice.js +125 -0
- package/lib/client/components/QaWelcomeNotice.js.map +1 -0
- package/lib/client/components/QaWidthHandle.js +147 -0
- package/lib/client/components/QaWidthHandle.js.map +1 -0
- package/lib/client/components/QaWorkGroup.js +19 -20
- package/lib/client/components/QaWorkGroup.js.map +1 -1
- package/lib/client/components/source-refs.js +78 -0
- package/lib/client/components/source-refs.js.map +1 -0
- package/lib/client/components/surface-utils.js +28 -0
- package/lib/client/components/surface-utils.js.map +1 -0
- package/lib/client/components/thinking-phrases.js +24 -0
- package/lib/client/components/thinking-phrases.js.map +1 -0
- package/lib/client/create-session.js +26 -0
- package/lib/client/create-session.js.map +1 -0
- package/lib/client/failure-copy.js +63 -0
- package/lib/client/failure-copy.js.map +1 -0
- package/lib/client/index.js +135 -16
- package/lib/client/index.js.map +1 -1
- package/lib/client/project-session-state.js +78 -0
- package/lib/client/project-session-state.js.map +1 -0
- package/lib/client/prompt-content.js +54 -0
- package/lib/client/prompt-content.js.map +1 -0
- package/lib/client/session-admission.js +38 -0
- package/lib/client/session-admission.js.map +1 -0
- package/lib/client/session-assets.js +52 -0
- package/lib/client/session-assets.js.map +1 -0
- package/lib/client/session-sources.js +61 -0
- package/lib/client/session-sources.js.map +1 -0
- package/lib/client/settings/card.js +143 -0
- package/lib/client/settings/card.js.map +1 -0
- package/lib/client/settings/fields.js +145 -0
- package/lib/client/settings/fields.js.map +1 -0
- package/lib/client/settings/format.js +255 -0
- package/lib/client/settings/format.js.map +1 -0
- package/lib/client/settings/sections/access.js +25 -0
- package/lib/client/settings/sections/access.js.map +1 -0
- package/lib/client/settings/sections/accounts.js +47 -0
- package/lib/client/settings/sections/accounts.js.map +1 -0
- package/lib/client/settings/sections/attachments.js +46 -0
- package/lib/client/settings/sections/attachments.js.map +1 -0
- package/lib/client/settings/sections/branding.js +28 -0
- package/lib/client/settings/sections/branding.js.map +1 -0
- package/lib/client/settings/sections/common.js +20 -0
- package/lib/client/settings/sections/common.js.map +1 -0
- package/lib/client/settings/sections/embedding.js +19 -0
- package/lib/client/settings/sections/embedding.js.map +1 -0
- package/lib/client/settings/sections/interface.js +60 -0
- package/lib/client/settings/sections/interface.js.map +1 -0
- package/lib/client/settings/sections/lockdown.js +82 -0
- package/lib/client/settings/sections/lockdown.js.map +1 -0
- package/lib/client/settings/sections/session.js +53 -0
- package/lib/client/settings/sections/session.js.map +1 -0
- package/lib/client/settings/sections/sources.js +72 -0
- package/lib/client/settings/sections/sources.js.map +1 -0
- package/lib/client/settings/sections/status.js +37 -0
- package/lib/client/settings/sections/status.js.map +1 -0
- package/lib/client/settings/sections.js +23 -0
- package/lib/client/settings/sections.js.map +1 -0
- package/lib/client/settings/styles.js +57 -0
- package/lib/client/settings/styles.js.map +1 -0
- package/lib/client/settlement.js +24 -0
- package/lib/client/settlement.js.map +1 -0
- package/lib/client/stream-publisher.js +47 -0
- package/lib/client/stream-publisher.js.map +1 -0
- package/lib/client/styles.js +225 -17
- package/lib/client/styles.js.map +1 -1
- package/lib/client/tool-presentation.js +102 -0
- package/lib/client/tool-presentation.js.map +1 -0
- package/lib/client/turn-sources.js +98 -0
- package/lib/client/turn-sources.js.map +1 -0
- package/lib/client/types.js +2 -0
- package/lib/client/types.js.map +1 -1
- package/lib/client/use-right-rail.js +96 -0
- package/lib/client/use-right-rail.js.map +1 -0
- package/lib/client/use-session-ui-state.js +75 -0
- package/lib/client/use-session-ui-state.js.map +1 -0
- package/lib/client/use-transcript-view.js +44 -0
- package/lib/client/use-transcript-view.js.map +1 -0
- package/lib/client.js +9052 -1345
- package/lib/client.js.map +1 -1
- package/lib/config-resolvers/accounts.js +60 -0
- package/lib/config-resolvers/accounts.js.map +1 -0
- package/lib/config-resolvers/attachments.js +28 -0
- package/lib/config-resolvers/attachments.js.map +1 -0
- package/lib/config-resolvers/basics.js +59 -0
- package/lib/config-resolvers/basics.js.map +1 -0
- package/lib/config-resolvers/defaults.js +132 -0
- package/lib/config-resolvers/defaults.js.map +1 -0
- package/lib/config-resolvers/lockdown.js +79 -0
- package/lib/config-resolvers/lockdown.js.map +1 -0
- package/lib/config-resolvers/session.js +42 -0
- package/lib/config-resolvers/session.js.map +1 -0
- package/lib/config-resolvers/shared.js +42 -0
- package/lib/config-resolvers/shared.js.map +1 -0
- package/lib/config-resolvers/sources.js +81 -0
- package/lib/config-resolvers/sources.js.map +1 -0
- package/lib/config-resolvers/ui.js +20 -0
- package/lib/config-resolvers/ui.js.map +1 -0
- package/lib/config.js +279 -102
- package/lib/config.js.map +1 -1
- package/lib/entry-redirect.js +45 -0
- package/lib/entry-redirect.js.map +1 -0
- package/lib/host-route.js +25 -1
- package/lib/host-route.js.map +1 -1
- package/lib/index.js +258 -23
- package/lib/index.js.map +1 -1
- package/lib/launch-token.js +42 -0
- package/lib/launch-token.js.map +1 -0
- package/lib/profile.js +214 -0
- package/lib/profile.js.map +1 -0
- package/lib/prompt-notes.js +231 -0
- package/lib/prompt-notes.js.map +1 -0
- package/lib/provenance/collector.js +40 -0
- package/lib/provenance/collector.js.map +1 -0
- package/lib/provenance/connectors.js +147 -0
- package/lib/provenance/connectors.js.map +1 -0
- package/lib/provenance/dedupe.js +89 -0
- package/lib/provenance/dedupe.js.map +1 -0
- package/lib/provenance/extractors.js +340 -0
- package/lib/provenance/extractors.js.map +1 -0
- package/lib/provenance/file-preview.js +39 -0
- package/lib/provenance/file-preview.js.map +1 -0
- package/lib/provenance/host-store.js +387 -0
- package/lib/provenance/host-store.js.map +1 -0
- package/lib/provenance/index.js +9 -0
- package/lib/provenance/index.js.map +1 -0
- package/lib/provenance/normalize.js +128 -0
- package/lib/provenance/normalize.js.map +1 -0
- package/lib/provenance/reported.js +53 -0
- package/lib/provenance/reported.js.map +1 -0
- package/lib/provenance/types.js +2 -0
- package/lib/provenance/types.js.map +1 -0
- package/lib/resolve-config.js +35 -249
- package/lib/resolve-config.js.map +1 -1
- package/lib/secure-session.js +122 -14
- package/lib/secure-session.js.map +1 -1
- package/lib/shared/session-key.js +18 -0
- package/lib/shared/session-key.js.map +1 -0
- package/lib/shared/settings.js +10 -0
- package/lib/shared/settings.js.map +1 -0
- package/lib/thinking-phrases.js +68 -0
- package/lib/thinking-phrases.js.map +1 -0
- package/lib/typert.host.js +749 -11
- package/lib/typert.remote-client.d.ts +23 -3
- package/lib/typert.remote-client.js +593 -6
- package/lib/types/account-remotes.d.ts +42 -0
- package/lib/types/accounts/credentials.d.ts +14 -0
- package/lib/types/accounts/errors.d.ts +11 -0
- package/lib/types/accounts/file.d.ts +82 -0
- package/lib/types/accounts/index.d.ts +2 -0
- package/lib/types/accounts/store.d.ts +144 -0
- package/lib/types/accounts/token.d.ts +31 -0
- package/lib/types/attachment-rules.d.ts +44 -0
- package/lib/types/attestation.d.ts +1 -1
- package/lib/types/cli.d.ts +9 -0
- package/lib/types/client/QaAccountsController.d.ts +102 -0
- package/lib/types/client/QaConfigController.d.ts +1 -1
- package/lib/types/client/QaSessionController.d.ts +61 -22
- package/lib/types/client/QaSurface.d.ts +14 -3
- package/lib/types/client/QaTranscriptAdapter.d.ts +5 -10
- package/lib/types/client/attachments.d.ts +54 -0
- package/lib/types/client/base64.d.ts +10 -0
- package/lib/types/client/chat-files.d.ts +30 -0
- package/lib/types/client/components/Markdown.d.ts +11 -1
- package/lib/types/client/components/QaAgentsDrawer.d.ts +1 -1
- package/lib/types/client/components/QaAuthGate.d.ts +15 -0
- package/lib/types/client/components/QaChangelog.d.ts +21 -0
- package/lib/types/client/components/QaComposer.d.ts +8 -4
- package/lib/types/client/components/QaFileAttachment.d.ts +14 -0
- package/lib/types/client/components/QaFilesPanel.d.ts +15 -0
- package/lib/types/client/components/QaHeader.d.ts +41 -0
- package/lib/types/client/components/QaMessage.d.ts +12 -3
- package/lib/types/client/components/QaModal.d.ts +26 -0
- package/lib/types/client/components/QaProfile.d.ts +25 -0
- package/lib/types/client/components/QaRightRail.d.ts +23 -0
- package/lib/types/client/components/QaSidebar.d.ts +44 -2
- package/lib/types/client/components/QaSourcesPanel.d.ts +23 -0
- package/lib/types/client/components/QaTurnRail.d.ts +65 -0
- package/lib/types/client/components/QaWelcomeNotice.d.ts +27 -0
- package/lib/types/client/components/QaWidthHandle.d.ts +43 -0
- package/lib/types/client/components/QaWorkGroup.d.ts +5 -3
- package/lib/types/client/components/source-refs.d.ts +16 -0
- package/lib/types/client/components/surface-utils.d.ts +11 -0
- package/lib/types/client/components/thinking-phrases.d.ts +9 -0
- package/lib/types/client/create-session.d.ts +13 -0
- package/lib/types/client/failure-copy.d.ts +19 -0
- package/lib/types/client/index.d.ts +1 -0
- package/lib/types/client/project-session-state.d.ts +30 -0
- package/lib/types/client/prompt-content.d.ts +30 -0
- package/lib/types/client/session-admission.d.ts +23 -0
- package/lib/types/client/session-assets.d.ts +20 -0
- package/lib/types/client/session-sources.d.ts +28 -0
- package/lib/types/client/settings/card.d.ts +23 -0
- package/lib/types/client/settings/fields.d.ts +139 -0
- package/lib/types/client/settings/format.d.ts +108 -0
- package/lib/types/client/settings/sections/access.d.ts +9 -0
- package/lib/types/client/settings/sections/accounts.d.ts +9 -0
- package/lib/types/client/settings/sections/attachments.d.ts +15 -0
- package/lib/types/client/settings/sections/branding.d.ts +8 -0
- package/lib/types/client/settings/sections/common.d.ts +28 -0
- package/lib/types/client/settings/sections/embedding.d.ts +8 -0
- package/lib/types/client/settings/sections/interface.d.ts +9 -0
- package/lib/types/client/settings/sections/lockdown.d.ts +9 -0
- package/lib/types/client/settings/sections/session.d.ts +9 -0
- package/lib/types/client/settings/sections/sources.d.ts +9 -0
- package/lib/types/client/settings/sections/status.d.ts +22 -0
- package/lib/types/client/settings/sections.d.ts +25 -0
- package/lib/types/client/settings/styles.d.ts +8 -0
- package/lib/types/client/settlement.d.ts +6 -0
- package/lib/types/client/stream-publisher.d.ts +28 -0
- package/lib/types/client/tool-presentation.d.ts +6 -0
- package/lib/types/client/turn-sources.d.ts +14 -0
- package/lib/types/client/types.d.ts +101 -9
- package/lib/types/client/use-right-rail.d.ts +56 -0
- package/lib/types/client/use-session-ui-state.d.ts +41 -0
- package/lib/types/client/use-transcript-view.d.ts +20 -0
- package/lib/types/config-resolvers/accounts.d.ts +15 -0
- package/lib/types/config-resolvers/attachments.d.ts +6 -0
- package/lib/types/config-resolvers/basics.d.ts +8 -0
- package/lib/types/config-resolvers/defaults.d.ts +4 -0
- package/lib/types/config-resolvers/lockdown.d.ts +10 -0
- package/lib/types/config-resolvers/session.d.ts +6 -0
- package/lib/types/config-resolvers/shared.d.ts +16 -0
- package/lib/types/config-resolvers/sources.d.ts +6 -0
- package/lib/types/config-resolvers/ui.d.ts +6 -0
- package/lib/types/entry-redirect.d.ts +20 -0
- package/lib/types/host-route.d.ts +14 -1
- package/lib/types/index.d.ts +54 -3
- package/lib/types/launch-token.d.ts +21 -0
- package/lib/types/profile.d.ts +76 -0
- package/lib/types/prompt-notes.d.ts +110 -0
- package/lib/types/provenance/collector.d.ts +26 -0
- package/lib/types/provenance/connectors.d.ts +11 -0
- package/lib/types/provenance/dedupe.d.ts +6 -0
- package/lib/types/provenance/extractors.d.ts +14 -0
- package/lib/types/provenance/file-preview.d.ts +10 -0
- package/lib/types/provenance/host-store.d.ts +54 -0
- package/lib/types/provenance/index.d.ts +10 -0
- package/lib/types/provenance/normalize.d.ts +13 -0
- package/lib/types/provenance/reported.d.ts +5 -0
- package/lib/types/provenance/types.d.ts +78 -0
- package/lib/types/resolve-config.d.ts +8 -3
- package/lib/types/secure-session.d.ts +36 -2
- package/lib/types/shared/session-key.d.ts +23 -0
- package/lib/types/shared/settings.d.ts +10 -0
- package/lib/types/thinking-phrases.d.ts +17 -0
- package/lib/types/types.d.ts +290 -16
- package/lib/types/user-workspace.d.ts +38 -0
- package/lib/user-workspace.js +231 -0
- package/lib/user-workspace.js.map +1 -0
- package/package.json +71 -47
- package/CHANGELOG.md +0 -93
- package/SPEC-dsh-qa-surface.md +0 -2425
- package/docs/ARCHITECTURE.md +0 -66
- package/docs/COMPATIBILITY.md +0 -14
- package/docs/CONFIGURATION.md +0 -112
- package/docs/EMBEDDING.md +0 -13
- package/lib/client/components/QaSourcesDrawer.js +0 -46
- package/lib/client/components/QaSourcesDrawer.js.map +0 -1
- package/lib/types/client/components/QaSourcesDrawer.d.ts +0 -8
package/lib/client/types.js
CHANGED
package/lib/client/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AA+JA,iFAAiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAmB,MAAM,CAAC,MAAM,CAAC;IACjE,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3B,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,eAAe,EAAE,IAAI;IACrB,uBAAuB,EAAE,SAAS;IAClC,eAAe,EAAE,IAAI;CACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Right-rail controller over the chat-local drawer state: every transition
|
|
4
|
+
* between the whole-chat list, a pinned message subset and a single source's
|
|
5
|
+
* detail lives here, so the surface only wires controls to intents. The
|
|
6
|
+
* callbacks stay referentially stable — they close over `useState` setters,
|
|
7
|
+
* whose identities never change.
|
|
8
|
+
*/
|
|
9
|
+
export function useRightRail(ui) {
|
|
10
|
+
const { railOpen, railTab, setRailOpen, setRailTab, setDrawerSources, setDrawerCompleteness, setDrawerDetail, setAgentsOpen, } = ui;
|
|
11
|
+
const openSources = useCallback((sources, complete, incompleteOrigins) => {
|
|
12
|
+
setDrawerSources(sources);
|
|
13
|
+
setDrawerCompleteness({
|
|
14
|
+
complete,
|
|
15
|
+
...(incompleteOrigins === undefined ? {} : { incompleteOrigins }),
|
|
16
|
+
});
|
|
17
|
+
setDrawerDetail(null);
|
|
18
|
+
setRailOpen(true);
|
|
19
|
+
setRailTab("sources");
|
|
20
|
+
setAgentsOpen(false);
|
|
21
|
+
}, [
|
|
22
|
+
setAgentsOpen,
|
|
23
|
+
setDrawerCompleteness,
|
|
24
|
+
setDrawerDetail,
|
|
25
|
+
setDrawerSources,
|
|
26
|
+
setRailOpen,
|
|
27
|
+
setRailTab,
|
|
28
|
+
]);
|
|
29
|
+
const openSourceDetail = useCallback((source) => {
|
|
30
|
+
setDrawerSources(null);
|
|
31
|
+
setDrawerCompleteness(null);
|
|
32
|
+
setDrawerDetail(source);
|
|
33
|
+
setRailOpen(true);
|
|
34
|
+
setRailTab("sources");
|
|
35
|
+
setAgentsOpen(false);
|
|
36
|
+
}, [
|
|
37
|
+
setAgentsOpen,
|
|
38
|
+
setDrawerCompleteness,
|
|
39
|
+
setDrawerDetail,
|
|
40
|
+
setDrawerSources,
|
|
41
|
+
setRailOpen,
|
|
42
|
+
setRailTab,
|
|
43
|
+
]);
|
|
44
|
+
const showAllSources = useCallback(() => {
|
|
45
|
+
setDrawerSources(null);
|
|
46
|
+
setDrawerCompleteness(null);
|
|
47
|
+
setDrawerDetail(null);
|
|
48
|
+
}, [setDrawerCompleteness, setDrawerDetail, setDrawerSources]);
|
|
49
|
+
const close = useCallback(() => {
|
|
50
|
+
setRailOpen(false);
|
|
51
|
+
setDrawerSources(null);
|
|
52
|
+
setDrawerCompleteness(null);
|
|
53
|
+
setDrawerDetail(null);
|
|
54
|
+
}, [setDrawerCompleteness, setDrawerDetail, setDrawerSources, setRailOpen]);
|
|
55
|
+
const openTab = useCallback((tab) => {
|
|
56
|
+
if (railOpen && railTab === tab) {
|
|
57
|
+
close();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
setAgentsOpen(false);
|
|
61
|
+
setRailOpen(true);
|
|
62
|
+
setRailTab(tab);
|
|
63
|
+
if (tab === "sources")
|
|
64
|
+
showAllSources();
|
|
65
|
+
}, [
|
|
66
|
+
close,
|
|
67
|
+
railOpen,
|
|
68
|
+
railTab,
|
|
69
|
+
setAgentsOpen,
|
|
70
|
+
setRailOpen,
|
|
71
|
+
setRailTab,
|
|
72
|
+
showAllSources,
|
|
73
|
+
]);
|
|
74
|
+
const selectTab = useCallback((tab) => {
|
|
75
|
+
setRailTab(tab);
|
|
76
|
+
}, [setRailTab]);
|
|
77
|
+
const toggleAgents = useCallback(() => {
|
|
78
|
+
setAgentsOpen((open) => !open);
|
|
79
|
+
setRailOpen(false);
|
|
80
|
+
}, [setAgentsOpen, setRailOpen]);
|
|
81
|
+
return {
|
|
82
|
+
railOpen,
|
|
83
|
+
railTab,
|
|
84
|
+
drawerSources: ui.drawerSources,
|
|
85
|
+
drawerCompleteness: ui.drawerCompleteness,
|
|
86
|
+
drawerDetail: ui.drawerDetail,
|
|
87
|
+
openSources,
|
|
88
|
+
openSourceDetail,
|
|
89
|
+
showAllSources,
|
|
90
|
+
close,
|
|
91
|
+
openTab,
|
|
92
|
+
selectTab,
|
|
93
|
+
toggleAgents,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=use-right-rail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-right-rail.js","sourceRoot":"","sources":["../../src/client/use-right-rail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState, } from "react";
|
|
2
|
+
import { revokeObjectUrlIfBlob } from "./session-assets.js";
|
|
3
|
+
/**
|
|
4
|
+
* Per-chat UI state: composer attachments, variant offsets, the rail mark and
|
|
5
|
+
* the drawers. Everything here describes the chat it was made in, so a
|
|
6
|
+
* session change clears it instead of leaking a draft, an attachment or a
|
|
7
|
+
* drawer from one conversation into the next.
|
|
8
|
+
*/
|
|
9
|
+
export function useSessionUiState(sessionId) {
|
|
10
|
+
/** Per group: how many answers back from the newest is shown (0 = newest). */
|
|
11
|
+
const [variantOffsets, setVariantOffsets] = useState({});
|
|
12
|
+
const [activeTurn, setActiveTurn] = useState(null);
|
|
13
|
+
const [agentsOpen, setAgentsOpen] = useState(false);
|
|
14
|
+
const [railOpen, setRailOpen] = useState(false);
|
|
15
|
+
const [railTab, setRailTab] = useState("sources");
|
|
16
|
+
const [drawerSources, setDrawerSources] = useState(null);
|
|
17
|
+
const [drawerCompleteness, setDrawerCompleteness] = useState(null);
|
|
18
|
+
const [drawerDetail, setDrawerDetail] = useState(null);
|
|
19
|
+
const [pendingAttachments, setPendingAttachmentsState] = useState([]);
|
|
20
|
+
/** Mirror of the live drafts: blob URLs to revoke when they leave state. */
|
|
21
|
+
const pendingAttachmentsRef = useRef([]);
|
|
22
|
+
/**
|
|
23
|
+
* The single entry point that changes the draft set: every image that
|
|
24
|
+
* leaves state has its preview blob URL revoked here, whether it was
|
|
25
|
+
* removed by the composer, cleared by a send or dropped on a chat switch.
|
|
26
|
+
*/
|
|
27
|
+
const setPendingAttachments = useCallback((next) => {
|
|
28
|
+
for (const draft of pendingAttachmentsRef.current) {
|
|
29
|
+
if (draft.kind === "image" && !next.includes(draft)) {
|
|
30
|
+
revokeObjectUrlIfBlob(draft.previewUrl);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
pendingAttachmentsRef.current = next;
|
|
34
|
+
setPendingAttachmentsState(next);
|
|
35
|
+
}, []);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
setVariantOffsets({});
|
|
38
|
+
setActiveTurn(null);
|
|
39
|
+
setAgentsOpen(false);
|
|
40
|
+
setRailOpen(false);
|
|
41
|
+
setRailTab("sources");
|
|
42
|
+
setDrawerSources(null);
|
|
43
|
+
setDrawerCompleteness(null);
|
|
44
|
+
setDrawerDetail(null);
|
|
45
|
+
setPendingAttachments([]);
|
|
46
|
+
}, [sessionId, setPendingAttachments]);
|
|
47
|
+
// Whatever is still attached dies with the surface, and its URLs with it.
|
|
48
|
+
useEffect(() => () => {
|
|
49
|
+
for (const draft of pendingAttachmentsRef.current) {
|
|
50
|
+
if (draft.kind === "image")
|
|
51
|
+
revokeObjectUrlIfBlob(draft.previewUrl);
|
|
52
|
+
}
|
|
53
|
+
}, []);
|
|
54
|
+
return {
|
|
55
|
+
variantOffsets,
|
|
56
|
+
setVariantOffsets,
|
|
57
|
+
activeTurn,
|
|
58
|
+
setActiveTurn,
|
|
59
|
+
agentsOpen,
|
|
60
|
+
setAgentsOpen,
|
|
61
|
+
railOpen,
|
|
62
|
+
setRailOpen,
|
|
63
|
+
railTab,
|
|
64
|
+
setRailTab,
|
|
65
|
+
drawerSources,
|
|
66
|
+
setDrawerSources,
|
|
67
|
+
drawerCompleteness,
|
|
68
|
+
setDrawerCompleteness,
|
|
69
|
+
drawerDetail,
|
|
70
|
+
setDrawerDetail,
|
|
71
|
+
pendingAttachments,
|
|
72
|
+
setPendingAttachments,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=use-session-ui-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-ui-state.js","sourceRoot":"","sources":["../../src/client/use-session-ui-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { buildTurnRailItems, } from "./components/QaTurnRail.js";
|
|
3
|
+
import { collectVariantGroups, } from "./components/VariantSwitcher.js";
|
|
4
|
+
/**
|
|
5
|
+
* Memoized transcript view model. The controller republishes state with a
|
|
6
|
+
* fresh messages array on every stream frame, but re-renders that keep the
|
|
7
|
+
* transcript unchanged (drawers, the active turn mark, variant offsets) must
|
|
8
|
+
* not re-run the projections — and per-row group lookups go through a map
|
|
9
|
+
* instead of a linear find inside the render loop.
|
|
10
|
+
*/
|
|
11
|
+
export function useTranscriptView(messages, variantOffsets) {
|
|
12
|
+
return useMemo(() => {
|
|
13
|
+
const groups = collectVariantGroups(messages);
|
|
14
|
+
const groupByPromptId = new Map();
|
|
15
|
+
const turnToGroup = new Map();
|
|
16
|
+
const selectedTurn = new Map();
|
|
17
|
+
for (const group of groups) {
|
|
18
|
+
groupByPromptId.set(group.groupId, group);
|
|
19
|
+
const offset = variantOffsets[group.groupId] ?? 0;
|
|
20
|
+
const turn = group.turns[Math.max(0, group.turns.length - 1 - offset)] ??
|
|
21
|
+
group.turns.at(-1);
|
|
22
|
+
if (turn !== undefined) {
|
|
23
|
+
selectedTurn.set(group.groupId, turn);
|
|
24
|
+
for (const groupTurn of group.turns)
|
|
25
|
+
turnToGroup.set(groupTurn, group.groupId);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const visibleMessages = messages.filter((message) => {
|
|
29
|
+
if ((message.role === "assistant" || message.role === "work") &&
|
|
30
|
+
message.turn !== undefined) {
|
|
31
|
+
const groupId = turnToGroup.get(message.turn);
|
|
32
|
+
return (groupId === undefined || selectedTurn.get(groupId) === message.turn);
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
visibleMessages,
|
|
38
|
+
groupByPromptId,
|
|
39
|
+
selectedTurn,
|
|
40
|
+
railItems: buildTurnRailItems(visibleMessages),
|
|
41
|
+
};
|
|
42
|
+
}, [messages, variantOffsets]);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=use-transcript-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-transcript-view.js","sourceRoot":"","sources":["../../src/client/use-transcript-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EACL,kBAAkB,GAEnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,GAErB,MAAM,iCAAiC,CAAC;AAWzC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA8B,EAC9B,cAAsC;IAEtC,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,IAAI,GACR,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;gBACzD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACtC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK;oBACjC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAClD,IACE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;gBACzD,OAAO,CAAC,IAAI,KAAK,SAAS,EAC1B,CAAC;gBACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9C,OAAO,CACL,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CACpE,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,OAAO;YACL,eAAe;YACf,eAAe;YACf,YAAY;YACZ,SAAS,EAAE,kBAAkB,CAAC,eAAe,CAAC;SAC/C,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AACjC,CAAC"}
|