easc-cli 1.1.34 → 1.1.37
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/package.json +101 -8
- package/script/deploy.ts +10 -6
- package/src/config/config.ts +6 -6
- package/src/plugin/index.ts +3 -2
- package/src/provider/provider.ts +99 -55
- package/src/session/prompt/qwen.txt +1 -1
- package/src/tool/registry.ts +2 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.37",
|
|
4
4
|
"name": "easc-cli",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,13 +23,106 @@
|
|
|
23
23
|
"exports": {
|
|
24
24
|
"./*": "./src/*.ts"
|
|
25
25
|
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@babel/core": "7.28.4",
|
|
28
|
+
"@octokit/webhooks-types": "7.6.1",
|
|
29
|
+
"@eliseart.ai/script": "workspace:*",
|
|
30
|
+
"@parcel/watcher-darwin-arm64": "2.5.1",
|
|
31
|
+
"@parcel/watcher-darwin-x64": "2.5.1",
|
|
32
|
+
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
|
|
33
|
+
"@parcel/watcher-linux-arm64-musl": "2.5.1",
|
|
34
|
+
"@parcel/watcher-linux-x64-glibc": "2.5.1",
|
|
35
|
+
"@parcel/watcher-linux-x64-musl": "2.5.1",
|
|
36
|
+
"@parcel/watcher-win32-x64": "2.5.1",
|
|
37
|
+
"@standard-schema/spec": "1.0.0",
|
|
38
|
+
"@tsconfig/bun": "catalog:",
|
|
39
|
+
"@types/babel__core": "7.20.5",
|
|
40
|
+
"@types/bun": "catalog:",
|
|
41
|
+
"@types/turndown": "5.0.5",
|
|
42
|
+
"@types/yargs": "17.0.33",
|
|
43
|
+
"@typescript/native-preview": "catalog:",
|
|
44
|
+
"typescript": "catalog:",
|
|
45
|
+
"vscode-languageserver-types": "3.17.5",
|
|
46
|
+
"why-is-node-running": "3.2.2",
|
|
47
|
+
"zod-to-json-schema": "3.24.5"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@actions/core": "1.11.1",
|
|
51
|
+
"@actions/github": "6.0.1",
|
|
52
|
+
"@agentclientprotocol/sdk": "0.5.1",
|
|
53
|
+
"@ai-sdk/amazon-bedrock": "3.0.73",
|
|
54
|
+
"@ai-sdk/anthropic": "2.0.57",
|
|
55
|
+
"@ai-sdk/azure": "2.0.91",
|
|
56
|
+
"@ai-sdk/cerebras": "1.0.34",
|
|
57
|
+
"@ai-sdk/cohere": "2.0.22",
|
|
58
|
+
"@ai-sdk/deepinfra": "1.0.31",
|
|
59
|
+
"@ai-sdk/gateway": "2.0.25",
|
|
60
|
+
"@ai-sdk/google": "2.0.52",
|
|
61
|
+
"@ai-sdk/google-vertex": "3.0.97",
|
|
62
|
+
"@ai-sdk/groq": "2.0.34",
|
|
63
|
+
"@ai-sdk/mistral": "2.0.27",
|
|
64
|
+
"@ai-sdk/openai": "2.0.89",
|
|
65
|
+
"@ai-sdk/openai-compatible": "1.0.30",
|
|
66
|
+
"@ai-sdk/perplexity": "2.0.23",
|
|
67
|
+
"@ai-sdk/provider": "2.0.1",
|
|
68
|
+
"@ai-sdk/provider-utils": "3.0.20",
|
|
69
|
+
"@ai-sdk/togetherai": "1.0.31",
|
|
70
|
+
"@ai-sdk/vercel": "1.0.31",
|
|
71
|
+
"@ai-sdk/xai": "2.0.51",
|
|
72
|
+
"@clack/prompts": "1.0.0-alpha.1",
|
|
73
|
+
"@eliseart.ai/plugin": "workspace:*",
|
|
74
|
+
"@eliseart.ai/sdk": "workspace:*",
|
|
75
|
+
"@eliseart.ai/util": "workspace:*",
|
|
76
|
+
"@gitlab/gitlab-ai-provider": "3.1.2",
|
|
77
|
+
"@hono/standard-validator": "0.1.5",
|
|
78
|
+
"@hono/zod-validator": "catalog:",
|
|
79
|
+
"@modelcontextprotocol/sdk": "1.25.2",
|
|
80
|
+
"@octokit/graphql": "9.0.2",
|
|
81
|
+
"@octokit/rest": "catalog:",
|
|
82
|
+
"@openauthjs/openauth": "catalog:",
|
|
83
|
+
"@openrouter/ai-sdk-provider": "1.5.2",
|
|
84
|
+
"@opentui/core": "0.1.74",
|
|
85
|
+
"@opentui/solid": "0.1.74",
|
|
86
|
+
"@parcel/watcher": "2.5.1",
|
|
87
|
+
"@pierre/diffs": "catalog:",
|
|
88
|
+
"@solid-primitives/event-bus": "1.1.2",
|
|
89
|
+
"@solid-primitives/scheduled": "1.5.2",
|
|
90
|
+
"@zip.js/zip.js": "2.7.62",
|
|
91
|
+
"ai": "catalog:",
|
|
92
|
+
"bonjour-service": "1.3.0",
|
|
93
|
+
"bun-pty": "0.4.4",
|
|
94
|
+
"chokidar": "4.0.3",
|
|
95
|
+
"clipboardy": "4.0.0",
|
|
96
|
+
"decimal.js": "10.5.0",
|
|
97
|
+
"diff": "catalog:",
|
|
98
|
+
"fuzzysort": "3.1.0",
|
|
99
|
+
"gray-matter": "4.0.3",
|
|
100
|
+
"hono": "catalog:",
|
|
101
|
+
"hono-openapi": "catalog:",
|
|
102
|
+
"ignore": "7.0.5",
|
|
103
|
+
"jsonc-parser": "3.3.1",
|
|
104
|
+
"minimatch": "10.0.3",
|
|
105
|
+
"open": "10.1.2",
|
|
106
|
+
"opentui-spinner": "0.0.6",
|
|
107
|
+
"partial-json": "0.1.7",
|
|
108
|
+
"remeda": "catalog:",
|
|
109
|
+
"solid-js": "catalog:",
|
|
110
|
+
"strip-ansi": "7.1.2",
|
|
111
|
+
"tree-sitter-bash": "0.25.0",
|
|
112
|
+
"turndown": "7.2.0",
|
|
113
|
+
"ulid": "catalog:",
|
|
114
|
+
"vscode-jsonrpc": "8.2.1",
|
|
115
|
+
"web-tree-sitter": "0.25.10",
|
|
116
|
+
"xdg-basedir": "5.1.0",
|
|
117
|
+
"yargs": "18.0.0",
|
|
118
|
+
"zod": "catalog:",
|
|
119
|
+
"zod-to-json-schema": "3.24.5"
|
|
120
|
+
},
|
|
28
121
|
"optionalDependencies": {
|
|
29
|
-
"easc-linux-x64": "0.0.0-main-
|
|
30
|
-
"easc-linux-arm64": "0.0.0-main-
|
|
31
|
-
"easc-darwin-x64": "0.0.0-main-
|
|
32
|
-
"easc-darwin-arm64": "0.0.0-main-
|
|
33
|
-
"easc-windows-x64": "0.0.0-main-
|
|
122
|
+
"easc-linux-x64": "0.0.0-main-202601241243",
|
|
123
|
+
"easc-linux-arm64": "0.0.0-main-202601241243",
|
|
124
|
+
"easc-darwin-x64": "0.0.0-main-202601241243",
|
|
125
|
+
"easc-darwin-arm64": "0.0.0-main-202601241243",
|
|
126
|
+
"easc-windows-x64": "0.0.0-main-202601241243"
|
|
34
127
|
}
|
|
35
128
|
}
|
package/script/deploy.ts
CHANGED
|
@@ -43,7 +43,7 @@ for (const pkgName of packages) {
|
|
|
43
43
|
try {
|
|
44
44
|
await $`cd ${pkgDir} && npm publish --access public`
|
|
45
45
|
console.log(` ✅ Published ${pkgJson.name}`)
|
|
46
|
-
} catch (e) {
|
|
46
|
+
} catch (e: any) {
|
|
47
47
|
console.error(` ❌ Failed to publish ${pkgJson.name}:`, e.message)
|
|
48
48
|
// We continue even if one fails, as duplicates might exist
|
|
49
49
|
}
|
|
@@ -56,6 +56,7 @@ const binaryVersion = linuxPkg.version
|
|
|
56
56
|
|
|
57
57
|
const mainPkgPath = path.join(root, "package.json")
|
|
58
58
|
const mainPkg = JSON.parse(fs.readFileSync(mainPkgPath, "utf-8"))
|
|
59
|
+
const originalMainPkg = JSON.parse(fs.readFileSync(mainPkgPath, "utf-8")) // keep original
|
|
59
60
|
|
|
60
61
|
const platforms = [
|
|
61
62
|
"easc-linux-x64", "easc-linux-arm64",
|
|
@@ -67,9 +68,6 @@ for (const p of platforms) {
|
|
|
67
68
|
mainPkg.optionalDependencies[p] = binaryVersion
|
|
68
69
|
}
|
|
69
70
|
|
|
70
|
-
fs.writeFileSync(mainPkgPath, JSON.stringify(mainPkg, null, 2))
|
|
71
|
-
console.log(` Updated optionalDependencies to ${binaryVersion}`)
|
|
72
|
-
|
|
73
71
|
// 4. Publish the main wrapper package
|
|
74
72
|
console.log(`\n📤 Publishing main wrapper package (easc-cli@${pkg.version})...`)
|
|
75
73
|
|
|
@@ -83,10 +81,16 @@ try {
|
|
|
83
81
|
// Ensure we are in the root of the package
|
|
84
82
|
await $`npm publish --access public`
|
|
85
83
|
console.log(`✅ Published ${pkg.name}`)
|
|
86
|
-
} catch (e) {
|
|
84
|
+
} catch (e: any) {
|
|
87
85
|
console.error(`❌ Failed to publish ${pkg.name}:`, e.message)
|
|
86
|
+
// Restore original package.json
|
|
87
|
+
fs.writeFileSync(mainPkgPath, JSON.stringify(originalMainPkg, null, 2))
|
|
88
88
|
process.exit(1)
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
// Restore original package.json with deps intact (but keep updated optionalDeps)
|
|
92
|
+
originalMainPkg.optionalDependencies = mainPkg.optionalDependencies
|
|
93
|
+
fs.writeFileSync(mainPkgPath, JSON.stringify(originalMainPkg, null, 2))
|
|
94
|
+
|
|
91
95
|
console.log("\n✨ Deployment complete! Users can now install with:")
|
|
92
|
-
console.log(" npm install -g easc")
|
|
96
|
+
console.log(" npm install -g easc-cli")
|
package/src/config/config.ts
CHANGED
|
@@ -211,11 +211,11 @@ export namespace Config {
|
|
|
211
211
|
{
|
|
212
212
|
cwd: dir,
|
|
213
213
|
},
|
|
214
|
-
).catch(() => {})
|
|
214
|
+
).catch(() => { })
|
|
215
215
|
|
|
216
216
|
// Install any additional dependencies defined in the package.json
|
|
217
217
|
// This allows local plugins and custom tools to use external packages
|
|
218
|
-
await BunProc.run(["install"], { cwd: dir }).catch(() => {})
|
|
218
|
+
await BunProc.run(["install"], { cwd: dir }).catch(() => { })
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
function rel(item: string, patterns: string[]) {
|
|
@@ -1098,7 +1098,7 @@ export namespace Config {
|
|
|
1098
1098
|
mergeDeep(await loadFile(path.join(Global.Path.config, "opencode.jsonc"))),
|
|
1099
1099
|
)
|
|
1100
1100
|
|
|
1101
|
-
await import(path.join(Global.Path.config, "config"), {
|
|
1101
|
+
await import(pathToFileURL(path.join(Global.Path.config, "config")).href, {
|
|
1102
1102
|
with: {
|
|
1103
1103
|
type: "toml",
|
|
1104
1104
|
},
|
|
@@ -1111,7 +1111,7 @@ export namespace Config {
|
|
|
1111
1111
|
await Bun.write(path.join(Global.Path.config, "config.json"), JSON.stringify(result, null, 2))
|
|
1112
1112
|
await fs.unlink(path.join(Global.Path.config, "config"))
|
|
1113
1113
|
})
|
|
1114
|
-
.catch(() => {})
|
|
1114
|
+
.catch(() => { })
|
|
1115
1115
|
|
|
1116
1116
|
return result
|
|
1117
1117
|
})
|
|
@@ -1201,7 +1201,7 @@ export namespace Config {
|
|
|
1201
1201
|
parsed.data.$schema = "https://eliseart.ai/config.json"
|
|
1202
1202
|
// Write the $schema to the original text to preserve variables like {env:VAR}
|
|
1203
1203
|
const updated = original.replace(/^\s*\{/, '{\n "$schema": "https://eliseart.ai/config.json",')
|
|
1204
|
-
await Bun.write(configFilepath, updated).catch(() => {})
|
|
1204
|
+
await Bun.write(configFilepath, updated).catch(() => { })
|
|
1205
1205
|
}
|
|
1206
1206
|
const data = parsed.data
|
|
1207
1207
|
if (data.plugin) {
|
|
@@ -1209,7 +1209,7 @@ export namespace Config {
|
|
|
1209
1209
|
const plugin = data.plugin[i]
|
|
1210
1210
|
try {
|
|
1211
1211
|
data.plugin[i] = import.meta.resolve!(plugin, configFilepath)
|
|
1212
|
-
} catch (err) {}
|
|
1212
|
+
} catch (err) { }
|
|
1213
1213
|
}
|
|
1214
1214
|
}
|
|
1215
1215
|
return data
|
package/src/plugin/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { CodexAuthPlugin } from "./codex"
|
|
|
11
11
|
import { Session } from "../session"
|
|
12
12
|
import { NamedError } from "@eliseart.ai/util/error"
|
|
13
13
|
import { CopilotAuthPlugin } from "./copilot"
|
|
14
|
+
import { pathToFileURL } from "url"
|
|
14
15
|
|
|
15
16
|
export namespace Plugin {
|
|
16
17
|
const log = Log.create({ service: "plugin" })
|
|
@@ -44,7 +45,7 @@ export namespace Plugin {
|
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
const plugins = [...(config.plugin ?? [])]
|
|
47
|
-
if (!Flag.
|
|
48
|
+
if (!Flag.EASC_DISABLE_DEFAULT_PLUGINS) {
|
|
48
49
|
plugins.push(...BUILTIN)
|
|
49
50
|
}
|
|
50
51
|
|
|
@@ -76,7 +77,7 @@ export namespace Plugin {
|
|
|
76
77
|
})
|
|
77
78
|
if (!plugin) continue
|
|
78
79
|
}
|
|
79
|
-
const mod = await import(plugin)
|
|
80
|
+
const mod = await import(pathToFileURL(plugin).href)
|
|
80
81
|
// Prevent duplicate initialization when plugins export the same function
|
|
81
82
|
// as both a named export and default export (e.g., `export const X` and `export default X`).
|
|
82
83
|
// Object.entries(mod) would return both entries pointing to the same function reference.
|
package/src/provider/provider.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import z from "zod"
|
|
2
|
+
import { pathToFileURL } from "url"
|
|
2
3
|
import fuzzysort from "fuzzysort"
|
|
3
4
|
import { Config } from "../config/config"
|
|
4
5
|
import { mapValues, mergeDeep, omit, pickBy, sortBy } from "remeda"
|
|
@@ -263,7 +264,7 @@ export namespace Provider {
|
|
|
263
264
|
// Only use credential chain if no bearer token exists
|
|
264
265
|
// Bearer token takes precedence over credential chain (profiles, access keys, IAM roles, web identity tokens)
|
|
265
266
|
if (!awsBearerToken) {
|
|
266
|
-
const { fromNodeProviderChain } = await import(await BunProc.install("@aws-sdk/credential-providers"))
|
|
267
|
+
const { fromNodeProviderChain } = await import(pathToFileURL(await BunProc.install("@aws-sdk/credential-providers")).href)
|
|
267
268
|
|
|
268
269
|
// Build credential provider options (only pass profile if specified)
|
|
269
270
|
const credentialProviderOptions = profile ? { profile } : {}
|
|
@@ -524,6 +525,16 @@ export namespace Provider {
|
|
|
524
525
|
// Strip Authorization header - AI Gateway uses cf-aig-authorization instead
|
|
525
526
|
headers.delete("Authorization")
|
|
526
527
|
|
|
528
|
+
/*
|
|
529
|
+
console.log(`\x1b[36m│\x1b[0m Plan: ${plan.toUpperCase().padEnd(22)} \x1b[36m│\x1b[0m`)
|
|
530
|
+
const formattedBalance = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(aiCredits)
|
|
531
|
+
console.log(`\x1b[36m│\x1b[0m AI Balance: ${formattedBalance.padEnd(22)} \x1b[36m│\x1b[0m`)
|
|
532
|
+
if (planExpiresAt) {
|
|
533
|
+
const expires = new Date(planExpiresAt).toLocaleDateString()
|
|
534
|
+
console.log(`\x1b[36m│\x1b[0m Renews: ${expires.padEnd(22)} \x1b[36m│\x1b[0m`)
|
|
535
|
+
}
|
|
536
|
+
*/
|
|
537
|
+
|
|
527
538
|
// Transform max_tokens to max_completion_tokens for newer models
|
|
528
539
|
if (init?.body && init.method === "POST") {
|
|
529
540
|
try {
|
|
@@ -764,83 +775,116 @@ export namespace Provider {
|
|
|
764
775
|
env: [],
|
|
765
776
|
options: {},
|
|
766
777
|
models: {
|
|
767
|
-
// Free models
|
|
778
|
+
// Free tier models (low cost)
|
|
768
779
|
"meta-llama/llama-3.2-3b-instruct:free": eliseartBaseModel(
|
|
769
780
|
"meta-llama/llama-3.2-3b-instruct:free",
|
|
770
|
-
"Llama 3.2 3B (Free)"
|
|
781
|
+
"Llama 3.2 3B (Free)",
|
|
782
|
+
{ cost: { input: 0.015, output: 0.06, cache: { read: 0, write: 0 } } }
|
|
771
783
|
),
|
|
772
784
|
"google/gemini-2.0-flash-exp:free": eliseartBaseModel(
|
|
773
785
|
"google/gemini-2.0-flash-exp:free",
|
|
774
786
|
"Gemini 2.0 Flash (Free)",
|
|
775
|
-
{
|
|
787
|
+
{
|
|
788
|
+
cost: { input: 0.135, output: 0.54, cache: { read: 0, write: 0 } },
|
|
789
|
+
capabilities: { temperature: true, reasoning: false, attachment: true, toolcall: true, input: { text: true, audio: false, image: true, video: false, pdf: false }, output: { text: true, audio: false, image: false, video: false, pdf: false }, interleaved: false }
|
|
790
|
+
}
|
|
776
791
|
),
|
|
777
792
|
"cognitivecomputations/dolphin-mistral-24b-venice-edition:free": eliseartBaseModel(
|
|
778
793
|
"cognitivecomputations/dolphin-mistral-24b-venice-edition:free",
|
|
779
|
-
"Dolphin Mistral 24B (Free)"
|
|
794
|
+
"Dolphin Mistral 24B (Free)",
|
|
795
|
+
{ cost: { input: 0.10, output: 0.40, cache: { read: 0, write: 0 } } }
|
|
780
796
|
),
|
|
781
797
|
"z-ai/glm-4.5-air:free": eliseartBaseModel(
|
|
782
798
|
"z-ai/glm-4.5-air:free",
|
|
783
|
-
"GLM 4.5 Air (Free)"
|
|
799
|
+
"GLM 4.5 Air (Free)",
|
|
800
|
+
{ cost: { input: 0.25, output: 1.50, cache: { read: 0, write: 0 } } }
|
|
784
801
|
),
|
|
785
|
-
"deepseek/deepseek-
|
|
786
|
-
"deepseek/deepseek-
|
|
787
|
-
"DeepSeek
|
|
788
|
-
{
|
|
802
|
+
"deepseek/deepseek-chat:free": eliseartBaseModel(
|
|
803
|
+
"deepseek/deepseek-chat:free",
|
|
804
|
+
"DeepSeek Chat (Free)",
|
|
805
|
+
{ cost: { input: 0.54, output: 1.53, cache: { read: 0, write: 0 } } }
|
|
789
806
|
),
|
|
790
|
-
"mistralai/
|
|
791
|
-
"mistralai/
|
|
792
|
-
"
|
|
807
|
+
"mistralai/mistral-7b-instruct:free": eliseartBaseModel(
|
|
808
|
+
"mistralai/mistral-7b-instruct:free",
|
|
809
|
+
"Mistral 7B (Free)",
|
|
810
|
+
{ cost: { input: 0.025, output: 0.10, cache: { read: 0, write: 0 } } }
|
|
793
811
|
),
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
"
|
|
797
|
-
|
|
798
|
-
{ capabilities: { temperature: true, reasoning: false, attachment: true, toolcall: true, input: { text: true, audio: false, image: true, video: false, pdf: false }, output: { text: true, audio: false, image: false, video: false, pdf: false }, interleaved: false } }
|
|
812
|
+
"google/gemma-2-9b-it:free": eliseartBaseModel(
|
|
813
|
+
"google/gemma-2-9b-it:free",
|
|
814
|
+
"Gemma 2 9B (Free)",
|
|
815
|
+
{ cost: { input: 0.025, output: 0.10, cache: { read: 0, write: 0 } } }
|
|
799
816
|
),
|
|
800
|
-
"
|
|
801
|
-
"
|
|
802
|
-
"
|
|
803
|
-
{
|
|
817
|
+
"gryphe/mythomax-l2-13b:free": eliseartBaseModel(
|
|
818
|
+
"gryphe/mythomax-l2-13b:free",
|
|
819
|
+
"MythoMax 13B (Free)",
|
|
820
|
+
{ cost: { input: 0.05, output: 0.20, cache: { read: 0, write: 0 } } }
|
|
804
821
|
),
|
|
805
|
-
"
|
|
806
|
-
"
|
|
807
|
-
"
|
|
808
|
-
{
|
|
822
|
+
"qwen/qwen-2.5-coder-32b-instruct:free": eliseartBaseModel(
|
|
823
|
+
"qwen/qwen-2.5-coder-32b-instruct:free",
|
|
824
|
+
"Qwen 2.5 Coder 32B (Free)",
|
|
825
|
+
{ cost: { input: 0.165, output: 1.35, cache: { read: 0, write: 0 } } }
|
|
809
826
|
),
|
|
810
|
-
"
|
|
811
|
-
"
|
|
812
|
-
"
|
|
813
|
-
{
|
|
827
|
+
"mistralai/pixtral-large-2411:free": eliseartBaseModel(
|
|
828
|
+
"mistralai/pixtral-large-2411:free",
|
|
829
|
+
"Pixtral Large (Free)",
|
|
830
|
+
{
|
|
831
|
+
cost: { input: 0.20, output: 1.20, cache: { read: 0, write: 0 } },
|
|
832
|
+
capabilities: { temperature: true, reasoning: false, attachment: true, toolcall: true, input: { text: true, audio: false, image: true, video: false, pdf: false }, output: { text: true, audio: false, image: false, video: false, pdf: false }, interleaved: false }
|
|
833
|
+
}
|
|
814
834
|
),
|
|
815
|
-
"
|
|
816
|
-
"
|
|
817
|
-
"
|
|
818
|
-
{
|
|
835
|
+
"mistralai/codestral-2501:free": eliseartBaseModel(
|
|
836
|
+
"mistralai/codestral-2501:free",
|
|
837
|
+
"Codestral (Free)",
|
|
838
|
+
{ cost: { input: 0.30, output: 0.90, cache: { read: 0, write: 0 } } }
|
|
819
839
|
),
|
|
820
|
-
"
|
|
821
|
-
"
|
|
822
|
-
"
|
|
823
|
-
{
|
|
840
|
+
"meta-llama/llama-3.3-70b-instruct:free": eliseartBaseModel(
|
|
841
|
+
"meta-llama/llama-3.3-70b-instruct:free",
|
|
842
|
+
"Llama 3.3 70B (Free)",
|
|
843
|
+
{ cost: { input: 0.50, output: 2.00, cache: { read: 0, write: 0 } } }
|
|
824
844
|
),
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
"
|
|
828
|
-
|
|
845
|
+
// Premium MaaS models via Vertex AI
|
|
846
|
+
"google/gemini-3-pro-preview": eliseartBaseModel(
|
|
847
|
+
"google/gemini-3-pro-preview",
|
|
848
|
+
"Gemini 3 Pro Preview",
|
|
849
|
+
{
|
|
850
|
+
cost: { input: 1.80, output: 10.80, cache: { read: 0, write: 0 } },
|
|
851
|
+
limit: { context: 1000000, output: 65536 },
|
|
852
|
+
capabilities: { temperature: true, reasoning: true, attachment: true, toolcall: true, input: { text: true, audio: false, image: true, video: true, pdf: true }, output: { text: true, audio: false, image: false, video: false, pdf: false }, interleaved: false }
|
|
853
|
+
}
|
|
829
854
|
),
|
|
830
|
-
"
|
|
831
|
-
"
|
|
832
|
-
"
|
|
833
|
-
{
|
|
855
|
+
"zai-org/glm-4.7-maas": eliseartBaseModel(
|
|
856
|
+
"zai-org/glm-4.7-maas",
|
|
857
|
+
"GLM 4.7 (MaaS)",
|
|
858
|
+
{ cost: { input: 0.25, output: 1.50, cache: { read: 0, write: 0 } } }
|
|
834
859
|
),
|
|
835
|
-
"
|
|
836
|
-
"
|
|
837
|
-
"
|
|
838
|
-
{
|
|
860
|
+
"moonshotai/kimi-k2-thinking-maas": eliseartBaseModel(
|
|
861
|
+
"moonshotai/kimi-k2-thinking-maas",
|
|
862
|
+
"Kimi K2 Thinking (MaaS)",
|
|
863
|
+
{
|
|
864
|
+
cost: { input: 1.00, output: 5.00, cache: { read: 0, write: 0 } },
|
|
865
|
+
capabilities: { temperature: true, reasoning: true, attachment: false, toolcall: true, input: { text: true, audio: false, image: false, video: false, pdf: false }, output: { text: true, audio: false, image: false, video: false, pdf: false }, interleaved: false }
|
|
866
|
+
}
|
|
867
|
+
),
|
|
868
|
+
"deepseek-ai/deepseek-v3.2-maas": eliseartBaseModel(
|
|
869
|
+
"deepseek-ai/deepseek-v3.2-maas",
|
|
870
|
+
"DeepSeek V3.2 (MaaS)",
|
|
871
|
+
{
|
|
872
|
+
cost: { input: 0.54, output: 1.53, cache: { read: 0, write: 0 } },
|
|
873
|
+
capabilities: { temperature: true, reasoning: true, attachment: false, toolcall: true, input: { text: true, audio: false, image: false, video: false, pdf: false }, output: { text: true, audio: false, image: false, video: false, pdf: false }, interleaved: false }
|
|
874
|
+
}
|
|
839
875
|
),
|
|
840
|
-
"
|
|
841
|
-
"
|
|
842
|
-
"
|
|
843
|
-
{
|
|
876
|
+
"openai/gpt-oss-120b-maas": eliseartBaseModel(
|
|
877
|
+
"openai/gpt-oss-120b-maas",
|
|
878
|
+
"GPT OSS 120B (MaaS)",
|
|
879
|
+
{ cost: { input: 1.00, output: 3.00, cache: { read: 0, write: 0 } } }
|
|
880
|
+
),
|
|
881
|
+
"meta/llama-3.1-405b-instruct-maas": eliseartBaseModel(
|
|
882
|
+
"meta/llama-3.1-405b-instruct-maas",
|
|
883
|
+
"Llama 3.1 405B (MaaS)",
|
|
884
|
+
{
|
|
885
|
+
cost: { input: 4.50, output: 14.40, cache: { read: 0, write: 0 } },
|
|
886
|
+
limit: { context: 128000, output: 4096 }
|
|
887
|
+
}
|
|
844
888
|
),
|
|
845
889
|
}
|
|
846
890
|
}
|
|
@@ -1211,7 +1255,7 @@ export namespace Provider {
|
|
|
1211
1255
|
installedPath = model.api.npm
|
|
1212
1256
|
}
|
|
1213
1257
|
|
|
1214
|
-
const mod = await import(installedPath)
|
|
1258
|
+
const mod = await import(pathToFileURL(installedPath).href)
|
|
1215
1259
|
|
|
1216
1260
|
const fn = mod[Object.keys(mod).find((key) => key.startsWith("create"))!]
|
|
1217
1261
|
const loaded = fn({
|
|
@@ -67,7 +67,7 @@ You are allowed to be proactive, but only when the user asks you to do something
|
|
|
67
67
|
1. Doing the right thing when asked, including taking actions and follow-up actions
|
|
68
68
|
2. Not surprising the user with actions you take without asking
|
|
69
69
|
For example, if the user asks you how to approach something, you should do your best to answer their question first, and not immediately jump into taking actions.
|
|
70
|
-
3.
|
|
70
|
+
3. IMPORTANT: After making edits to files, you MUST provide a brief summary (1-3 sentences) of what you changed and why. Do NOT just silently make changes and stop - users need to understand what was modified. Keep the summary concise but informative.
|
|
71
71
|
|
|
72
72
|
# Following conventions
|
|
73
73
|
When making changes to files, first understand the file's code conventions. Mimic code style, use existing libraries and utilities, and follow existing patterns.
|
package/src/tool/registry.ts
CHANGED
|
@@ -18,6 +18,7 @@ import { Config } from "../config/config"
|
|
|
18
18
|
import path from "path"
|
|
19
19
|
import { type ToolDefinition } from "@eliseart.ai/plugin"
|
|
20
20
|
import z from "zod"
|
|
21
|
+
import { pathToFileURL } from "url"
|
|
21
22
|
import { Plugin } from "../plugin"
|
|
22
23
|
import { WebSearchTool } from "./websearch"
|
|
23
24
|
import { CodeSearchTool } from "./codesearch"
|
|
@@ -43,7 +44,7 @@ export namespace ToolRegistry {
|
|
|
43
44
|
dot: true,
|
|
44
45
|
})) {
|
|
45
46
|
const namespace = path.basename(match, path.extname(match))
|
|
46
|
-
const mod = await import(match)
|
|
47
|
+
const mod = await import(pathToFileURL(match).href)
|
|
47
48
|
for (const [id, def] of Object.entries<ToolDefinition>(mod)) {
|
|
48
49
|
custom.push(fromPlugin(id === "default" ? namespace : `${namespace}_${id}`, def))
|
|
49
50
|
}
|