@kortix/ui 0.14.9 → 0.14.10
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/_vendor/kortix-shared.js +55 -2
- package/dist/_vendor/shared/artifact-comments.d.ts +235 -0
- package/dist/_vendor/shared/channel-descriptors.d.ts +96 -0
- package/dist/_vendor/shared/channel-message.d.ts +13 -2
- package/dist/_vendor/shared/index.d.ts +1 -0
- package/dist/apps/app-preview-pool.js +19 -2
- package/dist/artifacts/artifact-frame.js +7 -3
- package/dist/customize/sections/component/channel-access-panel.js +4 -4
- package/dist/customize/sections/component/telegram-channel-row.js +7 -5
- package/dist/customize/sections/view/agent-editor-catalog.js +5 -0
- package/dist/customize/sections/view/channels-view.d.ts +2 -1
- package/dist/customize/sections/view/channels-view.js +12 -7
- package/dist/customize/settings/rail.js +9 -0
- package/dist/customize/settings/settings-tabs.d.ts +1 -1
- package/dist/customize/settings/settings-tabs.js +1 -0
- package/dist/customize/settings/tabs/chrome-connections-tab.d.ts +6 -0
- package/dist/customize/settings/tabs/chrome-connections-tab.js +99 -0
- package/dist/customize/shared/catalog/catalog-empty-state.d.ts +3 -3
- package/dist/customize/shared/catalog/catalog-empty-state.js +6 -4
- package/dist/files/renderers/image-frame.d.ts +3 -1
- package/dist/files/renderers/image-frame.js +2 -2
- package/dist/i18n/en.d.ts +189 -0
- package/dist/i18n/en.js +190 -1
- package/dist/internal/apps-and-extensions/apps-modal.d.ts +9 -0
- package/dist/internal/apps-and-extensions/apps-modal.js +107 -0
- package/dist/internal/chrome/browser-icon.d.ts +24 -0
- package/dist/internal/chrome/browser-icon.js +58 -0
- package/dist/internal/chrome/chrome-card-state.d.ts +16 -0
- package/dist/internal/chrome/chrome-card-state.js +9 -0
- package/dist/internal/chrome/chrome-connect.d.ts +69 -0
- package/dist/internal/chrome/chrome-connect.js +178 -0
- package/dist/internal/chrome/chrome-mock.d.ts +4 -0
- package/dist/internal/chrome/chrome-mock.js +15 -0
- package/dist/internal/chrome/chrome-names.d.ts +15 -0
- package/dist/internal/chrome/chrome-names.js +35 -0
- package/dist/internal/chrome/extension.d.ts +47 -0
- package/dist/internal/chrome/extension.js +91 -0
- package/dist/internal/chrome/use-chrome-offered.d.ts +11 -0
- package/dist/internal/chrome/use-chrome-offered.js +22 -0
- package/dist/internal/connector-logo/connector-logo-source.d.ts +2 -1
- package/dist/internal/connector-logo/connector-logo-source.js +7 -6
- package/dist/internal/icons/edge.d.ts +5 -0
- package/dist/internal/icons/edge.js +10 -0
- package/dist/internal/lib/browser-noise/rules/extensions.js +17 -3
- package/dist/internal/lib/detect-os.d.ts +43 -0
- package/dist/internal/lib/detect-os.js +70 -0
- package/dist/internal/lib/use-project-feature-flags.js +5 -1
- package/dist/internal/stores/apps-modal-store.d.ts +8 -0
- package/dist/internal/stores/apps-modal-store.js +6 -0
- package/dist/internal/stores/composer-prefill-store.d.ts +12 -5
- package/dist/markdown/setup-links/approval-decision.js +3 -1
- package/dist/primitives/empty-state.d.ts +2 -2
- package/dist/primitives/empty-state.js +6 -5
- package/dist/primitives/mermaid-renderer.js +1 -1
- package/dist/session/panel/session-audit-shared.js +3 -1
- package/dist/session/participants/session-participants.d.ts +3 -1
- package/dist/session/participants/session-participants.js +2 -2
- package/dist/session/prompts/approval-request.js +2 -0
- package/dist/session/thread/session-thread.d.ts +13 -1
- package/dist/session/thread/session-thread.js +15 -5
- package/dist/session/thread/session-transcript-class.d.ts +5 -1
- package/dist/session/thread/session-transcript-class.js +5 -1
- package/dist/session/tool/tools/image-gen-tool.js +4 -3
- package/dist/session/turn/user-message.d.ts +7 -5
- package/dist/session/turn/user-message.js +14 -8
- package/dist/styles.css +1 -1
- package/dist/workspace/sessions/session-label-badges.js +2 -1
- package/dist/workspace/sidebar/footer/project-chrome-nav.d.ts +10 -0
- package/dist/workspace/sidebar/footer/project-chrome-nav.js +56 -0
- package/dist/workspace/sidebar/project-sidebar.js +5 -1
- package/package.json +43 -3
- package/skills/kortix-ui/references/modules.md +1 -1
|
@@ -4,7 +4,8 @@ import { Badge } from '../../primitives/badge.js';
|
|
|
4
4
|
import { cn } from '../../internal/lib/utils.js';
|
|
5
5
|
/** A session's labels as outline badges: the first `max`, then `+N` with the rest in its title. */
|
|
6
6
|
export function SessionLabelBadges({ session, max = 3, className, }) {
|
|
7
|
-
|
|
7
|
+
// `artifact:<id>` ties an artifact's Ask agent sessions together (its history reads it): a key, not a name.
|
|
8
|
+
const labels = (session.labels ?? []).filter((label) => !label.startsWith('artifact:'));
|
|
8
9
|
if (labels.length === 0)
|
|
9
10
|
return null;
|
|
10
11
|
const shown = labels.slice(0, max);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const CHROME_PROMO_DISMISSED_KEY = "kortix.chrome-promo.dismissed";
|
|
2
|
+
/**
|
|
3
|
+
* "Kortix in Chrome": an advertisement, not a status widget. It shows
|
|
4
|
+
* until the caller connected a browser or dismisses it. The sidebar owns the
|
|
5
|
+
* connect dialog, not this row: on a phone the row lives in the sidebar sheet,
|
|
6
|
+
* and closing the sheet unmounts it together with anything it renders.
|
|
7
|
+
*/
|
|
8
|
+
export declare function ProjectChromeNavItem({ onOpenConnect }: {
|
|
9
|
+
onOpenConnect: () => void;
|
|
10
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useChromeConnections } from '@kortix/sdk/react';
|
|
4
|
+
import { XIcon } from '@phosphor-icons/react';
|
|
5
|
+
import { useCallback, useState } from 'react';
|
|
6
|
+
import { SidebarMenuAction, SidebarMenuButton, SidebarMenuItem, useSidebar, } from '../../../primitives/sidebar.js';
|
|
7
|
+
import { BrowserIcon } from '../../../internal/chrome/browser-icon.js';
|
|
8
|
+
import { useIsMobile } from '../../../internal/hooks/index.js';
|
|
9
|
+
import { useTranslations } from '../../../i18n/index.js';
|
|
10
|
+
export const CHROME_PROMO_DISMISSED_KEY = 'kortix.chrome-promo.dismissed';
|
|
11
|
+
function readDismissed() {
|
|
12
|
+
try {
|
|
13
|
+
return window.localStorage.getItem(CHROME_PROMO_DISMISSED_KEY) === '1';
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* "Kortix in Chrome": an advertisement, not a status widget. It shows
|
|
21
|
+
* until the caller connected a browser or dismisses it. The sidebar owns the
|
|
22
|
+
* connect dialog, not this row: on a phone the row lives in the sidebar sheet,
|
|
23
|
+
* and closing the sheet unmounts it together with anything it renders.
|
|
24
|
+
*/
|
|
25
|
+
export function ProjectChromeNavItem({ onOpenConnect }) {
|
|
26
|
+
// Client-only: the row renders nothing until its query resolves, so the
|
|
27
|
+
// server render and the first client render agree.
|
|
28
|
+
const [dismissed, setDismissed] = useState(() => typeof window === 'undefined' ? true : readDismissed());
|
|
29
|
+
const dismiss = useCallback(() => {
|
|
30
|
+
setDismissed(true);
|
|
31
|
+
try {
|
|
32
|
+
window.localStorage.setItem(CHROME_PROMO_DISMISSED_KEY, '1');
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Private mode or blocked storage: dismissed for this page view only.
|
|
36
|
+
}
|
|
37
|
+
}, []);
|
|
38
|
+
if (dismissed)
|
|
39
|
+
return null;
|
|
40
|
+
return _jsx(ChromePromo, { onDismiss: dismiss, onOpenConnect: onOpenConnect });
|
|
41
|
+
}
|
|
42
|
+
function ChromePromo({ onDismiss, onOpenConnect, }) {
|
|
43
|
+
const t = useTranslations('chrome');
|
|
44
|
+
const isMobile = useIsMobile();
|
|
45
|
+
const { setOpenMobile } = useSidebar();
|
|
46
|
+
// One a minute until the first browser connects: the connect dialog polls
|
|
47
|
+
// faster while it is open.
|
|
48
|
+
const connections = useChromeConnections({ refetchInterval: 60_000 });
|
|
49
|
+
if (!connections.isSuccess || connections.data.length > 0)
|
|
50
|
+
return null;
|
|
51
|
+
return (_jsxs(SidebarMenuItem, { children: [_jsxs(SidebarMenuButton, { className: "text-sidebar-foreground bg-hover group-has-data-[sidebar=menu-action]/menu-item:pr-8", onClick: () => {
|
|
52
|
+
onOpenConnect();
|
|
53
|
+
if (isMobile)
|
|
54
|
+
setOpenMobile(false);
|
|
55
|
+
}, children: [_jsx(BrowserIcon, { brand: "chrome", tone: "current", className: "text-muted-foreground size-4" }), _jsx("span", { className: "min-w-0 flex-1 truncate", children: t('promoLabel') })] }), _jsx(SidebarMenuAction, { onClick: onDismiss, "aria-label": t('dismissPromo'), showOnHover: true, className: "mr-1", children: _jsx(XIcon, {}) })] }));
|
|
56
|
+
}
|
|
@@ -25,6 +25,9 @@ import { useTranslations } from '../../i18n/index.js';
|
|
|
25
25
|
import { cn } from '../../internal/lib/utils.js';
|
|
26
26
|
import { useBillingAccountId } from '../../internal/stores/billing-account-context.js';
|
|
27
27
|
import { useFeatureFlag } from '@kortix/sdk/react';
|
|
28
|
+
import { AppsModal } from '../../internal/apps-and-extensions/apps-modal.js';
|
|
29
|
+
import { useAppsModalStore } from '../../internal/stores/apps-modal-store.js';
|
|
30
|
+
import { ProjectChromeNavItem } from './footer/project-chrome-nav.js';
|
|
28
31
|
import { MagnifyingGlassIcon, NavigationArrowIcon, } from '@phosphor-icons/react';
|
|
29
32
|
import { UiLink as Link } from '../../providers/ui-provider.js';
|
|
30
33
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
@@ -48,6 +51,7 @@ export function ProjectSidebar({ projectId, menu, onOpenSearch, }) {
|
|
|
48
51
|
const accountId = useBillingAccountId();
|
|
49
52
|
// Channels replace New session and the session list (fail-closed: off until the project answers).
|
|
50
53
|
const channels = useFeatureFlag(projectId, 'project_channels').enabled;
|
|
54
|
+
const chrome = useFeatureFlag(projectId, 'chrome').enabled;
|
|
51
55
|
// Open the project composer without creating a durable session.
|
|
52
56
|
const newSession = useNewProjectSession(projectId);
|
|
53
57
|
const creatingSession = useIsCreatingProjectSession(projectId);
|
|
@@ -104,5 +108,5 @@ export function ProjectSidebar({ projectId, menu, onOpenSearch, }) {
|
|
|
104
108
|
// box clears the 44px floor with the vertical-only extension —
|
|
105
109
|
// vertical-only because this titlebar row packs several
|
|
106
110
|
// controls side by side (KRTX-2004).
|
|
107
|
-
className: "shrink-0 hit-area-y-3", children: _jsx(MagnifyingGlassIcon, { className: "size-4" }) }) })), isMobile && (_jsx(Button, { type: "button", "aria-label": tCommon('close'), variant: "ghost", size: "icon", onClick: () => setOpenMobile(false), className: "shrink-0 hit-area-y-3", children: _jsx(Close, {}) })), !isMobile && !peek && (_jsx(Hint, { side: "bottom", label: _jsxs("span", { className: "flex items-center gap-1.5", children: [isExpanded ? t('collapse') : t('pin'), _jsxs(KbdGroup, { children: [_jsx(Kbd, { className: "font-mono", children: modSymbol }), _jsx(Kbd, { className: "font-mono", children: "B" })] })] }), children: _jsx(Button, { type: "button", "aria-label": isExpanded ? t('collapse') : t('pin'), variant: "ghost", size: "icon", onClick: toggleSidebar, className: "shrink-0", children: _jsx(PanelLeft, { className: "cn-rtl-flip" }) }) }))] })] }) }), _jsx(SidebarContent, { className: "relative min-h-0 flex-1 [scrollbar-width:'none'] overflow-hidden [-ms-overflow-style:'none'] [&::-webkit-scrollbar]:hidden [&_[data-sidebar=menu-button]]:pl-2", children: _jsxs("div", { className: "flex h-full min-h-0 flex-col space-y-2", children: [_jsx(SidebarGroup, { className: "py-0", children: _jsxs(SidebarMenu, { children: [channels ? null : (_jsx(SidebarMenuItem, { children: creatingSession ? (_jsx(SidebarMenuButton, { disabled: true, "aria-busy": true, className: "group/menu-button text-sidebar-foreground relative", children: newSessionRowBody })) : (_jsx(SidebarMenuButton, { asChild: true, className: "group/menu-button text-sidebar-foreground relative", children: _jsx(Link, { href: uiRoutes().project(projectId), prefetch: true, onClick: handleNewSessionClick, children: newSessionRowBody }) })) })), channels ? _jsx(ProjectMemoryNavItem, { projectId: projectId }) : null, _jsx(ProjectNavItems, { projectId: projectId })] }) }), _jsx(SidebarGroup, { className: "min-h-0 flex-1 flex-col py-0", ref: sessionsGroupRef, children: channels ? (_jsx(ProjectSpacesNav, { projectId: projectId })) : (_jsx(ProjectSessionList, { projectId: projectId })) }), _jsx(SidebarGroup, { className: "mt-auto", children: _jsxs(SidebarMenu, { className: "gap-1", children: [_jsx(ProjectRepositoryDisconnectedAlert, { projectId: projectId }), _jsx(ProjectSandboxAlert, { projectId: projectId }), _jsx(ProjectManifestUpgradeAlert, { projectId: projectId }), _jsx(SidebarBalanceWarning, { accountId: accountId }), _jsx("li", { className: "not-has-[li]:hidden", children: _jsxs(SidebarMenu, { className: "gap-px [&>li:not(:first-child)>[data-sidebar=menu-button]]:rounded-t-sm [&>li:not(:last-child)>[data-sidebar=menu-button]]:rounded-b-sm", children: [_jsx(ProjectMcpNavItem, { onOpenConnect: () => setConnectMcpOpen(true) }), _jsx(ProjectComputerNavItem, { projectId: projectId, onOpenConnect: () => setComputerConnectOpen(true) })] }) }), _jsx(SidebarUpgradeButton, { accountId: accountId })] }) })] }) }), _jsx(SidebarRail, { "aria-label": t('resize'), title: t('resizeHelp') })] }), _jsx(ComputerConnectModal, { projectId: projectId, open: computerConnectOpen, onOpenChange: setComputerConnectOpen }), _jsx(ConnectMcpModal, { open: connectMcpOpen, onOpenChange: setConnectMcpOpen }), _jsx(CustomizeSidebarModal, { projectId: projectId })] }));
|
|
111
|
+
className: "shrink-0 hit-area-y-3", children: _jsx(MagnifyingGlassIcon, { className: "size-4" }) }) })), isMobile && (_jsx(Button, { type: "button", "aria-label": tCommon('close'), variant: "ghost", size: "icon", onClick: () => setOpenMobile(false), className: "shrink-0 hit-area-y-3", children: _jsx(Close, {}) })), !isMobile && !peek && (_jsx(Hint, { side: "bottom", label: _jsxs("span", { className: "flex items-center gap-1.5", children: [isExpanded ? t('collapse') : t('pin'), _jsxs(KbdGroup, { children: [_jsx(Kbd, { className: "font-mono", children: modSymbol }), _jsx(Kbd, { className: "font-mono", children: "B" })] })] }), children: _jsx(Button, { type: "button", "aria-label": isExpanded ? t('collapse') : t('pin'), variant: "ghost", size: "icon", onClick: toggleSidebar, className: "shrink-0", children: _jsx(PanelLeft, { className: "cn-rtl-flip" }) }) }))] })] }) }), _jsx(SidebarContent, { className: "relative min-h-0 flex-1 [scrollbar-width:'none'] overflow-hidden [-ms-overflow-style:'none'] [&::-webkit-scrollbar]:hidden [&_[data-sidebar=menu-button]]:pl-2", children: _jsxs("div", { className: "flex h-full min-h-0 flex-col space-y-2", children: [_jsx(SidebarGroup, { className: "py-0", children: _jsxs(SidebarMenu, { children: [channels ? null : (_jsx(SidebarMenuItem, { children: creatingSession ? (_jsx(SidebarMenuButton, { disabled: true, "aria-busy": true, className: "group/menu-button text-sidebar-foreground relative", children: newSessionRowBody })) : (_jsx(SidebarMenuButton, { asChild: true, className: "group/menu-button text-sidebar-foreground relative", children: _jsx(Link, { href: uiRoutes().project(projectId), prefetch: true, onClick: handleNewSessionClick, children: newSessionRowBody }) })) })), channels ? _jsx(ProjectMemoryNavItem, { projectId: projectId }) : null, _jsx(ProjectNavItems, { projectId: projectId })] }) }), _jsx(SidebarGroup, { className: "min-h-0 flex-1 flex-col py-0", ref: sessionsGroupRef, children: channels ? (_jsx(ProjectSpacesNav, { projectId: projectId })) : (_jsx(ProjectSessionList, { projectId: projectId })) }), _jsx(SidebarGroup, { className: "mt-auto", children: _jsxs(SidebarMenu, { className: "gap-1", children: [_jsx(ProjectRepositoryDisconnectedAlert, { projectId: projectId }), _jsx(ProjectSandboxAlert, { projectId: projectId }), _jsx(ProjectManifestUpgradeAlert, { projectId: projectId }), _jsx(SidebarBalanceWarning, { accountId: accountId }), _jsx("li", { className: "not-has-[li]:hidden", children: _jsxs(SidebarMenu, { className: "gap-px [&>li:not(:first-child)>[data-sidebar=menu-button]]:rounded-t-sm [&>li:not(:last-child)>[data-sidebar=menu-button]]:rounded-b-sm", children: [_jsx(ProjectMcpNavItem, { onOpenConnect: () => setConnectMcpOpen(true) }), _jsx(ProjectComputerNavItem, { projectId: projectId, onOpenConnect: () => setComputerConnectOpen(true) }), chrome ? (_jsx(ProjectChromeNavItem, { onOpenConnect: () => useAppsModalStore.getState().setOpen(true) })) : null] }) }), _jsx(SidebarUpgradeButton, { accountId: accountId })] }) })] }) }), _jsx(SidebarRail, { "aria-label": t('resize'), title: t('resizeHelp') })] }), _jsx(ComputerConnectModal, { projectId: projectId, open: computerConnectOpen, onOpenChange: setComputerConnectOpen }), _jsx(AppsModal, { chrome: chrome, onOpenComputer: () => setComputerConnectOpen(true), onOpenMcp: () => setConnectMcpOpen(true) }), _jsx(ConnectMcpModal, { open: connectMcpOpen, onOpenChange: setConnectMcpOpen }), _jsx(CustomizeSidebarModal, { projectId: projectId })] }));
|
|
108
112
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kortix/ui",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.10",
|
|
4
4
|
"description": "Kortix UI: the shared React component library for apps/web, Kortix Apps and SDK hosts. Tailwind v4 classes, themed by CSS variables.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Elastic-2.0",
|
|
@@ -349,6 +349,10 @@
|
|
|
349
349
|
"types": "./dist/customize/settings/settings-tabs.d.ts",
|
|
350
350
|
"import": "./dist/customize/settings/settings-tabs.js"
|
|
351
351
|
},
|
|
352
|
+
"./customize/settings/tabs/chrome-connections-tab": {
|
|
353
|
+
"types": "./dist/customize/settings/tabs/chrome-connections-tab.d.ts",
|
|
354
|
+
"import": "./dist/customize/settings/tabs/chrome-connections-tab.js"
|
|
355
|
+
},
|
|
352
356
|
"./customize/settings/tabs/connected-apps": {
|
|
353
357
|
"types": "./dist/customize/settings/tabs/connected-apps.d.ts",
|
|
354
358
|
"import": "./dist/customize/settings/tabs/connected-apps.js"
|
|
@@ -911,6 +915,14 @@
|
|
|
911
915
|
"types": "./dist/internal/capture/use-capture-area.d.ts",
|
|
912
916
|
"import": "./dist/internal/capture/use-capture-area.js"
|
|
913
917
|
},
|
|
918
|
+
"./internal/chrome/extension": {
|
|
919
|
+
"types": "./dist/internal/chrome/extension.d.ts",
|
|
920
|
+
"import": "./dist/internal/chrome/extension.js"
|
|
921
|
+
},
|
|
922
|
+
"./internal/chrome/use-chrome-offered": {
|
|
923
|
+
"types": "./dist/internal/chrome/use-chrome-offered.d.ts",
|
|
924
|
+
"import": "./dist/internal/chrome/use-chrome-offered.js"
|
|
925
|
+
},
|
|
914
926
|
"./internal/components/agent-mark": {
|
|
915
927
|
"types": "./dist/internal/components/agent-mark.d.ts",
|
|
916
928
|
"import": "./dist/internal/components/agent-mark.js"
|
|
@@ -1015,6 +1027,10 @@
|
|
|
1015
1027
|
"types": "./dist/internal/hooks/use-notification-center.d.ts",
|
|
1016
1028
|
"import": "./dist/internal/hooks/use-notification-center.js"
|
|
1017
1029
|
},
|
|
1030
|
+
"./internal/hooks/use-slash-focus": {
|
|
1031
|
+
"types": "./dist/internal/hooks/use-slash-focus.d.ts",
|
|
1032
|
+
"import": "./dist/internal/hooks/use-slash-focus.js"
|
|
1033
|
+
},
|
|
1018
1034
|
"./internal/icons/claude": {
|
|
1019
1035
|
"types": "./dist/internal/icons/claude.d.ts",
|
|
1020
1036
|
"import": "./dist/internal/icons/claude.js"
|
|
@@ -1023,6 +1039,10 @@
|
|
|
1023
1039
|
"types": "./dist/internal/icons/download.d.ts",
|
|
1024
1040
|
"import": "./dist/internal/icons/download.js"
|
|
1025
1041
|
},
|
|
1042
|
+
"./internal/icons/edge": {
|
|
1043
|
+
"types": "./dist/internal/icons/edge.d.ts",
|
|
1044
|
+
"import": "./dist/internal/icons/edge.js"
|
|
1045
|
+
},
|
|
1026
1046
|
"./internal/icons/github": {
|
|
1027
1047
|
"types": "./dist/internal/icons/github.d.ts",
|
|
1028
1048
|
"import": "./dist/internal/icons/github.js"
|
|
@@ -1107,6 +1127,10 @@
|
|
|
1107
1127
|
"types": "./dist/internal/lib/desktop.d.ts",
|
|
1108
1128
|
"import": "./dist/internal/lib/desktop.js"
|
|
1109
1129
|
},
|
|
1130
|
+
"./internal/lib/detect-os": {
|
|
1131
|
+
"types": "./dist/internal/lib/detect-os.d.ts",
|
|
1132
|
+
"import": "./dist/internal/lib/detect-os.js"
|
|
1133
|
+
},
|
|
1110
1134
|
"./internal/lib/error-handler": {
|
|
1111
1135
|
"types": "./dist/internal/lib/error-handler.d.ts",
|
|
1112
1136
|
"import": "./dist/internal/lib/error-handler.js"
|
|
@@ -1159,6 +1183,10 @@
|
|
|
1159
1183
|
"types": "./dist/internal/lib/onboarding/use-app-home.d.ts",
|
|
1160
1184
|
"import": "./dist/internal/lib/onboarding/use-app-home.js"
|
|
1161
1185
|
},
|
|
1186
|
+
"./internal/lib/project-preamble": {
|
|
1187
|
+
"types": "./dist/internal/lib/project-preamble.d.ts",
|
|
1188
|
+
"import": "./dist/internal/lib/project-preamble.js"
|
|
1189
|
+
},
|
|
1162
1190
|
"./internal/lib/promo-art": {
|
|
1163
1191
|
"types": "./dist/internal/lib/promo-art.d.ts",
|
|
1164
1192
|
"import": "./dist/internal/lib/promo-art.js"
|
|
@@ -1283,6 +1311,10 @@
|
|
|
1283
1311
|
"types": "./dist/internal/stores/account-panel-store.d.ts",
|
|
1284
1312
|
"import": "./dist/internal/stores/account-panel-store.js"
|
|
1285
1313
|
},
|
|
1314
|
+
"./internal/stores/apps-modal-store": {
|
|
1315
|
+
"types": "./dist/internal/stores/apps-modal-store.d.ts",
|
|
1316
|
+
"import": "./dist/internal/stores/apps-modal-store.js"
|
|
1317
|
+
},
|
|
1286
1318
|
"./internal/stores/billing-account-context": {
|
|
1287
1319
|
"types": "./dist/internal/stores/billing-account-context.d.ts",
|
|
1288
1320
|
"import": "./dist/internal/stores/billing-account-context.js"
|
|
@@ -1423,6 +1455,10 @@
|
|
|
1423
1455
|
"types": "./dist/primitives/label.d.ts",
|
|
1424
1456
|
"import": "./dist/primitives/label.js"
|
|
1425
1457
|
},
|
|
1458
|
+
"./lib/favicon": {
|
|
1459
|
+
"types": "./dist/lib/favicon.d.ts",
|
|
1460
|
+
"import": "./dist/lib/favicon.js"
|
|
1461
|
+
},
|
|
1426
1462
|
"./lib/host-env": {
|
|
1427
1463
|
"types": "./dist/lib/host-env.d.ts",
|
|
1428
1464
|
"import": "./dist/lib/host-env.js"
|
|
@@ -1657,6 +1693,10 @@
|
|
|
1657
1693
|
"types": "./dist/session/panel/easy/detail-view.d.ts",
|
|
1658
1694
|
"import": "./dist/session/panel/easy/detail-view.js"
|
|
1659
1695
|
},
|
|
1696
|
+
"./session/participants/session-participants": {
|
|
1697
|
+
"types": "./dist/session/participants/session-participants.d.ts",
|
|
1698
|
+
"import": "./dist/session/participants/session-participants.js"
|
|
1699
|
+
},
|
|
1660
1700
|
"./session/prompts/session-approval-review": {
|
|
1661
1701
|
"types": "./dist/session/prompts/session-approval-review.d.ts",
|
|
1662
1702
|
"import": "./dist/session/prompts/session-approval-review.js"
|
|
@@ -2153,7 +2193,7 @@
|
|
|
2153
2193
|
"@extend-ai/react-docx": "^0.7.5",
|
|
2154
2194
|
"@extend-ai/react-xlsx": "0.13.4",
|
|
2155
2195
|
"@glideapps/glide-data-grid": "6.0.4-alpha24",
|
|
2156
|
-
"@kortix/llm-catalog": "0.14.
|
|
2196
|
+
"@kortix/llm-catalog": "0.14.10",
|
|
2157
2197
|
"@lezer/highlight": "1.2.3",
|
|
2158
2198
|
"@paper-design/shaders-react": "^0.0.76",
|
|
2159
2199
|
"@phosphor-icons/react": "2.1.10",
|
|
@@ -2245,7 +2285,7 @@
|
|
|
2245
2285
|
"zustand": "^5.0.3"
|
|
2246
2286
|
},
|
|
2247
2287
|
"peerDependencies": {
|
|
2248
|
-
"@kortix/sdk": "^0.14.
|
|
2288
|
+
"@kortix/sdk": "^0.14.10",
|
|
2249
2289
|
"@tanstack/react-query": "^5.75.2",
|
|
2250
2290
|
"@types/react": ">=18",
|
|
2251
2291
|
"react": ">=19",
|
|
@@ -314,7 +314,7 @@ Source: `src/session/index.ts`. The conversation: the drop-in thread, turns, too
|
|
|
314
314
|
Mount: Pass the `useSession(projectId, sessionId)` result: `<SessionThread session={session} />`. Importing the entry registers the built-in tool rows.
|
|
315
315
|
|
|
316
316
|
Props:
|
|
317
|
-
- `SessionThread`: `session` (required), `hideHeader`, `readOnly`, `className`. Without a side panel on the page, file and preview opens show in a dialog.
|
|
317
|
+
- `SessionThread`: `session` (required), `hideHeader`, `readOnly`, `composerPlaceholder`, `quote`, `firstPrompt`, `density`, `className`. Without a side panel on the page, file and preview opens show in a dialog. `firstPrompt`: the prompt of a session the host just created; the thread shows it, with the agent's Thinking row, while the computer boots, then hands it to the transcript. `density="compact"`: tighter conversation gutters for a narrow column, such as a side sheet; the composer keeps its own.
|
|
318
318
|
- `ToolRegistry.register(name, Row)`: `Row` gets `ToolProps` (`call`: `name`, `input`, `status`, `result`); `BasicTool` draws the standard row.
|
|
319
319
|
- `ModelSelector`, `AgentSelector`: the composer's model and agent pickers. They are controlled (`models`/`agents`, the selection, `onSelect`), so a form outside a session uses them too.
|
|
320
320
|
|