From d612bfd2ce9663f4a539589fbf6e65ef3f70192e Mon Sep 17 00:00:00 2001 From: STetsing <41009393+STetsing@users.noreply.github.com> Date: Mon, 7 Oct 2024 14:10:15 +0200 Subject: [PATCH] added plugin api types --- .../src/app/plugins/remixAIPlugin.tsx | 23 ++++++++++--------- .../src/lib/plugins/remixAIDesktop-api.ts | 23 +++++++++++++++++++ libs/remix-api/src/lib/plugins/remixai-api.ts | 21 +++++++++++++++++ libs/remix-api/src/lib/remix-api.ts | 5 +++- 4 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 libs/remix-api/src/lib/plugins/remixAIDesktop-api.ts create mode 100644 libs/remix-api/src/lib/plugins/remixai-api.ts diff --git a/apps/remix-ide/src/app/plugins/remixAIPlugin.tsx b/apps/remix-ide/src/app/plugins/remixAIPlugin.tsx index 790551b225..3f39e980d0 100644 --- a/apps/remix-ide/src/app/plugins/remixAIPlugin.tsx +++ b/apps/remix-ide/src/app/plugins/remixAIPlugin.tsx @@ -4,6 +4,7 @@ import { Plugin } from '@remixproject/engine'; import { RemixAITab } from '@remix-ui/remix-ai' import React from 'react'; import { ICompletions, IModel, RemoteInferencer, IRemoteModel } from '@remix/remix-ai-core'; +import { CustomRemixApi } from '@remix-api' const profile = { name: 'remixAI', @@ -22,7 +23,7 @@ const profile = { maintainedBy: 'Remix' } -export class RemixAIPlugin extends Plugin { +export class RemixAIPlugin extends Plugin { isOnDesktop:boolean = false aiIsActivated:boolean = false readonly remixDesktopPluginName = 'remixAID' @@ -84,7 +85,7 @@ export class RemixAIPlugin extends Plugin { async code_generation(prompt: string): Promise { if (this.isInferencing) { - this.call('terminal', 'log', { type: 'aitypewriterwarning', value: "RemixAI is already busy!" }) + this.call('terminal', 'logHtml', "RemixAI is already busy!") return } @@ -105,11 +106,11 @@ export class RemixAIPlugin extends Plugin { async solidity_answer(prompt: string): Promise { if (this.isInferencing) { - this.call('terminal', 'log', { type: 'aitypewriterwarning', value: "RemixAI is already busy!" }) + this.call('terminal', 'logHtml', "RemixAI is already busy!" ) return } - this.call('terminal', 'log', { type: 'aitypewriterwarning', value: `\n\nWaiting for RemixAI answer...` }) + this.call('terminal', 'logHtml', '\n\nWaiting for RemixAI answer...') let result if (this.isOnDesktop) { @@ -117,18 +118,18 @@ export class RemixAIPlugin extends Plugin { } else { result = await this.remoteInferencer.solidity_answer(prompt) } - if (result) this.call('terminal', 'log', { type: 'aitypewriterwarning', value: result }) + if (result) this.call('terminal', 'logHtml', result) // this.call('terminal', 'log', { type: 'aitypewriterwarning', value: "RemixAI Done" }) return result } async code_explaining(prompt: string): Promise { if (this.isInferencing) { - this.call('terminal', 'log', { type: 'aitypewriterwarning', value: "RemixAI is already busy!" }) + this.call('terminal', 'logHtml',"RemixAI is already busy!") return } - this.call('terminal', 'log', { type: 'aitypewriterwarning', value: `\n\nWaiting for RemixAI answer...` }) + this.call('terminal', 'logHtml', '\n\nWaiting for RemixAI answer...') let result if (this.isOnDesktop) { @@ -137,18 +138,18 @@ export class RemixAIPlugin extends Plugin { } else { result = await this.remoteInferencer.code_explaining(prompt) } - if (result) this.call('terminal', 'log', { type: 'aitypewriterwarning', value: result }) + if (result) this.call('terminal', 'logHtml', result ) // this.call('terminal', 'log', { type: 'aitypewriterwarning', value: "RemixAI Done" }) return result } async error_explaining(prompt: string): Promise { if (this.isInferencing) { - this.call('terminal', 'log', { type: 'aitypewriterwarning', value: "RemixAI is already busy!" }) + this.call('terminal', 'logHtml', "RemixAI is already busy!") return } - this.call('terminal', 'log', { type: 'aitypewriterwarning', value: `\n\nWaiting for RemixAI answer...` }) + this.call('terminal', 'logHtml', '\n\nWaiting for RemixAI answer...') let result if (this.isOnDesktop) { @@ -156,7 +157,7 @@ export class RemixAIPlugin extends Plugin { } else { result = await this.remoteInferencer.error_explaining(prompt) } - if (result) this.call('terminal', 'log', { type: 'aitypewriterwarning', value: result }) + if (result) this.call('terminal', 'logHtml', result) // this.call('terminal', 'log', { type: 'aitypewriterwarning', value: "RemixAI Done" }) return result } diff --git a/libs/remix-api/src/lib/plugins/remixAIDesktop-api.ts b/libs/remix-api/src/lib/plugins/remixAIDesktop-api.ts new file mode 100644 index 0000000000..dc9deb7e82 --- /dev/null +++ b/libs/remix-api/src/lib/plugins/remixAIDesktop-api.ts @@ -0,0 +1,23 @@ +import { IParams } from "@remix/remix-ai-core"; +import { StatusEvents } from "@remixproject/plugin-utils"; + +export interface IRemixAID { + events: { + activated():void, + onInference():void, + onInferenceDone():void, + onStreamResult(streamText: string):void, + + } & StatusEvents, + methods: { + code_completion(context: string): Promise + code_insertion(msg_pfx: string, msg_sfx: string): Promise, + code_generation(prompt: string): Promise, + code_explaining(code: string, context?: string): Promise, + error_explaining(prompt: string): Promise, + solidity_answer(prompt: string): Promise, + initializeModelBackend(local: boolean, generalModel?, completionModel?): Promise, + chatPipe(pipeMessage: string): Promise, + ProcessChatRequestBuffer(params:IParams): Promise, + } +} \ No newline at end of file diff --git a/libs/remix-api/src/lib/plugins/remixai-api.ts b/libs/remix-api/src/lib/plugins/remixai-api.ts new file mode 100644 index 0000000000..cb32e2a61c --- /dev/null +++ b/libs/remix-api/src/lib/plugins/remixai-api.ts @@ -0,0 +1,21 @@ +import { IModel, IParams, IRemoteModel } from "@remix/remix-ai-core"; +import { StatusEvents } from "@remixproject/plugin-utils"; + +export interface IRemixAI { + events: { + onStreamResult(streamText: string): Promise, + activated(): Promise, + } & StatusEvents, + methods: { + code_completion(context: string): Promise + code_insertion(msg_pfx: string, msg_sfx: string): Promise, + code_generation(prompt: string): Promise, + code_explaining(code: string, context?: string): Promise, + error_explaining(prompt: string): Promise, + solidity_answer(prompt: string): Promise, + initializeModelBackend(local: boolean, generalModel?, completionModel?): Promise, + chatPipe(pipeMessage: string): Promise, + ProcessChatRequestBuffer(params:IParams): Promise, + initialize(model1?:IModel, model2?:IModel, remoteModel?:IRemoteModel, useRemote?:boolean): Promise, + } +} \ No newline at end of file diff --git a/libs/remix-api/src/lib/remix-api.ts b/libs/remix-api/src/lib/remix-api.ts index 8682ae48ef..fa052bdd03 100644 --- a/libs/remix-api/src/lib/remix-api.ts +++ b/libs/remix-api/src/lib/remix-api.ts @@ -14,6 +14,8 @@ import { IPinnedPanelApi } from "./plugins/pinned-panel-api" import { ILayoutApi } from "./plugins/layout-api" import { IMatomoApi } from "./plugins/matomo-api" import { IRemixAI } from "./plugins/remixai-api" +import { IRemixAID } from "./plugins/remixAIDesktop-api" + export interface ICustomRemixApi extends IRemixApi { dgitApi: IGitApi @@ -30,7 +32,8 @@ export interface ICustomRemixApi extends IRemixApi { pinnedPanel: IPinnedPanelApi layout: ILayoutApi matomo: IMatomoApi - remixAI: IRemixAI + remixAI: IRemixAI, + remixAID: IRemixAID } export declare type CustomRemixApi = Readonly \ No newline at end of file