@leikeduntech/leiai-js 3.5.4 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +146 -146
- package/build/index.js +46 -24
- package/package.json +82 -82
package/bin/cli.js
CHANGED
|
@@ -1,146 +1,146 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import crypto from 'node:crypto'
|
|
3
|
-
|
|
4
|
-
import * as url from 'url'
|
|
5
|
-
import { cac } from 'cac'
|
|
6
|
-
import Conf from 'conf'
|
|
7
|
-
import { readPackageUp } from 'read-pkg-up'
|
|
8
|
-
|
|
9
|
-
import { ChatGPTAPI } from '../build/index.js'
|
|
10
|
-
|
|
11
|
-
async function main() {
|
|
12
|
-
const dirname = url.fileURLToPath(new URL('.', import.meta.url))
|
|
13
|
-
const pkg = await readPackageUp({ cwd: dirname })
|
|
14
|
-
const version = (pkg && pkg.packageJson && pkg.packageJson.version) || '4'
|
|
15
|
-
const config = new Conf({ projectName: 'chatgpt' })
|
|
16
|
-
|
|
17
|
-
const cli = cac('chatgpt')
|
|
18
|
-
cli
|
|
19
|
-
.command('<prompt>', 'Ask ChatGPT a question')
|
|
20
|
-
.option('-c, --continue', 'Continue last conversation', {
|
|
21
|
-
default: false
|
|
22
|
-
})
|
|
23
|
-
.option('-d, --debug', 'Enables debug logging', {
|
|
24
|
-
default: false
|
|
25
|
-
})
|
|
26
|
-
.option('-s, --stream', 'Streams the response', {
|
|
27
|
-
default: true
|
|
28
|
-
})
|
|
29
|
-
.option('-s, --store', 'Enables the local message cache', {
|
|
30
|
-
default: true
|
|
31
|
-
})
|
|
32
|
-
.option('-t, --timeout <timeout>', 'Timeout in milliseconds')
|
|
33
|
-
.option('-k, --apiKey <apiKey>', 'OpenAI API key')
|
|
34
|
-
.option('-o, --apiOrg <apiOrg>', 'OpenAI API key')
|
|
35
|
-
.option('-m, --model <model>', 'Model (gpt-3.5-turbo, gpt-4)', {
|
|
36
|
-
default: 'gpt-3.5-turbo'
|
|
37
|
-
})
|
|
38
|
-
.option(
|
|
39
|
-
'-n, --conversationName <conversationName>',
|
|
40
|
-
'Unique name for the conversation'
|
|
41
|
-
)
|
|
42
|
-
.action(async (prompt, options) => {
|
|
43
|
-
const apiOrg = options.apiOrg || process.env.OPENAI_API_ORG
|
|
44
|
-
const apiKey = options.apiKey || process.env.OPENAI_API_KEY
|
|
45
|
-
if (!apiKey) {
|
|
46
|
-
console.error('error: either set OPENAI_API_KEY or use --apiKey\n')
|
|
47
|
-
cli.outputHelp()
|
|
48
|
-
process.exit(1)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const apiKeyHash = hash(apiKey)
|
|
52
|
-
const conversationName = options.conversationName || 'default'
|
|
53
|
-
const conversationKey = `${conversationName}:${apiKeyHash}`
|
|
54
|
-
const conversation =
|
|
55
|
-
options.continue && options.store
|
|
56
|
-
? config.get(conversationKey, {}) || {}
|
|
57
|
-
: {}
|
|
58
|
-
const model = options.model
|
|
59
|
-
let conversationId = undefined
|
|
60
|
-
let parentMessageId = undefined
|
|
61
|
-
|
|
62
|
-
if (conversation.lastMessageId) {
|
|
63
|
-
const lastMessage = conversation[conversation.lastMessageId]
|
|
64
|
-
if (lastMessage) {
|
|
65
|
-
conversationId = lastMessage.conversationId
|
|
66
|
-
parentMessageId = lastMessage.id
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (options.debug) {
|
|
71
|
-
console.log('using config', config.path)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const api = new ChatGPTAPI({
|
|
75
|
-
apiKey,
|
|
76
|
-
apiOrg,
|
|
77
|
-
debug: options.debug,
|
|
78
|
-
completionParams: {
|
|
79
|
-
model
|
|
80
|
-
},
|
|
81
|
-
getMessageById: async (id) => {
|
|
82
|
-
if (options.store) {
|
|
83
|
-
return conversation[id]
|
|
84
|
-
} else {
|
|
85
|
-
return null
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
upsertMessage: async (message) => {
|
|
89
|
-
if (options.store) {
|
|
90
|
-
conversation[message.id] = message
|
|
91
|
-
conversation.lastMessageId = message.id
|
|
92
|
-
config.set(conversationKey, conversation)
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
const res = await api.sendMessage(prompt, {
|
|
98
|
-
conversationId,
|
|
99
|
-
parentMessageId,
|
|
100
|
-
timeoutMs: options.timeout || undefined,
|
|
101
|
-
onProgress: options.stream
|
|
102
|
-
? (progress) => {
|
|
103
|
-
if (progress.delta) {
|
|
104
|
-
process.stdout.write(progress.delta)
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
: undefined
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
if (options.stream) {
|
|
111
|
-
process.stdout.write('\n')
|
|
112
|
-
} else {
|
|
113
|
-
console.log(res.text)
|
|
114
|
-
}
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
cli.command('rm-cache', 'Clears the local message cache').action(() => {
|
|
118
|
-
config.clear()
|
|
119
|
-
console.log('cleared cache', config.path)
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
cli.command('ls-cache', 'Prints the local message cache path').action(() => {
|
|
123
|
-
console.log(config.path)
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
cli.help()
|
|
127
|
-
cli.version(version)
|
|
128
|
-
|
|
129
|
-
try {
|
|
130
|
-
cli.parse()
|
|
131
|
-
} catch (err) {
|
|
132
|
-
console.error(`error: ${err.message}\n`)
|
|
133
|
-
cli.outputHelp()
|
|
134
|
-
process.exit(1)
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
function hash(d) {
|
|
139
|
-
const buffer = Buffer.isBuffer(d) ? d : Buffer.from(d.toString())
|
|
140
|
-
return crypto.createHash('sha256').update(buffer).digest('hex')
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
main().catch((err) => {
|
|
144
|
-
console.error(err)
|
|
145
|
-
process.exit(1)
|
|
146
|
-
})
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import crypto from 'node:crypto'
|
|
3
|
+
|
|
4
|
+
import * as url from 'url'
|
|
5
|
+
import { cac } from 'cac'
|
|
6
|
+
import Conf from 'conf'
|
|
7
|
+
import { readPackageUp } from 'read-pkg-up'
|
|
8
|
+
|
|
9
|
+
import { ChatGPTAPI } from '../build/index.js'
|
|
10
|
+
|
|
11
|
+
async function main() {
|
|
12
|
+
const dirname = url.fileURLToPath(new URL('.', import.meta.url))
|
|
13
|
+
const pkg = await readPackageUp({ cwd: dirname })
|
|
14
|
+
const version = (pkg && pkg.packageJson && pkg.packageJson.version) || '4'
|
|
15
|
+
const config = new Conf({ projectName: 'chatgpt' })
|
|
16
|
+
|
|
17
|
+
const cli = cac('chatgpt')
|
|
18
|
+
cli
|
|
19
|
+
.command('<prompt>', 'Ask ChatGPT a question')
|
|
20
|
+
.option('-c, --continue', 'Continue last conversation', {
|
|
21
|
+
default: false
|
|
22
|
+
})
|
|
23
|
+
.option('-d, --debug', 'Enables debug logging', {
|
|
24
|
+
default: false
|
|
25
|
+
})
|
|
26
|
+
.option('-s, --stream', 'Streams the response', {
|
|
27
|
+
default: true
|
|
28
|
+
})
|
|
29
|
+
.option('-s, --store', 'Enables the local message cache', {
|
|
30
|
+
default: true
|
|
31
|
+
})
|
|
32
|
+
.option('-t, --timeout <timeout>', 'Timeout in milliseconds')
|
|
33
|
+
.option('-k, --apiKey <apiKey>', 'OpenAI API key')
|
|
34
|
+
.option('-o, --apiOrg <apiOrg>', 'OpenAI API key')
|
|
35
|
+
.option('-m, --model <model>', 'Model (gpt-3.5-turbo, gpt-4)', {
|
|
36
|
+
default: 'gpt-3.5-turbo'
|
|
37
|
+
})
|
|
38
|
+
.option(
|
|
39
|
+
'-n, --conversationName <conversationName>',
|
|
40
|
+
'Unique name for the conversation'
|
|
41
|
+
)
|
|
42
|
+
.action(async (prompt, options) => {
|
|
43
|
+
const apiOrg = options.apiOrg || process.env.OPENAI_API_ORG
|
|
44
|
+
const apiKey = options.apiKey || process.env.OPENAI_API_KEY
|
|
45
|
+
if (!apiKey) {
|
|
46
|
+
console.error('error: either set OPENAI_API_KEY or use --apiKey\n')
|
|
47
|
+
cli.outputHelp()
|
|
48
|
+
process.exit(1)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const apiKeyHash = hash(apiKey)
|
|
52
|
+
const conversationName = options.conversationName || 'default'
|
|
53
|
+
const conversationKey = `${conversationName}:${apiKeyHash}`
|
|
54
|
+
const conversation =
|
|
55
|
+
options.continue && options.store
|
|
56
|
+
? config.get(conversationKey, {}) || {}
|
|
57
|
+
: {}
|
|
58
|
+
const model = options.model
|
|
59
|
+
let conversationId = undefined
|
|
60
|
+
let parentMessageId = undefined
|
|
61
|
+
|
|
62
|
+
if (conversation.lastMessageId) {
|
|
63
|
+
const lastMessage = conversation[conversation.lastMessageId]
|
|
64
|
+
if (lastMessage) {
|
|
65
|
+
conversationId = lastMessage.conversationId
|
|
66
|
+
parentMessageId = lastMessage.id
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (options.debug) {
|
|
71
|
+
console.log('using config', config.path)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const api = new ChatGPTAPI({
|
|
75
|
+
apiKey,
|
|
76
|
+
apiOrg,
|
|
77
|
+
debug: options.debug,
|
|
78
|
+
completionParams: {
|
|
79
|
+
model
|
|
80
|
+
},
|
|
81
|
+
getMessageById: async (id) => {
|
|
82
|
+
if (options.store) {
|
|
83
|
+
return conversation[id]
|
|
84
|
+
} else {
|
|
85
|
+
return null
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
upsertMessage: async (message) => {
|
|
89
|
+
if (options.store) {
|
|
90
|
+
conversation[message.id] = message
|
|
91
|
+
conversation.lastMessageId = message.id
|
|
92
|
+
config.set(conversationKey, conversation)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
const res = await api.sendMessage(prompt, {
|
|
98
|
+
conversationId,
|
|
99
|
+
parentMessageId,
|
|
100
|
+
timeoutMs: options.timeout || undefined,
|
|
101
|
+
onProgress: options.stream
|
|
102
|
+
? (progress) => {
|
|
103
|
+
if (progress.delta) {
|
|
104
|
+
process.stdout.write(progress.delta)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
: undefined
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
if (options.stream) {
|
|
111
|
+
process.stdout.write('\n')
|
|
112
|
+
} else {
|
|
113
|
+
console.log(res.text)
|
|
114
|
+
}
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
cli.command('rm-cache', 'Clears the local message cache').action(() => {
|
|
118
|
+
config.clear()
|
|
119
|
+
console.log('cleared cache', config.path)
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
cli.command('ls-cache', 'Prints the local message cache path').action(() => {
|
|
123
|
+
console.log(config.path)
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
cli.help()
|
|
127
|
+
cli.version(version)
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
cli.parse()
|
|
131
|
+
} catch (err) {
|
|
132
|
+
console.error(`error: ${err.message}\n`)
|
|
133
|
+
cli.outputHelp()
|
|
134
|
+
process.exit(1)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function hash(d) {
|
|
139
|
+
const buffer = Buffer.isBuffer(d) ? d : Buffer.from(d.toString())
|
|
140
|
+
return crypto.createHash('sha256').update(buffer).digest('hex')
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
main().catch((err) => {
|
|
144
|
+
console.error(err)
|
|
145
|
+
process.exit(1)
|
|
146
|
+
})
|
package/build/index.js
CHANGED
|
@@ -153,6 +153,9 @@ function signTencentHunyuan(bodyData, url, keyList) {
|
|
|
153
153
|
const signBase64 = CryptoJS.enc.Base64.stringify(hmac);
|
|
154
154
|
return signBase64;
|
|
155
155
|
}
|
|
156
|
+
function isPositiveNumber(str) {
|
|
157
|
+
return /^[1-9]\d*$/.test(str);
|
|
158
|
+
}
|
|
156
159
|
|
|
157
160
|
// src/chatgpt-api.ts
|
|
158
161
|
var CHATGPT_MODEL = "gpt-3.5-turbo";
|
|
@@ -184,8 +187,8 @@ var ChatGPTAPI = class {
|
|
|
184
187
|
messageStore,
|
|
185
188
|
completionParams,
|
|
186
189
|
systemMessage,
|
|
187
|
-
maxModelTokens =
|
|
188
|
-
maxResponseTokens =
|
|
190
|
+
maxModelTokens = 0,
|
|
191
|
+
maxResponseTokens = -1e7,
|
|
189
192
|
getMessageById,
|
|
190
193
|
upsertMessage,
|
|
191
194
|
fetch: fetch2 = fetch
|
|
@@ -198,7 +201,6 @@ var ChatGPTAPI = class {
|
|
|
198
201
|
this._fetch = fetch2;
|
|
199
202
|
this._completionParams = {
|
|
200
203
|
model: CHATGPT_MODEL,
|
|
201
|
-
temperature: ["baidu", "zhipu"].indexOf(manufacturer.toLowerCase()) > -1 ? 0.95 : ["xunfei"].indexOf(manufacturer.toLowerCase()) > -1 ? 0.5 : 1,
|
|
202
204
|
...completionParams
|
|
203
205
|
};
|
|
204
206
|
this._systemMessage = systemMessage;
|
|
@@ -389,6 +391,9 @@ var ChatGPTAPI = class {
|
|
|
389
391
|
messages,
|
|
390
392
|
stream
|
|
391
393
|
};
|
|
394
|
+
if (!isPositiveNumber(maxTokens)) {
|
|
395
|
+
delete body.max_tokens;
|
|
396
|
+
}
|
|
392
397
|
if (this._manufacturer.toLowerCase() === "baidu" && typeof pluginList === "string" && pluginList.indexOf("zhishiku") > -1) {
|
|
393
398
|
if (body.model)
|
|
394
399
|
delete body.model;
|
|
@@ -861,6 +866,7 @@ var ChatGPTAPI = class {
|
|
|
861
866
|
if (abortController) {
|
|
862
867
|
;
|
|
863
868
|
responseP.cancel = () => {
|
|
869
|
+
console.log("responseP cancel error ", responseP);
|
|
864
870
|
abortController.abort();
|
|
865
871
|
};
|
|
866
872
|
}
|
|
@@ -926,14 +932,16 @@ var ChatGPTAPI = class {
|
|
|
926
932
|
});
|
|
927
933
|
}
|
|
928
934
|
let objText = [{ type: "text", text }];
|
|
929
|
-
if (completionParams.fileList && completionParams.fileList.length > 0
|
|
935
|
+
if (completionParams.fileList && completionParams.fileList.length > 0) {
|
|
930
936
|
completionParams.fileList.forEach((item) => {
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
+
if ((item == null ? void 0 : item.type.indexOf("image")) > -1) {
|
|
938
|
+
objText.push({
|
|
939
|
+
type: "image_url",
|
|
940
|
+
image_url: {
|
|
941
|
+
url: item.imgUrl
|
|
942
|
+
}
|
|
943
|
+
});
|
|
944
|
+
}
|
|
937
945
|
});
|
|
938
946
|
if (["openai", "azure"].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
939
947
|
text = objText;
|
|
@@ -941,9 +949,15 @@ var ChatGPTAPI = class {
|
|
|
941
949
|
}
|
|
942
950
|
const systemMessageOffset = messages.length;
|
|
943
951
|
let userMessage = null;
|
|
944
|
-
if ([
|
|
945
|
-
|
|
946
|
-
|
|
952
|
+
if ([
|
|
953
|
+
"baidu",
|
|
954
|
+
"zhipu",
|
|
955
|
+
"xunfei",
|
|
956
|
+
"aliyun",
|
|
957
|
+
"tencent",
|
|
958
|
+
"chatdoc",
|
|
959
|
+
"anthropic"
|
|
960
|
+
].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
947
961
|
userMessage = [{ role: "user", content: text }];
|
|
948
962
|
} else if (pluginData) {
|
|
949
963
|
userMessage = {
|
|
@@ -999,9 +1013,15 @@ ${message.content}`]);
|
|
|
999
1013
|
}
|
|
1000
1014
|
const parentMessageRole = parentMessage.role || "user";
|
|
1001
1015
|
let parentMessageItem = null;
|
|
1002
|
-
if ([
|
|
1003
|
-
|
|
1004
|
-
|
|
1016
|
+
if ([
|
|
1017
|
+
"baidu",
|
|
1018
|
+
"zhipu",
|
|
1019
|
+
"xunfei",
|
|
1020
|
+
"aliyun",
|
|
1021
|
+
"tencent",
|
|
1022
|
+
"chatdoc",
|
|
1023
|
+
"anthropic"
|
|
1024
|
+
].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
1005
1025
|
parentMessageItem = {
|
|
1006
1026
|
role: parentMessageRole,
|
|
1007
1027
|
content: parentMessage.text
|
|
@@ -1031,14 +1051,16 @@ ${message.content}`]);
|
|
|
1031
1051
|
parentMessageId = parentMessage.parentMessageId;
|
|
1032
1052
|
} while (true);
|
|
1033
1053
|
let maxTokens = this._maxModelTokens;
|
|
1034
|
-
if (
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1054
|
+
if (isPositiveNumber(maxTokens)) {
|
|
1055
|
+
if (["openai", "azure"].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
1056
|
+
maxTokens = Math.max(
|
|
1057
|
+
1,
|
|
1058
|
+
Math.min(this._maxModelTokens - numTokens, this._maxResponseTokens)
|
|
1059
|
+
);
|
|
1060
|
+
} else if (numTokens > this._maxModelTokens) {
|
|
1061
|
+
maxTokens = this._maxModelTokens;
|
|
1062
|
+
errorMessage = `${this._manufacturer}\uFF1A\u5F53\u524D\u63D0\u95EE\u4E0A\u4E0B\u6587\u5185\u5BB9\u957F\u5EA6${numTokens}tokns\u8D85\u957F\uFF0C\u8BE5\u6A21\u578B\u6700\u5927\u63D0\u95EE\u957F\u5EA6\u4E3A${this._maxModelTokens}tokens\uFF0C\u8BF7\u5207\u6362\u5176\u4ED6\u589E\u5F3AAI\u6A21\u578B\u6216\u51CF\u5C11\u5B57\u6570\u6216\u8005\u5173\u95ED\u4E0A\u4E0B\u6587\u5386\u53F2\u63D0\u9AD8\u5355\u6B21\u63D0\u95EE\u957F\u5EA6\uFF01`;
|
|
1063
|
+
}
|
|
1042
1064
|
}
|
|
1043
1065
|
return { messages, maxTokens, numTokens, errorMessage };
|
|
1044
1066
|
}
|
package/package.json
CHANGED
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@leikeduntech/leiai-js",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"author": "liuhean",
|
|
5
|
-
"repository": {
|
|
6
|
-
"type": "git",
|
|
7
|
-
"url": "git+https://github.com/liuhean2021/leiai-js.git"
|
|
8
|
-
},
|
|
9
|
-
"license": "UNLICENSED",
|
|
10
|
-
"type": "module",
|
|
11
|
-
"source": "./src/index.ts",
|
|
12
|
-
"types": "./build/index.d.ts",
|
|
13
|
-
"scripts": {
|
|
14
|
-
"build": "tsup",
|
|
15
|
-
"dev": "tsup --watch",
|
|
16
|
-
"clean": "del build",
|
|
17
|
-
"prebuild": "run-s clean",
|
|
18
|
-
"predev": "run-s clean",
|
|
19
|
-
"pretest": "run-s build",
|
|
20
|
-
"docs": "typedoc",
|
|
21
|
-
"prepare": "husky install",
|
|
22
|
-
"pre-commit": "lint-staged",
|
|
23
|
-
"test": "run-p test:*",
|
|
24
|
-
"test:prettier": "prettier '**/*.{js,jsx,ts,tsx}' --check"
|
|
25
|
-
},
|
|
26
|
-
"exports": {
|
|
27
|
-
".": {
|
|
28
|
-
"types": "./build/index.d.ts",
|
|
29
|
-
"import": "./build/index.js",
|
|
30
|
-
"default": "./build/index.js"
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"files": [
|
|
34
|
-
"build",
|
|
35
|
-
"bin"
|
|
36
|
-
],
|
|
37
|
-
"bin": {
|
|
38
|
-
"leiai-js": "bin/cli.js"
|
|
39
|
-
},
|
|
40
|
-
"engines": {
|
|
41
|
-
"node": ">=14"
|
|
42
|
-
},
|
|
43
|
-
"dependencies": {
|
|
44
|
-
"@leikeduntech/spark-nodejs": "1.1.0",
|
|
45
|
-
"cac": "^6.7.14",
|
|
46
|
-
"conf": "^11.0.1",
|
|
47
|
-
"crypto-js": "^4.1.1",
|
|
48
|
-
"eventsource-parser": "^1.0.0",
|
|
49
|
-
"js-tiktoken": "^1.0.5",
|
|
50
|
-
"keyv": "^4.5.2",
|
|
51
|
-
"p-timeout": "^6.1.1",
|
|
52
|
-
"quick-lru": "^6.1.1",
|
|
53
|
-
"read-pkg-up": "^9.1.0",
|
|
54
|
-
"uuid": "^9.0.0"
|
|
55
|
-
},
|
|
56
|
-
"devDependencies": {
|
|
57
|
-
"@keyv/redis": "^2.5.7",
|
|
58
|
-
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
|
|
59
|
-
"@types/node": "^18.16.3",
|
|
60
|
-
"@types/uuid": "^9.0.1",
|
|
61
|
-
"del-cli": "^5.0.0",
|
|
62
|
-
"dotenv-safe": "^8.2.0",
|
|
63
|
-
"husky": "^8.0.3",
|
|
64
|
-
"lint-staged": "^13.2.2",
|
|
65
|
-
"npm-run-all": "^4.1.5",
|
|
66
|
-
"ora": "^6.3.0",
|
|
67
|
-
"prettier": "^2.8.8",
|
|
68
|
-
"tsup": "^6.7.0",
|
|
69
|
-
"tsx": "^3.12.7",
|
|
70
|
-
"typedoc": "^0.24.6",
|
|
71
|
-
"typedoc-plugin-markdown": "^3.15.3",
|
|
72
|
-
"typescript": "^5.0.4"
|
|
73
|
-
},
|
|
74
|
-
"lint-staged": {
|
|
75
|
-
"*.{ts,tsx}": [
|
|
76
|
-
"prettier --write"
|
|
77
|
-
]
|
|
78
|
-
},
|
|
79
|
-
"keywords": [
|
|
80
|
-
"leiai"
|
|
81
|
-
]
|
|
82
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@leikeduntech/leiai-js",
|
|
3
|
+
"version": "3.6.0",
|
|
4
|
+
"author": "liuhean",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/liuhean2021/leiai-js.git"
|
|
8
|
+
},
|
|
9
|
+
"license": "UNLICENSED",
|
|
10
|
+
"type": "module",
|
|
11
|
+
"source": "./src/index.ts",
|
|
12
|
+
"types": "./build/index.d.ts",
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsup",
|
|
15
|
+
"dev": "tsup --watch",
|
|
16
|
+
"clean": "del build",
|
|
17
|
+
"prebuild": "run-s clean",
|
|
18
|
+
"predev": "run-s clean",
|
|
19
|
+
"pretest": "run-s build",
|
|
20
|
+
"docs": "typedoc",
|
|
21
|
+
"prepare": "husky install",
|
|
22
|
+
"pre-commit": "lint-staged",
|
|
23
|
+
"test": "run-p test:*",
|
|
24
|
+
"test:prettier": "prettier '**/*.{js,jsx,ts,tsx}' --check"
|
|
25
|
+
},
|
|
26
|
+
"exports": {
|
|
27
|
+
".": {
|
|
28
|
+
"types": "./build/index.d.ts",
|
|
29
|
+
"import": "./build/index.js",
|
|
30
|
+
"default": "./build/index.js"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"build",
|
|
35
|
+
"bin"
|
|
36
|
+
],
|
|
37
|
+
"bin": {
|
|
38
|
+
"leiai-js": "bin/cli.js"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=14"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@leikeduntech/spark-nodejs": "1.1.0",
|
|
45
|
+
"cac": "^6.7.14",
|
|
46
|
+
"conf": "^11.0.1",
|
|
47
|
+
"crypto-js": "^4.1.1",
|
|
48
|
+
"eventsource-parser": "^1.0.0",
|
|
49
|
+
"js-tiktoken": "^1.0.5",
|
|
50
|
+
"keyv": "^4.5.2",
|
|
51
|
+
"p-timeout": "^6.1.1",
|
|
52
|
+
"quick-lru": "^6.1.1",
|
|
53
|
+
"read-pkg-up": "^9.1.0",
|
|
54
|
+
"uuid": "^9.0.0"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@keyv/redis": "^2.5.7",
|
|
58
|
+
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
|
|
59
|
+
"@types/node": "^18.16.3",
|
|
60
|
+
"@types/uuid": "^9.0.1",
|
|
61
|
+
"del-cli": "^5.0.0",
|
|
62
|
+
"dotenv-safe": "^8.2.0",
|
|
63
|
+
"husky": "^8.0.3",
|
|
64
|
+
"lint-staged": "^13.2.2",
|
|
65
|
+
"npm-run-all": "^4.1.5",
|
|
66
|
+
"ora": "^6.3.0",
|
|
67
|
+
"prettier": "^2.8.8",
|
|
68
|
+
"tsup": "^6.7.0",
|
|
69
|
+
"tsx": "^3.12.7",
|
|
70
|
+
"typedoc": "^0.24.6",
|
|
71
|
+
"typedoc-plugin-markdown": "^3.15.3",
|
|
72
|
+
"typescript": "^5.0.4"
|
|
73
|
+
},
|
|
74
|
+
"lint-staged": {
|
|
75
|
+
"*.{ts,tsx}": [
|
|
76
|
+
"prettier --write"
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"keywords": [
|
|
80
|
+
"leiai"
|
|
81
|
+
]
|
|
82
|
+
}
|