fix call to openai

pull/3850/head
yann300 1 year ago committed by Aniket
parent 77f9d6d535
commit fde9c403dd
  1. 18
      apps/remix-ide/src/app/plugins/openaigpt.tsx
  2. 85
      libs/remix-ui/editor/src/lib/remix-ui-editor.tsx
  3. 7
      yarn.lock

@ -1,7 +1,7 @@
import { Plugin } from '@remixproject/engine'
import { OpenAIApi, CreateChatCompletionResponse } from 'openai'
import { CreateChatCompletionResponse } from 'openai'
const _paq = window._paq = window._paq || []
const _paq = (window._paq = window._paq || [])
const profile = {
name: 'openaigpt',
@ -13,22 +13,22 @@ const profile = {
}
export class OpenAIGpt extends Plugin {
openai: OpenAIApi
constructor() {
super(profile)
}
async message(prompt): Promise<CreateChatCompletionResponse> {
this.call('terminal', 'log', 'Waiting for GPT answer...')
const result = await (await fetch('https://openai-gpt.remixproject.org', {
const result = await (
await fetch('https://openai-gpt.remixproject.org', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({prompt})
})).json()
body: JSON.stringify({ prompt }),
})
).json()
console.log(result)
this.call('terminal', 'log', { type: 'typewritersuccess', value: result.choices[0].message.content })

@ -24,7 +24,7 @@ enum MarkerSeverity {
Hint = 1,
Info = 2,
Warning = 4,
Error = 8
Error = 8,
}
type sourceAnnotation = {
@ -109,6 +109,7 @@ export type EditorAPIType = {
keepDecorationsFor: (filePath: string, plugin: string, typeOfDecoration: string, registeredDecorations: any, currentDecorations: any) => DecorationsReturn
addErrorMarker: (errors: errorMarker[], from: string) => void
clearErrorMarkers: (sources: string[] | { [fileName: string]: any }, from: string) => void
getPositionAt: (offset: number) => monacoTypes.IPosition
}
/* eslint-disable-next-line */
@ -276,7 +277,7 @@ export const EditorUI = (props: EditorUIProps) => {
// returns
{ token: 'keyword.returns', foreground: greenColor },
{token: 'keyword.return', foreground: greenColor}
{ token: 'keyword.return', foreground: greenColor },
],
colors: {
// see https://code.visualstudio.com/api/references/theme-color for more settings
@ -295,8 +296,8 @@ export const EditorUI = (props: EditorUIProps) => {
'menu.background': textbackground,
'menu.selectionBackground': secondaryColor,
'menu.selectionForeground': textColor,
'menu.selectionBorder': secondaryColor
}
'menu.selectionBorder': secondaryColor,
},
})
monacoRef.current.editor.setTheme(themeName)
}
@ -314,7 +315,7 @@ export const EditorUI = (props: EditorUIProps) => {
const file = editorModelsState[props.currentFile]
editorRef.current.setModel(file.model)
editorRef.current.updateOptions({
readOnly: editorModelsState[props.currentFile].readOnly
readOnly: editorModelsState[props.currentFile].readOnly,
})
if (file.language === 'sol') {
monacoRef.current.editor.setModelLanguage(file.model, 'remix-solidity')
@ -338,10 +339,10 @@ export const EditorUI = (props: EditorUIProps) => {
options: {
isWholeLine: false,
glyphMarginHoverMessage: {
value: (decoration.from ? `from ${decoration.from}:\n` : '') + decoration.text
value: (decoration.from ? `from ${decoration.from}:\n` : '') + decoration.text,
},
glyphMarginClassName: `fal fa-exclamation-square text-${decoration.type === 'error' ? 'danger' : decoration.type === 'warning' ? 'warning' : 'info'}`,
},
glyphMarginClassName: `fal fa-exclamation-square text-${decoration.type === 'error' ? 'danger' : decoration.type === 'warning' ? 'warning' : 'info'}`
}
}
}
if (typeOfDecoration === 'markerPerFile') {
@ -364,8 +365,8 @@ export const EditorUI = (props: EditorUIProps) => {
),
options: {
isWholeLine,
inlineClassName: `${isWholeLine ? 'alert-info' : 'inline-class'} border-0 highlightLine${decoration.position.start.line + 1}`
}
inlineClassName: `${isWholeLine ? 'alert-info' : 'inline-class'} border-0 highlightLine${decoration.position.start.line + 1}`,
},
}
}
if (typeOfDecoration === 'lineTextPerFile') {
@ -381,11 +382,11 @@ export const EditorUI = (props: EditorUIProps) => {
options: {
after: {
content: ` ${lineTextDecoration.content}`,
inlineClassName: `${lineTextDecoration.className}`
inlineClassName: `${lineTextDecoration.className}`,
},
afterContentClassName: `${lineTextDecoration.afterContentClassName}`,
hoverMessage: lineTextDecoration.hoverMessage
}
hoverMessage: lineTextDecoration.hoverMessage,
},
}
}
if (typeOfDecoration === 'lineTextPerFile') {
@ -401,11 +402,11 @@ export const EditorUI = (props: EditorUIProps) => {
options: {
after: {
content: ` ${lineTextDecoration.content}`,
inlineClassName: `${lineTextDecoration.className}`
inlineClassName: `${lineTextDecoration.className}`,
},
afterContentClassName: `${lineTextDecoration.afterContentClassName}`,
hoverMessage: lineTextDecoration.hoverMessage
}
hoverMessage: lineTextDecoration.hoverMessage,
},
}
}
}
@ -415,7 +416,7 @@ export const EditorUI = (props: EditorUIProps) => {
if (!model)
return {
currentDecorations: [],
registeredDecorations: []
registeredDecorations: [],
}
const decorations = []
const newRegisteredDecorations = []
@ -429,7 +430,7 @@ export const EditorUI = (props: EditorUIProps) => {
}
return {
currentDecorations: model.deltaDecorations(currentDecorations, decorations),
registeredDecorations: newRegisteredDecorations
registeredDecorations: newRegisteredDecorations,
}
}
@ -437,7 +438,7 @@ export const EditorUI = (props: EditorUIProps) => {
const model = editorModelsState[filePath]?.model
if (!model)
return {
currentDecorations: []
currentDecorations: [],
}
const decorations = []
if (registeredDecorations) {
@ -448,7 +449,7 @@ export const EditorUI = (props: EditorUIProps) => {
}
}
return {
currentDecorations: model.deltaDecorations(currentDecorations, decorations)
currentDecorations: model.deltaDecorations(currentDecorations, decorations),
}
}
@ -458,7 +459,7 @@ export const EditorUI = (props: EditorUIProps) => {
const monacoDecoration = convertToMonacoDecoration(decoration, typeOfDecoration)
return {
currentDecorations: model.deltaDecorations([], [monacoDecoration]),
registeredDecorations: [{value: decoration, type: typeOfDecoration}]
registeredDecorations: [{ value: decoration, type: typeOfDecoration }],
}
}
@ -479,7 +480,7 @@ export const EditorUI = (props: EditorUIProps) => {
const errorServerityMap = {
error: MarkerSeverity.Error,
warning: MarkerSeverity.Warning,
info: MarkerSeverity.Info
info: MarkerSeverity.Info,
}
if (model) {
const markerData: monacoTypes.editor.IMarkerData = {
@ -488,7 +489,7 @@ export const EditorUI = (props: EditorUIProps) => {
startColumn: (error.position.start && error.position.start.column) || 0,
endLineNumber: (error.position.end && error.position.end.line) || 0,
endColumn: (error.position.end && error.position.end.column) || 0,
message: error.message
message: error.message,
}
if (!allMarkersPerfile[filePath]) {
allMarkersPerfile[filePath] = []
@ -573,9 +574,9 @@ export const EditorUI = (props: EditorUIProps) => {
range: new monacoRef.current.Range(position.lineNumber, 1, position.lineNumber, 1),
options: {
isWholeLine: false,
glyphMarginClassName: 'fas fa-circle text-info'
}
}
glyphMarginClassName: 'fas fa-circle text-info',
},
},
]
)
prevState[currentFile][position.lineNumber] = decorationIds[0]
@ -627,7 +628,7 @@ export const EditorUI = (props: EditorUIProps) => {
</div>
</div>
</div>
)
),
}
props.plugin.call('notification', 'alert', modalContent)
pasteCodeRef.current = true
@ -650,7 +651,7 @@ export const EditorUI = (props: EditorUIProps) => {
contextMenuGroupId: 'zooming', // create a new grouping
keybindings: [
// eslint-disable-next-line no-bitwise
monacoRef.current.KeyMod.CtrlCmd | monacoRef.current.KeyCode.Equal
monacoRef.current.KeyMod.CtrlCmd | monacoRef.current.KeyCode.Equal,
],
run: () => {
editor.updateOptions({fontSize: editor.getOption(51) + 1})
@ -663,7 +664,7 @@ export const EditorUI = (props: EditorUIProps) => {
contextMenuGroupId: 'zooming', // create a new grouping
keybindings: [
// eslint-disable-next-line no-bitwise
monacoRef.current.KeyMod.CtrlCmd | monacoRef.current.KeyCode.Minus
monacoRef.current.KeyMod.CtrlCmd | monacoRef.current.KeyCode.Minus,
],
run: () => {
editor.updateOptions({fontSize: editor.getOption(51) - 1})
@ -676,20 +677,20 @@ export const EditorUI = (props: EditorUIProps) => {
contextMenuGroupId: 'formatting', // create a new grouping
keybindings: [
// eslint-disable-next-line no-bitwise
monacoRef.current.KeyMod.Shift | monacoRef.current.KeyMod.Alt | monacoRef.current.KeyCode.KeyF
monacoRef.current.KeyMod.Shift | monacoRef.current.KeyMod.Alt | monacoRef.current.KeyCode.KeyF,
],
run: async () => {
const file = await props.plugin.call('fileManager', 'getCurrentFile')
await props.plugin.call('codeFormatter', 'format', file)
}
},
}
let gptGenerateDocumentationAction
const executeGptGenerateDocumentationAction = {
id: "generateDocumentation",
label: "Generate documentation for this function",
id: 'generateDocumentation',
label: 'Generate documentation for this function',
contextMenuOrder: 0, // choose the order
contextMenuGroupId: "gtp", // create a new grouping
contextMenuGroupId: 'gtp', // create a new grouping
keybindings: [],
run: async () => {
const file = await props.plugin.call('fileManager', 'getCurrentFile')
@ -704,10 +705,10 @@ export const EditorUI = (props: EditorUIProps) => {
let gptExplainFunctionAction
const executegptExplainFunctionAction = {
id: "generateDocumentation",
label: "Explain this function",
id: 'explainFunction',
label: 'Explain this function',
contextMenuOrder: 1, // choose the order
contextMenuGroupId: "gtp", // create a new grouping
contextMenuGroupId: 'gtp', // create a new grouping
keybindings: [],
run: async () => {
const file = await props.plugin.call('fileManager', 'getCurrentFile')
@ -720,7 +721,7 @@ export const EditorUI = (props: EditorUIProps) => {
},
}
const freeFunctionCondition = editor.createContextKey('freeFunctionCondition', false);
const freeFunctionCondition = editor.createContextKey('freeFunctionCondition', false)
let freeFunctionAction
const executeFreeFunctionAction = {
id: 'executeFreeFunction',
@ -730,7 +731,7 @@ export const EditorUI = (props: EditorUIProps) => {
precondition: 'freeFunctionCondition',
keybindings: [
// eslint-disable-next-line no-bitwise
monacoRef.current.KeyMod.Shift | monacoRef.current.KeyMod.Alt | monacoRef.current.KeyCode.KeyR
monacoRef.current.KeyMod.Shift | monacoRef.current.KeyMod.Alt | monacoRef.current.KeyCode.KeyR,
],
run: async () => {
const { nodesAtPosition } = await retrieveNodesAtPosition(props.editorAPI, props.plugin)
@ -746,7 +747,7 @@ export const EditorUI = (props: EditorUIProps) => {
} else {
props.plugin.call('notification', 'toast', 'Please go to Remix settings and activate the code editor features or wait that the current editor context is loaded.')
}
}
},
}
editor.addAction(formatAction)
editor.addAction(zoomOutAction)
@ -813,7 +814,7 @@ export const EditorUI = (props: EditorUIProps) => {
editor.revealRange(input.options.selection)
editor.setPosition({
column: input.options.selection.startColumn,
lineNumber: input.options.selection.startLineNumber
lineNumber: input.options.selection.startLineNumber,
})
}
} catch (e) {
@ -873,7 +874,7 @@ export const EditorUI = (props: EditorUIProps) => {
beforeMount={handleEditorWillMount}
options={{
glyphMargin: true,
readOnly: (!editorRef.current || !props.currentFile) && editorModelsState[props.currentFile]?.readOnly
readOnly: (!editorRef.current || !props.currentFile) && editorModelsState[props.currentFile]?.readOnly,
}}
defaultValue={defaultEditorValue}
/>

@ -7812,6 +7812,13 @@ axios@^0.21.1:
dependencies:
follow-redirects "^1.14.0"
axios@^0.26.0:
version "0.26.1"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9"
integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==
dependencies:
follow-redirects "^1.14.8"
axios@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"

Loading…
Cancel
Save