@arbidocs/blocks 0.5.80 → 0.5.81
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/ConnectedCallDock-DIGOWCS7.js +2 -2
- package/dist/ConnectedCallDock-P42M6OVR.cjs +2 -2
- package/dist/ConnectedCallRoom-AYNCZVWL.js +2 -2
- package/dist/ConnectedCallRoom-VFGV4X7I.cjs +2 -2
- package/dist/{ConnectedDocumentViewer-H7W6XQNJ.js → ConnectedDocumentViewer-ATLFYABV.js} +14 -14
- package/dist/{ConnectedDocumentViewer-H7W6XQNJ.js.map → ConnectedDocumentViewer-ATLFYABV.js.map} +1 -1
- package/dist/{ConnectedDocumentViewer-EXR4XDRW.cjs → ConnectedDocumentViewer-EHPY2LSI.cjs} +15 -15
- package/dist/{ConnectedDocumentViewer-EXR4XDRW.cjs.map → ConnectedDocumentViewer-EHPY2LSI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-2W3NNA5C.js → ConnectedNativeDocxComparison-G6VWHP4A.js} +10 -10
- package/dist/{ConnectedNativeDocxComparison-2W3NNA5C.js.map → ConnectedNativeDocxComparison-G6VWHP4A.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-UJWBGYOF.cjs → ConnectedNativeDocxComparison-OYZ2HZ7G.cjs} +11 -11
- package/dist/{ConnectedNativeDocxComparison-UJWBGYOF.cjs.map → ConnectedNativeDocxComparison-OYZ2HZ7G.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-QHVE5IR5.js → ConnectedNativeDocxEditor-2LGWJ4HT.js} +9 -9
- package/dist/{ConnectedNativeDocxEditor-QHVE5IR5.js.map → ConnectedNativeDocxEditor-2LGWJ4HT.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-672BRHOT.cjs → ConnectedNativeDocxEditor-7EZYSH57.cjs} +11 -11
- package/dist/{ConnectedNativeDocxEditor-672BRHOT.cjs.map → ConnectedNativeDocxEditor-7EZYSH57.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-3MNE42NH.cjs → ConnectedStreamedWordArtifact-ROPG2O4H.cjs} +11 -11
- package/dist/ConnectedStreamedWordArtifact-ROPG2O4H.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-VI3S2YIG.js → ConnectedStreamedWordArtifact-TRRA55JN.js} +10 -10
- package/dist/ConnectedStreamedWordArtifact-TRRA55JN.js.map +1 -0
- package/dist/{DocumentReviewCard-XK77D3O4.cjs → DocumentReviewCard-3EM6GHJC.cjs} +12 -12
- package/dist/{DocumentReviewCard-XK77D3O4.cjs.map → DocumentReviewCard-3EM6GHJC.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-F26AXBYZ.js → DocumentReviewCard-JC3JCRR7.js} +7 -7
- package/dist/{DocumentReviewCard-F26AXBYZ.js.map → DocumentReviewCard-JC3JCRR7.js.map} +1 -1
- package/dist/{WorkspaceTableView-III5TFER.cjs → WorkspaceTableView-JVHIJP6L.cjs} +3 -3
- package/dist/{WorkspaceTableView-III5TFER.cjs.map → WorkspaceTableView-JVHIJP6L.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-JUQWTLXI.js → WorkspaceTableView-OICIO5HZ.js} +3 -3
- package/dist/{WorkspaceTableView-JUQWTLXI.js.map → WorkspaceTableView-OICIO5HZ.js.map} +1 -1
- package/dist/agents/index.cjs +377 -377
- package/dist/agents/index.js +11 -11
- package/dist/calls/index.cjs +2 -2
- package/dist/calls/index.js +2 -2
- package/dist/chat/index.cjs +2 -2
- package/dist/chat/index.js +2 -2
- package/dist/{chunk-7KQMDGML.js → chunk-2HRFMBJH.js} +3 -3
- package/dist/{chunk-7KQMDGML.js.map → chunk-2HRFMBJH.js.map} +1 -1
- package/dist/{chunk-3FKRE4BL.cjs → chunk-32ZOKBNT.cjs} +3 -3
- package/dist/{chunk-3FKRE4BL.cjs.map → chunk-32ZOKBNT.cjs.map} +1 -1
- package/dist/{chunk-XAZUII52.js → chunk-3SWH4NNT.js} +3 -3
- package/dist/{chunk-XAZUII52.js.map → chunk-3SWH4NNT.js.map} +1 -1
- package/dist/{chunk-AEHV2DHR.js → chunk-3TKRCYFN.js} +3 -3
- package/dist/{chunk-AEHV2DHR.js.map → chunk-3TKRCYFN.js.map} +1 -1
- package/dist/{chunk-UHP6AP6C.cjs → chunk-3YMV2F5F.cjs} +7 -7
- package/dist/{chunk-UHP6AP6C.cjs.map → chunk-3YMV2F5F.cjs.map} +1 -1
- package/dist/{chunk-HJHLQPT2.js → chunk-4BWFKTQD.js} +4 -4
- package/dist/{chunk-HJHLQPT2.js.map → chunk-4BWFKTQD.js.map} +1 -1
- package/dist/{chunk-MEDTT4EK.js → chunk-4LAR3X3L.js} +9 -9
- package/dist/{chunk-MEDTT4EK.js.map → chunk-4LAR3X3L.js.map} +1 -1
- package/dist/{chunk-LCMHUW3K.js → chunk-7S7ZAJT7.js} +4 -4
- package/dist/{chunk-LCMHUW3K.js.map → chunk-7S7ZAJT7.js.map} +1 -1
- package/dist/{chunk-WWME52XL.js → chunk-AU6R6ZKJ.js} +3 -3
- package/dist/{chunk-WWME52XL.js.map → chunk-AU6R6ZKJ.js.map} +1 -1
- package/dist/{chunk-JDGJV7VW.js → chunk-B4PNELIT.js} +3 -3
- package/dist/{chunk-JDGJV7VW.js.map → chunk-B4PNELIT.js.map} +1 -1
- package/dist/{chunk-VGMK4F2E.cjs → chunk-C2UKBYTD.cjs} +44 -44
- package/dist/{chunk-VGMK4F2E.cjs.map → chunk-C2UKBYTD.cjs.map} +1 -1
- package/dist/{chunk-OAEJME5Q.cjs → chunk-DBGTR7OK.cjs} +33 -33
- package/dist/{chunk-OAEJME5Q.cjs.map → chunk-DBGTR7OK.cjs.map} +1 -1
- package/dist/{chunk-DL3XYTKI.cjs → chunk-E2UHMMSQ.cjs} +13 -13
- package/dist/{chunk-DL3XYTKI.cjs.map → chunk-E2UHMMSQ.cjs.map} +1 -1
- package/dist/{chunk-R5KLIQXI.cjs → chunk-F34I67NI.cjs} +34 -34
- package/dist/{chunk-R5KLIQXI.cjs.map → chunk-F34I67NI.cjs.map} +1 -1
- package/dist/{chunk-5V7JWZQ4.cjs → chunk-GQJQ75NA.cjs} +57 -57
- package/dist/{chunk-5V7JWZQ4.cjs.map → chunk-GQJQ75NA.cjs.map} +1 -1
- package/dist/{chunk-DF7ZATID.cjs → chunk-GUMGUNMW.cjs} +4 -4
- package/dist/{chunk-DF7ZATID.cjs.map → chunk-GUMGUNMW.cjs.map} +1 -1
- package/dist/{chunk-QYILQJOD.js → chunk-I3KSLONI.js} +7 -7
- package/dist/{chunk-QYILQJOD.js.map → chunk-I3KSLONI.js.map} +1 -1
- package/dist/{chunk-IGMZN37B.cjs → chunk-JDXHA2J4.cjs} +4 -4
- package/dist/{chunk-IGMZN37B.cjs.map → chunk-JDXHA2J4.cjs.map} +1 -1
- package/dist/{chunk-CGVWWTEZ.js → chunk-MSHBJR7U.js} +3 -3
- package/dist/{chunk-CGVWWTEZ.js.map → chunk-MSHBJR7U.js.map} +1 -1
- package/dist/{chunk-KFXOZXZD.cjs → chunk-NIUX77EN.cjs} +4 -4
- package/dist/{chunk-KFXOZXZD.cjs.map → chunk-NIUX77EN.cjs.map} +1 -1
- package/dist/{chunk-UFGC77KR.cjs → chunk-NOLUVCAJ.cjs} +5 -5
- package/dist/{chunk-UFGC77KR.cjs.map → chunk-NOLUVCAJ.cjs.map} +1 -1
- package/dist/{chunk-KEWX6KFN.js → chunk-NPGILGZQ.js} +4 -4
- package/dist/{chunk-KEWX6KFN.js.map → chunk-NPGILGZQ.js.map} +1 -1
- package/dist/{chunk-B7UCQEPD.js → chunk-OJCWHCSP.js} +3 -3
- package/dist/{chunk-B7UCQEPD.js.map → chunk-OJCWHCSP.js.map} +1 -1
- package/dist/{chunk-LC7HFDCV.cjs → chunk-OTXCPTFE.cjs} +24 -24
- package/dist/{chunk-LC7HFDCV.cjs.map → chunk-OTXCPTFE.cjs.map} +1 -1
- package/dist/{chunk-LHQHK6MB.cjs → chunk-R5FOAHQN.cjs} +5 -5
- package/dist/{chunk-LHQHK6MB.cjs.map → chunk-R5FOAHQN.cjs.map} +1 -1
- package/dist/{chunk-2L4YFJ6U.js → chunk-RC2PRQVC.js} +6 -6
- package/dist/{chunk-2L4YFJ6U.js.map → chunk-RC2PRQVC.js.map} +1 -1
- package/dist/{chunk-7IHMM6TG.js → chunk-RREPFWJI.js} +3 -3
- package/dist/{chunk-7IHMM6TG.js.map → chunk-RREPFWJI.js.map} +1 -1
- package/dist/{chunk-6JDUM4R2.js → chunk-S2BA5F6F.js} +9 -9
- package/dist/{chunk-6JDUM4R2.js.map → chunk-S2BA5F6F.js.map} +1 -1
- package/dist/{chunk-ZF3OKP2R.js → chunk-SAACQJ4X.js} +3 -3
- package/dist/{chunk-ZF3OKP2R.js.map → chunk-SAACQJ4X.js.map} +1 -1
- package/dist/{chunk-CRSEWNDP.cjs → chunk-SLBHYIVZ.cjs} +27 -27
- package/dist/{chunk-CRSEWNDP.cjs.map → chunk-SLBHYIVZ.cjs.map} +1 -1
- package/dist/{chunk-2JJISEQW.js → chunk-SSNJALVA.js} +3 -3
- package/dist/{chunk-2JJISEQW.js.map → chunk-SSNJALVA.js.map} +1 -1
- package/dist/{chunk-Y37HQ4M2.cjs → chunk-UICJN7O2.cjs} +3 -3
- package/dist/{chunk-Y37HQ4M2.cjs.map → chunk-UICJN7O2.cjs.map} +1 -1
- package/dist/{chunk-XD3M6ACK.cjs → chunk-W3MWEZYI.cjs} +3 -3
- package/dist/{chunk-XD3M6ACK.cjs.map → chunk-W3MWEZYI.cjs.map} +1 -1
- package/dist/{chunk-ICHTDJYH.cjs → chunk-WXFPG2GS.cjs} +3 -3
- package/dist/{chunk-ICHTDJYH.cjs.map → chunk-WXFPG2GS.cjs.map} +1 -1
- package/dist/{chunk-2MYWB55Z.cjs → chunk-YEAWEUTR.cjs} +19 -19
- package/dist/{chunk-2MYWB55Z.cjs.map → chunk-YEAWEUTR.cjs.map} +1 -1
- package/dist/{chunk-3TI4EVXB.js → chunk-ZLS55KLF.js} +5 -5
- package/dist/{chunk-3TI4EVXB.js.map → chunk-ZLS55KLF.js.map} +1 -1
- package/dist/connect/docx.cjs +13 -13
- package/dist/connect/docx.js +9 -9
- package/dist/connect/index.cjs +645 -628
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +80 -63
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +13 -13
- package/dist/connect/viewer.js +12 -12
- package/dist/dashboards/index.cjs +1 -1
- package/dist/dashboards/index.js +1 -1
- package/dist/embed/index.cjs +22 -22
- package/dist/embed/index.js +16 -16
- package/dist/facts/index.cjs +46 -46
- package/dist/facts/index.js +3 -3
- package/dist/files/index.cjs +222 -222
- package/dist/files/index.js +2 -2
- package/dist/index.cjs +1160 -1160
- package/dist/index.js +36 -36
- package/dist/shell/index.cjs +44 -44
- package/dist/shell/index.js +2 -2
- package/dist/studio/index.cjs +10 -10
- package/dist/studio/index.js +10 -10
- package/dist/workflow-canvas/index.cjs +47 -47
- package/dist/workflow-canvas/index.js +23 -23
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-3MNE42NH.cjs.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-VI3S2YIG.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkF34I67NI_cjs = require('./chunk-F34I67NI.cjs');
|
|
5
5
|
var chunkLYN5HGPZ_cjs = require('./chunk-LYN5HGPZ.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkUICJN7O2_cjs = require('./chunk-UICJN7O2.cjs');
|
|
7
7
|
var chunkP6TPVQRU_cjs = require('./chunk-P6TPVQRU.cjs');
|
|
8
8
|
var chunk555BS22J_cjs = require('./chunk-555BS22J.cjs');
|
|
9
9
|
var chunkD76PIWFN_cjs = require('./chunk-D76PIWFN.cjs');
|
|
@@ -46,16 +46,16 @@ function useConnectedThreadActivity(conversationId) {
|
|
|
46
46
|
const openWorkflow = chunkLYN5HGPZ_cjs.useOpenWorkflow();
|
|
47
47
|
const workspaceExtId = react.useArbiSessionState((s) => s.workspaceId);
|
|
48
48
|
const task = conversations.find((c) => c.external_id === conversationId);
|
|
49
|
-
const latestMessageAt =
|
|
49
|
+
const latestMessageAt = chunkUICJN7O2_cjs.latestMessageTime(messageHistory);
|
|
50
50
|
const events = (activity.data ?? []).filter(
|
|
51
|
-
(event) => !
|
|
51
|
+
(event) => !chunkUICJN7O2_cjs.isSupersededStop(event, latestMessageAt)
|
|
52
52
|
);
|
|
53
53
|
const personName = (extId) => {
|
|
54
54
|
const person = members.find((m) => m.user.external_id === extId)?.user;
|
|
55
55
|
return person ? ui.getUserDisplayName(person) : "someone";
|
|
56
56
|
};
|
|
57
|
-
const planSteps =
|
|
58
|
-
const entries =
|
|
57
|
+
const planSteps = chunkUICJN7O2_cjs.fromPlanSteps(task?.plan?.steps ?? []);
|
|
58
|
+
const entries = chunkUICJN7O2_cjs.compactThreadActivity(events, (id) => planSteps.find((s) => s.id === id)?.title);
|
|
59
59
|
const items = entries.map(({ event, label, recipients }) => {
|
|
60
60
|
const messageActivity = [
|
|
61
61
|
"created",
|
|
@@ -81,7 +81,7 @@ function useConnectedThreadActivity(conversationId) {
|
|
|
81
81
|
const messageId = sourceMessage ?? [...messageHistory].reverse().find((message) => Date.parse(message.created_at ?? "") <= Date.parse(event.created_at))?.external_id ?? messageHistory[0]?.external_id;
|
|
82
82
|
const doc = docId ? docs.find((d) => d.external_id === docId) : void 0;
|
|
83
83
|
const mailDraftId = event.kind === "notified" && event.detail?.event === "mail_draft_ready" && typeof event.detail?.mail_id === "string" ? event.detail.mail_id : void 0;
|
|
84
|
-
const missed = event.kind === "notified" && recipients.length ?
|
|
84
|
+
const missed = event.kind === "notified" && recipients.length ? chunkUICJN7O2_cjs.unnotifiedMentions(
|
|
85
85
|
messageHistory.find((message) => message.external_id === sourceMessage)?.mentions,
|
|
86
86
|
recipients,
|
|
87
87
|
event.actor_ext_id
|
|
@@ -114,7 +114,7 @@ function useConnectedThreadActivity(conversationId) {
|
|
|
114
114
|
) : void 0,
|
|
115
115
|
docId,
|
|
116
116
|
docTitle: doc ? ui.getDocumentTitle(doc) : void 0,
|
|
117
|
-
label: mailDraftId ? "Left a draft email" : event.kind === "notified" && recipients.length ?
|
|
117
|
+
label: mailDraftId ? "Left a draft email" : event.kind === "notified" && recipients.length ? chunkUICJN7O2_cjs.notifiedLabel(recipients.map(personName), missed.map(personName)) : label,
|
|
118
118
|
description: [
|
|
119
119
|
name,
|
|
120
120
|
label,
|
|
@@ -128,7 +128,7 @@ function useConnectedThreadActivity(conversationId) {
|
|
|
128
128
|
stepChip: eventStep ? stepChipOf(eventStep, event.kind, stepDocument) : void 0,
|
|
129
129
|
// No avatar tooltip: the entry is already a button (or titled row) that carries the same
|
|
130
130
|
// details, and a tooltip trigger inside it would be a nested <button>.
|
|
131
|
-
avatar: assistant ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
131
|
+
avatar: assistant ? /* @__PURE__ */ jsxRuntime.jsx(chunkUICJN7O2_cjs.AssistantEntity, { variant: "icon", size: 20, showTooltip: false }) : member ? /* @__PURE__ */ jsxRuntime.jsx(chunkF34I67NI_cjs.DocumentUser, { user: member, tooltip: false }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clock, { className: "size-4 text-muted-foreground" }),
|
|
132
132
|
time: ui.formatRelativeTime(event.created_at, { style: "short" }),
|
|
133
133
|
exactTime: ui.formatFriendlyDate(event.created_at),
|
|
134
134
|
onOpenDocument: docId && doc ? () => openDocument(docId) : void 0,
|
|
@@ -177,7 +177,7 @@ function useConnectedThreadActivity(conversationId) {
|
|
|
177
177
|
onSelect: () => navigateToConversation(source)
|
|
178
178
|
});
|
|
179
179
|
}
|
|
180
|
-
const links =
|
|
180
|
+
const links = chunkUICJN7O2_cjs.linkedRunsFromActivity(activity.data);
|
|
181
181
|
const threadName = (id, workflowId) => conversations.find((c) => c.external_id === id)?.title || workflows.find((w) => w.external_id === workflowId)?.name || "Linked thread";
|
|
182
182
|
const signals = links.raised.map((raised) => ({
|
|
183
183
|
step: raised.step,
|
|
@@ -192,7 +192,7 @@ function useConnectedThreadActivity(conversationId) {
|
|
|
192
192
|
if (links.startedBy) {
|
|
193
193
|
const { conversationId: parentId, step, signal } = links.startedBy;
|
|
194
194
|
const parent = conversations.find((c) => c.external_id === parentId);
|
|
195
|
-
const parentSteps =
|
|
195
|
+
const parentSteps = chunkUICJN7O2_cjs.fromPlanSteps(parent?.plan?.steps ?? []);
|
|
196
196
|
startedBy = {
|
|
197
197
|
stepTitle: parentSteps.find((s) => s.id === step)?.title ?? step ?? "a step",
|
|
198
198
|
threadTitle: parent?.title || "another thread",
|
|
@@ -216,5 +216,5 @@ function useSelectWorkspace() {
|
|
|
216
216
|
|
|
217
217
|
exports.useConnectedThreadActivity = useConnectedThreadActivity;
|
|
218
218
|
exports.useSelectWorkspace = useSelectWorkspace;
|
|
219
|
-
//# sourceMappingURL=chunk-
|
|
220
|
-
//# sourceMappingURL=chunk-
|
|
219
|
+
//# sourceMappingURL=chunk-E2UHMMSQ.cjs.map
|
|
220
|
+
//# sourceMappingURL=chunk-E2UHMMSQ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/tasks/useConnectedThreadActivity.tsx","../src/connection/useSelectWorkspace.ts"],"names":["stepKindOf","STEP_KIND_ICONS","jsx","useWorkflows","useConversationItems","useWorkspaceUsers","useDocuments","useConversationActivity","useConversationData","useBlocksEnvironment","useOpenWorkflow","useArbiSessionState","latestMessageTime","isSupersededStop","getUserDisplayName","fromPlanSteps","compactThreadActivity","splitDocRef","getDocumentTitle","unnotifiedMentions","parseCallLogDetail","ThreadCallLogCard","formatRelativeTime","RecordingCard","notifiedLabel","AssistantEntity","DocumentUser","Clock","formatFriendlyDate","linkedRunsFromActivity","useOptionalConnection","useSwitchWorkspace","useCallback"],"mappings":"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","file":"chunk-DL3XYTKI.cjs","sourcesContent":["import {\n formatFriendlyDate,\n getDocumentTitle,\n getUserDisplayName,\n formatRelativeTime,\n} from '@arbidocs/react/ui'\nimport { Clock } from 'lucide-react'\nimport {\n useConversationActivity,\n useWorkflows,\n useDocuments,\n useWorkspaceUsers,\n useArbiSessionState,\n useConversationData,\n useConversationItems,\n} from '@arbidocs/react'\nimport { STEP_KIND_ICONS, stepKindOf } from '../../agents/workflows/stepKinds'\nimport { compactThreadActivity } from '../../agents/tasks/compact-thread-activity'\nimport { fromPlanSteps, type TaskPlanStep } from '../../agents/workflows/planSteps'\nimport { splitDocRef, type WorkflowStepPhase } from '../../agents/workflows/run'\nimport { type WorkflowStep } from '../../agents/workflows/types'\nimport { linkedRunsFromActivity } from '../../agents/tasks/linkedRuns'\nimport { type TaskActivityEvent } from '../../agents/tasks/TaskActivityTimeline'\nimport {\n type WorkflowThreadOrigin,\n type WorkflowThreadSignal,\n} from '../../agents/tasks/WorkflowThreadStrip'\nimport { ThreadCallLogCard } from '../../calls/connected/ThreadCallLogCard'\nimport { RecordingCard } from '../../calls/connected/RecordingCard'\nimport { parseCallLogDetail } from '../../calls/call-cards'\nimport { AssistantEntity } from '../../agents/tasks/AssistantEntity'\nimport {\n isSupersededStop,\n latestMessageTime,\n notifiedLabel,\n unnotifiedMentions,\n} from '../../agents/tasks/taskHelpers'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useOpenWorkflow } from '../workflows/useOpenWorkflow'\nimport { DocumentUser } from '../files/fields/DocumentUser'\n\n/** The phase a step event puts its step in, for its chip in the transcript. */\nconst STEP_EVENT_PHASES: Record<string, WorkflowStepPhase> = {\n // A past \"started\" is not still running: the step's own chip (on the bar) says where it is now.\n step_started: 'ready',\n step_waiting: 'waiting',\n step_progress: 'waiting',\n step_done: 'done',\n step_skipped: 'skipped',\n step_failed: 'failed',\n step_sent_back: 'ready',\n}\n\n/** A step event's chip in the transcript: its step's kind and icon, the phase the event set. */\nfunction stepChipOf(\n step: WorkflowStep,\n eventKind: string,\n document?: { name: string; onOpen: () => void }\n) {\n const phase = STEP_EVENT_PHASES[eventKind]\n if (!phase) return undefined\n const kind = stepKindOf(step)\n const KindIcon = STEP_KIND_ICONS[kind]\n return { kind, phase, icon: <KindIcon />, document }\n}\n\n/**\n * A thread's persisted history, as its top bar's ribbon and its transcript show it: each entry with\n * its actor, its step chip, the document or email it is about and where a click goes; the threads\n * linked to it (what started it, what it starts); the signals its steps raised. Documents,\n * threads, email drafts and workflows open through the host's environment.\n */\nexport function useConnectedThreadActivity(conversationId: string | null | undefined) {\n const { data: workflows = [] } = useWorkflows()\n const { conversations } = useConversationItems()\n const { data: members = [] } = useWorkspaceUsers()\n const { data: docs = [] } = useDocuments()\n const activity = useConversationActivity(conversationId ?? undefined, { live: true })\n const { messageHistory } = useConversationData()\n const environment = useBlocksEnvironment()\n const { openDocument, openMail } = environment\n const navigateToConversation = (id: string, messageId?: string) =>\n environment.openConversation(id, messageId ? { messageId } : undefined)\n // The host's Workflows page, while it has one (absent: a workflow has nowhere to open).\n const openWorkflow = useOpenWorkflow()\n const workspaceExtId = useArbiSessionState((s) => s.workspaceId)\n const task = conversations.find((c) => c.external_id === conversationId)\n const latestMessageAt = latestMessageTime(messageHistory)\n const events = ((activity.data ?? []) as TaskActivityEvent[]).filter(\n (event) => !isSupersededStop(event, latestMessageAt)\n )\n const personName = (extId: string) => {\n const person = members.find((m) => m.user.external_id === extId)?.user\n return person ? getUserDisplayName(person) : 'someone'\n }\n // The run's steps, from its plan: step events are named after their step and drawn as its chip.\n const planSteps = fromPlanSteps((task?.plan?.steps ?? []) as TaskPlanStep[])\n const entries = compactThreadActivity(events, (id) => planSteps.find((s) => s.id === id)?.title)\n const items = entries.map(({ event, label, recipients }) => {\n const messageActivity = [\n 'created',\n 'participant_joined',\n 'assistant_responded',\n 'assistant_stopped',\n ].includes(event.kind)\n // A stop is about the assistant's turn (the event names no actor), so it is shown as ARBI's.\n const eventStep =\n event.kind.startsWith('step_') && typeof event.detail?.step === 'string'\n ? planSteps.find((s) => s.id === event.detail?.step)\n : undefined\n // A finished step's document (its latest version), one click from its chip in the transcript.\n const stepDocRef =\n event.kind === 'step_done' && Array.isArray(event.detail?.documents)\n ? (event.detail.documents as string[]).at(-1)\n : undefined\n const stepDocId = stepDocRef ? splitDocRef(stepDocRef).id : undefined\n const stepDocRecord = stepDocId ? docs.find((d) => d.external_id === stepDocId) : undefined\n const stepDocument = stepDocId\n ? {\n name: stepDocRecord ? getDocumentTitle(stepDocRecord) : stepDocId,\n onOpen: () => openDocument(stepDocId),\n }\n : undefined\n // An AI step's progress is ARBI's, whoever started the run.\n const assistant =\n event.kind === 'assistant_responded' ||\n event.kind === 'assistant_stopped' ||\n event.detail?.assistant === true ||\n eventStep?.kind === 'agent'\n const member = members.find(\n (m) =>\n m.user.external_id ===\n (event.actor_ext_id ?? (event.kind === 'created' ? task?.created_by_ext_id : undefined))\n )?.user\n const name = assistant ? 'ARBI' : member ? getUserDisplayName(member) : 'System'\n const docId = typeof event.detail?.doc_ext_id === 'string' ? event.detail.doc_ext_id : undefined\n const sourceMessage =\n typeof event.detail?.message_ext_id === 'string' ? event.detail.message_ext_id : undefined\n const messageId =\n sourceMessage ??\n [...messageHistory]\n .reverse()\n .find((message) => Date.parse(message.created_at ?? '') <= Date.parse(event.created_at))\n ?.external_id ??\n messageHistory[0]?.external_id\n const doc = docId ? docs.find((d) => d.external_id === docId) : undefined\n // A draft email an agent left in the user's native mailbox: the entry opens it in Mail.\n const mailDraftId =\n event.kind === 'notified' &&\n event.detail?.event === 'mail_draft_ready' &&\n typeof event.detail?.mail_id === 'string'\n ? event.detail.mail_id\n : undefined\n // Say who a batch reached, and name any @mentioned person it did not, so nobody has to guess.\n const missed =\n event.kind === 'notified' && recipients.length\n ? unnotifiedMentions(\n messageHistory.find((message) => message.external_id === sourceMessage)?.mentions,\n recipients,\n event.actor_ext_id\n )\n : []\n // A thread call: the server's log card (live → Join, ended → summary + meeting chat).\n const callDetail = event.kind === 'call' ? parseCallLogDetail(event.detail) : null\n // A recording of the thread's call stopped: its Recording card (in a meeting thread).\n const recordingCall =\n event.kind === 'recording' && typeof event.detail?.call_ext_id === 'string'\n ? event.detail.call_ext_id\n : null\n const recordingId =\n typeof event.detail?.recording_ext_id === 'string' ? event.detail.recording_ext_id : null\n return {\n id: event.external_id,\n kind: event.kind,\n // A workflow step event: the step it is about (the thread's step strip places entries by it).\n step: typeof event.detail?.step === 'string' ? event.detail.step : undefined,\n createdAt: event.created_at,\n card: callDetail ? (\n <ThreadCallLogCard\n detail={callDetail}\n name={personName}\n workspaceExtId={workspaceExtId}\n time={formatRelativeTime(event.created_at, { style: 'short' })}\n />\n ) : recordingCall ? (\n <RecordingCard\n callExtId={recordingCall}\n recordingExtId={recordingId}\n title={task?.title}\n time={formatRelativeTime(event.created_at, { style: 'short' })}\n />\n ) : undefined,\n docId,\n docTitle: doc ? getDocumentTitle(doc) : undefined,\n label: mailDraftId\n ? 'Left a draft email'\n : event.kind === 'notified' && recipients.length\n ? notifiedLabel(recipients.map(personName), missed.map(personName))\n : label,\n description: [\n name,\n label,\n ...recipients.map((id) => {\n const person = members.find((m) => m.user.external_id === id)?.user\n return person ? getUserDisplayName(person) : id\n }),\n doc ? getDocumentTitle(doc) : null,\n ]\n .filter(Boolean)\n .join(' · '),\n actor: assistant ? 'assistant' : (member?.external_id ?? 'system'),\n stepChip: eventStep ? stepChipOf(eventStep, event.kind, stepDocument) : undefined,\n // No avatar tooltip: the entry is already a button (or titled row) that carries the same\n // details, and a tooltip trigger inside it would be a nested <button>.\n avatar: assistant ? (\n <AssistantEntity variant=\"icon\" size={20} showTooltip={false} />\n ) : member ? (\n <DocumentUser user={member} tooltip={false} />\n ) : (\n <Clock className=\"size-4 text-muted-foreground\" />\n ),\n time: formatRelativeTime(event.created_at, { style: 'short' }),\n exactTime: formatFriendlyDate(event.created_at),\n onOpenDocument: docId && doc ? () => openDocument(docId) : undefined,\n onSelect: () => {\n if (mailDraftId && openMail) {\n openMail({ draftId: mailDraftId })\n return\n }\n const target = messageActivity ? messageId : event.external_id\n // The deep link selects the thread the message is on (useConversationData).\n if (target) navigateToConversation(conversationId!, target)\n },\n }\n })\n const related = workflows\n .filter((workflow) => workflow.after_conversation_ext_id === conversationId)\n .map((workflow) => {\n const next = conversations.find(\n (conversation) => conversation.workflow_ext_id === workflow.external_id\n )\n return {\n id: workflow.external_id,\n label: next?.title || workflow.name,\n title: 'Starts when this thread is done',\n onSelect: () => {\n if (next) navigateToConversation(next.external_id)\n else openWorkflow?.(workflow.external_id)\n },\n }\n })\n // The run's workflow, opened in the builder: the same steps, as designed. Only where Workflows\n // is on (otherwise there is no page to open it on).\n const origin = openWorkflow\n ? workflows.find((workflow) => workflow.external_id === task?.workflow_ext_id)\n : undefined\n if (origin && openWorkflow)\n related.unshift({\n id: `origin-${origin.external_id}`,\n label: origin.name,\n title: 'Open the workflow in the builder',\n onSelect: () => openWorkflow(origin.external_id),\n })\n const source = workflows.find(\n (workflow) => workflow.external_id === task?.workflow_ext_id\n )?.after_conversation_ext_id\n if (source) {\n const before = conversations.find((conversation) => conversation.external_id === source)\n if (before)\n related.unshift({\n id: source,\n label: before.title || 'Previous thread',\n title: 'Started when this thread was done',\n onSelect: () => navigateToConversation(source),\n })\n }\n // Linked runs: the signals this thread's steps raised and the threads they started, and, for a\n // thread a signal started, the step and thread it came from.\n const links = linkedRunsFromActivity(activity.data as TaskActivityEvent[] | undefined)\n const threadName = (id: string, workflowId?: string) =>\n conversations.find((c) => c.external_id === id)?.title ||\n workflows.find((w) => w.external_id === workflowId)?.name ||\n 'Linked thread'\n const signals: WorkflowThreadSignal[] = links.raised.map((raised) => ({\n step: raised.step,\n signal: raised.signal,\n runs: raised.runs.map((run) => ({\n id: run.conversationId,\n label: threadName(run.conversationId, run.workflowId),\n onSelect: () => navigateToConversation(run.conversationId),\n })),\n }))\n let startedBy: WorkflowThreadOrigin | undefined\n if (links.startedBy) {\n const { conversationId: parentId, step, signal } = links.startedBy\n const parent = conversations.find((c) => c.external_id === parentId)\n const parentSteps = fromPlanSteps((parent?.plan?.steps ?? []) as TaskPlanStep[])\n startedBy = {\n stepTitle: parentSteps.find((s) => s.id === step)?.title ?? step ?? 'a step',\n threadTitle: parent?.title || 'another thread',\n signal,\n onSelect: () => navigateToConversation(parentId),\n }\n }\n return { activity, items, related, signals, startedBy }\n}\n","import { useCallback } from 'react'\nimport { useSwitchWorkspace } from '@arbidocs/react'\nimport { useOptionalConnection } from './ConnectionProvider'\n\n/**\n * Select a workspace in place, through the sign-in layer when there is one (else the host's own\n * session switch): the page on screen stays, unlike `openWorkspace`, which also shows the\n * workspace. Rejects when it could not be opened.\n */\nexport function useSelectWorkspace(): (id: string) => Promise<void> {\n const connection = useOptionalConnection()\n const { switchWorkspace } = useSwitchWorkspace()\n return useCallback(\n async (id: string) => {\n if (connection) return connection.setWorkspace(id)\n if (!(await switchWorkspace({ id }))) throw new Error('Could not open the workspace')\n },\n [connection, switchWorkspace]\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/connection/tasks/useConnectedThreadActivity.tsx","../src/connection/useSelectWorkspace.ts"],"names":["stepKindOf","STEP_KIND_ICONS","jsx","useWorkflows","useConversationItems","useWorkspaceUsers","useDocuments","useConversationActivity","useConversationData","useBlocksEnvironment","useOpenWorkflow","useArbiSessionState","latestMessageTime","isSupersededStop","getUserDisplayName","fromPlanSteps","compactThreadActivity","splitDocRef","getDocumentTitle","unnotifiedMentions","parseCallLogDetail","ThreadCallLogCard","formatRelativeTime","RecordingCard","notifiedLabel","AssistantEntity","DocumentUser","Clock","formatFriendlyDate","linkedRunsFromActivity","useOptionalConnection","useSwitchWorkspace","useCallback"],"mappings":"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","file":"chunk-E2UHMMSQ.cjs","sourcesContent":["import {\n formatFriendlyDate,\n getDocumentTitle,\n getUserDisplayName,\n formatRelativeTime,\n} from '@arbidocs/react/ui'\nimport { Clock } from 'lucide-react'\nimport {\n useConversationActivity,\n useWorkflows,\n useDocuments,\n useWorkspaceUsers,\n useArbiSessionState,\n useConversationData,\n useConversationItems,\n} from '@arbidocs/react'\nimport { STEP_KIND_ICONS, stepKindOf } from '../../agents/workflows/stepKinds'\nimport { compactThreadActivity } from '../../agents/tasks/compact-thread-activity'\nimport { fromPlanSteps, type TaskPlanStep } from '../../agents/workflows/planSteps'\nimport { splitDocRef, type WorkflowStepPhase } from '../../agents/workflows/run'\nimport { type WorkflowStep } from '../../agents/workflows/types'\nimport { linkedRunsFromActivity } from '../../agents/tasks/linkedRuns'\nimport { type TaskActivityEvent } from '../../agents/tasks/TaskActivityTimeline'\nimport {\n type WorkflowThreadOrigin,\n type WorkflowThreadSignal,\n} from '../../agents/tasks/WorkflowThreadStrip'\nimport { ThreadCallLogCard } from '../../calls/connected/ThreadCallLogCard'\nimport { RecordingCard } from '../../calls/connected/RecordingCard'\nimport { parseCallLogDetail } from '../../calls/call-cards'\nimport { AssistantEntity } from '../../agents/tasks/AssistantEntity'\nimport {\n isSupersededStop,\n latestMessageTime,\n notifiedLabel,\n unnotifiedMentions,\n} from '../../agents/tasks/taskHelpers'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useOpenWorkflow } from '../workflows/useOpenWorkflow'\nimport { DocumentUser } from '../files/fields/DocumentUser'\n\n/** The phase a step event puts its step in, for its chip in the transcript. */\nconst STEP_EVENT_PHASES: Record<string, WorkflowStepPhase> = {\n // A past \"started\" is not still running: the step's own chip (on the bar) says where it is now.\n step_started: 'ready',\n step_waiting: 'waiting',\n step_progress: 'waiting',\n step_done: 'done',\n step_skipped: 'skipped',\n step_failed: 'failed',\n step_sent_back: 'ready',\n}\n\n/** A step event's chip in the transcript: its step's kind and icon, the phase the event set. */\nfunction stepChipOf(\n step: WorkflowStep,\n eventKind: string,\n document?: { name: string; onOpen: () => void }\n) {\n const phase = STEP_EVENT_PHASES[eventKind]\n if (!phase) return undefined\n const kind = stepKindOf(step)\n const KindIcon = STEP_KIND_ICONS[kind]\n return { kind, phase, icon: <KindIcon />, document }\n}\n\n/**\n * A thread's persisted history, as its top bar's ribbon and its transcript show it: each entry with\n * its actor, its step chip, the document or email it is about and where a click goes; the threads\n * linked to it (what started it, what it starts); the signals its steps raised. Documents,\n * threads, email drafts and workflows open through the host's environment.\n */\nexport function useConnectedThreadActivity(conversationId: string | null | undefined) {\n const { data: workflows = [] } = useWorkflows()\n const { conversations } = useConversationItems()\n const { data: members = [] } = useWorkspaceUsers()\n const { data: docs = [] } = useDocuments()\n const activity = useConversationActivity(conversationId ?? undefined, { live: true })\n const { messageHistory } = useConversationData()\n const environment = useBlocksEnvironment()\n const { openDocument, openMail } = environment\n const navigateToConversation = (id: string, messageId?: string) =>\n environment.openConversation(id, messageId ? { messageId } : undefined)\n // The host's Workflows page, while it has one (absent: a workflow has nowhere to open).\n const openWorkflow = useOpenWorkflow()\n const workspaceExtId = useArbiSessionState((s) => s.workspaceId)\n const task = conversations.find((c) => c.external_id === conversationId)\n const latestMessageAt = latestMessageTime(messageHistory)\n const events = ((activity.data ?? []) as TaskActivityEvent[]).filter(\n (event) => !isSupersededStop(event, latestMessageAt)\n )\n const personName = (extId: string) => {\n const person = members.find((m) => m.user.external_id === extId)?.user\n return person ? getUserDisplayName(person) : 'someone'\n }\n // The run's steps, from its plan: step events are named after their step and drawn as its chip.\n const planSteps = fromPlanSteps((task?.plan?.steps ?? []) as TaskPlanStep[])\n const entries = compactThreadActivity(events, (id) => planSteps.find((s) => s.id === id)?.title)\n const items = entries.map(({ event, label, recipients }) => {\n const messageActivity = [\n 'created',\n 'participant_joined',\n 'assistant_responded',\n 'assistant_stopped',\n ].includes(event.kind)\n // A stop is about the assistant's turn (the event names no actor), so it is shown as ARBI's.\n const eventStep =\n event.kind.startsWith('step_') && typeof event.detail?.step === 'string'\n ? planSteps.find((s) => s.id === event.detail?.step)\n : undefined\n // A finished step's document (its latest version), one click from its chip in the transcript.\n const stepDocRef =\n event.kind === 'step_done' && Array.isArray(event.detail?.documents)\n ? (event.detail.documents as string[]).at(-1)\n : undefined\n const stepDocId = stepDocRef ? splitDocRef(stepDocRef).id : undefined\n const stepDocRecord = stepDocId ? docs.find((d) => d.external_id === stepDocId) : undefined\n const stepDocument = stepDocId\n ? {\n name: stepDocRecord ? getDocumentTitle(stepDocRecord) : stepDocId,\n onOpen: () => openDocument(stepDocId),\n }\n : undefined\n // An AI step's progress is ARBI's, whoever started the run.\n const assistant =\n event.kind === 'assistant_responded' ||\n event.kind === 'assistant_stopped' ||\n event.detail?.assistant === true ||\n eventStep?.kind === 'agent'\n const member = members.find(\n (m) =>\n m.user.external_id ===\n (event.actor_ext_id ?? (event.kind === 'created' ? task?.created_by_ext_id : undefined))\n )?.user\n const name = assistant ? 'ARBI' : member ? getUserDisplayName(member) : 'System'\n const docId = typeof event.detail?.doc_ext_id === 'string' ? event.detail.doc_ext_id : undefined\n const sourceMessage =\n typeof event.detail?.message_ext_id === 'string' ? event.detail.message_ext_id : undefined\n const messageId =\n sourceMessage ??\n [...messageHistory]\n .reverse()\n .find((message) => Date.parse(message.created_at ?? '') <= Date.parse(event.created_at))\n ?.external_id ??\n messageHistory[0]?.external_id\n const doc = docId ? docs.find((d) => d.external_id === docId) : undefined\n // A draft email an agent left in the user's native mailbox: the entry opens it in Mail.\n const mailDraftId =\n event.kind === 'notified' &&\n event.detail?.event === 'mail_draft_ready' &&\n typeof event.detail?.mail_id === 'string'\n ? event.detail.mail_id\n : undefined\n // Say who a batch reached, and name any @mentioned person it did not, so nobody has to guess.\n const missed =\n event.kind === 'notified' && recipients.length\n ? unnotifiedMentions(\n messageHistory.find((message) => message.external_id === sourceMessage)?.mentions,\n recipients,\n event.actor_ext_id\n )\n : []\n // A thread call: the server's log card (live → Join, ended → summary + meeting chat).\n const callDetail = event.kind === 'call' ? parseCallLogDetail(event.detail) : null\n // A recording of the thread's call stopped: its Recording card (in a meeting thread).\n const recordingCall =\n event.kind === 'recording' && typeof event.detail?.call_ext_id === 'string'\n ? event.detail.call_ext_id\n : null\n const recordingId =\n typeof event.detail?.recording_ext_id === 'string' ? event.detail.recording_ext_id : null\n return {\n id: event.external_id,\n kind: event.kind,\n // A workflow step event: the step it is about (the thread's step strip places entries by it).\n step: typeof event.detail?.step === 'string' ? event.detail.step : undefined,\n createdAt: event.created_at,\n card: callDetail ? (\n <ThreadCallLogCard\n detail={callDetail}\n name={personName}\n workspaceExtId={workspaceExtId}\n time={formatRelativeTime(event.created_at, { style: 'short' })}\n />\n ) : recordingCall ? (\n <RecordingCard\n callExtId={recordingCall}\n recordingExtId={recordingId}\n title={task?.title}\n time={formatRelativeTime(event.created_at, { style: 'short' })}\n />\n ) : undefined,\n docId,\n docTitle: doc ? getDocumentTitle(doc) : undefined,\n label: mailDraftId\n ? 'Left a draft email'\n : event.kind === 'notified' && recipients.length\n ? notifiedLabel(recipients.map(personName), missed.map(personName))\n : label,\n description: [\n name,\n label,\n ...recipients.map((id) => {\n const person = members.find((m) => m.user.external_id === id)?.user\n return person ? getUserDisplayName(person) : id\n }),\n doc ? getDocumentTitle(doc) : null,\n ]\n .filter(Boolean)\n .join(' · '),\n actor: assistant ? 'assistant' : (member?.external_id ?? 'system'),\n stepChip: eventStep ? stepChipOf(eventStep, event.kind, stepDocument) : undefined,\n // No avatar tooltip: the entry is already a button (or titled row) that carries the same\n // details, and a tooltip trigger inside it would be a nested <button>.\n avatar: assistant ? (\n <AssistantEntity variant=\"icon\" size={20} showTooltip={false} />\n ) : member ? (\n <DocumentUser user={member} tooltip={false} />\n ) : (\n <Clock className=\"size-4 text-muted-foreground\" />\n ),\n time: formatRelativeTime(event.created_at, { style: 'short' }),\n exactTime: formatFriendlyDate(event.created_at),\n onOpenDocument: docId && doc ? () => openDocument(docId) : undefined,\n onSelect: () => {\n if (mailDraftId && openMail) {\n openMail({ draftId: mailDraftId })\n return\n }\n const target = messageActivity ? messageId : event.external_id\n // The deep link selects the thread the message is on (useConversationData).\n if (target) navigateToConversation(conversationId!, target)\n },\n }\n })\n const related = workflows\n .filter((workflow) => workflow.after_conversation_ext_id === conversationId)\n .map((workflow) => {\n const next = conversations.find(\n (conversation) => conversation.workflow_ext_id === workflow.external_id\n )\n return {\n id: workflow.external_id,\n label: next?.title || workflow.name,\n title: 'Starts when this thread is done',\n onSelect: () => {\n if (next) navigateToConversation(next.external_id)\n else openWorkflow?.(workflow.external_id)\n },\n }\n })\n // The run's workflow, opened in the builder: the same steps, as designed. Only where Workflows\n // is on (otherwise there is no page to open it on).\n const origin = openWorkflow\n ? workflows.find((workflow) => workflow.external_id === task?.workflow_ext_id)\n : undefined\n if (origin && openWorkflow)\n related.unshift({\n id: `origin-${origin.external_id}`,\n label: origin.name,\n title: 'Open the workflow in the builder',\n onSelect: () => openWorkflow(origin.external_id),\n })\n const source = workflows.find(\n (workflow) => workflow.external_id === task?.workflow_ext_id\n )?.after_conversation_ext_id\n if (source) {\n const before = conversations.find((conversation) => conversation.external_id === source)\n if (before)\n related.unshift({\n id: source,\n label: before.title || 'Previous thread',\n title: 'Started when this thread was done',\n onSelect: () => navigateToConversation(source),\n })\n }\n // Linked runs: the signals this thread's steps raised and the threads they started, and, for a\n // thread a signal started, the step and thread it came from.\n const links = linkedRunsFromActivity(activity.data as TaskActivityEvent[] | undefined)\n const threadName = (id: string, workflowId?: string) =>\n conversations.find((c) => c.external_id === id)?.title ||\n workflows.find((w) => w.external_id === workflowId)?.name ||\n 'Linked thread'\n const signals: WorkflowThreadSignal[] = links.raised.map((raised) => ({\n step: raised.step,\n signal: raised.signal,\n runs: raised.runs.map((run) => ({\n id: run.conversationId,\n label: threadName(run.conversationId, run.workflowId),\n onSelect: () => navigateToConversation(run.conversationId),\n })),\n }))\n let startedBy: WorkflowThreadOrigin | undefined\n if (links.startedBy) {\n const { conversationId: parentId, step, signal } = links.startedBy\n const parent = conversations.find((c) => c.external_id === parentId)\n const parentSteps = fromPlanSteps((parent?.plan?.steps ?? []) as TaskPlanStep[])\n startedBy = {\n stepTitle: parentSteps.find((s) => s.id === step)?.title ?? step ?? 'a step',\n threadTitle: parent?.title || 'another thread',\n signal,\n onSelect: () => navigateToConversation(parentId),\n }\n }\n return { activity, items, related, signals, startedBy }\n}\n","import { useCallback } from 'react'\nimport { useSwitchWorkspace } from '@arbidocs/react'\nimport { useOptionalConnection } from './ConnectionProvider'\n\n/**\n * Select a workspace in place, through the sign-in layer when there is one (else the host's own\n * session switch): the page on screen stays, unlike `openWorkspace`, which also shows the\n * workspace. Rejects when it could not be opened.\n */\nexport function useSelectWorkspace(): (id: string) => Promise<void> {\n const connection = useOptionalConnection()\n const { switchWorkspace } = useSwitchWorkspace()\n return useCallback(\n async (id: string) => {\n if (connection) return connection.setWorkspace(id)\n if (!(await switchWorkspace({ id }))) throw new Error('Could not open the workspace')\n },\n [connection, switchWorkspace]\n )\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkWXFPG2GS_cjs = require('./chunk-WXFPG2GS.cjs');
|
|
5
5
|
var chunkQXNEXPUL_cjs = require('./chunk-QXNEXPUL.cjs');
|
|
6
6
|
var chunkVWUNPAR2_cjs = require('./chunk-VWUNPAR2.cjs');
|
|
7
7
|
var chunkLKK52DEY_cjs = require('./chunk-LKK52DEY.cjs');
|
|
@@ -197,7 +197,7 @@ function TileStatusBadge({ doc, status }) {
|
|
|
197
197
|
case "failed":
|
|
198
198
|
tone = "danger";
|
|
199
199
|
icon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
200
|
-
|
|
200
|
+
chunkWXFPG2GS_cjs.FailedStageIcon,
|
|
201
201
|
{
|
|
202
202
|
stage: doc.failed_stage ?? null,
|
|
203
203
|
errorMessage: doc.error_message,
|
|
@@ -224,7 +224,7 @@ function TileStatusBadge({ doc, status }) {
|
|
|
224
224
|
return null;
|
|
225
225
|
}
|
|
226
226
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
227
|
-
|
|
227
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
228
228
|
{
|
|
229
229
|
tone,
|
|
230
230
|
icon,
|
|
@@ -236,11 +236,11 @@ function TileStatusBadge({ doc, status }) {
|
|
|
236
236
|
function TileVisibilityBadge({ doc }) {
|
|
237
237
|
const shared = !!doc.shared;
|
|
238
238
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
239
|
-
|
|
239
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
240
240
|
{
|
|
241
241
|
icon: /* @__PURE__ */ jsxRuntime.jsx(ui.VisibilityIcon, { isShared: shared, className: "size-3.5", "aria-hidden": true }),
|
|
242
242
|
label: shared ? ui.getEntityLabel("WORKSPACE") : "Only you",
|
|
243
|
-
title:
|
|
243
|
+
title: chunkWXFPG2GS_cjs.visibilityAudience(shared),
|
|
244
244
|
testId: `explorer-file-visibility-${doc.external_id}`
|
|
245
245
|
}
|
|
246
246
|
);
|
|
@@ -267,7 +267,7 @@ function FileTooltipContent({
|
|
|
267
267
|
}) {
|
|
268
268
|
const labels = (doc.doctags ?? []).map((dt) => tagNameById.get(dt.tag_ext_id)).filter((name) => !!name);
|
|
269
269
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
270
|
-
|
|
270
|
+
chunkWXFPG2GS_cjs.ExplorerFileTooltip,
|
|
271
271
|
{
|
|
272
272
|
title: ui.getDocumentTitle(doc, doc.file_name ?? ""),
|
|
273
273
|
summary: ui.getDocumentSubject(doc),
|
|
@@ -276,7 +276,7 @@ function FileTooltipContent({
|
|
|
276
276
|
shared: !!doc.shared,
|
|
277
277
|
visibilityIcon: /* @__PURE__ */ jsxRuntime.jsx(ui.VisibilityIcon, { isShared: !!doc.shared, className: "h-3 w-3" }),
|
|
278
278
|
labels,
|
|
279
|
-
uiLabels: { shared:
|
|
279
|
+
uiLabels: { shared: chunkWXFPG2GS_cjs.visibilityAudience(true), private: chunkWXFPG2GS_cjs.visibilityAudience(false) }
|
|
280
280
|
}
|
|
281
281
|
);
|
|
282
282
|
}
|
|
@@ -388,7 +388,7 @@ var FileTile = react.memo(function FileTile2({
|
|
|
388
388
|
];
|
|
389
389
|
const tooltip = renaming || dndActive ? void 0 : /* @__PURE__ */ jsxRuntime.jsx(FileTooltipContent, { doc, modifiedBy, tagNameById });
|
|
390
390
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
391
|
-
|
|
391
|
+
chunkWXFPG2GS_cjs.ExplorerFileTile,
|
|
392
392
|
{
|
|
393
393
|
id: doc.external_id,
|
|
394
394
|
title: ui.getDocumentTitle(doc, doc.file_name ?? ""),
|
|
@@ -482,17 +482,17 @@ var FolderTile = react.memo(function FolderTile2({
|
|
|
482
482
|
}
|
|
483
483
|
] : []
|
|
484
484
|
];
|
|
485
|
-
const displayName = folder.path.length === 1 ?
|
|
486
|
-
const providerIcon = folder.path.length === 1 &&
|
|
485
|
+
const displayName = folder.path.length === 1 ? chunkWXFPG2GS_cjs.formatFolderSegment(folder.name) : folder.name;
|
|
486
|
+
const providerIcon = folder.path.length === 1 && chunkWXFPG2GS_cjs.hasFolderProviderIcon(folder.name) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
487
487
|
"span",
|
|
488
488
|
{
|
|
489
489
|
className: "flex items-center justify-center drop-shadow-sm",
|
|
490
490
|
style: { width: iconSize, height: iconSize },
|
|
491
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
491
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkWXFPG2GS_cjs.FolderProviderIcon, { folderPath: folder.name, className: "h-full w-full" })
|
|
492
492
|
}
|
|
493
493
|
) : void 0;
|
|
494
494
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
495
|
-
|
|
495
|
+
chunkWXFPG2GS_cjs.ExplorerFolderTile,
|
|
496
496
|
{
|
|
497
497
|
name: folder.name,
|
|
498
498
|
displayName: displayName === "" ? null : displayName,
|
|
@@ -582,7 +582,7 @@ function describeGlyph(resolved, doc) {
|
|
|
582
582
|
}
|
|
583
583
|
return {
|
|
584
584
|
node: /* @__PURE__ */ jsxRuntime.jsx(
|
|
585
|
-
|
|
585
|
+
chunkWXFPG2GS_cjs.FailedStageIcon,
|
|
586
586
|
{
|
|
587
587
|
stage: resolved.failedStage,
|
|
588
588
|
errorMessage: doc.error_message,
|
|
@@ -627,7 +627,7 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
627
627
|
if (isPendingSync) {
|
|
628
628
|
return cell(
|
|
629
629
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
630
|
-
|
|
630
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
631
631
|
{
|
|
632
632
|
tone: "warning",
|
|
633
633
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "size-3.5" }),
|
|
@@ -642,7 +642,7 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
642
642
|
case "completed":
|
|
643
643
|
return cell(
|
|
644
644
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
645
|
-
|
|
645
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
646
646
|
{
|
|
647
647
|
tone: "success",
|
|
648
648
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle, { className: "size-3.5" }),
|
|
@@ -655,7 +655,7 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
655
655
|
case "skipped":
|
|
656
656
|
return cell(
|
|
657
657
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
658
|
-
|
|
658
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
659
659
|
{
|
|
660
660
|
tone: "neutral",
|
|
661
661
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SkipForward, { className: "size-3.5" }),
|
|
@@ -668,7 +668,7 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
668
668
|
case "empty":
|
|
669
669
|
return cell(
|
|
670
670
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
671
|
-
|
|
671
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
672
672
|
{
|
|
673
673
|
tone: "warning",
|
|
674
674
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileX, { className: "size-3.5" }),
|
|
@@ -681,7 +681,7 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
681
681
|
case "low-content":
|
|
682
682
|
return cell(
|
|
683
683
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
684
|
-
|
|
684
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
685
685
|
{
|
|
686
686
|
tone: "warning",
|
|
687
687
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "size-3.5" }),
|
|
@@ -696,7 +696,7 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
696
696
|
if (quota) {
|
|
697
697
|
return cell(
|
|
698
698
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
699
|
-
|
|
699
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
700
700
|
{
|
|
701
701
|
tone: "warning",
|
|
702
702
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Zap, { className: "size-3.5" }),
|
|
@@ -709,11 +709,11 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
709
709
|
}
|
|
710
710
|
return cell(
|
|
711
711
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
712
|
-
|
|
712
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
713
713
|
{
|
|
714
714
|
tone: "danger",
|
|
715
715
|
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
716
|
-
|
|
716
|
+
chunkWXFPG2GS_cjs.FailedStageIcon,
|
|
717
717
|
{
|
|
718
718
|
stage: failedStage,
|
|
719
719
|
errorMessage: doc.error_message,
|
|
@@ -730,7 +730,7 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
730
730
|
const isDocx = doc.file_name?.toLowerCase().endsWith(".docx");
|
|
731
731
|
return cell(
|
|
732
732
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
733
|
-
|
|
733
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
734
734
|
{
|
|
735
735
|
tone: "neutral",
|
|
736
736
|
label: isDocx ? "Uploaded" : "Queued",
|
|
@@ -747,7 +747,7 @@ var StatusCell2 = react.memo(function StatusCell3({
|
|
|
747
747
|
case "analysing":
|
|
748
748
|
return cell(
|
|
749
749
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
750
|
-
|
|
750
|
+
chunkWXFPG2GS_cjs.StatusPill,
|
|
751
751
|
{
|
|
752
752
|
tone: "info",
|
|
753
753
|
label: PROCESSING_LABELS[status],
|
|
@@ -830,7 +830,7 @@ var DocumentNameCell = react.memo(function DocumentNameCell2({
|
|
|
830
830
|
}
|
|
831
831
|
};
|
|
832
832
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
833
|
-
|
|
833
|
+
chunkWXFPG2GS_cjs.DocumentNameCellFrame,
|
|
834
834
|
{
|
|
835
835
|
testId: `open-document-viewer-button-${doc.external_id}`,
|
|
836
836
|
isViewing,
|
|
@@ -859,7 +859,7 @@ var DocumentNameCell = react.memo(function DocumentNameCell2({
|
|
|
859
859
|
openTimerRef.current = window.setTimeout(onOpen, OPEN_AFTER_DOUBLE_CLICK_WINDOW_MS);
|
|
860
860
|
},
|
|
861
861
|
actions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
862
|
-
|
|
862
|
+
chunkWXFPG2GS_cjs.DocumentRowMenu,
|
|
863
863
|
{
|
|
864
864
|
canEdit,
|
|
865
865
|
onOpen,
|
|
@@ -896,8 +896,8 @@ var DocumentSharedCell = react.memo(function DocumentSharedCell2({
|
|
|
896
896
|
onToggle: handleToggle,
|
|
897
897
|
disabled,
|
|
898
898
|
disabledTooltip,
|
|
899
|
-
tooltipActive:
|
|
900
|
-
tooltipInactive:
|
|
899
|
+
tooltipActive: chunkWXFPG2GS_cjs.visibilityToggleTooltip(true),
|
|
900
|
+
tooltipInactive: chunkWXFPG2GS_cjs.visibilityToggleTooltip(false),
|
|
901
901
|
workspaceLabel: ui.getEntityLabel("WORKSPACE")
|
|
902
902
|
}
|
|
903
903
|
);
|
|
@@ -911,7 +911,7 @@ function useDocumentFolders(documents, value) {
|
|
|
911
911
|
}, [documents, value]);
|
|
912
912
|
}
|
|
913
913
|
function folderSegments(folder) {
|
|
914
|
-
return folder.split("/").map((part, i) => i === 0 ?
|
|
914
|
+
return folder.split("/").map((part, i) => i === 0 ? chunkWXFPG2GS_cjs.formatFolderSegment(part) : part).filter((part, i) => i > 0 || part !== "");
|
|
915
915
|
}
|
|
916
916
|
var DocumentFolderCell = react.memo(
|
|
917
917
|
function DocumentFolderCell2({
|
|
@@ -923,14 +923,14 @@ var DocumentFolderCell = react.memo(
|
|
|
923
923
|
const folder = document.folder;
|
|
924
924
|
const folders = useDocumentFolders(allDocuments, folder);
|
|
925
925
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
926
|
-
|
|
926
|
+
chunkWXFPG2GS_cjs.FolderCell,
|
|
927
927
|
{
|
|
928
928
|
folder,
|
|
929
929
|
segments: folder ? folderSegments(folder) : [],
|
|
930
|
-
icon: folder &&
|
|
930
|
+
icon: folder && chunkWXFPG2GS_cjs.hasFolderProviderIcon(folder) ? /* @__PURE__ */ jsxRuntime.jsx(chunkWXFPG2GS_cjs.FolderProviderIcon, { folderPath: folder, className: "h-3.5 w-3.5 flex-none shrink-0" }) : void 0,
|
|
931
931
|
isEditable,
|
|
932
932
|
picker: /* @__PURE__ */ jsxRuntime.jsx(
|
|
933
|
-
|
|
933
|
+
chunkWXFPG2GS_cjs.FolderCommandList,
|
|
934
934
|
{
|
|
935
935
|
folders,
|
|
936
936
|
value: folder,
|
|
@@ -966,7 +966,7 @@ var RelatedDocumentsCell = react.memo(function RelatedDocumentsCell2({
|
|
|
966
966
|
onCompare
|
|
967
967
|
}) {
|
|
968
968
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
969
|
-
|
|
969
|
+
chunkWXFPG2GS_cjs.RelatedDocsCell,
|
|
970
970
|
{
|
|
971
971
|
parent: related.parent,
|
|
972
972
|
attachments: related.children,
|
|
@@ -1111,5 +1111,5 @@ exports.parseQuotaError = parseQuotaError;
|
|
|
1111
1111
|
exports.startMenuItem = startMenuItem;
|
|
1112
1112
|
exports.useDocumentFolders = useDocumentFolders;
|
|
1113
1113
|
exports.useResolvedDocStatus = useResolvedDocStatus;
|
|
1114
|
-
//# sourceMappingURL=chunk-
|
|
1115
|
-
//# sourceMappingURL=chunk-
|
|
1114
|
+
//# sourceMappingURL=chunk-F34I67NI.cjs.map
|
|
1115
|
+
//# sourceMappingURL=chunk-F34I67NI.cjs.map
|