@arbidocs/blocks 0.4.77 → 0.4.78
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/agents/index.cjs +289 -277
- package/dist/agents/index.js +5 -5
- package/dist/agents/tasks/WorkflowThreadStrip.d.ts +9 -4
- package/dist/agents/workflows/StepBarFrame.d.ts +75 -0
- package/dist/agents/workflows/WorkflowRunner.d.ts +5 -1
- package/dist/agents/workflows/WorkflowStepBar.d.ts +9 -11
- package/dist/agents/workflows/index.d.ts +2 -0
- package/dist/agents/workflows/stepWindow.d.ts +59 -0
- package/dist/chat/ChatPage.d.ts +1 -1
- package/dist/chat/chat-page-types.d.ts +5 -0
- package/dist/chat/index.cjs +124 -124
- package/dist/chat/index.js +2 -2
- package/dist/{chunk-HEVVT6IT.js → chunk-5OC5CGYX.js} +128 -124
- package/dist/chunk-5OC5CGYX.js.map +1 -0
- package/dist/chunk-CWAZNXC5.js +441 -0
- package/dist/chunk-CWAZNXC5.js.map +1 -0
- package/dist/{chunk-NIP5BOP7.js → chunk-EWSEQEPL.js} +5 -4
- package/dist/chunk-EWSEQEPL.js.map +1 -0
- package/dist/{chunk-UEU23PTW.js → chunk-ICBAFX5B.js} +3 -3
- package/dist/{chunk-UEU23PTW.js.map → chunk-ICBAFX5B.js.map} +1 -1
- package/dist/{chunk-EKIUMNCN.cjs → chunk-IF6VAYIA.cjs} +5 -5
- package/dist/{chunk-EKIUMNCN.cjs.map → chunk-IF6VAYIA.cjs.map} +1 -1
- package/dist/chunk-MLAHDAN5.cjs +450 -0
- package/dist/chunk-MLAHDAN5.cjs.map +1 -0
- package/dist/{chunk-HOD6OM7L.cjs → chunk-MP6FK43E.cjs} +5 -4
- package/dist/chunk-MP6FK43E.cjs.map +1 -0
- package/dist/{chunk-JFUN4D7D.cjs → chunk-SSDISIDW.cjs} +152 -148
- package/dist/chunk-SSDISIDW.cjs.map +1 -0
- package/dist/{chunk-3XR3IEGU.cjs → chunk-VFIZYSZB.cjs} +573 -168
- package/dist/chunk-VFIZYSZB.cjs.map +1 -0
- package/dist/{chunk-34UW6XUQ.js → chunk-WXRCMIAE.js} +567 -172
- package/dist/chunk-WXRCMIAE.js.map +1 -0
- package/dist/{chunk-GTXOV7IJ.cjs → chunk-XMBYDLZQ.cjs} +4 -4
- package/dist/{chunk-GTXOV7IJ.cjs.map → chunk-XMBYDLZQ.cjs.map} +1 -1
- package/dist/{chunk-OEM5ARVM.js → chunk-XQDM6T6C.js} +3 -3
- package/dist/{chunk-OEM5ARVM.js.map → chunk-XQDM6T6C.js.map} +1 -1
- package/dist/connect/index.cjs +209 -53
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +2 -0
- package/dist/connect/index.js +190 -36
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedTagMatrix.d.ts +20 -0
- package/dist/connection/ConnectedWorkflowRunner.d.ts +13 -1
- package/dist/connection/WorkflowRunThread.d.ts +21 -0
- package/dist/facts/index.cjs +1 -1
- package/dist/facts/index.js +1 -1
- package/dist/files/index.cjs +1 -1
- package/dist/files/index.js +1 -1
- package/dist/home/index.cjs +1 -1
- package/dist/home/index.js +1 -1
- package/dist/index.cjs +492 -447
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +9 -8
- package/dist/index.js.map +1 -1
- package/dist/shell/index.cjs +1 -1
- package/dist/shell/index.js +1 -1
- package/dist/studio/index.cjs +4 -4
- package/dist/studio/index.js +3 -3
- package/dist/tags/TagMatrix.d.ts +64 -0
- package/dist/tags/index.d.ts +3 -0
- package/dist/tags/tagMatrixModel.d.ts +39 -0
- package/dist/workflow-canvas/index.cjs +48 -48
- package/dist/workflow-canvas/index.js +5 -5
- package/package.json +4 -4
- package/dist/chunk-34UW6XUQ.js.map +0 -1
- package/dist/chunk-3XR3IEGU.cjs.map +0 -1
- package/dist/chunk-HEVVT6IT.js.map +0 -1
- package/dist/chunk-HOD6OM7L.cjs.map +0 -1
- package/dist/chunk-JFUN4D7D.cjs.map +0 -1
- package/dist/chunk-NIP5BOP7.js.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkMUMH3Z6K_cjs = require('./chunk-MUMH3Z6K.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkMP6FK43E_cjs = require('./chunk-MP6FK43E.cjs');
|
|
6
6
|
var react$1 = require('react');
|
|
7
7
|
var react = require('@arbidocs/react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -61,7 +61,7 @@ function useConnectedChat(options) {
|
|
|
61
61
|
}
|
|
62
62
|
function ConnectedAssistantDock(props) {
|
|
63
63
|
const chat = useConnectedChat();
|
|
64
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
64
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMP6FK43E_cjs.AssistantDock, { ...props, chat });
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
Object.defineProperty(exports, "redlineStats", {
|
|
@@ -81,5 +81,5 @@ exports.useConnectedAiTask = useConnectedAiTask;
|
|
|
81
81
|
exports.useConnectedChat = useConnectedChat;
|
|
82
82
|
exports.useSemanticSearch = useSemanticSearch;
|
|
83
83
|
exports.useWorkspaceDocs = useWorkspaceDocs;
|
|
84
|
-
//# sourceMappingURL=chunk-
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
84
|
+
//# sourceMappingURL=chunk-XMBYDLZQ.cjs.map
|
|
85
|
+
//# sourceMappingURL=chunk-XMBYDLZQ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/ai.tsx"],"names":["useConnection","useKitAiTask","useCallback","useKitWorkspaceDocs","useKitSemanticSearch","useWorkspaceUsers","useArbiChat","jsx","AssistantDock"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/ai.tsx"],"names":["useConnection","useKitAiTask","useCallback","useKitWorkspaceDocs","useKitSemanticSearch","useWorkspaceUsers","useArbiChat","jsx","AssistantDock"],"mappings":"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","file":"chunk-XMBYDLZQ.cjs","sourcesContent":["/**\n * The connected agent hooks — thin adapters over the reusable AI kit in\n * `@arbidocs/react`. The streaming/accumulation/search plumbing lives once in\n * the SDK; these hooks only bind the *workspace source* (from the connection\n * context, falling back to the configured workspace) and inject the host's\n * default assistant *configuration* so call sites needn't know the config\n * ext_id. An explicit `opts.model` still wins.\n */\nimport { useCallback } from 'react'\nimport {\n useAiTask as useKitAiTask,\n useWorkspaceDocs as useKitWorkspaceDocs,\n useSemanticSearch as useKitSemanticSearch,\n useArbiChat,\n useWorkspaceUsers,\n type ArbiChat,\n type UseArbiChatOptions,\n type AiRunOptions,\n} from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport { AssistantDock, type AssistantDockProps } from '../chat/AssistantDock'\nimport type { MentionCandidate } from '../chat/mentions'\n\nexport type { AiTaskStatus, AiRunOptions, SearchChunk, ArtifactEvent } from '@arbidocs/react'\n\n/** Client-side redlining, re-exported so a host app has one import surface. */\nexport { toRedlineMarkdown, redlineStats, textToArtifact } from '@arbidocs/react'\n\n/**\n * The kit's `useAiTask` with the host's default assistant configuration\n * injected, so call sites needn't know the config ext_id.\n */\nexport function useConnectedAiTask() {\n const { assistantConfig } = useConnection()\n const task = useKitAiTask()\n const kitRun = task.run\n const run = useCallback(\n (question: string, docIds: string[], opts?: AiRunOptions) =>\n kitRun(question, docIds, { ...opts, model: opts?.model ?? assistantConfig }),\n [kitRun, assistantConfig]\n )\n return { ...task, run }\n}\n\n/** Resolve the active workspace + its document ids (what we ground the agent on). */\nexport function useWorkspaceDocs() {\n const { workspaceId, fallbackWorkspaceId } = useConnection()\n return useKitWorkspaceDocs(workspaceId ?? fallbackWorkspaceId)\n}\n\n/** Search the active workspace's documents and return the top matching passages. */\nexport function useSemanticSearch() {\n const { docIds } = useWorkspaceDocs()\n return useKitSemanticSearch(docIds)\n}\n\n/**\n * The chat controller for `ChatPage` bound to the connection: the active workspace and the host's\n * default assistant configuration are injected, so a host writes\n * `<ChatPage chat={useConnectedChat()} />`.\n */\nexport function useConnectedChat(\n options?: Omit<UseArbiChatOptions, 'workspaceId'>\n): ArbiChat & { mentionCandidates: MentionCandidate[] } {\n const { workspaceId, fallbackWorkspaceId, assistantConfig, user, status, ensureWorkspaceOpen } =\n useConnection()\n const wsId = workspaceId ?? fallbackWorkspaceId\n const { data: members = [] } = useWorkspaceUsers(wsId, {\n enabled: status === 'authenticated' && !!wsId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const mentionCandidates: MentionCandidate[] = [\n { id: 'assistant', kind: 'assistant', label: 'Assistant' },\n ...(status === 'authenticated' ? members : [])\n .filter(\n (member) =>\n !member.agent_ext_id &&\n member.user.external_id !== user?.externalId &&\n !member.user.external_id.startsWith('agt-')\n )\n .map((member) => ({\n id: member.user.external_id,\n kind: 'user' as const,\n label:\n [member.user.given_name, member.user.family_name].filter(Boolean).join(' ') ||\n member.user.email,\n description: member.user.email,\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]\n const chat = useArbiChat({\n ...options,\n workspaceId: workspaceId ?? fallbackWorkspaceId,\n model: options?.model ?? assistantConfig,\n })\n return {\n ...chat,\n mentionCandidates,\n messages: chat.messages.map((message) => ({\n ...message,\n ...(message.authorId\n ? {\n senderName:\n message.authorId === user?.externalId\n ? user?.name || user?.email\n : mentionCandidates.find((candidate) => candidate.id === message.authorId)?.label,\n }\n : {}),\n })),\n }\n}\n\n/**\n * The assistant dock bound to the connection: mount it once in the layout (`Shell.Root`'s `aside`)\n * and put `AssistantDockToggle` in the topbar. Chat state lives here, so it survives closing the dock.\n */\nexport function ConnectedAssistantDock(props: Omit<AssistantDockProps, 'chat'>) {\n const chat = useConnectedChat()\n return <AssistantDock {...props} chat={chat} />\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useConnection } from './chunk-OYMWV45N.js';
|
|
3
|
-
import { AssistantDock } from './chunk-
|
|
3
|
+
import { AssistantDock } from './chunk-EWSEQEPL.js';
|
|
4
4
|
import { useCallback } from 'react';
|
|
5
5
|
import { useAiTask, useWorkspaceDocs as useWorkspaceDocs$1, useSemanticSearch as useSemanticSearch$1, useWorkspaceUsers, useArbiChat } from '@arbidocs/react';
|
|
6
6
|
export { redlineStats, textToArtifact, toRedlineMarkdown } from '@arbidocs/react';
|
|
@@ -64,5 +64,5 @@ function ConnectedAssistantDock(props) {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
export { ConnectedAssistantDock, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs };
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-XQDM6T6C.js.map
|
|
68
|
+
//# sourceMappingURL=chunk-XQDM6T6C.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/ai.tsx"],"names":["useKitAiTask","useKitWorkspaceDocs","useKitSemanticSearch"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/ai.tsx"],"names":["useKitAiTask","useKitWorkspaceDocs","useKitSemanticSearch"],"mappings":"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","file":"chunk-XQDM6T6C.js","sourcesContent":["/**\n * The connected agent hooks — thin adapters over the reusable AI kit in\n * `@arbidocs/react`. The streaming/accumulation/search plumbing lives once in\n * the SDK; these hooks only bind the *workspace source* (from the connection\n * context, falling back to the configured workspace) and inject the host's\n * default assistant *configuration* so call sites needn't know the config\n * ext_id. An explicit `opts.model` still wins.\n */\nimport { useCallback } from 'react'\nimport {\n useAiTask as useKitAiTask,\n useWorkspaceDocs as useKitWorkspaceDocs,\n useSemanticSearch as useKitSemanticSearch,\n useArbiChat,\n useWorkspaceUsers,\n type ArbiChat,\n type UseArbiChatOptions,\n type AiRunOptions,\n} from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport { AssistantDock, type AssistantDockProps } from '../chat/AssistantDock'\nimport type { MentionCandidate } from '../chat/mentions'\n\nexport type { AiTaskStatus, AiRunOptions, SearchChunk, ArtifactEvent } from '@arbidocs/react'\n\n/** Client-side redlining, re-exported so a host app has one import surface. */\nexport { toRedlineMarkdown, redlineStats, textToArtifact } from '@arbidocs/react'\n\n/**\n * The kit's `useAiTask` with the host's default assistant configuration\n * injected, so call sites needn't know the config ext_id.\n */\nexport function useConnectedAiTask() {\n const { assistantConfig } = useConnection()\n const task = useKitAiTask()\n const kitRun = task.run\n const run = useCallback(\n (question: string, docIds: string[], opts?: AiRunOptions) =>\n kitRun(question, docIds, { ...opts, model: opts?.model ?? assistantConfig }),\n [kitRun, assistantConfig]\n )\n return { ...task, run }\n}\n\n/** Resolve the active workspace + its document ids (what we ground the agent on). */\nexport function useWorkspaceDocs() {\n const { workspaceId, fallbackWorkspaceId } = useConnection()\n return useKitWorkspaceDocs(workspaceId ?? fallbackWorkspaceId)\n}\n\n/** Search the active workspace's documents and return the top matching passages. */\nexport function useSemanticSearch() {\n const { docIds } = useWorkspaceDocs()\n return useKitSemanticSearch(docIds)\n}\n\n/**\n * The chat controller for `ChatPage` bound to the connection: the active workspace and the host's\n * default assistant configuration are injected, so a host writes\n * `<ChatPage chat={useConnectedChat()} />`.\n */\nexport function useConnectedChat(\n options?: Omit<UseArbiChatOptions, 'workspaceId'>\n): ArbiChat & { mentionCandidates: MentionCandidate[] } {\n const { workspaceId, fallbackWorkspaceId, assistantConfig, user, status, ensureWorkspaceOpen } =\n useConnection()\n const wsId = workspaceId ?? fallbackWorkspaceId\n const { data: members = [] } = useWorkspaceUsers(wsId, {\n enabled: status === 'authenticated' && !!wsId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const mentionCandidates: MentionCandidate[] = [\n { id: 'assistant', kind: 'assistant', label: 'Assistant' },\n ...(status === 'authenticated' ? members : [])\n .filter(\n (member) =>\n !member.agent_ext_id &&\n member.user.external_id !== user?.externalId &&\n !member.user.external_id.startsWith('agt-')\n )\n .map((member) => ({\n id: member.user.external_id,\n kind: 'user' as const,\n label:\n [member.user.given_name, member.user.family_name].filter(Boolean).join(' ') ||\n member.user.email,\n description: member.user.email,\n }))\n .sort((a, b) => a.label.localeCompare(b.label)),\n ]\n const chat = useArbiChat({\n ...options,\n workspaceId: workspaceId ?? fallbackWorkspaceId,\n model: options?.model ?? assistantConfig,\n })\n return {\n ...chat,\n mentionCandidates,\n messages: chat.messages.map((message) => ({\n ...message,\n ...(message.authorId\n ? {\n senderName:\n message.authorId === user?.externalId\n ? user?.name || user?.email\n : mentionCandidates.find((candidate) => candidate.id === message.authorId)?.label,\n }\n : {}),\n })),\n }\n}\n\n/**\n * The assistant dock bound to the connection: mount it once in the layout (`Shell.Root`'s `aside`)\n * and put `AssistantDockToggle` in the topbar. Chat state lives here, so it survives closing the dock.\n */\nexport function ConnectedAssistantDock(props: Omit<AssistantDockProps, 'chat'>) {\n const chat = useConnectedChat()\n return <AssistantDock {...props} chat={chat} />\n}\n"]}
|
package/dist/connect/index.cjs
CHANGED
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkB3WCKBJ7_cjs = require('../chunk-B3WCKBJ7.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkXMBYDLZQ_cjs = require('../chunk-XMBYDLZQ.cjs');
|
|
6
6
|
var chunkTZR36PPP_cjs = require('../chunk-TZR36PPP.cjs');
|
|
7
7
|
var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
|
|
8
8
|
var chunkZVBPRMHJ_cjs = require('../chunk-ZVBPRMHJ.cjs');
|
|
9
9
|
require('../chunk-7YUFMNFW.cjs');
|
|
10
|
-
var
|
|
11
|
-
require('../chunk-
|
|
10
|
+
var chunkMLAHDAN5_cjs = require('../chunk-MLAHDAN5.cjs');
|
|
11
|
+
var chunkVFIZYSZB_cjs = require('../chunk-VFIZYSZB.cjs');
|
|
12
12
|
require('../chunk-7D737FLE.cjs');
|
|
13
|
+
require('../chunk-DETZZBG2.cjs');
|
|
13
14
|
var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
|
|
14
15
|
require('../chunk-ADOKTJHV.cjs');
|
|
15
|
-
var
|
|
16
|
+
var chunkMP6FK43E_cjs = require('../chunk-MP6FK43E.cjs');
|
|
16
17
|
require('../chunk-VGOFFCMT.cjs');
|
|
17
18
|
require('../chunk-B4SRYJLM.cjs');
|
|
18
19
|
require('../chunk-7UTB4PHM.cjs');
|
|
@@ -189,7 +190,7 @@ function StreamedArtifact({
|
|
|
189
190
|
}
|
|
190
191
|
var STARTING = /* @__PURE__ */ new Set(["pending", "running"]);
|
|
191
192
|
function formValues(step, inputs) {
|
|
192
|
-
const fields =
|
|
193
|
+
const fields = chunkVFIZYSZB_cjs.stepFields(step);
|
|
193
194
|
if (!fields.length) return void 0;
|
|
194
195
|
if (step.kind === "form")
|
|
195
196
|
return Object.fromEntries(fields.map((f) => [f.name, inputs[f.name] ?? ""]));
|
|
@@ -224,10 +225,10 @@ function useAnswerRetry(missing, refetch) {
|
|
|
224
225
|
function useWorkflowThread(workflow, options = {}) {
|
|
225
226
|
const arbi = react$1.useArbi();
|
|
226
227
|
const { ensureWorkspaceOpen, status } = chunkMUMH3Z6K_cjs.useConnection();
|
|
227
|
-
const { wsId } =
|
|
228
|
+
const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
|
|
228
229
|
const [threadId, setThreadId] = react.useState(options.conversationId);
|
|
229
230
|
const [localInputs, setLocalInputs] = react.useState(
|
|
230
|
-
() =>
|
|
231
|
+
() => chunkVFIZYSZB_cjs.initialRunInputs(workflow, options.initialInputs)
|
|
231
232
|
);
|
|
232
233
|
const [edits, setEdits] = react.useState({});
|
|
233
234
|
const [localStates, setLocalStates] = react.useState({});
|
|
@@ -247,12 +248,12 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
247
248
|
);
|
|
248
249
|
const conversation = conversations.data?.find((c) => c.external_id === threadId);
|
|
249
250
|
const steps = react.useMemo(
|
|
250
|
-
() =>
|
|
251
|
+
() => chunkVFIZYSZB_cjs.workflowSteps(workflow).length > 0 ? chunkVFIZYSZB_cjs.workflowSteps(workflow) : chunkVFIZYSZB_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
|
|
251
252
|
[workflow, conversation?.plan?.steps]
|
|
252
253
|
);
|
|
253
254
|
const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
|
|
254
255
|
const serverStates = react.useMemo(
|
|
255
|
-
() =>
|
|
256
|
+
() => chunkVFIZYSZB_cjs.stepStatesFromActivity(activity.data ?? []),
|
|
256
257
|
[activity.data]
|
|
257
258
|
);
|
|
258
259
|
const working = steps.some(
|
|
@@ -304,7 +305,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
304
305
|
if (!id) {
|
|
305
306
|
await ensureWorkspaceOpen();
|
|
306
307
|
const created = await createWork.mutateAsync({
|
|
307
|
-
title:
|
|
308
|
+
title: chunkVFIZYSZB_cjs.runThreadTitle(workflow, values).slice(0, 60),
|
|
308
309
|
description: workflow.description || null,
|
|
309
310
|
prompt: null,
|
|
310
311
|
skill_ref: null,
|
|
@@ -316,7 +317,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
316
317
|
criteria: [],
|
|
317
318
|
max_passes: 3,
|
|
318
319
|
documents: [],
|
|
319
|
-
steps:
|
|
320
|
+
steps: chunkVFIZYSZB_cjs.toPlanSteps(workflow, {
|
|
320
321
|
inputs: values,
|
|
321
322
|
resolveWorkflow: options.resolveWorkflow,
|
|
322
323
|
compose: options.compose
|
|
@@ -371,7 +372,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
371
372
|
[threadId, act]
|
|
372
373
|
);
|
|
373
374
|
const loaded = !options.conversationId || activity.isSuccess || activity.isError;
|
|
374
|
-
const view =
|
|
375
|
+
const view = chunkVFIZYSZB_cjs.useWorkflowView({
|
|
375
376
|
steps,
|
|
376
377
|
states,
|
|
377
378
|
inputs,
|
|
@@ -394,6 +395,38 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
394
395
|
);
|
|
395
396
|
return { view, conversationId: threadId, conversation, nameOf, people };
|
|
396
397
|
}
|
|
398
|
+
function WorkflowRunThread({
|
|
399
|
+
conversationId,
|
|
400
|
+
workspaceId,
|
|
401
|
+
aside,
|
|
402
|
+
stepTitle,
|
|
403
|
+
targetMessageId,
|
|
404
|
+
onOpenCitation,
|
|
405
|
+
labels,
|
|
406
|
+
className
|
|
407
|
+
}) {
|
|
408
|
+
const chat = react$1.useArbiChat({ workspaceId });
|
|
409
|
+
const listed = chat.threads.some((t) => t.id === conversationId);
|
|
410
|
+
const { selectThread, activeThreadId } = chat;
|
|
411
|
+
react.useEffect(() => {
|
|
412
|
+
if (listed && activeThreadId !== conversationId) selectThread(conversationId);
|
|
413
|
+
}, [listed, activeThreadId, conversationId, selectThread]);
|
|
414
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
415
|
+
chunkMP6FK43E_cjs.ChatPage,
|
|
416
|
+
{
|
|
417
|
+
chat: { ...chat, threads: chat.threads.filter((t) => t.id === conversationId) },
|
|
418
|
+
singleThread: true,
|
|
419
|
+
documentsRequired: false,
|
|
420
|
+
aside,
|
|
421
|
+
asideBreakpoint: 52,
|
|
422
|
+
workflowStepTitle: stepTitle,
|
|
423
|
+
targetMessageId,
|
|
424
|
+
onOpenCitation,
|
|
425
|
+
labels,
|
|
426
|
+
className: className ?? "h-[min(78dvh,860px)] min-h-[480px] rounded-xl border border-border"
|
|
427
|
+
}
|
|
428
|
+
);
|
|
429
|
+
}
|
|
397
430
|
var DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS = {
|
|
398
431
|
loadingDocument: "Opening the document\u2026",
|
|
399
432
|
documentFailed: "The document could not be opened.",
|
|
@@ -411,7 +444,7 @@ function WorkflowSignDialog({
|
|
|
411
444
|
const arbi = react$1.useArbi();
|
|
412
445
|
const { user, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
|
|
413
446
|
const tools = documentTools.useOptionalDocumentTools();
|
|
414
|
-
const { id, version } =
|
|
447
|
+
const { id, version } = chunkVFIZYSZB_cjs.splitDocRef(docRef);
|
|
415
448
|
const [pdf, setPdf] = react.useState(null);
|
|
416
449
|
const [failed, setFailed] = react.useState(false);
|
|
417
450
|
react.useEffect(() => {
|
|
@@ -463,7 +496,7 @@ function WorkflowWordDialog({
|
|
|
463
496
|
onClose,
|
|
464
497
|
labels
|
|
465
498
|
}) {
|
|
466
|
-
const { id } =
|
|
499
|
+
const { id } = chunkVFIZYSZB_cjs.splitDocRef(docRef);
|
|
467
500
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
468
501
|
chunkULWRNGGE_cjs.ModalScaffold,
|
|
469
502
|
{
|
|
@@ -547,6 +580,8 @@ function Cell({ onClick, children }) {
|
|
|
547
580
|
}
|
|
548
581
|
var DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = {
|
|
549
582
|
notify: "Ask to approve",
|
|
583
|
+
showInThread: "Show in the thread",
|
|
584
|
+
currentStep: "Current step",
|
|
550
585
|
notified: "Notified.",
|
|
551
586
|
openThread: "Open the thread",
|
|
552
587
|
loadingAnswer: "Fetching the answer\u2026"
|
|
@@ -562,6 +597,7 @@ function ConnectedWorkflowRunner({
|
|
|
562
597
|
onOpenMessage,
|
|
563
598
|
actions: hostActions,
|
|
564
599
|
dialogLabels,
|
|
600
|
+
layout = "thread",
|
|
565
601
|
testIdPrefix = "workflow-run",
|
|
566
602
|
...runnerProps
|
|
567
603
|
}) {
|
|
@@ -569,7 +605,7 @@ function ConnectedWorkflowRunner({
|
|
|
569
605
|
const dl = { ...DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS, ...dialogLabels };
|
|
570
606
|
const arbi = react$1.useArbi();
|
|
571
607
|
const { ensureWorkspaceOpen, user } = chunkMUMH3Z6K_cjs.useConnection();
|
|
572
|
-
const { wsId } =
|
|
608
|
+
const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
|
|
573
609
|
const { data: docs = [], refetch } = react$1.useDocuments(wsId);
|
|
574
610
|
const [uploading, setUploading] = react.useState(false);
|
|
575
611
|
const [added, setAdded] = react.useState({});
|
|
@@ -581,6 +617,8 @@ function ConnectedWorkflowRunner({
|
|
|
581
617
|
documentsFor: options?.documentsFor ?? ((stepId) => Object.entries(addedRef.current).flatMap(([doc, step]) => step === stepId ? [doc] : []))
|
|
582
618
|
});
|
|
583
619
|
const [dialog, setDialog] = react.useState(null);
|
|
620
|
+
const inThread = layout === "thread" && !!conversationId;
|
|
621
|
+
const [target, setTarget] = react.useState(void 0);
|
|
584
622
|
const nameOfDoc = react.useCallback(
|
|
585
623
|
(id) => docs.find((d) => d.external_id === id)?.file_name ?? void 0,
|
|
586
624
|
[docs]
|
|
@@ -589,19 +627,20 @@ function ConnectedWorkflowRunner({
|
|
|
589
627
|
() => ({
|
|
590
628
|
me: user?.externalId,
|
|
591
629
|
openDocument: onOpenDocument && ((ref) => {
|
|
592
|
-
const { id, version } =
|
|
630
|
+
const { id, version } = chunkVFIZYSZB_cjs.splitDocRef(ref);
|
|
593
631
|
onOpenDocument(id, version);
|
|
594
632
|
}),
|
|
595
633
|
openDraft: onOpenDraft && ((draftId) => onOpenDraft(draftId)),
|
|
596
|
-
|
|
634
|
+
// In the thread layout an answer is right there: scroll to it.
|
|
635
|
+
openMessage: inThread ? setTarget : onOpenMessage,
|
|
597
636
|
sign: hostActions?.sign ?? ((_step, state) => {
|
|
598
637
|
const w = state.waiting;
|
|
599
638
|
if (w?.doc_ext_id) setDialog({ kind: "sign", docRef: w.doc_ext_id });
|
|
600
639
|
}),
|
|
601
|
-
openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(
|
|
640
|
+
openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkVFIZYSZB_cjs.splitDocRef(ref).id) ?? "" })),
|
|
602
641
|
openReview: hostActions?.openReview ?? ((tags, documents) => setDialog({ kind: "review", tags, documents }))
|
|
603
642
|
}),
|
|
604
|
-
[user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc]
|
|
643
|
+
[user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc, inThread]
|
|
605
644
|
);
|
|
606
645
|
const onUpload = react.useCallback(
|
|
607
646
|
async (files2, step) => {
|
|
@@ -634,6 +673,23 @@ function ConnectedWorkflowRunner({
|
|
|
634
673
|
}, [reading, refetch]);
|
|
635
674
|
const renderAgentOutput = (step, state) => {
|
|
636
675
|
const status = state?.status;
|
|
676
|
+
if (inThread) {
|
|
677
|
+
const id = state?.responseId;
|
|
678
|
+
return id && status === "done" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
679
|
+
ui.Button,
|
|
680
|
+
{
|
|
681
|
+
variant: "outline",
|
|
682
|
+
size: "sm",
|
|
683
|
+
onClick: () => setTarget(id),
|
|
684
|
+
"data-testid": `${testIdPrefix}-${step.id}-show-in-thread`,
|
|
685
|
+
children: [
|
|
686
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageSquare, { className: "size-4" }),
|
|
687
|
+
" ",
|
|
688
|
+
l.showInThread
|
|
689
|
+
]
|
|
690
|
+
}
|
|
691
|
+
) : null;
|
|
692
|
+
}
|
|
637
693
|
if (!state?.text && status !== "done") return null;
|
|
638
694
|
if (!state?.text && state?.responseId) {
|
|
639
695
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -659,6 +715,34 @@ function ConnectedWorkflowRunner({
|
|
|
659
715
|
}
|
|
660
716
|
);
|
|
661
717
|
};
|
|
718
|
+
const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
719
|
+
chunkVFIZYSZB_cjs.WorkflowRunner,
|
|
720
|
+
{
|
|
721
|
+
people,
|
|
722
|
+
...runnerProps,
|
|
723
|
+
workflow,
|
|
724
|
+
run: view,
|
|
725
|
+
renderAgentOutput,
|
|
726
|
+
renderReview: (step) => conversationId ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
727
|
+
ReviewNotify,
|
|
728
|
+
{
|
|
729
|
+
conversationId,
|
|
730
|
+
workspaceId: wsId,
|
|
731
|
+
labels: l,
|
|
732
|
+
testId: `${testIdPrefix}-${step.id}`
|
|
733
|
+
}
|
|
734
|
+
) : null,
|
|
735
|
+
onUpload,
|
|
736
|
+
uploading,
|
|
737
|
+
files,
|
|
738
|
+
actions,
|
|
739
|
+
nameOfDoc,
|
|
740
|
+
testIdPrefix,
|
|
741
|
+
hideStepBar: compact,
|
|
742
|
+
compact,
|
|
743
|
+
className: compact ? void 0 : runnerProps.className
|
|
744
|
+
}
|
|
745
|
+
);
|
|
662
746
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
663
747
|
conversationId && onOpenConversation && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
664
748
|
ui.Button,
|
|
@@ -674,31 +758,29 @@ function ConnectedWorkflowRunner({
|
|
|
674
758
|
]
|
|
675
759
|
}
|
|
676
760
|
) }),
|
|
677
|
-
/* @__PURE__ */ jsxRuntime.
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
}
|
|
701
|
-
),
|
|
761
|
+
inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
762
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
763
|
+
chunkVFIZYSZB_cjs.WorkflowStepBar,
|
|
764
|
+
{
|
|
765
|
+
run: view,
|
|
766
|
+
levels: chunkVFIZYSZB_cjs.stepLevels(view.steps),
|
|
767
|
+
doneTitle: (workflow.run.kind === "steps" ? workflow.run.completion?.title : void 0) ?? runnerProps.labels?.complete ?? "Done",
|
|
768
|
+
icon: (key) => key && runnerProps.renderIcon ? runnerProps.renderIcon(key) : void 0,
|
|
769
|
+
tid: (suffix) => `${testIdPrefix}-${suffix}`
|
|
770
|
+
}
|
|
771
|
+
),
|
|
772
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
773
|
+
WorkflowRunThread,
|
|
774
|
+
{
|
|
775
|
+
conversationId,
|
|
776
|
+
workspaceId: wsId,
|
|
777
|
+
stepTitle: (id) => view.steps.find((s) => s.id === id)?.title,
|
|
778
|
+
targetMessageId: target,
|
|
779
|
+
labels: { workflows: l.currentStep },
|
|
780
|
+
aside: runner(true)
|
|
781
|
+
}
|
|
782
|
+
)
|
|
783
|
+
] }) : runner(false),
|
|
702
784
|
dialog?.kind === "sign" && /* @__PURE__ */ jsxRuntime.jsx(WorkflowSignDialog, { docRef: dialog.docRef, onClose: () => setDialog(null), labels: dl }),
|
|
703
785
|
dialog?.kind === "word" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
704
786
|
WorkflowWordDialog,
|
|
@@ -793,6 +875,78 @@ function ReviewNotify({
|
|
|
793
875
|
] })
|
|
794
876
|
] });
|
|
795
877
|
}
|
|
878
|
+
function ConnectedTagMatrix({
|
|
879
|
+
parentId,
|
|
880
|
+
linksLimit = 3,
|
|
881
|
+
exportTitle,
|
|
882
|
+
onExported,
|
|
883
|
+
readOnly,
|
|
884
|
+
...props
|
|
885
|
+
}) {
|
|
886
|
+
const arbi = react$1.useArbi();
|
|
887
|
+
const { workspaceId, status, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
|
|
888
|
+
const matrix = react$1.useTagMatrix({ parentId }, { linksLimit });
|
|
889
|
+
const update = react$1.useUpdateTagFields();
|
|
890
|
+
const invalidate = react$1.useInvalidateTagData();
|
|
891
|
+
const members = react$1.useWorkspaceUsers(workspaceId ?? void 0, {
|
|
892
|
+
enabled: status === "authenticated" && !!workspaceId,
|
|
893
|
+
beforeFetch: ensureWorkspaceOpen
|
|
894
|
+
});
|
|
895
|
+
const [error, setError] = react.useState(null);
|
|
896
|
+
const people = (members.data ?? []).map((m) => ({
|
|
897
|
+
value: m.user.external_id,
|
|
898
|
+
label: [m.user.given_name, m.user.family_name].filter(Boolean).join(" ") || m.user.email
|
|
899
|
+
}));
|
|
900
|
+
const fail = (e) => setError(e instanceof Error ? e.message : String(e));
|
|
901
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
902
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
903
|
+
chunkMLAHDAN5_cjs.TagMatrix,
|
|
904
|
+
{
|
|
905
|
+
...props,
|
|
906
|
+
matrix: matrix.data,
|
|
907
|
+
isLoading: matrix.isLoading,
|
|
908
|
+
people,
|
|
909
|
+
onChangeValue: readOnly ? void 0 : async (tagId, fieldId, value) => {
|
|
910
|
+
setError(null);
|
|
911
|
+
await update.mutateAsync({ tagId, values: { [fieldId]: value } }).catch(fail);
|
|
912
|
+
},
|
|
913
|
+
onAddRow: readOnly ? void 0 : async (name) => {
|
|
914
|
+
setError(null);
|
|
915
|
+
try {
|
|
916
|
+
await ensureWorkspaceOpen();
|
|
917
|
+
await arbi.tags.create({ name, parentId });
|
|
918
|
+
await invalidate();
|
|
919
|
+
} catch (e) {
|
|
920
|
+
fail(e);
|
|
921
|
+
}
|
|
922
|
+
},
|
|
923
|
+
onExport: onExported && matrix.data ? async () => {
|
|
924
|
+
setError(null);
|
|
925
|
+
try {
|
|
926
|
+
const data = matrix.data;
|
|
927
|
+
if (!data) return;
|
|
928
|
+
const title = exportTitle ?? data.parent?.name ?? "Matrix";
|
|
929
|
+
const markdown = chunkMLAHDAN5_cjs.tagMatrixMarkdown(data, {
|
|
930
|
+
title,
|
|
931
|
+
nameOf: (id2) => people.find((p) => p.value === id2)?.label
|
|
932
|
+
});
|
|
933
|
+
await ensureWorkspaceOpen();
|
|
934
|
+
const stamp = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
935
|
+
const uploaded = await arbi.documents.uploadFile(
|
|
936
|
+
new Blob([markdown], { type: "text/markdown" }),
|
|
937
|
+
`${title} (${stamp}).md`
|
|
938
|
+
);
|
|
939
|
+
const id = uploaded?.doc_ext_ids?.[0];
|
|
940
|
+
if (id) onExported(id);
|
|
941
|
+
} catch (e) {
|
|
942
|
+
fail(e);
|
|
943
|
+
}
|
|
944
|
+
} : void 0
|
|
945
|
+
}
|
|
946
|
+
),
|
|
947
|
+
error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-sm text-destructive", children: error })
|
|
948
|
+
] });
|
|
949
|
+
}
|
|
796
950
|
function useConnectedShellWorkspaces(options = {}) {
|
|
797
951
|
const { workspaceId, setWorkspace } = chunkMUMH3Z6K_cjs.useConnection();
|
|
798
952
|
const query = react$1.useWorkspaces();
|
|
@@ -1331,7 +1485,7 @@ function mapWorkNotification(note) {
|
|
|
1331
1485
|
function ActiveChat({ agentId, workspaceId }) {
|
|
1332
1486
|
const chat = react$1.useArbiChat({ agentId, workspaceId });
|
|
1333
1487
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1334
|
-
|
|
1488
|
+
chunkMP6FK43E_cjs.ChatPage,
|
|
1335
1489
|
{
|
|
1336
1490
|
chat: { ...chat, assistantMode: void 0, setAssistantMode: void 0 },
|
|
1337
1491
|
documentsRequired: false,
|
|
@@ -1393,35 +1547,35 @@ function ConnectedAgentChatPanel({
|
|
|
1393
1547
|
|
|
1394
1548
|
Object.defineProperty(exports, "ConnectedAssistantDock", {
|
|
1395
1549
|
enumerable: true,
|
|
1396
|
-
get: function () { return
|
|
1550
|
+
get: function () { return chunkXMBYDLZQ_cjs.ConnectedAssistantDock; }
|
|
1397
1551
|
});
|
|
1398
1552
|
Object.defineProperty(exports, "redlineStats", {
|
|
1399
1553
|
enumerable: true,
|
|
1400
|
-
get: function () { return
|
|
1554
|
+
get: function () { return chunkXMBYDLZQ_cjs.redlineStats; }
|
|
1401
1555
|
});
|
|
1402
1556
|
Object.defineProperty(exports, "textToArtifact", {
|
|
1403
1557
|
enumerable: true,
|
|
1404
|
-
get: function () { return
|
|
1558
|
+
get: function () { return chunkXMBYDLZQ_cjs.textToArtifact; }
|
|
1405
1559
|
});
|
|
1406
1560
|
Object.defineProperty(exports, "toRedlineMarkdown", {
|
|
1407
1561
|
enumerable: true,
|
|
1408
|
-
get: function () { return
|
|
1562
|
+
get: function () { return chunkXMBYDLZQ_cjs.toRedlineMarkdown; }
|
|
1409
1563
|
});
|
|
1410
1564
|
Object.defineProperty(exports, "useConnectedAiTask", {
|
|
1411
1565
|
enumerable: true,
|
|
1412
|
-
get: function () { return
|
|
1566
|
+
get: function () { return chunkXMBYDLZQ_cjs.useConnectedAiTask; }
|
|
1413
1567
|
});
|
|
1414
1568
|
Object.defineProperty(exports, "useConnectedChat", {
|
|
1415
1569
|
enumerable: true,
|
|
1416
|
-
get: function () { return
|
|
1570
|
+
get: function () { return chunkXMBYDLZQ_cjs.useConnectedChat; }
|
|
1417
1571
|
});
|
|
1418
1572
|
Object.defineProperty(exports, "useSemanticSearch", {
|
|
1419
1573
|
enumerable: true,
|
|
1420
|
-
get: function () { return
|
|
1574
|
+
get: function () { return chunkXMBYDLZQ_cjs.useSemanticSearch; }
|
|
1421
1575
|
});
|
|
1422
1576
|
Object.defineProperty(exports, "useWorkspaceDocs", {
|
|
1423
1577
|
enumerable: true,
|
|
1424
|
-
get: function () { return
|
|
1578
|
+
get: function () { return chunkXMBYDLZQ_cjs.useWorkspaceDocs; }
|
|
1425
1579
|
});
|
|
1426
1580
|
Object.defineProperty(exports, "ConnectionProvider", {
|
|
1427
1581
|
enumerable: true,
|
|
@@ -1450,10 +1604,12 @@ exports.ConnectedRequireVerified = ConnectedRequireVerified;
|
|
|
1450
1604
|
exports.ConnectedSecuritySection = ConnectedSecuritySection;
|
|
1451
1605
|
exports.ConnectedSessionsRow = ConnectedSessionsRow;
|
|
1452
1606
|
exports.ConnectedSkillUpload = ConnectedSkillUpload;
|
|
1607
|
+
exports.ConnectedTagMatrix = ConnectedTagMatrix;
|
|
1453
1608
|
exports.ConnectedTaskAccessRequest = ConnectedTaskAccessRequest;
|
|
1454
1609
|
exports.ConnectedWorkflowRunner = ConnectedWorkflowRunner;
|
|
1455
1610
|
exports.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS;
|
|
1456
1611
|
exports.StreamedArtifact = StreamedArtifact;
|
|
1612
|
+
exports.WorkflowRunThread = WorkflowRunThread;
|
|
1457
1613
|
exports.defaultUnmetPasswordRequirement = defaultUnmetPasswordRequirement;
|
|
1458
1614
|
exports.useConnectedDocxNotifications = useConnectedDocxNotifications;
|
|
1459
1615
|
exports.useConnectedShellWorkspaces = useConnectedShellWorkspaces;
|