@@ -10,8 +10,10 @@ import {
10
10
refsToMarkdown ,
11
11
} from "../context" ;
12
12
import { chatRequest } from "./send" ;
13
+ import { JobManager } from "../../config" ;
13
14
14
15
const CHAT_ID = `vscode-db2i.chat` ;
16
+ let usingSchema = getDefaultSchema ( ) ;
15
17
16
18
interface IDB2ChatResult extends vscode . ChatResult {
17
19
metadata : {
@@ -36,7 +38,6 @@ export function activateChat(context: vscode.ExtensionContext) {
36
38
let messages : vscode . LanguageModelChatMessage [ ] ;
37
39
38
40
if ( canTalkToDb ( ) ) {
39
- const usingSchema = getDefaultSchema ( ) ;
40
41
41
42
switch ( request . command ) {
42
43
case `activity` :
@@ -59,6 +60,21 @@ export function activateChat(context: vscode.ExtensionContext) {
59
60
60
61
return { metadata : { command : "activity" } } ;
61
62
63
+ case `set-schema` :
64
+ stream . progress ( `Setting Current Schema for SQL Job` ) ;
65
+ const newSchema = request . prompt . split ( ' ' ) [ 0 ] ;
66
+ if ( newSchema ) {
67
+ const curJob = JobManager . getSelection ( ) ;
68
+ if ( curJob ) {
69
+ const result = await curJob . job . setCurrentSchema ( newSchema ) ;
70
+ if ( result ) {
71
+ stream . progress ( `Set Current Schema: ${ newSchema } ✅` ) ;
72
+ usingSchema = newSchema ;
73
+ }
74
+ }
75
+ return ;
76
+ }
77
+
62
78
default :
63
79
stream . progress (
64
80
`Getting information from ${ Statement . prettyName ( usingSchema ) } ...`
@@ -82,18 +98,20 @@ export function activateChat(context: vscode.ExtensionContext) {
82
98
] ;
83
99
84
100
if ( context . history . length > 0 ) {
85
- messages . push ( ...context . history . map ( h => {
86
- if ( 'prompt' in h ) {
87
- return vscode . LanguageModelChatMessage . Assistant ( h . prompt ) ;
88
- } else {
89
- return vscode . LanguageModelChatMessage . Assistant (
90
- h . response . filter ( r => 'value' in r . value ) . map ( r => r . value . value ) . join ( `\n\n` )
91
- ) ;
92
- }
93
- } ) ) ;
94
-
95
- messages = messages . filter ( m => m . content . trim ( ) . length > 0 ) ;
96
- }
101
+ const historyMessages = context . history . map ( h => {
102
+ if ( 'prompt' in h ) {
103
+ return vscode . LanguageModelChatMessage . Assistant ( h . prompt ) ;
104
+ } else {
105
+ const responseContent = h . response
106
+ . filter ( r => r . value instanceof vscode . MarkdownString )
107
+ . map ( r => ( r . value as vscode . MarkdownString ) . value )
108
+ . join ( '\n\n' ) ;
109
+ return vscode . LanguageModelChatMessage . Assistant ( responseContent ) ;
110
+ }
111
+ } ) ;
112
+
113
+ messages . push ( ...historyMessages ) ;
114
+ }
97
115
98
116
if ( Object . keys ( refs ) . length > 0 ) {
99
117
messages . push (
0 commit comments