feat(gpt-runner-shared): move common utils and types to shared package

This commit is contained in:
JinmingYang
2023-05-29 16:21:32 +08:00
parent 459f9f811c
commit eec478d285
57 changed files with 431 additions and 245 deletions

View File

@@ -10,5 +10,7 @@ export const alias: Record<string, string> = {
'@nicepkg/gpt-runner-config': r('./packages/gpt-runner-config/src/'),
'@nicepkg/gpt-runner-web/client': r('./packages/gpt-runner-web/client/src/'),
'@nicepkg/gpt-runner-web/server': r('./packages/gpt-runner-web/server/src/'),
'@nicepkg/gpt-runner-shared': r('./packages/gpt-runner-shared/src/'),
'@nicepkg/gpt-runner-shared/browser': r('./packages/gpt-runner-shared/src/browser'),
'@nicepkg/gpt-runner-shared/common': r('./packages/gpt-runner-shared/src/common'),
'@nicepkg/gpt-runner-shared/node': r('./packages/gpt-runner-shared/src/node'),
}

View File

@@ -47,6 +47,7 @@
"@rollup/pluginutils": "^5.0.2",
"@nicepkg/gpt-runner-config": "workspace:*",
"@nicepkg/gpt-runner-core": "workspace:*",
"@nicepkg/gpt-runner-shared": "workspace:*",
"cac": "^6.7.14",
"chokidar": "^3.5.3",
"colorette": "^2.0.20",
@@ -56,4 +57,4 @@
"pathe": "^1.1.0",
"perfect-debounce": "^1.0.0"
}
}
}

View File

@@ -38,6 +38,7 @@
},
"dependencies": {
"@nicepkg/gpt-runner": "workspace:*",
"@nicepkg/gpt-runner-shared": "workspace:*",
"unconfig": "^0.3.7"
}
}

View File

@@ -40,6 +40,7 @@
"stub": "unbuild --stub"
},
"dependencies": {
"@nicepkg/gpt-runner-shared": "workspace:*",
"ignore": "^5.2.4",
"langchain": "^0.0.84",
"unconfig": "^0.3.9"

View File

@@ -14,12 +14,8 @@ import {
MessagesPlaceholder,
SystemMessagePromptTemplate,
} from 'langchain/prompts'
import { ChatRole } from '../core/types'
export interface ChatMessage {
name: ChatRole
text: string
}
import type { ChatMessage } from '@nicepkg/gpt-runner-shared/common'
import { ChatRole } from '@nicepkg/gpt-runner-shared/common'
function mapStoredMessagesToChatMessages(
messages: ChatMessage[],

View File

@@ -0,0 +1 @@
module.exports = require('./dist/browser.cjs')

View File

@@ -0,0 +1 @@
export * from './dist/browser'

View File

@@ -0,0 +1 @@
export * from './dist/browser'

View File

@@ -0,0 +1,19 @@
import { defineBuildConfig } from 'unbuild'
export default defineBuildConfig({
entries: [
'src/browser',
'src/common',
'src/node',
],
clean: true,
declaration: true,
externals: [
'unconfig',
'express',
],
rollup: {
emitCJS: true,
inlineDependencies: true,
},
})

View File

@@ -0,0 +1 @@
module.exports = require('./dist/common.cjs')

View File

@@ -0,0 +1 @@
export * from './dist/common'

View File

@@ -0,0 +1 @@
export * from './dist/common'

View File

@@ -0,0 +1 @@
module.exports = require('./dist/node.cjs')

1
packages/gpt-runner-shared/node.d.ts vendored Normal file
View File

@@ -0,0 +1 @@
export * from './dist/node'

View File

@@ -0,0 +1 @@
export * from './dist/node'

View File

@@ -1,8 +1,62 @@
{
"name": "@nicepkg/gpt-runner-shared",
"version": "0.0.1",
"private": true,
"dependencies": {
"@nicepkg/gpt-runner-core": "workspace:*"
"description": "",
"author": "Jinming Yang <2214962083@qq.com>",
"license": "MIT",
"funding": "https://github.com/sponsors/2214962083",
"homepage": "https://github.com/nicepkg/gpt-runner/tree/main/packages/gpt-runner-shared#readme",
"repository": {
"type": "git",
"url": "https://github.com/nicepkg/gpt-runner",
"directory": "packages/gpt-runner-shared"
},
"bugs": {
"url": "https://github.com/nicepkg/gpt-runner/issues"
},
"keywords": [
"gpt-runner",
"chatgpt",
"prompt",
"langchain",
"ai"
],
"sideEffects": false,
"exports": {
".": {
"types": "./dist/common.d.ts",
"require": "./dist/common.cjs",
"import": "./dist/common.mjs"
},
"./*": "./*",
"./browser": {
"types": "./dist/browser.d.ts",
"require": "./dist/browser.cjs",
"import": "./dist/browser.mjs"
},
"./common": {
"types": "./dist/common.d.ts",
"require": "./dist/common.cjs",
"import": "./dist/common.mjs"
},
"./node": {
"types": "./dist/node.d.ts",
"require": "./dist/node.cjs",
"import": "./dist/node.mjs"
}
},
"main": "dist/common.cjs",
"module": "dist/common.mjs",
"types": "dist/common.d.ts",
"files": [
"dist"
],
"scripts": {
"build": "unbuild",
"stub": "unbuild --stub"
},
"devDependencies": {
"@types/express": "^4.17.17",
"express": "^4.18.2"
}
}
}

View File

@@ -0,0 +1,40 @@
export function getErrorMsg(error: any) {
const errorMessage = String(
(error as Error)?.message || error || '',
)
return errorMessage
}
export function getSearchParams(val: string, url?: string): string {
const defaultUrl = typeof window !== 'undefined' ? window.location.href : ''
const finalUrl = url || defaultUrl || ''
const searchParams = finalUrl.split('?')?.[1] || ''
const params = new URLSearchParams(searchParams)
return params.get(val) || ''
}
export function addSearchParams(urlLike: string,
searchParams: Record<string, any>) {
const [urlBase = '', urlSearch = ''] = urlLike.split('?')
const params = new URLSearchParams(urlSearch)
Object.keys(searchParams).forEach((key) => {
params.set(key, searchParams[key])
})
const urlSearchParams = params.toString()
if (!urlSearchParams)
return urlBase
return `${urlBase}?${urlSearchParams}`
}
export function removeSearchParams(urlLike: string,
searchParamKeys: string[]) {
const [urlBase = '', urlSearch = ''] = urlLike.split('?')
const params = new URLSearchParams(urlSearch)
searchParamKeys.forEach((key) => {
params.delete(key)
})
const urlSearchParams = params.toString()
if (!urlSearchParams)
return urlBase
return `${urlBase}?${urlSearchParams}`
}

View File

@@ -0,0 +1 @@
export * from './common'

View File

@@ -0,0 +1 @@
export * from './helpers'

View File

@@ -0,0 +1,54 @@
export function sleep(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms))
}
/**
* Checks if an object has its own property with the specified name.
*
* @param obj - The object to check.
* @param prop - The name of the property to check for.
* @returns True if the object has its own property with the specified name, false otherwise.
*/
export function hasOwn<T extends object, K extends keyof T>(
obj: T,
prop: K,
): boolean {
return Object.prototype.hasOwnProperty.call(obj, prop)
}
export function formatSourceValue<T = any>(value: any): T {
let result
if (value === 'true') {
result = true
}
else if (value === 'false') {
result = false
}
else if (/^-?\d*\.?\d+$/.test(value)) {
// regex pattern for matching float numbers
result = parseFloat(value)
}
else if (/^-?\d+$/.test(value)) {
// regex pattern for matching integer numbers
result = parseInt(value, 10)
}
else {
result = value
}
return result as T
}
export type TreeItem<T> = T & { children?: TreeItem<T>[] }
export function travelTree<T extends TreeItem<Record<string, any>>, R extends TreeItem<Record<string, any>> = TreeItem<Record<string, any>> >(tree: T[], callback: (item: T, parent?: T) => void | R): R[] {
const travel = (tree: T[], parent?: T) => {
return tree.map((item) => {
const finalItem = callback(item, parent) || item
if (item.children)
finalItem.children = travel(item.children as T[], item)
return finalItem
})
}
return travel(tree) as R[]
}

View File

@@ -1,3 +1,5 @@
/* eslint-disable @typescript-eslint/prefer-ts-expect-error */
/* eslint-disable @typescript-eslint/ban-ts-comment */
import debug from 'debug'
export class Debug {
@@ -9,6 +11,8 @@ export class Debug {
this.label = `gpt-runner:${label}`
debug.enable(this.label)
this.debugger = debug(this.label)
// @ts-ignore
this.debugger.useColors = true
this.debugger.color = String(debug.selectColor(this.label))
}

View File

@@ -0,0 +1,4 @@
export * from './common'
export * from './debug'
export * from './env-config'
export * from './is'

View File

@@ -0,0 +1,2 @@
export * from './helpers'
export * from './types'

View File

@@ -0,0 +1,12 @@
import type { SingleChatMessage } from './config'
import type { ChatMessageStatus } from './enum'
export interface SingleChat {
id: string
title: string
inputtingPrompt: string
systemPrompt: string
temperature: number
messages: SingleChatMessage[]
status: ChatMessageStatus
}

View File

@@ -0,0 +1 @@
export type Rule = string | RegExp | ((filePath: string) => boolean)

View File

@@ -0,0 +1,87 @@
import type { Rule } from './common'
import type { ChatRole } from './enum'
export interface OpenaiConfig {
openaiKey: string
model?: string
temperature?: number
maxTokens?: number
topP?: number
topK?: number
frequencyPenalty?: number
presencePenalty?: number
}
export interface UserConfig {
mode?: 'openai'
openai?: {
openaiKey: string
model?: string
temperature?: number
maxTokens?: number
topP?: number
topK?: number
frequencyPenalty?: number
presencePenalty?: number
}
rootPath?: string
includes?: Rule[]
excludes?: Rule[]
exts?: string[]
respectGitignore?: boolean
}
export interface SingleChatMessage {
name: ChatRole
text: string
}
export interface SingleFileConfig {
mode?: 'openai'
openai?: Partial<OpenaiConfig>
title?: string
userPrompt?: string
systemPrompt?: string
messages?: SingleChatMessage[]
forms?: Record<string, FormItemConfig & {
name: string
}>
}
export interface FormOption {
label?: string
value: string
}
export interface FormInputConfig {
type: 'input'
defaultValue?: string
}
export interface FormTextareaConfig {
type: 'textarea'
defaultValue?: string
row?: number
}
export interface FormSelectConfig {
type: 'select'
defaultValue?: string
options: FormOption[]
}
export interface FormCheckboxGroupConfig {
type: 'checkbox-group'
defaultValue?: string[]
options: FormOption[]
}
export interface FormRadioGroupConfig {
type: 'radio-group'
defaultValue?: string
options: FormOption[]
}
export type FormItemConfig = FormInputConfig | FormTextareaConfig | FormSelectConfig | FormCheckboxGroupConfig | FormRadioGroupConfig

View File

@@ -0,0 +1,16 @@
export enum ChatRole {
User = 'user',
ASSISTANT = 'assistant',
SYSTEM = 'system',
}
export enum ChatMessageStatus {
Idle = 'idle',
Pending = 'pending',
Success = 'success',
Error = 'error',
}
export const enum ClientEventName {
AddMessageAction = 'add-message-action',
}

View File

@@ -0,0 +1,5 @@
import type { ClientEventName } from './enum'
export interface ClientEventData {
[ClientEventName.AddMessageAction]: void
}

View File

@@ -0,0 +1,6 @@
export * from './client'
export * from './common'
export * from './config'
export * from './enum'
export * from './eventemitter'
export * from './server'

View File

@@ -0,0 +1,24 @@
import type { ChatRole } from './enum'
export interface BaseResponse<T = any> {
type: 'Success' | 'Fail'
status?: number
message?: string
data?: T
}
export type SuccessResponse<T = any> = Omit<BaseResponse<T>, 'type'> & { type: 'Success' }
export type FailResponse<T = any> = Omit<BaseResponse<T>, 'type'> & { type: 'Fail' }
export interface ChatMessage {
name: ChatRole
text: string
}
export interface ChatStreamReqParams {
messages: ChatMessage[]
prompt: string
openaiKey?: string
systemPrompt?: string
temperature?: number
}

View File

@@ -1 +0,0 @@
export const pkg = 'shared'

View File

@@ -0,0 +1 @@
export * from './request'

View File

@@ -0,0 +1 @@
export * from './helpers'

View File

@@ -0,0 +1,20 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": false,
"skipLibCheck": false,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
}
}

View File

@@ -69,10 +69,11 @@
"devDependencies": {
"@types/vscode": "^1.71.0",
"@nicepkg/gpt-runner": "workspace:*",
"@nicepkg/gpt-runner-shared": "workspace:*",
"esno": "^0.16.3",
"jiti": "^1.18.2",
"prettier": "^2.8.8",
"tsup": "^6.7.0",
"unconfig": "^0.3.7"
}
}
}

View File

@@ -1,9 +1,10 @@
import type { FC } from 'react'
import { useCallback } from 'react'
import clsx from 'clsx'
import type { SingleChatMessage } from '@nicepkg/gpt-runner-shared/common'
import { ChatMessageStatus } from '@nicepkg/gpt-runner-shared/common'
import { ChatRole } from '@nicepkg/gpt-runner-shared'
import { MessageTextView } from '../chat-message-text-view'
import type { SingleChatMessage } from '../../store/zustand/global/chat.slice'
import { ChatMessageStatus, ChatRole } from '../../store/zustand/global/chat.slice'
import { Icon } from '../icon'
import { IconButton } from '../icon-button'
import { useHover } from '../../hooks/use-hover.hook'

View File

@@ -1,4 +1,5 @@
import type { ParsedUrlQuery } from 'node:querystring'
import { formatSourceValue } from '@nicepkg/gpt-runner-shared/common'
import type { MutableRefObject, Ref } from 'react'
export function createEl<T extends keyof HTMLElementTagNameMap>(tag: T,
@@ -10,10 +11,6 @@ export function createEl<T extends keyof HTMLElementTagNameMap>(tag: T,
return el
}
export function sleep(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms))
}
export function mergeRefs<T>(...refs: (Ref<T> | undefined)[]) {
return (value: T) => {
refs.forEach((ref) => {
@@ -25,43 +22,6 @@ export function mergeRefs<T>(...refs: (Ref<T> | undefined)[]) {
}
}
/**
* Checks if an object has its own property with the specified name.
*
* @param obj - The object to check.
* @param prop - The name of the property to check for.
* @returns True if the object has its own property with the specified name, false otherwise.
*/
export function hasOwn<T extends object, K extends keyof T>(
obj: T,
prop: K,
): boolean {
return Object.prototype.hasOwnProperty.call(obj, prop)
}
export function formatSourceValue<T = any>(value: any): T {
let result
if (value === 'true') {
result = true
}
else if (value === 'false') {
result = false
}
else if (/^-?\d*\.?\d+$/.test(value)) {
// regex pattern for matching float numbers
result = parseFloat(value)
}
else if (/^-?\d+$/.test(value)) {
// regex pattern for matching integer numbers
result = parseInt(value, 10)
}
else {
result = value
}
return result as T
}
export function formatRouteQuery<T extends object>(query?: ParsedUrlQuery): Partial<T> {
if (!query)
return {} as Partial<T>
@@ -85,51 +45,3 @@ export function getErrorMsg(error: any) {
)
return errorMessage
}
export function getSearchParams(val: string, url?: string): string {
const defaultUrl = typeof window !== 'undefined' ? window.location.href : ''
const finalUrl = url || defaultUrl || ''
const searchParams = finalUrl.split('?')?.[1] || ''
const params = new URLSearchParams(searchParams)
return params.get(val) || ''
}
export function addSearchParams(urlLike: string,
searchParams: Record<string, any>) {
const [urlBase = '', urlSearch = ''] = urlLike.split('?')
const params = new URLSearchParams(urlSearch)
Object.keys(searchParams).forEach((key) => {
params.set(key, searchParams[key])
})
const urlSearchParams = params.toString()
if (!urlSearchParams)
return urlBase
return `${urlBase}?${urlSearchParams}`
}
export function removeSearchParams(urlLike: string,
searchParamKeys: string[]) {
const [urlBase = '', urlSearch = ''] = urlLike.split('?')
const params = new URLSearchParams(urlSearch)
searchParamKeys.forEach((key) => {
params.delete(key)
})
const urlSearchParams = params.toString()
if (!urlSearchParams)
return urlBase
return `${urlBase}?${urlSearchParams}`
}
type TreeItem<T> = T & { children?: TreeItem<T>[] }
export function travelTree<T extends TreeItem<Record<string, any>>, R extends TreeItem<Record<string, any>> = TreeItem<Record<string, any>> >(tree: T[], callback: (item: T, parent?: T) => void | R): R[] {
const travel = (tree: T[], parent?: T) => {
return tree.map((item) => {
const finalItem = callback(item, parent) || item
if (item.children)
finalItem.children = travel(item.children as T[], item)
return finalItem
})
}
return travel(tree) as R[]
}

View File

@@ -1,10 +1,6 @@
import type { ClientEventData, ClientEventName } from '@nicepkg/gpt-runner-shared/common'
import { EventEmitter } from 'eventemitter3'
import { useEffect, useRef } from 'react'
import type { ClientEventName } from '../../../index'
export interface ClientEventData {
[ClientEventName.AddMessageAction]: void
}
if (!window.__emitter__)
window.__emitter__ = new EventEmitter()

View File

@@ -1,7 +1,7 @@
import type { EventSourceMessage } from '@microsoft/fetch-event-source'
import { fetchEventSource } from '@microsoft/fetch-event-source'
import type { ChatStreamReqParams } from '../../../server/src/controllers/chatgpt.controller'
import { EnvConfig } from '../../../env-config'
import type { ChatStreamReqParams } from '@nicepkg/gpt-runner-shared/common'
import { EnvConfig } from '@nicepkg/gpt-runner-shared/common'
export interface fetchChatStreamReqParams extends ChatStreamReqParams {
namespace?: string

View File

@@ -1,6 +1,6 @@
import type { GptFilesInfoToTree } from '@nicepkg/gpt-runner-core'
import { EnvConfig } from '../../../env-config'
import type { BaseResponse } from '../types/common'
import type { BaseResponse } from '@nicepkg/gpt-runner-shared/common'
import { EnvConfig } from '@nicepkg/gpt-runner-shared/common'
export interface FetchGptFilesTreeParams {
rootPath: string

View File

@@ -1,11 +1,11 @@
import type { FC } from 'react'
import { useEffect, useState } from 'react'
import { useQuery } from '@tanstack/react-query'
import { travelTree } from '@nicepkg/gpt-runner-shared/common'
import type { SidebarProps } from '../../components/sidebar'
import { Sidebar } from '../../components/sidebar'
import { fetchGptFilesTree } from '../../networks/gpt-files'
import type { TreeItemProps } from '../../components/tree-item'
import { travelTree } from '../../helpers/utils'
export interface ChatSidebarProps {
rootPath: string

View File

@@ -1,14 +1,14 @@
import type { CSSProperties, FC } from 'react'
import { useCallback, useEffect, useState } from 'react'
import { VSCodePanelTab, VSCodePanelView } from '@vscode/webview-ui-toolkit/react'
import type { SingleChat } from '@nicepkg/gpt-runner-shared/common'
import { ChatMessageStatus, ChatRole } from '@nicepkg/gpt-runner-shared/common'
import { useIsMobile } from '../../hooks/use-is-mobile.hook'
import type { ChatMessagePanelProps } from '../../components/chat-message-panel'
import { ChatMessagePanel } from '../../components/chat-message-panel'
import { FlexRow } from '../../styles/global.styles'
import { ChatMessageInput } from '../../components/chat-message-input'
import { useGlobalStore } from '../../store/zustand/global'
import type { SingleChat } from '../../store/zustand/global/chat.slice'
import { ChatMessageStatus, ChatRole } from '../../store/zustand/global/chat.slice'
import { useScrollDown } from '../../hooks/use-scroll-down.hook'
import { IconButton } from '../../components/icon-button'
import { ChatPanelWrapper, SidebarWrapper, StyledVSCodePanels } from './chat.styles'

View File

@@ -1,35 +1,9 @@
import type { BaseChatMessage } from 'langchain/schema'
import type { StateCreator } from 'zustand'
import type { SingleChat } from '@nicepkg/gpt-runner-shared/common'
import { ChatMessageStatus, ChatRole } from '@nicepkg/gpt-runner-shared/common'
import type { GetState } from '../types'
import { fetchChatgptStream } from '../../../networks/chatgpt'
export enum ChatMessageStatus {
Idle = 'idle',
Pending = 'pending',
Success = 'success',
Error = 'error',
}
export enum ChatRole {
User = 'user',
ASSISTANT = 'assistant',
SYSTEM = 'system',
}
export type SingleChatMessage = Pick<BaseChatMessage, 'name' | 'text'> & {
name: ChatRole
}
export interface SingleChat {
id: string
title: string
inputtingPrompt: string
systemPrompt: string
temperature: number
messages: SingleChatMessage[]
status: ChatMessageStatus
}
export interface ChatSlice {
openaiKey: string
chatInstances: SingleChat[]

View File

@@ -1,7 +1,7 @@
import { create } from 'zustand'
import { devtools } from 'zustand/middleware'
import cloneDeep from 'lodash-es/cloneDeep'
import { EnvConfig } from '../../../../env-config'
import { EnvConfig } from '@nicepkg/gpt-runner-shared'
/**
* The resetStateQueue is an array that holds callbacks to reset all stores.

View File

@@ -1,10 +1,3 @@
import type { Component } from 'react'
export type GetComponentProps<T> = T extends Component<infer P> ? P : never
export interface BaseResponse<T = any> {
type: 'Success' | 'Fail'
status?: number
message?: string
data?: T
}

View File

@@ -1,5 +1 @@
export const enum ClientEventName {
AddMessageAction = 'add-message-action',
}
export * from './env-config'
export const pkg = 'gpt-runner-web'

View File

@@ -9,7 +9,7 @@
"repository": {
"type": "git",
"url": "https://github.com/nicepkg/gpt-runner",
"directory": "packages/core"
"directory": "packages/gpt-runner-web"
},
"bugs": {
"url": "https://github.com/nicepkg/gpt-runner/issues"
@@ -45,6 +45,7 @@
"dependencies": {
"@microsoft/fetch-event-source": "^2.0.1",
"@nicepkg/gpt-runner-core": "workspace:*",
"@nicepkg/gpt-runner-shared": "workspace:*",
"@tanstack/react-query": "^4.29.11",
"@vscode/webview-ui-toolkit": "^1.2.2",
"clsx": "^1.2.1",

View File

@@ -1,19 +1,11 @@
import type { Request, Response } from 'express'
import type { ChatMessage } from '../services'
import type { ChatStreamReqParams } from '@nicepkg/gpt-runner-shared/common'
import { EnvConfig } from '@nicepkg/gpt-runner-shared/common'
import type { FailResponse, SuccessResponse } from '@nicepkg/gpt-runner-shared/node'
import { buildFailResponse, buildSuccessResponse, sendSuccessResponse } from '@nicepkg/gpt-runner-shared/node'
import { chatgptChain } from '../services'
import type { FailResponse, SuccessResponse } from '../utils/request'
import { buildFailResponse, buildSuccessResponse, sendSuccessResponse } from '../utils/request'
import { EnvConfig } from '../../../env-config'
import type { ControllerConfig } from './../types'
export interface ChatStreamReqParams {
messages: ChatMessage[]
prompt: string
openaiKey?: string
systemPrompt?: string
temperature?: number
}
export const chatgptControllers: ControllerConfig = {
namespacePath: '/chatgpt',
controllers: [

View File

@@ -1,6 +1,6 @@
import { sendSuccessResponse } from '@nicepkg/gpt-runner-shared/node'
import pkg from '../../../package.json'
import type { ControllerConfig } from '../types'
import { sendSuccessResponse } from '../utils/request'
export const configControllers: ControllerConfig = {
namespacePath: '/config',

View File

@@ -1,8 +1,8 @@
import fs from 'node:fs'
import path from 'node:path'
import { getGptFiles, getGptFilesInfo, gptFilesInfoToTree, loadUserConfig } from '@nicepkg/gpt-runner-core'
import { sendFailResponse, sendSuccessResponse } from '@nicepkg/gpt-runner-shared/node'
import type { ControllerConfig } from '../types'
import { sendFailResponse, sendSuccessResponse } from '../utils/request'
export const gptFilesControllers: ControllerConfig = {
namespacePath: '/gpt-files',

View File

@@ -1,29 +1,5 @@
import type { Request, Response } from 'express'
export interface RequestProps {
prompt: string
options?: ChatContext
systemMessage: string
temperature?: number
top_p?: number
}
export interface ChatContext {
conversationId?: string
parentMessageId?: string
}
export interface ModelConfig {
apiModel?: ApiModel
reverseProxy?: string
timeoutMs?: number
socksProxy?: string
httpsProxy?: string
usage?: string
}
export type ApiModel = 'ChatGPTAPI' | undefined
export interface ControllerConfig {
namespacePath: string
controllers: Controller[]

View File

@@ -45,6 +45,7 @@
"stub": "unbuild --stub"
},
"dependencies": {
"@nicepkg/gpt-runner-core": "workspace:*"
"@nicepkg/gpt-runner-core": "workspace:*",
"@nicepkg/gpt-runner-shared": "workspace:*"
}
}
}

70
pnpm-lock.yaml generated
View File

@@ -124,6 +124,9 @@ importers:
'@nicepkg/gpt-runner-core':
specifier: workspace:*
version: link:../gpt-runner-core
'@nicepkg/gpt-runner-shared':
specifier: workspace:*
version: link:../gpt-runner-shared
packages/gpt-runner-cli:
dependencies:
@@ -136,6 +139,9 @@ importers:
'@nicepkg/gpt-runner-core':
specifier: workspace:*
version: link:../gpt-runner-core
'@nicepkg/gpt-runner-shared':
specifier: workspace:*
version: link:../gpt-runner-shared
'@rollup/pluginutils':
specifier: ^5.0.2
version: 5.0.2(rollup@3.21.7)
@@ -169,12 +175,18 @@ importers:
'@nicepkg/gpt-runner':
specifier: workspace:*
version: link:../gpt-runner
'@nicepkg/gpt-runner-shared':
specifier: workspace:*
version: link:../gpt-runner-shared
unconfig:
specifier: ^0.3.7
version: 0.3.7
packages/gpt-runner-core:
dependencies:
'@nicepkg/gpt-runner-shared':
specifier: workspace:*
version: link:../gpt-runner-shared
ignore:
specifier: ^5.2.4
version: 5.2.4
@@ -186,16 +198,22 @@ importers:
version: 0.3.9
packages/gpt-runner-shared:
dependencies:
'@nicepkg/gpt-runner-core':
specifier: workspace:*
version: link:../gpt-runner-core
devDependencies:
'@types/express':
specifier: ^4.17.17
version: 4.17.17
express:
specifier: ^4.18.2
version: 4.18.2
packages/gpt-runner-vscode:
devDependencies:
'@nicepkg/gpt-runner':
specifier: workspace:*
version: link:../gpt-runner
'@nicepkg/gpt-runner-shared':
specifier: workspace:*
version: link:../gpt-runner-shared
'@types/vscode':
specifier: ^1.71.0
version: 1.78.0
@@ -223,6 +241,9 @@ importers:
'@nicepkg/gpt-runner-core':
specifier: workspace:*
version: link:../gpt-runner-core
'@nicepkg/gpt-runner-shared':
specifier: workspace:*
version: link:../gpt-runner-shared
'@tanstack/react-query':
specifier: ^4.29.11
version: 4.29.11(react-dom@18.2.0)(react@18.2.0)
@@ -2868,7 +2889,6 @@ packages:
dependencies:
mime-types: 2.1.35
negotiator: 0.6.3
dev: false
/acorn-jsx@5.3.2(acorn@8.8.2):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
@@ -3001,7 +3021,6 @@ packages:
/array-flatten@1.1.1:
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
dev: false
/array-includes@3.1.6:
resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
@@ -3145,7 +3164,6 @@ packages:
unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
dev: false
/boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -3240,7 +3258,6 @@ packages:
/bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
dev: false
/c12@1.4.1:
resolution: {integrity: sha512-0x7pWfLZpZsgtyotXtuepJc0rZYE0Aw8PwNAXs0jSG9zq6Sl5xmbWnFqfmRY01ieZLHNbvneSFm9/x88CvzAuw==}
@@ -3573,19 +3590,16 @@ packages:
engines: {node: '>= 0.6'}
dependencies:
safe-buffer: 5.2.1
dev: false
/content-type@1.0.5:
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
dev: false
/convert-source-map@1.9.0:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
/cookie-signature@1.0.6:
resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
dev: false
/cookie@0.4.2:
resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
@@ -3595,7 +3609,6 @@ packages:
/cookie@0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
engines: {node: '>= 0.6'}
dev: false
/copy-to-clipboard@3.3.3:
resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
@@ -3706,7 +3719,6 @@ packages:
optional: true
dependencies:
ms: 2.0.0
dev: false
/debug@3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
@@ -3819,7 +3831,6 @@ packages:
/destroy@1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
dev: false
/detect-indent@7.0.1:
resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==}
@@ -3901,7 +3912,6 @@ packages:
/ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
/electron-to-chromium@1.4.394:
resolution: {integrity: sha512-0IbC2cfr8w5LxTz+nmn2cJTGafsK9iauV2r5A5scfzyovqLrxuLoxOHE5OBobP3oVIggJT+0JfKnw9sm87c8Hw==}
@@ -3917,7 +3927,6 @@ packages:
/encodeurl@1.0.2:
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
engines: {node: '>= 0.8'}
dev: false
/encoding@0.1.13:
resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
@@ -4494,7 +4503,6 @@ packages:
/escape-html@1.0.3:
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
dev: false
/escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
@@ -4937,7 +4945,6 @@ packages:
/etag@1.8.1:
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
engines: {node: '>= 0.6'}
dev: false
/eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
@@ -5027,7 +5034,6 @@ packages:
vary: 1.1.2
transitivePeerDependencies:
- supports-color
dev: false
/extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -5135,7 +5141,6 @@ packages:
unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
dev: false
/find-up@4.1.0:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
@@ -5209,7 +5214,6 @@ packages:
/forwarded@0.2.0:
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
engines: {node: '>= 0.6'}
dev: false
/framer-motion@10.12.16(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-w/SfWEIWJkYSgRHYBmln7EhcNo31ao8Xexol8lGXf1pR/tlnBtf1HcxoUmEiEh6pacB4/geku5ami53AAQWHMQ==}
@@ -5232,7 +5236,6 @@ packages:
/fresh@0.5.2:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
dev: false
/fs-extra@10.1.0:
resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
@@ -5605,7 +5608,6 @@ packages:
setprototypeof: 1.2.0
statuses: 2.0.1
toidentifier: 1.0.1
dev: false
/http-proxy-agent@5.0.0:
resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
@@ -5760,7 +5762,6 @@ packages:
/ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
dev: false
/is-alphabetical@1.0.4:
resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
@@ -6653,11 +6654,9 @@ packages:
/media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
dev: false
/merge-descriptors@1.0.1:
resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
dev: false
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -6670,7 +6669,6 @@ packages:
/methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
engines: {node: '>= 0.6'}
dev: false
/micromark-core-commonmark@1.0.6:
resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==}
@@ -6878,7 +6876,6 @@ packages:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
hasBin: true
dev: false
/mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
@@ -7080,7 +7077,6 @@ packages:
/ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
dev: false
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
@@ -7413,7 +7409,6 @@ packages:
engines: {node: '>= 0.8'}
dependencies:
ee-first: 1.1.1
dev: false
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -7623,7 +7618,6 @@ packages:
/parseurl@1.3.3:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
dev: false
/path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
@@ -7657,7 +7651,6 @@ packages:
/path-to-regexp@0.1.7:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
dev: false
/path-to-regexp@6.2.1:
resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
@@ -7866,7 +7859,6 @@ packages:
dependencies:
forwarded: 0.2.0
ipaddr.js: 1.9.1
dev: false
/psl@1.9.0:
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
@@ -7882,7 +7874,6 @@ packages:
engines: {node: '>=0.6'}
dependencies:
side-channel: 1.0.4
dev: false
/querystringify@2.2.0:
resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
@@ -7894,7 +7885,6 @@ packages:
/range-parser@1.2.1:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
dev: false
/raw-body@2.5.1:
resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
@@ -7904,7 +7894,6 @@ packages:
http-errors: 2.0.0
iconv-lite: 0.4.24
unpipe: 1.0.0
dev: false
/rc9@2.1.0:
resolution: {integrity: sha512-ROO9bv8PPqngWKoiUZU3JDQ4sugpdRs9DfwHnzDSxK25XtQn6BEHL6EOd/OtKuDT2qodrtNR+0WkPT6l0jxH5Q==}
@@ -8425,7 +8414,6 @@ packages:
statuses: 2.0.1
transitivePeerDependencies:
- supports-color
dev: false
/serialize-error@7.0.1:
resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
@@ -8444,7 +8432,6 @@ packages:
send: 0.18.0
transitivePeerDependencies:
- supports-color
dev: false
/set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
@@ -8461,7 +8448,6 @@ packages:
/setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
dev: false
/shallowequal@1.1.0:
resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
@@ -8707,7 +8693,6 @@ packages:
/statuses@2.0.1:
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
engines: {node: '>= 0.8'}
dev: false
/std-env@3.3.3:
resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==}
@@ -9031,7 +9016,6 @@ packages:
/toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
dev: false
/totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
@@ -9216,7 +9200,6 @@ packages:
dependencies:
media-typer: 0.3.0
mime-types: 2.1.35
dev: false
/typed-array-length@1.0.4:
resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
@@ -9441,7 +9424,6 @@ packages:
/unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
dev: false
/unplugin-auto-import@0.15.3(rollup@3.21.7):
resolution: {integrity: sha512-RLT8SqbPn4bT7yBshZId0uPSofKWnwr66RyDaxWaFb/+f7OTDOWAsVNz+hOQLBWSjvbekr2xZY9ccS8TDHJbCQ==}
@@ -9534,7 +9516,6 @@ packages:
/utils-merge@1.0.1:
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
engines: {node: '>= 0.4.0'}
dev: false
/uuid@9.0.0:
resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
@@ -9569,7 +9550,6 @@ packages:
/vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
dev: false
/vfile-message@3.1.4:
resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}

View File

@@ -22,7 +22,9 @@
"@nicepkg/gpt-runner-core": ["./packages/gpt-runner-core/src/index.ts"],
"@nicepkg/gpt-runner-web/client": ["./packages/gpt-runner-web/client/src/index"],
"@nicepkg/gpt-runner-web/server": ["./packages/gpt-runner-web/server/src/index"],
"@nicepkg/gpt-runner-shared": ["./packages/gpt-runner-shared/src/index.ts"],
"@nicepkg/gpt-runner-shared/browser": ["./packages/gpt-runner-shared/src/browser/index.ts"],
"@nicepkg/gpt-runner-shared/common": ["./packages/gpt-runner-shared/src/common/index.ts"],
"@nicepkg/gpt-runner-shared/node": ["./packages/gpt-runner-shared/src/node/index.ts"],
}
},
"exclude": [