Skip to content

Commit e81a150

Browse files
Nexus6v2devnaumovserge-rider
authored
dbeaver/pro#8655 cb ai functions support (#4254)
* dbeaver/pro#8655 added function confirmation and result events * dbeaver/pro#8655 refactor action function processing * dbeaver/pro#8655 support function role * dbeaver/pro#8655 revert ai function changes * Revert "dbeaver/pro#8655 support function role" This reverts commit 7343af5. * dbeaver/pro#8655 simplify types * dbeaver/pro#8867 Add custom WS event handlers. Move AI-related function top pro. * dbeaver/pro#8655 Remove async tasks from chat workflow --------- Co-authored-by: naumov <iamemptyhuh@gmail.com> Co-authored-by: Serge Rider <serge@jkiss.org> Co-authored-by: Serge Rider <serge@dbeaver.com> Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
1 parent 0d17208 commit e81a150

4 files changed

Lines changed: 23 additions & 7 deletions

File tree

server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSession.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,11 +607,13 @@ public List<WebAsyncTaskInfo> findTasksByJob(@NotNull Class<? extends AbstractJo
607607
}
608608
}
609609

610+
@NotNull
610611
public WebAsyncTaskInfo createAndRunAsyncTask(@NotNull String taskName, @NotNull WebAsyncTaskProcessor<?> runnable) {
611612
WebAsyncTaskInfo asyncTask = createAsyncTask(taskName);
612613
return runAsyncTask(asyncTask, runnable);
613614
}
614615

616+
@NotNull
615617
public WebAsyncTaskInfo runAsyncTask(@NotNull WebAsyncTaskInfo asyncTask, @NotNull WebAsyncTaskProcessor<?> runnable) {
616618
AbstractJob job = new AbstractCancelableJob(asyncTask.getName()) {
617619
@NotNull

server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/websockets/CBClientEventProcessor.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import org.jkiss.dbeaver.Log;
2626
import org.jkiss.dbeaver.model.websocket.WSUtils;
2727
import org.jkiss.dbeaver.model.websocket.event.WSClientEvent;
28+
import org.jkiss.dbeaver.model.websocket.registry.WSClientEventDescriptor;
29+
import org.jkiss.dbeaver.model.websocket.registry.WSEventRegistry;
2830
import org.jkiss.utils.CommonUtils;
2931

3032
public class CBClientEventProcessor {
@@ -50,6 +52,17 @@ public void process(@Nullable String message) {
5052
return;
5153
}
5254

55+
// Handle with custom handlers
56+
WSClientEventDescriptor ced = WSEventRegistry.getInstance().getClientEvent(clientEvent.getId());
57+
if (ced != null && ced.getHandler() != null) {
58+
try {
59+
ced.getHandler().handleEvent(webSession, clientEvent);
60+
} catch (Exception e) {
61+
log.error("Error handling event '" + clientEvent.getId() + "'", e);
62+
}
63+
return;
64+
}
65+
5366
switch (clientEvent.getId()) {
5467
case WSSubscribeOnTopicClientEvent.ID: {
5568
webSession.getEventsFilter().subscribeOnEventTopic(clientEvent.getTopicId());

webapp/packages/core-blocks/src/Expand/Expandable.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,28 @@ import { observer } from 'mobx-react-lite';
99
import { type ReactNode } from 'react';
1010

1111
import { IconOrImage } from '../IconOrImage.js';
12-
import { DisclosureProvider, Disclosure, DisclosureContent } from '@dbeaver/ui-kit';
12+
import { DisclosureProvider, Disclosure, DisclosureContent, clsx } from '@dbeaver/ui-kit';
1313
import './Expandable.css';
1414

1515
interface Props {
16-
label: string;
16+
label: string | ReactNode;
1717
children: ReactNode;
1818
defaultExpanded?: boolean;
1919
disabled?: boolean;
20+
className?: string;
2021
}
2122

22-
export const Expandable = observer(function Expandable({ label, defaultExpanded, disabled, children }: Props) {
23+
export const Expandable = observer(function Expandable({ label, defaultExpanded, disabled, children, className }: Props) {
2324
return (
2425
<div>
2526
<DisclosureProvider defaultOpen={defaultExpanded}>
2627
<Disclosure disabled={disabled}>
2728
<IconOrImage className="disclosure-icon" icon="arrow" />
28-
<h2 className="theme-typography--body2 disclosure-label">{label}</h2>
29+
{typeof label === 'string' ? <h2 className="theme-typography--body2 disclosure-label">{label}</h2> : label}
2930
</Disclosure>
3031
<DisclosureContent>
3132
<div>
32-
<div className="disclosure-content-inner"> {children}</div>
33+
<div className={clsx('disclosure-content-inner', className)}> {children}</div>
3334
</div>
3435
</DisclosureContent>
3536
</DisclosureProvider>

webapp/packages/core-root/src/SessionEventSource.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ export { ServerEventId, SessionEventTopic, ClientEventId };
4747

4848
export type SessionEventId = ServerEventId | ClientEventId | string;
4949

50-
export interface ISessionEvent extends IBaseServerEvent<SessionEventId, SessionEventTopic> {
50+
export interface ISessionEvent<T extends string = SessionEventTopic> extends IBaseServerEvent<SessionEventId, T> {
5151
id: SessionEventId;
52-
topicId?: SessionEventTopic;
52+
topicId?: T;
5353
[key: string]: any;
5454
}
5555

0 commit comments

Comments
 (0)