@arbidocs/blocks 0.5.65 → 0.5.66
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-GJAGY75U.cjs → ConnectedCallDock-FFIDDYGH.cjs} +6 -6
- package/dist/{ConnectedCallDock-GJAGY75U.cjs.map → ConnectedCallDock-FFIDDYGH.cjs.map} +1 -1
- package/dist/{ConnectedCallDock-DEAEFUUD.js → ConnectedCallDock-VMEBH4LG.js} +6 -6
- package/dist/{ConnectedCallDock-DEAEFUUD.js.map → ConnectedCallDock-VMEBH4LG.js.map} +1 -1
- package/dist/{ConnectedCallRoom-DI7UYRHE.js → ConnectedCallRoom-2FNSX2VG.js} +6 -6
- package/dist/{ConnectedCallRoom-DI7UYRHE.js.map → ConnectedCallRoom-2FNSX2VG.js.map} +1 -1
- package/dist/{ConnectedCallRoom-KLE2PCMQ.cjs → ConnectedCallRoom-HYRLJUIV.cjs} +6 -6
- package/dist/{ConnectedCallRoom-KLE2PCMQ.cjs.map → ConnectedCallRoom-HYRLJUIV.cjs.map} +1 -1
- package/dist/{ConnectedDocumentViewer-YSZWOVGN.cjs → ConnectedDocumentViewer-S6YKCCRN.cjs} +9 -9
- package/dist/{ConnectedDocumentViewer-YSZWOVGN.cjs.map → ConnectedDocumentViewer-S6YKCCRN.cjs.map} +1 -1
- package/dist/{ConnectedDocumentViewer-HKIBNGGG.js → ConnectedDocumentViewer-XFQDHVWM.js} +9 -9
- package/dist/{ConnectedDocumentViewer-HKIBNGGG.js.map → ConnectedDocumentViewer-XFQDHVWM.js.map} +1 -1
- package/dist/agents/index.cjs +260 -260
- package/dist/agents/index.js +3 -3
- package/dist/calls/index.cjs +2 -2
- package/dist/calls/index.js +2 -2
- package/dist/chat/index.cjs +57 -57
- package/dist/chat/index.js +4 -4
- package/dist/{chunk-F777MGVA.cjs → chunk-3SHZPTR2.cjs} +18 -18
- package/dist/{chunk-F777MGVA.cjs.map → chunk-3SHZPTR2.cjs.map} +1 -1
- package/dist/{chunk-TVHTXO6V.cjs → chunk-56WWEK6I.cjs} +4 -4
- package/dist/{chunk-TVHTXO6V.cjs.map → chunk-56WWEK6I.cjs.map} +1 -1
- package/dist/{chunk-CGCTODPC.cjs → chunk-6PGTH2HD.cjs} +4 -4
- package/dist/{chunk-CGCTODPC.cjs.map → chunk-6PGTH2HD.cjs.map} +1 -1
- package/dist/{chunk-6QZ35CTZ.js → chunk-AD76WTGR.js} +3 -3
- package/dist/{chunk-6QZ35CTZ.js.map → chunk-AD76WTGR.js.map} +1 -1
- package/dist/{chunk-ROWJU4SK.cjs → chunk-AKGV6JUC.cjs} +12 -128
- package/dist/chunk-AKGV6JUC.cjs.map +1 -0
- package/dist/{chunk-UIUWCTIZ.js → chunk-APXW5XGA.js} +165 -4
- package/dist/chunk-APXW5XGA.js.map +1 -0
- package/dist/{chunk-SEVFIBF3.cjs → chunk-BFIHXDO6.cjs} +4 -4
- package/dist/{chunk-SEVFIBF3.cjs.map → chunk-BFIHXDO6.cjs.map} +1 -1
- package/dist/{chunk-JSHBC47B.cjs → chunk-BP5KBZLX.cjs} +38 -38
- package/dist/{chunk-JSHBC47B.cjs.map → chunk-BP5KBZLX.cjs.map} +1 -1
- package/dist/{chunk-YQEXBJVO.js → chunk-DF5X27QX.js} +42 -5
- package/dist/chunk-DF5X27QX.js.map +1 -0
- package/dist/{chunk-CJF7B5A7.cjs → chunk-DRUNPUDT.cjs} +3 -3
- package/dist/{chunk-CJF7B5A7.cjs.map → chunk-DRUNPUDT.cjs.map} +1 -1
- package/dist/{chunk-6OMIIF76.js → chunk-EM4KOKE6.js} +3 -3
- package/dist/{chunk-6OMIIF76.js.map → chunk-EM4KOKE6.js.map} +1 -1
- package/dist/{chunk-GPYLXEZO.js → chunk-FCOK73I3.js} +6 -120
- package/dist/chunk-FCOK73I3.js.map +1 -0
- package/dist/{chunk-ITRI47DF.cjs → chunk-GMGEAWFX.cjs} +41 -4
- package/dist/chunk-GMGEAWFX.cjs.map +1 -0
- package/dist/{chunk-LNH6NYG4.js → chunk-I3VBVP6R.js} +121 -6
- package/dist/chunk-I3VBVP6R.js.map +1 -0
- package/dist/{chunk-ZZHMJXM5.cjs → chunk-IXZCXK6Q.cjs} +122 -5
- package/dist/chunk-IXZCXK6Q.cjs.map +1 -0
- package/dist/{chunk-C2S246BV.js → chunk-J6FRFIVL.js} +3 -3
- package/dist/{chunk-C2S246BV.js.map → chunk-J6FRFIVL.js.map} +1 -1
- package/dist/{chunk-PLEMVK2W.js → chunk-KQLUMK56.js} +3 -3
- package/dist/{chunk-PLEMVK2W.js.map → chunk-KQLUMK56.js.map} +1 -1
- package/dist/{chunk-PNZVUH46.cjs → chunk-LAQ3Y5JP.cjs} +6 -6
- package/dist/{chunk-PNZVUH46.cjs.map → chunk-LAQ3Y5JP.cjs.map} +1 -1
- package/dist/{chunk-AESJLGMC.cjs → chunk-NDKZ6OR3.cjs} +6 -6
- package/dist/{chunk-AESJLGMC.cjs.map → chunk-NDKZ6OR3.cjs.map} +1 -1
- package/dist/{chunk-43IVRSFX.js → chunk-NVXNTHL4.js} +3 -3
- package/dist/{chunk-43IVRSFX.js.map → chunk-NVXNTHL4.js.map} +1 -1
- package/dist/{chunk-5EGTGHBW.js → chunk-PMWZTVIY.js} +3 -3
- package/dist/{chunk-5EGTGHBW.js.map → chunk-PMWZTVIY.js.map} +1 -1
- package/dist/{chunk-7MOQO6NO.cjs → chunk-RB54N5I7.cjs} +53 -5
- package/dist/chunk-RB54N5I7.cjs.map +1 -0
- package/dist/{chunk-2C4YUIVX.js → chunk-T2VGD4X6.js} +3 -3
- package/dist/{chunk-2C4YUIVX.js.map → chunk-T2VGD4X6.js.map} +1 -1
- package/dist/{chunk-4Q7ON335.js → chunk-TCCJ5I6G.js} +3 -3
- package/dist/{chunk-4Q7ON335.js.map → chunk-TCCJ5I6G.js.map} +1 -1
- package/dist/{chunk-4CI42DCG.js → chunk-U52KPOXT.js} +50 -5
- package/dist/chunk-U52KPOXT.js.map +1 -0
- package/dist/{chunk-SFTQO3TU.js → chunk-UO3FS6ZF.js} +3 -3
- package/dist/{chunk-SFTQO3TU.js.map → chunk-UO3FS6ZF.js.map} +1 -1
- package/dist/{chunk-LFS6UWSJ.cjs → chunk-XWUGPV7H.cjs} +5 -5
- package/dist/{chunk-LFS6UWSJ.cjs.map → chunk-XWUGPV7H.cjs.map} +1 -1
- package/dist/{chunk-OM5IVNEW.cjs → chunk-Z4KXF7WS.cjs} +165 -2
- package/dist/chunk-Z4KXF7WS.cjs.map +1 -0
- package/dist/connect/index.cjs +564 -283
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +3 -0
- package/dist/connect/index.js +292 -19
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +7 -7
- package/dist/connect/viewer.js +7 -7
- package/dist/connection/runtime/ConnectedAppRuntime.d.ts +1 -1
- package/dist/connection/runtime/index.d.ts +1 -1
- package/dist/connection/runtime/requests.d.ts +8 -0
- package/dist/connection/runtime/useWelcomeDialog.d.ts +3 -0
- package/dist/connection/tips/ConnectedGettingStarted.d.ts +20 -0
- package/dist/connection/tips/ConnectedTipBar.d.ts +49 -0
- package/dist/connection/tips/useGettingStarted.d.ts +51 -0
- package/dist/embed/index.cjs +1 -1
- package/dist/embed/index.js +1 -1
- package/dist/home/index.cjs +23 -178
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +3 -164
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +457 -485
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -54
- package/dist/index.js.map +1 -1
- package/dist/shell/index.cjs +73 -73
- package/dist/shell/index.js +4 -4
- package/dist/studio/index.cjs +8 -8
- package/dist/studio/index.js +5 -5
- package/dist/tips/index.d.ts +1 -1
- package/dist/tips/visibility.d.ts +7 -0
- package/dist/workflow-canvas/index.cjs +17 -17
- package/dist/workflow-canvas/index.js +4 -4
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/chunk-4CI42DCG.js.map +0 -1
- package/dist/chunk-7MOQO6NO.cjs.map +0 -1
- package/dist/chunk-GPYLXEZO.js.map +0 -1
- package/dist/chunk-ITRI47DF.cjs.map +0 -1
- package/dist/chunk-LNH6NYG4.js.map +0 -1
- package/dist/chunk-OM5IVNEW.cjs.map +0 -1
- package/dist/chunk-ROWJU4SK.cjs.map +0 -1
- package/dist/chunk-UIUWCTIZ.js.map +0 -1
- package/dist/chunk-YQEXBJVO.js.map +0 -1
- package/dist/chunk-ZZHMJXM5.cjs.map +0 -1
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import { Callout } from './chunk-UJE32SST.js';
|
|
3
3
|
import { SectionHeader, EmptyStrip } from './chunk-SBVOYSOO.js';
|
|
4
4
|
import { ActionLink } from './chunk-ELT2V4NB.js';
|
|
5
|
+
import { testIdOr, prefixedTestId } from './chunk-7F6CBP3Z.js';
|
|
5
6
|
import { cn, Button } from '@arbidocs/react/ui';
|
|
6
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
import { Plus } from 'lucide-react';
|
|
8
|
+
import { Plus, PartyPopper, X } from 'lucide-react';
|
|
8
9
|
|
|
9
10
|
function HomeFrame({
|
|
10
11
|
testId = "home-page",
|
|
@@ -298,7 +299,167 @@ function RecentList({
|
|
|
298
299
|
}
|
|
299
300
|
);
|
|
300
301
|
}
|
|
302
|
+
var DEFAULT_GETTING_STARTED_STRIP_LABELS = {
|
|
303
|
+
allSet: (firstName) => `You\u2019re all set${firstName ? `, ${firstName}` : ""}!`,
|
|
304
|
+
finished: (stepCount) => `You\u2019ve finished the ${stepCount} getting-started steps \u2014 explore away.`,
|
|
305
|
+
done: "Done",
|
|
306
|
+
welcome: (firstName) => `Welcome, ${firstName}`,
|
|
307
|
+
getStarted: "Get started with ARBI",
|
|
308
|
+
replayDone: "Nicely done \u2014 that\u2019s the tour again",
|
|
309
|
+
almostThere: "Almost there",
|
|
310
|
+
dismiss: "Dismiss getting started"
|
|
311
|
+
};
|
|
312
|
+
function circleClasses(done, isCurrent) {
|
|
313
|
+
if (done) return "border-primary bg-primary text-primary-foreground";
|
|
314
|
+
if (isCurrent) return "border-primary bg-accent text-accent-foreground";
|
|
315
|
+
return "border-border text-muted-foreground";
|
|
316
|
+
}
|
|
317
|
+
function Journey({
|
|
318
|
+
steps,
|
|
319
|
+
currentStepId,
|
|
320
|
+
testId
|
|
321
|
+
}) {
|
|
322
|
+
return /* @__PURE__ */ jsx(
|
|
323
|
+
"ol",
|
|
324
|
+
{
|
|
325
|
+
className: "hidden min-w-0 shrink items-center overflow-x-auto sm:flex",
|
|
326
|
+
"data-slot": "journey",
|
|
327
|
+
"data-testid": testIdOr(testId, { testId: "getting-started-stepper" }),
|
|
328
|
+
children: steps.map((step, i) => {
|
|
329
|
+
const isCurrent = step.id === currentStepId;
|
|
330
|
+
return /* @__PURE__ */ jsxs(
|
|
331
|
+
"li",
|
|
332
|
+
{
|
|
333
|
+
className: "flex shrink-0 items-center",
|
|
334
|
+
"data-testid": prefixedTestId(testId, step.id, {
|
|
335
|
+
testId: `getting-started-stepper-${step.id}`
|
|
336
|
+
}),
|
|
337
|
+
"data-done": step.done,
|
|
338
|
+
"data-current": isCurrent,
|
|
339
|
+
children: [
|
|
340
|
+
i > 0 && /* @__PURE__ */ jsx(
|
|
341
|
+
"span",
|
|
342
|
+
{
|
|
343
|
+
className: cn(
|
|
344
|
+
"h-0 w-3 shrink-0 border-t-2 border-solid transition-colors duration-500",
|
|
345
|
+
steps[i - 1].done ? "border-primary" : "border-border"
|
|
346
|
+
)
|
|
347
|
+
}
|
|
348
|
+
),
|
|
349
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
|
|
350
|
+
/* @__PURE__ */ jsx(
|
|
351
|
+
"span",
|
|
352
|
+
{
|
|
353
|
+
className: cn(
|
|
354
|
+
"flex size-6 shrink-0 items-center justify-center rounded-full border-2 text-xs font-semibold tabular-nums transition-colors",
|
|
355
|
+
circleClasses(step.done, isCurrent)
|
|
356
|
+
),
|
|
357
|
+
children: i + 1
|
|
358
|
+
}
|
|
359
|
+
),
|
|
360
|
+
/* @__PURE__ */ jsx(
|
|
361
|
+
"span",
|
|
362
|
+
{
|
|
363
|
+
className: cn(
|
|
364
|
+
"text-sm font-medium",
|
|
365
|
+
step.done ? "text-muted-foreground line-through" : isCurrent ? "text-foreground" : "text-muted-foreground"
|
|
366
|
+
),
|
|
367
|
+
children: step.title
|
|
368
|
+
}
|
|
369
|
+
),
|
|
370
|
+
isCurrent && !step.done && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
371
|
+
"\u2014 ",
|
|
372
|
+
step.description
|
|
373
|
+
] })
|
|
374
|
+
] })
|
|
375
|
+
]
|
|
376
|
+
},
|
|
377
|
+
step.id
|
|
378
|
+
);
|
|
379
|
+
})
|
|
380
|
+
}
|
|
381
|
+
);
|
|
382
|
+
}
|
|
383
|
+
function GettingStartedStrip({
|
|
384
|
+
steps,
|
|
385
|
+
currentStepId,
|
|
386
|
+
firstName,
|
|
387
|
+
isReplay = false,
|
|
388
|
+
isComplete = false,
|
|
389
|
+
onDismiss,
|
|
390
|
+
logo,
|
|
391
|
+
labels,
|
|
392
|
+
className,
|
|
393
|
+
testId,
|
|
394
|
+
testIds
|
|
395
|
+
}) {
|
|
396
|
+
const l = { ...DEFAULT_GETTING_STARTED_STRIP_LABELS, ...labels };
|
|
397
|
+
if (isComplete && !isReplay) {
|
|
398
|
+
return /* @__PURE__ */ jsxs(
|
|
399
|
+
"div",
|
|
400
|
+
{
|
|
401
|
+
className: cn("flex min-w-0 items-center gap-3", className),
|
|
402
|
+
"data-slot": "getting-started-strip",
|
|
403
|
+
"data-testid": testIdOr(testId, { testId: "getting-started" }),
|
|
404
|
+
children: [
|
|
405
|
+
/* @__PURE__ */ jsx(PartyPopper, { className: "size-5 shrink-0 text-primary", "aria-hidden": "true" }),
|
|
406
|
+
/* @__PURE__ */ jsxs(
|
|
407
|
+
"p",
|
|
408
|
+
{
|
|
409
|
+
className: "min-w-0 shrink truncate text-base",
|
|
410
|
+
"data-testid": testIdOr(testIds?.complete, { testId: "getting-started-complete" }),
|
|
411
|
+
children: [
|
|
412
|
+
/* @__PURE__ */ jsx("span", { className: "font-semibold text-foreground", children: l.allSet(firstName) }),
|
|
413
|
+
/* @__PURE__ */ jsx("span", { className: "mx-1.5 text-muted-foreground", children: "\xB7" }),
|
|
414
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: l.finished(steps.length) })
|
|
415
|
+
]
|
|
416
|
+
}
|
|
417
|
+
),
|
|
418
|
+
/* @__PURE__ */ jsx(Journey, { steps, currentStepId, testId: testIds?.stepper }),
|
|
419
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
420
|
+
/* @__PURE__ */ jsx(
|
|
421
|
+
"button",
|
|
422
|
+
{
|
|
423
|
+
type: "button",
|
|
424
|
+
onClick: onDismiss,
|
|
425
|
+
className: "shrink-0 rounded-md bg-muted px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
|
|
426
|
+
"data-testid": testIdOr(testIds?.done, { testId: "getting-started-done" }),
|
|
427
|
+
children: l.done
|
|
428
|
+
}
|
|
429
|
+
)
|
|
430
|
+
]
|
|
431
|
+
}
|
|
432
|
+
);
|
|
433
|
+
}
|
|
434
|
+
const greeting = firstName ? l.welcome(firstName) : l.getStarted;
|
|
435
|
+
return /* @__PURE__ */ jsxs(
|
|
436
|
+
"div",
|
|
437
|
+
{
|
|
438
|
+
className: cn("flex min-w-0 items-center gap-3", className),
|
|
439
|
+
"data-slot": "getting-started-strip",
|
|
440
|
+
"data-testid": testIdOr(testId, { testId: "getting-started" }),
|
|
441
|
+
children: [
|
|
442
|
+
logo,
|
|
443
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-base font-semibold text-foreground", children: greeting }),
|
|
444
|
+
/* @__PURE__ */ jsx(Journey, { steps, currentStepId, testId: testIds?.stepper }),
|
|
445
|
+
!currentStepId && /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-sm text-muted-foreground", children: isReplay ? l.replayDone : l.almostThere }),
|
|
446
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
447
|
+
/* @__PURE__ */ jsx(
|
|
448
|
+
"button",
|
|
449
|
+
{
|
|
450
|
+
type: "button",
|
|
451
|
+
onClick: onDismiss,
|
|
452
|
+
className: "shrink-0 rounded-md p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:p-3",
|
|
453
|
+
"aria-label": l.dismiss,
|
|
454
|
+
"data-testid": testIdOr(testIds?.dismiss, { testId: "getting-started-dismiss" }),
|
|
455
|
+
children: /* @__PURE__ */ jsx(X, { className: "size-4" })
|
|
456
|
+
}
|
|
457
|
+
)
|
|
458
|
+
]
|
|
459
|
+
}
|
|
460
|
+
);
|
|
461
|
+
}
|
|
301
462
|
|
|
302
|
-
export { CreateTile, DASHBOARD_QUIET_ACTION_CLASS, DashboardAction, DashboardBand, DashboardColumns, DashboardRoot, FactMark, FactsStrip, HomeCenteredColumn, HomeCenteredScroll, HomeFrame, HomeLoadError, HomeMain, RecentList };
|
|
303
|
-
//# sourceMappingURL=chunk-
|
|
304
|
-
//# sourceMappingURL=chunk-
|
|
463
|
+
export { CreateTile, DASHBOARD_QUIET_ACTION_CLASS, DEFAULT_GETTING_STARTED_STRIP_LABELS, DashboardAction, DashboardBand, DashboardColumns, DashboardRoot, FactMark, FactsStrip, GettingStartedStrip, HomeCenteredColumn, HomeCenteredScroll, HomeFrame, HomeLoadError, HomeMain, RecentList };
|
|
464
|
+
//# sourceMappingURL=chunk-APXW5XGA.js.map
|
|
465
|
+
//# sourceMappingURL=chunk-APXW5XGA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/home/HomeLayout.tsx","../src/home/CreateTile.tsx","../src/home/DashboardParts.tsx","../src/home/FactsStrip.tsx","../src/home/RecentList.tsx","../src/home/GettingStartedStrip.tsx"],"names":["cn","jsx","jsxs"],"mappings":"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","file":"chunk-APXW5XGA.js","sourcesContent":["import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { Callout } from '../components/Callout'\n\n/** Column of the home page: greeting header, then the content. */\nexport function HomeFrame({\n testId = 'home-page',\n children,\n}: {\n testId?: string\n children: ReactNode\n}) {\n return (\n <div data-slot=\"home-frame\" data-testid={testId} className=\"flex h-full flex-col\">\n {children}\n </div>\n )\n}\n\n/** Content area under the header; the pages inside own their scrolling. */\nexport function HomeMain({ children }: { children: ReactNode }) {\n return (\n <main\n data-slot=\"home-main\"\n className=\"min-h-0 min-w-sidebar flex-1 overflow-hidden bg-background\"\n >\n {children}\n </main>\n )\n}\n\n/**\n * Scroll container that spans the full width (so its scrollbar rides the window edge) with the\n * content centred in a bounded column.\n */\nexport function HomeCenteredScroll({ children }: { children: ReactNode }) {\n return (\n <div data-slot=\"home-scroll\" className=\"h-full overflow-y-auto\">\n <div className=\"mx-auto max-w-6xl\">{children}</div>\n </div>\n )\n}\n\n/** Bounded, centred column for a full-height child (the workspaces table). */\nexport function HomeCenteredColumn({\n className,\n children,\n}: {\n className?: string\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"home-column\"\n className={cn('mx-auto h-full max-w-6xl px-4 pb-4 sm:px-8', className)}\n >\n {children}\n </div>\n )\n}\n\n/** Centred error notice for a page that could not load. */\nexport function HomeLoadError({\n title,\n body,\n testId,\n}: {\n title: string\n body: string\n testId?: string\n}) {\n return (\n <div\n data-slot=\"home-load-error\"\n className=\"flex h-full flex-col items-center justify-center p-8\"\n >\n <div className=\"w-full max-w-md\">\n <Callout variant=\"danger\" title={title} body={body} testId={testId} />\n </div>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Plus } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface CreateTileProps {\n /** Visible label, e.g. \"New workspace\". */\n label: string\n /** Accessible name; defaults to `label`. */\n ariaLabel?: string\n onSelect?: () => void\n /** One line explaining what is being created (first-run empty state). */\n help?: ReactNode\n /** When set, the tile is disabled and shows this explanation instead of `help`. */\n disabledReason?: string\n className?: string\n testId?: string\n}\n\n/**\n * The \"create\" tile. Sits in the grid beside the workspace tiles at the same\n * height, in the same tonal family: no dashed outline, no shadow.\n */\nexport function CreateTile({\n label,\n ariaLabel,\n onSelect,\n help,\n disabledReason,\n className,\n testId,\n}: CreateTileProps) {\n const disabled = !!disabledReason\n const select = disabled ? undefined : onSelect\n return (\n <div\n className={cn(\n 'flex min-h-40 w-full flex-col items-center justify-center gap-1 rounded-lg p-4 text-muted-foreground border border-border bg-card shadow-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n disabled\n ? 'cursor-not-allowed opacity-60'\n : 'cursor-pointer hover:border-ring/50 hover:bg-accent/40 hover:text-foreground',\n className\n )}\n onClick={select}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n select?.()\n }\n }}\n role=\"button\"\n tabIndex={0}\n aria-disabled={disabled || undefined}\n title={disabledReason}\n aria-label={ariaLabel ?? label}\n data-slot=\"create-tile\"\n data-testid={testId}\n >\n <span className=\"inline-flex flex-col items-center gap-2 text-sm font-medium\">\n <Plus className=\"size-6\" aria-hidden=\"true\" />\n {label}\n </span>\n {(disabledReason ?? help) && (\n <p className=\"max-w-64 px-4 text-center text-xs leading-snug text-muted-foreground\">\n {disabledReason ?? help}\n </p>\n )}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Button, cn } from '@arbidocs/react/ui'\n\n/** A section's quiet header action: ghost, small, still 44px on touch. */\nexport const DASHBOARD_QUIET_ACTION_CLASS =\n 'h-8 gap-1.5 px-2 text-sm bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground pointer-coarse:h-11'\n\n/** Column of the workspace dashboard's bands. A container, so children can use `@2xl:` queries. */\nexport function DashboardRoot({\n testId,\n className,\n children,\n}: {\n testId?: string\n className?: string\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"dashboard\"\n data-testid={testId}\n className={cn('flex flex-col gap-6', className)}\n >\n {children}\n </div>\n )\n}\n\n/** A dashboard band: `start` is the tiles under the identity bar, `recent` the lists with an eyebrow. */\nexport function DashboardBand({\n kind,\n children,\n}: {\n kind: 'start' | 'recent'\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"dashboard-band\"\n data-kind={kind}\n className={kind === 'start' ? 'mt-2' : 'mt-4 flex flex-col gap-3'}\n >\n {children}\n </div>\n )\n}\n\n/** Two equal columns from the `@2xl` container width, one below it. */\nexport function DashboardColumns({ children }: { children: ReactNode }) {\n return (\n <div data-slot=\"dashboard-columns\" className=\"grid gap-8 @2xl:grid-cols-2\">\n {children}\n </div>\n )\n}\n\n/** A fact row's mark: a quiet dot. */\nexport function FactMark() {\n return (\n <span\n data-slot=\"fact-mark\"\n className=\"mx-1 size-1.5 shrink-0 rounded-full bg-muted-foreground/40\"\n aria-hidden\n />\n )\n}\n\nexport interface DashboardActionProps {\n /** `primary` is the page's one filled action; `quiet` the ghost header actions. */\n emphasis: 'primary' | 'quiet'\n icon: ReactNode\n label: string\n onClick: () => void\n testId?: string\n}\n\n/** Header action of a dashboard section (\"New chat\", \"New fact\"). */\nexport function DashboardAction({ emphasis, icon, label, onClick, testId }: DashboardActionProps) {\n return (\n <Button\n variant={emphasis === 'primary' ? 'default' : 'ghost'}\n size=\"sm\"\n className={\n emphasis === 'primary'\n ? 'h-8 gap-1.5 px-3 text-sm pointer-coarse:h-11'\n : DASHBOARD_QUIET_ACTION_CLASS\n }\n onClick={onClick}\n data-testid={testId}\n >\n {icon}\n {label}\n </Button>\n )\n}\n","import type { ReactNode } from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { EmptyStrip, SectionHeader } from './sections'\n\nexport interface FactsStripRow {\n id: string\n leading?: ReactNode\n title: string\n /** Right-aligned stamp: a date or a time. */\n time?: string\n onSelect?: () => void\n}\n\nexport interface FactsStripGroup {\n /** Captions the group (\"Upcoming\", \"Created\"); an empty group is not rendered. */\n caption: string\n rows: FactsStripRow[]\n /** Test id of every row in this group. Defaults to `${testId}-row`. */\n rowTestId?: string\n}\n\nexport interface FactsStripEmpty {\n icon: LucideIcon\n label: ReactNode\n description?: ReactNode\n onSelect?: () => void\n testId?: string\n}\n\nexport interface FactsStripProps {\n icon?: LucideIcon\n title: string\n count?: number\n onOpen?: () => void\n action?: ReactNode\n groups: FactsStripGroup[]\n empty?: FactsStripEmpty\n className?: string\n /** Root test id; the title button gets `${testId}-open`. */\n testId?: string\n}\n\n/**\n * A glanceable band of captioned groups (facts: upcoming, recently created).\n * Not a third list page: callers hand it a few rows per group.\n */\nexport function FactsStrip({\n icon,\n title,\n count,\n onOpen,\n action,\n groups,\n empty,\n className,\n testId,\n}: FactsStripProps) {\n const filled = groups.filter((g) => g.rows.length > 0)\n return (\n <section\n className={cn('flex min-w-0 flex-col gap-1', className)}\n data-slot=\"facts-strip\"\n data-testid={testId}\n >\n <SectionHeader\n icon={icon}\n title={title}\n count={count}\n onOpen={onOpen}\n openTestId={testId && `${testId}-open`}\n action={action}\n />\n {filled.length === 0\n ? empty && (\n <EmptyStrip\n icon={empty.icon}\n label={empty.label}\n description={empty.description}\n onSelect={empty.onSelect}\n testId={empty.testId}\n />\n )\n : filled.map((group) => (\n <div key={group.caption} className=\"min-w-0\">\n <p className=\"px-3 pb-1 pt-1 text-right text-xs text-muted-foreground\">\n {group.caption}\n </p>\n <ul>\n {group.rows.map((row) => (\n <li key={row.id}>\n <button\n type=\"button\"\n onClick={row.onSelect}\n title={row.title}\n className=\"flex w-full min-w-0 items-center gap-3 rounded-md px-3 py-2 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&:hover]:bg-muted pointer-coarse:min-h-11\"\n data-testid={group.rowTestId ?? (testId && `${testId}-row`)}\n >\n {row.leading}\n <span className=\"min-w-0 flex-1 truncate text-sm text-foreground\">\n {row.title}\n </span>\n {row.time && (\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {row.time}\n </span>\n )}\n </button>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </section>\n )\n}\n","import type { ReactNode } from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { ActionLink } from '../components/ActionLink'\nimport { EmptyStrip, SectionHeader } from './sections'\n\n/** One listed item. Source-agnostic: a chat, a file. */\nexport interface RecentRow {\n id: string\n /** Bare entity mark (an icon carries its own identity; no tinted box). */\n leading?: ReactNode\n title: string\n subtitle?: string\n /** Pinned right on the title line, like a message time. Hidden when `trailing` is set. */\n time?: string\n onSelect?: () => void\n /** Real link target; `onSelect` still fires on a plain click (see `ActionLink`). */\n href?: string\n /** A control rendered beside the row, outside its button. */\n trailing?: ReactNode\n}\n\nexport interface RecentListEmpty {\n icon?: LucideIcon\n label: ReactNode\n description?: ReactNode\n /** Makes the empty strip an invitation button. */\n onSelect?: () => void\n}\n\nexport interface RecentListProps {\n icon?: LucideIcon\n title: string\n count?: number\n /** Opens the full list; makes the header title a button. */\n onOpen?: () => void\n /** Real link target of the header title (with `onOpen`, plain clicks call `onOpen`). */\n openHref?: string\n /** The section's one quiet header action. */\n action?: ReactNode\n rows: RecentRow[]\n /** Names the right-hand column (\"Added\", \"Messaged\"). */\n caption?: string\n /** What an empty section says. A plain muted line unless `onSelect` is set. */\n empty?: RecentListEmpty\n className?: string\n /** Root test id; derived ids: `-open`, `-caption`, `-row`, `-empty-action`. */\n testId?: string\n}\n\n/**\n * A titled list of recent items (files, chats): plain rows under a quiet\n * header. An empty list is one tonal strip that invites the first item.\n */\nexport function RecentList({\n icon,\n title,\n count,\n onOpen,\n openHref,\n action,\n rows,\n caption,\n empty,\n className,\n testId,\n}: RecentListProps) {\n return (\n <section\n className={cn('flex min-w-0 flex-col gap-1', className)}\n data-slot=\"recent-list\"\n data-testid={testId}\n >\n <SectionHeader\n icon={icon}\n title={title}\n count={count}\n onOpen={onOpen}\n openHref={openHref}\n openTestId={testId && `${testId}-open`}\n action={action}\n />\n {rows.length === 0 ? (\n empty?.onSelect ? (\n <EmptyStrip\n icon={empty.icon}\n label={empty.label}\n description={empty.description}\n onSelect={empty.onSelect}\n testId={testId && `${testId}-empty-action`}\n />\n ) : (\n <p className=\"px-1 py-3 text-sm text-muted-foreground\">\n {empty?.description ?? empty?.label}\n </p>\n )\n ) : (\n <>\n {caption && (\n <p className=\"sr-only\" data-testid={testId && `${testId}-caption`}>\n {caption}\n </p>\n )}\n <ul>\n {rows.map((row) => (\n <li\n key={row.id}\n className=\"relative flex items-center rounded-md transition-colors [&:hover]:bg-muted has-[:focus-visible]:bg-muted\"\n data-slot=\"recent-row\"\n >\n <ActionLink\n href={row.href}\n onSelect={row.onSelect}\n title={row.title}\n className={cn(\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md px-3 py-2 text-left focus-visible:outline-none',\n row.onSelect && 'cursor-pointer',\n 'pointer-coarse:min-h-11'\n )}\n data-testid={testId && `${testId}-row`}\n >\n {row.leading}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium text-foreground\">\n {row.title}\n </span>\n {!row.trailing && row.time && (\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {row.time}\n </span>\n )}\n </div>\n {row.subtitle && (\n <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {row.subtitle}\n </p>\n )}\n </div>\n </ActionLink>\n {row.trailing ? <div className=\"shrink-0 pr-3\">{row.trailing}</div> : null}\n </li>\n ))}\n </ul>\n </>\n )}\n </section>\n )\n}\n","import type { ReactNode } from 'react'\nimport { PartyPopper, X } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { prefixedTestId, testIdOr } from '../chat/test-id'\n\n/** Fixed strings of the strip. */\nexport interface GettingStartedStripLabels {\n /** The close banner's headline. */\n allSet: (firstName?: string) => string\n /** The close banner's second line. */\n finished: (stepCount: number) => string\n done: string\n welcome: (firstName: string) => string\n getStarted: string\n replayDone: string\n almostThere: string\n dismiss: string\n}\n\nexport const DEFAULT_GETTING_STARTED_STRIP_LABELS: GettingStartedStripLabels = {\n allSet: (firstName) => `You’re all set${firstName ? `, ${firstName}` : ''}!`,\n finished: (stepCount) => `You’ve finished the ${stepCount} getting-started steps — explore away.`,\n done: 'Done',\n welcome: (firstName) => `Welcome, ${firstName}`,\n getStarted: 'Get started with ARBI',\n replayDone: 'Nicely done — that’s the tour again',\n almostThere: 'Almost there',\n dismiss: 'Dismiss getting started',\n}\n\nexport interface JourneyStep {\n id: string\n title: string\n /** The instruction shown beside the CURRENT step. */\n description: string\n done: boolean\n}\n\nexport interface GettingStartedStripProps {\n /** The core steps, in order. Numbers are their position. */\n steps: JourneyStep[]\n /** The first step not yet done; undefined when all are. */\n currentStepId?: string\n firstName?: string\n /** Replaying the tour: the finished banner is skipped and copy says so. */\n isReplay?: boolean\n /** Every core step is done (and this is not a replay): show the close banner. */\n isComplete?: boolean\n onDismiss: () => void\n /** Brand mark before the greeting. */\n logo?: ReactNode\n labels?: Partial<GettingStartedStripLabels>\n className?: string\n /** Root test id (default `getting-started`). */\n testId?: string\n /** Sub-element ids; defaults are the current ids. The per-step id is `<stepper>-<step id>`. */\n testIds?: Partial<Record<'stepper' | 'complete' | 'done' | 'dismiss', string>>\n}\n\n// Full literal class strings per state so Tailwind's scanner sees every class.\n// Navy = progress/selection; cyan is reserved for \"this is ARBI/AI\".\nfunction circleClasses(done: boolean, isCurrent: boolean): string {\n if (done) return 'border-primary bg-primary text-primary-foreground'\n if (isCurrent) return 'border-primary bg-accent text-accent-foreground'\n return 'border-border text-muted-foreground'\n}\n\n/**\n * The numbered journey. A step's number never turns into a check: a filled\n * circle plus a struck-through title says \"done\", so status and identity both\n * stay legible without a second glyph. The current step also carries its\n * instruction, the one thing this row tells you to go do.\n */\nfunction Journey({\n steps,\n currentStepId,\n testId,\n}: {\n steps: JourneyStep[]\n currentStepId?: string\n testId?: string\n}) {\n return (\n <ol\n className=\"hidden min-w-0 shrink items-center overflow-x-auto sm:flex\"\n data-slot=\"journey\"\n data-testid={testIdOr(testId, { testId: 'getting-started-stepper' })}\n >\n {steps.map((step, i) => {\n const isCurrent = step.id === currentStepId\n return (\n <li\n key={step.id}\n className=\"flex shrink-0 items-center\"\n data-testid={prefixedTestId(testId, step.id, {\n testId: `getting-started-stepper-${step.id}`,\n })}\n data-done={step.done}\n data-current={isCurrent}\n >\n {i > 0 && (\n <span\n className={cn(\n 'h-0 w-3 shrink-0 border-t-2 border-solid transition-colors duration-500',\n steps[i - 1].done ? 'border-primary' : 'border-border'\n )}\n />\n )}\n <span className=\"flex items-center gap-1.5\">\n <span\n className={cn(\n 'flex size-6 shrink-0 items-center justify-center rounded-full border-2 text-xs font-semibold tabular-nums transition-colors',\n circleClasses(step.done, isCurrent)\n )}\n >\n {i + 1}\n </span>\n <span\n className={cn(\n 'text-sm font-medium',\n step.done\n ? 'text-muted-foreground line-through'\n : isCurrent\n ? 'text-foreground'\n : 'text-muted-foreground'\n )}\n >\n {step.title}\n </span>\n {isCurrent && !step.done && (\n <span className=\"text-muted-foreground\">— {step.description}</span>\n )}\n </span>\n </li>\n )\n })}\n </ol>\n )\n}\n\n/**\n * First-run activation row: greeting, the numbered journey and the current\n * step's instruction, all in ONE bare row (no container, no border), so it can\n * live in a topbar slot. A guide, not a shortcut: it says WHERE to go and the\n * host detects completion itself.\n */\nexport function GettingStartedStrip({\n steps,\n currentStepId,\n firstName,\n isReplay = false,\n isComplete = false,\n onDismiss,\n logo,\n labels,\n className,\n testId,\n testIds,\n}: GettingStartedStripProps) {\n const l = { ...DEFAULT_GETTING_STARTED_STRIP_LABELS, ...labels }\n if (isComplete && !isReplay) {\n return (\n <div\n className={cn('flex min-w-0 items-center gap-3', className)}\n data-slot=\"getting-started-strip\"\n data-testid={testIdOr(testId, { testId: 'getting-started' })}\n >\n <PartyPopper className=\"size-5 shrink-0 text-primary\" aria-hidden=\"true\" />\n <p\n className=\"min-w-0 shrink truncate text-base\"\n data-testid={testIdOr(testIds?.complete, { testId: 'getting-started-complete' })}\n >\n <span className=\"font-semibold text-foreground\">{l.allSet(firstName)}</span>\n <span className=\"mx-1.5 text-muted-foreground\">·</span>\n <span className=\"text-muted-foreground\">{l.finished(steps.length)}</span>\n </p>\n <Journey steps={steps} currentStepId={currentStepId} testId={testIds?.stepper} />\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded-md bg-muted px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11\"\n data-testid={testIdOr(testIds?.done, { testId: 'getting-started-done' })}\n >\n {l.done}\n </button>\n </div>\n )\n }\n\n const greeting = firstName ? l.welcome(firstName) : l.getStarted\n\n return (\n <div\n className={cn('flex min-w-0 items-center gap-3', className)}\n data-slot=\"getting-started-strip\"\n data-testid={testIdOr(testId, { testId: 'getting-started' })}\n >\n {logo}\n <span className=\"shrink-0 text-base font-semibold text-foreground\">{greeting}</span>\n\n <Journey steps={steps} currentStepId={currentStepId} testId={testIds?.stepper} />\n\n {/* Reachable two ways: everything is done but not yet acknowledged (a\n brief instant before the banner takes over), or during a replay you\n have redone all the steps again. */}\n {!currentStepId && (\n <span className=\"min-w-0 flex-1 truncate text-sm text-muted-foreground\">\n {isReplay ? l.replayDone : l.almostThere}\n </span>\n )}\n <div className=\"flex-1\" />\n\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded-md p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:p-3\"\n aria-label={l.dismiss}\n data-testid={testIdOr(testIds?.dismiss, { testId: 'getting-started-dismiss' })}\n >\n <X className=\"size-4\" />\n </button>\n </div>\n )\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkKGAYUFXD_cjs = require('./chunk-KGAYUFXD.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkLAQ3Y5JP_cjs = require('./chunk-LAQ3Y5JP.cjs');
|
|
6
6
|
var react$1 = require('react');
|
|
7
7
|
var react = require('@arbidocs/react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -58,7 +58,7 @@ function ConnectedAssistantDock(props) {
|
|
|
58
58
|
}
|
|
59
59
|
function ScopedAssistantDock(props) {
|
|
60
60
|
const chat = useConnectedChat();
|
|
61
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
61
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkLAQ3Y5JP_cjs.AssistantDock, { ...props, chat });
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
Object.defineProperty(exports, "redlineStats", {
|
|
@@ -78,5 +78,5 @@ exports.useConnectedAiTask = useConnectedAiTask;
|
|
|
78
78
|
exports.useConnectedChat = useConnectedChat;
|
|
79
79
|
exports.useSemanticSearch = useSemanticSearch;
|
|
80
80
|
exports.useWorkspaceDocs = useWorkspaceDocs;
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-BFIHXDO6.cjs.map
|
|
82
|
+
//# sourceMappingURL=chunk-BFIHXDO6.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/ai.tsx"],"names":["useConnection","useKitAiTask","useCallback","useKitWorkspaceDocs","useKitSemanticSearch","useWorkspaceUsers","buildMentionCandidates","useConversation","ConversationScope","jsx","AssistantDock"],"mappings":";;;;;;;;AAkCO,SAAS,kBAAA,GAAqB;AACnC,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAIA,+BAAA,EAAc;AAC1C,EAAA,MAAM,OAAOC,eAAA,EAAa;AAC1B,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA;AACpB,EAAA,MAAM,GAAA,GAAMC,mBAAA;AAAA,IACV,CAAC,QAAA,EAAkB,MAAA,EAAkB,IAAA,KACnC,OAAO,QAAA,EAAU,MAAA,EAAQ,EAAE,GAAG,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,IAAS,iBAAiB,CAAA;AAAA,IAC7E,CAAC,QAAQ,eAAe;AAAA,GAC1B;AACA,EAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAA,EAAI;AACxB;AAGO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,EAAE,WAAA,EAAa,mBAAA,EAAoB,GAAIF,+BAAA,EAAc;AAC3D,EAAA,OAAOG,sBAAA,CAAoB,eAAe,mBAAmB,CAAA;AAC/D;AAGO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAIH,+BAAA,EAAc;AAC1C,EAAA,OAAOI,wBAAqB,EAAC,EAAG,EAAE,KAAA,EAAO,iBAAiB,CAAA;AAC5D;AAQO,SAAS,iBACd,OAAA,EAC8D;AAC9D,EAAA,MAAM,EAAE,aAAa,mBAAA,EAAqB,eAAA,EAAiB,MAAM,MAAA,EAAQ,mBAAA,KACvEJ,+BAAA,EAAc;AAChB,EAAA,MAAM,OAAO,WAAA,IAAe,mBAAA;AAC5B,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,GAAU,EAAC,EAAE,GAAIK,wBAAkB,IAAA,EAAM;AAAA,IACrD,OAAA,EAAS,MAAA,KAAW,eAAA,IAAmB,CAAC,CAAC,IAAA;AAAA,IACzC,WAAA,EAAa;AAAA,GACd,CAAA;AAED,EAAA,MAAM,iBAAA,GAAoBC,4BAAA;AAAA,IACxB,MAAA,KAAW,eAAA,GAAkB,OAAA,GAAU,EAAC;AAAA,IACxC,IAAA,EAAM;AAAA,GACR;AACA,EAAA,MAAM,OAAOC,qBAAA,CAAgB;AAAA,IAC3B,GAAG,OAAA;AAAA,IACH,WAAA,EAAa,IAAA;AAAA,IACb,KAAA,EAAO,SAAS,KAAA,IAAS;AAAA,GAC1B,CAAA;AACD,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,iBAAA;AAAA,IACA,QAAA,EAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,MAAa;AAAA,MACxC,GAAG,OAAA;AAAA,MACH,GAAI,QAAQ,QAAA,GACR;AAAA,QACE,WAAW,CAAC,CAAC,MAAM,UAAA,IAAc,OAAA,CAAQ,aAAa,IAAA,CAAK,UAAA;AAAA,QAC3D,YACE,OAAA,CAAQ,QAAA,KAAa,IAAA,EAAM,UAAA,GACvB,MAAM,IAAA,IAAQ,IAAA,EAAM,KAAA,GACpB,iBAAA,CAAkB,KAAK,CAAC,SAAA,KAAc,UAAU,EAAA,KAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAAA,UAElF;AAAC,KACP,CAAE;AAAA,GACJ;AACF;AAOO,SAAS,uBAAuB,KAAA,EAAyC;AAC9E,EAAA,sCACGC,uBAAA,EAAA,EACC,QAAA,kBAAAC,cAAA,CAAC,mBAAA,EAAA,EAAqB,GAAG,OAAO,CAAA,EAClC,CAAA;AAEJ;AAEA,SAAS,oBAAoB,KAAA,EAAyC;AACpE,EAAA,MAAM,OAAO,gBAAA,EAAiB;AAC9B,EAAA,uBAAOA,cAAA,CAACC,+BAAA,EAAA,EAAe,GAAG,KAAA,EAAO,IAAA,EAAY,CAAA;AAC/C","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/ai.tsx"],"names":["useConnection","useKitAiTask","useCallback","useKitWorkspaceDocs","useKitSemanticSearch","useWorkspaceUsers","buildMentionCandidates","useConversation","ConversationScope","jsx","AssistantDock"],"mappings":";;;;;;;;AAkCO,SAAS,kBAAA,GAAqB;AACnC,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAIA,+BAAA,EAAc;AAC1C,EAAA,MAAM,OAAOC,eAAA,EAAa;AAC1B,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA;AACpB,EAAA,MAAM,GAAA,GAAMC,mBAAA;AAAA,IACV,CAAC,QAAA,EAAkB,MAAA,EAAkB,IAAA,KACnC,OAAO,QAAA,EAAU,MAAA,EAAQ,EAAE,GAAG,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,IAAS,iBAAiB,CAAA;AAAA,IAC7E,CAAC,QAAQ,eAAe;AAAA,GAC1B;AACA,EAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAA,EAAI;AACxB;AAGO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,EAAE,WAAA,EAAa,mBAAA,EAAoB,GAAIF,+BAAA,EAAc;AAC3D,EAAA,OAAOG,sBAAA,CAAoB,eAAe,mBAAmB,CAAA;AAC/D;AAGO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAIH,+BAAA,EAAc;AAC1C,EAAA,OAAOI,wBAAqB,EAAC,EAAG,EAAE,KAAA,EAAO,iBAAiB,CAAA;AAC5D;AAQO,SAAS,iBACd,OAAA,EAC8D;AAC9D,EAAA,MAAM,EAAE,aAAa,mBAAA,EAAqB,eAAA,EAAiB,MAAM,MAAA,EAAQ,mBAAA,KACvEJ,+BAAA,EAAc;AAChB,EAAA,MAAM,OAAO,WAAA,IAAe,mBAAA;AAC5B,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,GAAU,EAAC,EAAE,GAAIK,wBAAkB,IAAA,EAAM;AAAA,IACrD,OAAA,EAAS,MAAA,KAAW,eAAA,IAAmB,CAAC,CAAC,IAAA;AAAA,IACzC,WAAA,EAAa;AAAA,GACd,CAAA;AAED,EAAA,MAAM,iBAAA,GAAoBC,4BAAA;AAAA,IACxB,MAAA,KAAW,eAAA,GAAkB,OAAA,GAAU,EAAC;AAAA,IACxC,IAAA,EAAM;AAAA,GACR;AACA,EAAA,MAAM,OAAOC,qBAAA,CAAgB;AAAA,IAC3B,GAAG,OAAA;AAAA,IACH,WAAA,EAAa,IAAA;AAAA,IACb,KAAA,EAAO,SAAS,KAAA,IAAS;AAAA,GAC1B,CAAA;AACD,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,iBAAA;AAAA,IACA,QAAA,EAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,MAAa;AAAA,MACxC,GAAG,OAAA;AAAA,MACH,GAAI,QAAQ,QAAA,GACR;AAAA,QACE,WAAW,CAAC,CAAC,MAAM,UAAA,IAAc,OAAA,CAAQ,aAAa,IAAA,CAAK,UAAA;AAAA,QAC3D,YACE,OAAA,CAAQ,QAAA,KAAa,IAAA,EAAM,UAAA,GACvB,MAAM,IAAA,IAAQ,IAAA,EAAM,KAAA,GACpB,iBAAA,CAAkB,KAAK,CAAC,SAAA,KAAc,UAAU,EAAA,KAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAAA,UAElF;AAAC,KACP,CAAE;AAAA,GACJ;AACF;AAOO,SAAS,uBAAuB,KAAA,EAAyC;AAC9E,EAAA,sCACGC,uBAAA,EAAA,EACC,QAAA,kBAAAC,cAAA,CAAC,mBAAA,EAAA,EAAqB,GAAG,OAAO,CAAA,EAClC,CAAA;AAEJ;AAEA,SAAS,oBAAoB,KAAA,EAAyC;AACpE,EAAA,MAAM,OAAO,gBAAA,EAAiB;AAC9B,EAAA,uBAAOA,cAAA,CAACC,+BAAA,EAAA,EAAe,GAAG,KAAA,EAAO,IAAA,EAAY,CAAA;AAC/C","file":"chunk-BFIHXDO6.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 useConversation,\n useWorkspaceUsers,\n buildMentionCandidates,\n ConversationScope,\n type ArbiConversation,\n type UseConversationOptions,\n type AiRunOptions,\n} from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport { AssistantDock, type AssistantDockProps } from '../chat/AssistantDock'\nimport type { MentionCandidate } from '@arbidocs/react/shell'\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 (all of them) and return the top matching passages. */\nexport function useSemanticSearch() {\n const { assistantConfig } = useConnection()\n return useKitSemanticSearch([], { model: assistantConfig })\n}\n\n/**\n * The chat engine 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()} />`. It works on the open conversation of the session in\n * scope (wrap a second chat on the page in `ConversationScope`).\n */\nexport function useConnectedChat(\n options?: Omit<UseConversationOptions, 'workspaceId'>\n): ArbiConversation & { 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 // The engine's own candidates: what the composer inserts is what a send routes on.\n const mentionCandidates = buildMentionCandidates(\n status === 'authenticated' ? members : [],\n user?.externalId\n )\n const chat = useConversation({\n ...options,\n workspaceId: wsId,\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 fromOther: !!user?.externalId && message.authorId !== user.externalId,\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. Its chat keeps its own open conversation (and\n * survives closing the dock).\n */\nexport function ConnectedAssistantDock(props: Omit<AssistantDockProps, 'chat'>) {\n return (\n <ConversationScope>\n <ScopedAssistantDock {...props} />\n </ConversationScope>\n )\n}\n\nfunction ScopedAssistantDock(props: Omit<AssistantDockProps, 'chat'>) {\n const chat = useConnectedChat()\n return <AssistantDock {...props} chat={chat} />\n}\n"]}
|
|
@@ -11,7 +11,7 @@ var chunkT35SGVB2_cjs = require('./chunk-T35SGVB2.cjs');
|
|
|
11
11
|
var chunkJH6JTI76_cjs = require('./chunk-JH6JTI76.cjs');
|
|
12
12
|
var chunkZ3LFF3YT_cjs = require('./chunk-Z3LFF3YT.cjs');
|
|
13
13
|
var chunkNSD37OF5_cjs = require('./chunk-NSD37OF5.cjs');
|
|
14
|
-
var
|
|
14
|
+
var chunkDRUNPUDT_cjs = require('./chunk-DRUNPUDT.cjs');
|
|
15
15
|
var chunkZXW6WFZG_cjs = require('./chunk-ZXW6WFZG.cjs');
|
|
16
16
|
var chunkK26RLK2Y_cjs = require('./chunk-K26RLK2Y.cjs');
|
|
17
17
|
var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
|
|
@@ -38,25 +38,25 @@ function useSkillsEnabled() {
|
|
|
38
38
|
}
|
|
39
39
|
function useWorkflowDefinitions() {
|
|
40
40
|
const { data: listings } = react.useSkills();
|
|
41
|
-
const usage =
|
|
41
|
+
const usage = chunkDRUNPUDT_cjs.useWorkflowUsage();
|
|
42
42
|
const skillsEnabled = useSkillsEnabled();
|
|
43
43
|
return react$1.useMemo(() => {
|
|
44
44
|
const { host: builtins, skills: fromServer } = chunk555BS22J_cjs.mergeSkillWorkflows(
|
|
45
|
-
|
|
45
|
+
chunkDRUNPUDT_cjs.WEB_WORKFLOWS,
|
|
46
46
|
listings ?? []
|
|
47
47
|
);
|
|
48
48
|
const all = [...builtins, ...fromServer];
|
|
49
49
|
const byId = new Map(all.map((w) => [w.id, w]));
|
|
50
|
-
const pinned =
|
|
50
|
+
const pinned = chunkDRUNPUDT_cjs.DASHBOARD_PINNED.flatMap((id) => {
|
|
51
51
|
const w = byId.get(id);
|
|
52
52
|
return w ? [w] : [];
|
|
53
53
|
});
|
|
54
54
|
return {
|
|
55
55
|
skills: all,
|
|
56
56
|
skillsEnabled,
|
|
57
|
-
start: skillsEnabled ? [...builtins, ...
|
|
58
|
-
dashboard: [...pinned, ...
|
|
59
|
-
forTasks: [
|
|
57
|
+
start: skillsEnabled ? [...builtins, ...chunkDRUNPUDT_cjs.sortByRecentUse(fromServer, usage)] : [],
|
|
58
|
+
dashboard: [...pinned, ...chunkDRUNPUDT_cjs.DASHBOARD_OPERATIONS],
|
|
59
|
+
forTasks: [chunkDRUNPUDT_cjs.CUSTOM_TASK, ...all.filter((w) => w.schedulable), chunkDRUNPUDT_cjs.REMIND_TASK]
|
|
60
60
|
};
|
|
61
61
|
}, [listings, usage, skillsEnabled]);
|
|
62
62
|
}
|
|
@@ -84,7 +84,7 @@ function useWorkflowTasks() {
|
|
|
84
84
|
);
|
|
85
85
|
const create = react$1.useCallback(
|
|
86
86
|
async (ctx, forceWorkflow = false) => {
|
|
87
|
-
const request =
|
|
87
|
+
const request = chunkDRUNPUDT_cjs.taskComposerToCreateRequest(
|
|
88
88
|
{ ...ctx, documentTitles, plan: ctx.plan ?? null },
|
|
89
89
|
activeWorkspaceId ?? void 0,
|
|
90
90
|
forceWorkflow
|
|
@@ -126,7 +126,7 @@ function useWorkflowTasks() {
|
|
|
126
126
|
);
|
|
127
127
|
const update = react$1.useCallback(
|
|
128
128
|
async (task, ctx) => {
|
|
129
|
-
const patch =
|
|
129
|
+
const patch = chunkDRUNPUDT_cjs.taskComposerToUpdateRequest({ ...ctx, plan: ctx.plan ?? null });
|
|
130
130
|
if (task.is_owner === false) delete patch.shared;
|
|
131
131
|
await updateConversation.mutateAsync({ conversationId: task.external_id, patch });
|
|
132
132
|
},
|
|
@@ -134,7 +134,7 @@ function useWorkflowTasks() {
|
|
|
134
134
|
);
|
|
135
135
|
const updateWorkflow = react$1.useCallback(
|
|
136
136
|
async (workflow, ctx) => {
|
|
137
|
-
const patch =
|
|
137
|
+
const patch = chunkDRUNPUDT_cjs.composerToWorkflowUpdate({ ...ctx, documentTitles, plan: ctx.plan ?? null });
|
|
138
138
|
if (workflow.is_owner === false) delete patch.shared;
|
|
139
139
|
const workspaceId = workflow.workspace_ext_id ?? activeWorkspaceId;
|
|
140
140
|
const updated = await updateWorkflowMutation.mutateAsync({
|
|
@@ -266,7 +266,7 @@ function ConnectedTaskComposer({
|
|
|
266
266
|
const label = (t) => t.title?.trim() || "Untitled task";
|
|
267
267
|
if (isWorkflow) return allTasks.map((t) => ({ id: t.external_id, name: label(t) }));
|
|
268
268
|
const subject = task ?? { external_id: "__new__" };
|
|
269
|
-
return
|
|
269
|
+
return chunkDRUNPUDT_cjs.moveTargets(
|
|
270
270
|
[...allTasks.filter((t) => t.external_id !== subject.external_id), subject],
|
|
271
271
|
subject
|
|
272
272
|
).map((t) => ({ id: t.external_id, name: label(t) }));
|
|
@@ -281,33 +281,33 @@ function ConnectedTaskComposer({
|
|
|
281
281
|
);
|
|
282
282
|
const initialValues = react$1.useMemo(() => {
|
|
283
283
|
const ids = {
|
|
284
|
-
customWorkflowId:
|
|
285
|
-
reminderWorkflowId:
|
|
284
|
+
customWorkflowId: chunkDRUNPUDT_cjs.CUSTOM_TASK_ID,
|
|
285
|
+
reminderWorkflowId: chunkDRUNPUDT_cjs.REMIND_TASK_ID,
|
|
286
286
|
definitions: forTasks
|
|
287
287
|
};
|
|
288
288
|
const base = launchWorkflow ? {
|
|
289
|
-
...
|
|
289
|
+
...chunkDRUNPUDT_cjs.workflowToComposerValues(launchWorkflow, ids),
|
|
290
290
|
when: "once",
|
|
291
291
|
runAt: "",
|
|
292
292
|
rrule: "",
|
|
293
293
|
eventKind: "",
|
|
294
294
|
afterTaskId: "",
|
|
295
295
|
name: ""
|
|
296
|
-
} : editingWorkflow ?
|
|
296
|
+
} : editingWorkflow ? chunkDRUNPUDT_cjs.workflowToComposerValues(editingWorkflow, ids) : task ? chunkDRUNPUDT_cjs.taskToComposerValues(task, ids) : isWorkflow ? {
|
|
297
297
|
// Run now is the default start; scheduling is the fallback in the same field.
|
|
298
298
|
assignee: "agent",
|
|
299
|
-
workflowId: initialWorkflowId ??
|
|
299
|
+
workflowId: initialWorkflowId ?? chunkDRUNPUDT_cjs.CUSTOM_TASK_ID,
|
|
300
300
|
when: startLater ? "once" : "now",
|
|
301
301
|
...initialPrompt ? {
|
|
302
302
|
inputs: {
|
|
303
|
-
[initialWorkflowId ===
|
|
303
|
+
[initialWorkflowId === chunkDRUNPUDT_cjs.REMIND_TASK_ID ? "message" : "instruction"]: initialPrompt
|
|
304
304
|
}
|
|
305
305
|
} : {},
|
|
306
306
|
// A scheduled run needs an agent: the owner's Assistant unless another is picked.
|
|
307
307
|
...startLater && defaultAgentId ? { agentId: defaultAgentId } : {}
|
|
308
308
|
} : initialAgentExtId ? (
|
|
309
309
|
// Assigning an agent means agentic work: the free instruction, and tell me when done.
|
|
310
|
-
{ agentId: initialAgentExtId, workflowId:
|
|
310
|
+
{ agentId: initialAgentExtId, workflowId: chunkDRUNPUDT_cjs.CUSTOM_TASK_ID, notifyOnComplete: true }
|
|
311
311
|
) : {};
|
|
312
312
|
return {
|
|
313
313
|
timezone: chunkQUMUAJ2P_cjs.detectTimeZone(),
|
|
@@ -368,7 +368,7 @@ function ConnectedTaskComposer({
|
|
|
368
368
|
const ctx = {
|
|
369
369
|
workflow: chosen,
|
|
370
370
|
values: submitted,
|
|
371
|
-
plan: chosen.id ===
|
|
371
|
+
plan: chosen.id === chunkDRUNPUDT_cjs.CUSTOM_TASK_ID ? plan : null
|
|
372
372
|
};
|
|
373
373
|
try {
|
|
374
374
|
if (isWorkflow && editingWorkflow && !options?.runOnce) {
|
|
@@ -404,7 +404,7 @@ function ConnectedTaskComposer({
|
|
|
404
404
|
}
|
|
405
405
|
};
|
|
406
406
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
407
|
-
|
|
407
|
+
chunkDRUNPUDT_cjs.TaskComposer,
|
|
408
408
|
{
|
|
409
409
|
open,
|
|
410
410
|
onOpenChange,
|
|
@@ -423,7 +423,7 @@ function ConnectedTaskComposer({
|
|
|
423
423
|
isPending,
|
|
424
424
|
planDrafting: planWork.isPending,
|
|
425
425
|
hasPlan: plan !== null,
|
|
426
|
-
renderIcon:
|
|
426
|
+
renderIcon: chunkDRUNPUDT_cjs.renderWorkflowIcon,
|
|
427
427
|
scopeSource,
|
|
428
428
|
renderDocuments: (field, value, onChange) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
429
429
|
chunkWBLCPCWR_cjs.ConnectedWorkflowDocumentsField,
|
|
@@ -457,8 +457,8 @@ function ConnectedTaskComposer({
|
|
|
457
457
|
...plan ? { addAndStart: "Approve plan and start", addAndSchedule: "Approve plan and schedule" } : {}
|
|
458
458
|
},
|
|
459
459
|
onSubmit: submit,
|
|
460
|
-
goal: (values) => values.workflowId ===
|
|
461
|
-
|
|
460
|
+
goal: (values) => values.workflowId === chunkDRUNPUDT_cjs.CUSTOM_TASK_ID ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
461
|
+
chunkDRUNPUDT_cjs.TaskPlan,
|
|
462
462
|
{
|
|
463
463
|
plan,
|
|
464
464
|
onChange: setPlan,
|
|
@@ -504,7 +504,7 @@ function ConnectedWorkflowHistory({
|
|
|
504
504
|
const { openConversation } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
|
|
505
505
|
const { data: runs = [], isLoading } = react.useWorkflowRuns(workflow?.external_id);
|
|
506
506
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
507
|
-
|
|
507
|
+
chunkDRUNPUDT_cjs.TaskRunsDialog,
|
|
508
508
|
{
|
|
509
509
|
inline,
|
|
510
510
|
hideHeader,
|
|
@@ -556,7 +556,7 @@ function ConnectedTaskActivityDialog({
|
|
|
556
556
|
[agents]
|
|
557
557
|
);
|
|
558
558
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
559
|
-
|
|
559
|
+
chunkDRUNPUDT_cjs.TaskActivityDialog,
|
|
560
560
|
{
|
|
561
561
|
open: true,
|
|
562
562
|
onOpenChange: (open) => !open && onClose(),
|
|
@@ -643,7 +643,7 @@ function ConnectedThreadTaskBar({
|
|
|
643
643
|
).finally(() => setBusy(false));
|
|
644
644
|
};
|
|
645
645
|
const strip = /* @__PURE__ */ jsxRuntime.jsx(
|
|
646
|
-
|
|
646
|
+
chunkDRUNPUDT_cjs.WorkflowThreadStrip,
|
|
647
647
|
{
|
|
648
648
|
renderIcon,
|
|
649
649
|
...variant === "steps" ? { maxSpan: 3, current: currentStepId, onSelectStep } : {},
|
|
@@ -672,7 +672,7 @@ function ConnectedThreadTaskBar({
|
|
|
672
672
|
renderStepAction: (step, phase) => (
|
|
673
673
|
// A signer or a draft's person acts on their step even on a thread they cannot edit.
|
|
674
674
|
canEdit || phase === "waiting" || phase === "done" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
675
|
-
|
|
675
|
+
chunkDRUNPUDT_cjs.WorkflowStepAction,
|
|
676
676
|
{
|
|
677
677
|
step,
|
|
678
678
|
phase,
|
|
@@ -704,7 +704,7 @@ function ConnectedThreadTaskBar({
|
|
|
704
704
|
// A workflow run: its named steps, with what happened in the thread under each.
|
|
705
705
|
strip
|
|
706
706
|
) : items.length || startedBy ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
707
|
-
startedBy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
707
|
+
startedBy && /* @__PURE__ */ jsxRuntime.jsx(chunkDRUNPUDT_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
|
|
708
708
|
/* @__PURE__ */ jsxRuntime.jsx(chunkZXW6WFZG_cjs.TaskFlow, { items: items.filter((item) => !item.step) })
|
|
709
709
|
] }) : (
|
|
710
710
|
// Ordinary chats record no activity events, so an empty ribbon says nothing rather than
|
|
@@ -823,7 +823,7 @@ ${labels.map((l) => `${l.key}=${l.name}`).join("\n")}`;
|
|
|
823
823
|
if (known) return known;
|
|
824
824
|
const setUp = (async () => {
|
|
825
825
|
const existing = await arbi.tags.list({ workspaceId });
|
|
826
|
-
const { ids, missing } =
|
|
826
|
+
const { ids, missing } = chunkDRUNPUDT_cjs.matchRequiredLabels(labels, existing);
|
|
827
827
|
for (const label of missing) {
|
|
828
828
|
const tag = await createTag({
|
|
829
829
|
name: label.name,
|
|
@@ -1425,7 +1425,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
1425
1425
|
const createThread = react$1.useCallback(
|
|
1426
1426
|
async (values, done) => {
|
|
1427
1427
|
const prepared = await options.beforeStart?.();
|
|
1428
|
-
const planned = prepared?.labelIds ?
|
|
1428
|
+
const planned = prepared?.labelIds ? chunkDRUNPUDT_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
|
|
1429
1429
|
await ensureWorkspaceOpen();
|
|
1430
1430
|
const created = await createWork.mutateAsync({
|
|
1431
1431
|
title: chunk555BS22J_cjs.runThreadTitle(workflow, values).slice(0, 60),
|
|
@@ -1527,7 +1527,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
1527
1527
|
const anyRunning = Object.values(states).some((s) => s.status === "running");
|
|
1528
1528
|
const needsStart = !threadId || idle && !anyRunning;
|
|
1529
1529
|
const runError = idle ? conversation?.last_error ?? null : null;
|
|
1530
|
-
const view =
|
|
1530
|
+
const view = chunkDRUNPUDT_cjs.useWorkflowView({
|
|
1531
1531
|
steps,
|
|
1532
1532
|
states,
|
|
1533
1533
|
inputs,
|
|
@@ -1827,7 +1827,7 @@ function RunnerBody({
|
|
|
1827
1827
|
const session = react.useArbiSessionStore();
|
|
1828
1828
|
const openRef = react$1.useRef(workspaceId);
|
|
1829
1829
|
openRef.current = workspaceId;
|
|
1830
|
-
const required =
|
|
1830
|
+
const required = chunkDRUNPUDT_cjs.requiredLabelsOf(given);
|
|
1831
1831
|
const ownEnsureLabels = useEnsureRequiredLabels();
|
|
1832
1832
|
const ensureLabels = page?.ensureLabels ?? ownEnsureLabels;
|
|
1833
1833
|
const [startedLabelIds, setStartedLabelIds] = react$1.useState({});
|
|
@@ -1839,7 +1839,7 @@ function RunnerBody({
|
|
|
1839
1839
|
const pageTarget = page?.target;
|
|
1840
1840
|
const projectStep = pageTarget && typeof projectFrom === "object" ? projectFrom.step : void 0;
|
|
1841
1841
|
const workflow = react$1.useMemo(
|
|
1842
|
-
() => withCommitStep(
|
|
1842
|
+
() => withCommitStep(chunkDRUNPUDT_cjs.withLabelIds(given, labelIds), projectStep),
|
|
1843
1843
|
[given, labelIds, projectStep]
|
|
1844
1844
|
);
|
|
1845
1845
|
const hostBeforeStart = options?.beforeStart;
|
|
@@ -2054,7 +2054,7 @@ function RunnerBody({
|
|
|
2054
2054
|
);
|
|
2055
2055
|
};
|
|
2056
2056
|
const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2057
|
-
|
|
2057
|
+
chunkDRUNPUDT_cjs.WorkflowRunner,
|
|
2058
2058
|
{
|
|
2059
2059
|
people,
|
|
2060
2060
|
...runnerProps,
|
|
@@ -2115,7 +2115,7 @@ function RunnerBody({
|
|
|
2115
2115
|
pageBar,
|
|
2116
2116
|
inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2117
2117
|
!page && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2118
|
-
|
|
2118
|
+
chunkDRUNPUDT_cjs.WorkflowStepBar,
|
|
2119
2119
|
{
|
|
2120
2120
|
run: view,
|
|
2121
2121
|
levels: chunk555BS22J_cjs.stepLevels(view.steps),
|
|
@@ -2198,7 +2198,7 @@ function RunnerPage(props) {
|
|
|
2198
2198
|
workspaceId,
|
|
2199
2199
|
onProjectCreated
|
|
2200
2200
|
});
|
|
2201
|
-
const required =
|
|
2201
|
+
const required = chunkDRUNPUDT_cjs.requiredLabelsOf(workflow);
|
|
2202
2202
|
const ensure = useEnsureRequiredLabels();
|
|
2203
2203
|
const labels = useRequiredLabels(required, target.target, ensure, target.stage === "ready");
|
|
2204
2204
|
const fromStep = typeof projectFrom === "object";
|
|
@@ -2475,5 +2475,5 @@ exports.useWorkflowDefinitions = useWorkflowDefinitions;
|
|
|
2475
2475
|
exports.useWorkflowTasks = useWorkflowTasks;
|
|
2476
2476
|
exports.useWorkflowsPageState = useWorkflowsPageState;
|
|
2477
2477
|
exports.workflowRunView = workflowRunView;
|
|
2478
|
-
//# sourceMappingURL=chunk-
|
|
2479
|
-
//# sourceMappingURL=chunk-
|
|
2478
|
+
//# sourceMappingURL=chunk-BP5KBZLX.cjs.map
|
|
2479
|
+
//# sourceMappingURL=chunk-BP5KBZLX.cjs.map
|