@openclaw/novita-provider 0.0.0 → 2026.8.1-beta.2
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/README.md +14 -2
- package/dist/index.js +217 -0
- package/openclaw.plugin.json +209 -0
- package/package.json +43 -8
package/README.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
-
#
|
|
1
|
+
# OpenClaw NovitaAI provider
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Official OpenClaw provider plugin for NovitaAI's OpenAI-compatible API.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
openclaw plugins install @openclaw/novita-provider
|
|
9
|
+
openclaw gateway restart
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Docs
|
|
13
|
+
|
|
14
|
+
See `docs/providers/novita.md` in the OpenClaw repository, or the published
|
|
15
|
+
docs at `https://docs.openclaw.ai/providers/novita`.
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { readConfiguredProviderCatalogEntries } from "openclaw/plugin-sdk/provider-catalog-shared";
|
|
2
|
+
import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
|
|
3
|
+
import { buildProviderReplayFamilyHooks } from "openclaw/plugin-sdk/provider-model-shared";
|
|
4
|
+
import { buildProviderToolCompatFamilyHooks } from "openclaw/plugin-sdk/provider-tools";
|
|
5
|
+
//#region extensions/novita/openclaw.plugin.json
|
|
6
|
+
var openclaw_plugin_default = {
|
|
7
|
+
id: "novita",
|
|
8
|
+
activation: { "onStartup": false },
|
|
9
|
+
enabledByDefault: true,
|
|
10
|
+
providers: [
|
|
11
|
+
"novita",
|
|
12
|
+
"novita-ai",
|
|
13
|
+
"novitaai"
|
|
14
|
+
],
|
|
15
|
+
providerAuthAliases: {
|
|
16
|
+
"novita-ai": "novita",
|
|
17
|
+
"novitaai": "novita"
|
|
18
|
+
},
|
|
19
|
+
providerEndpoints: [{
|
|
20
|
+
"endpointClass": "novita-native",
|
|
21
|
+
"hosts": ["api.novita.ai"]
|
|
22
|
+
}],
|
|
23
|
+
providerRequest: { "providers": {
|
|
24
|
+
"novita": { "family": "novita" },
|
|
25
|
+
"novita-ai": { "family": "novita" },
|
|
26
|
+
"novitaai": { "family": "novita" }
|
|
27
|
+
} },
|
|
28
|
+
setup: { "providers": [{
|
|
29
|
+
"id": "novita",
|
|
30
|
+
"envVars": ["NOVITA_API_KEY"]
|
|
31
|
+
}] },
|
|
32
|
+
providerAuthChoices: [{
|
|
33
|
+
"provider": "novita",
|
|
34
|
+
"method": "api-key",
|
|
35
|
+
"choiceId": "novita-api-key",
|
|
36
|
+
"appGuidedSecret": true,
|
|
37
|
+
"choiceLabel": "NovitaAI API key",
|
|
38
|
+
"choiceHint": "OpenAI-compatible NovitaAI endpoint",
|
|
39
|
+
"groupId": "novita",
|
|
40
|
+
"groupLabel": "NovitaAI",
|
|
41
|
+
"groupHint": "OpenAI-compatible NovitaAI endpoint",
|
|
42
|
+
"optionKey": "novitaApiKey",
|
|
43
|
+
"cliFlag": "--novita-api-key",
|
|
44
|
+
"cliOption": "--novita-api-key <key>",
|
|
45
|
+
"cliDescription": "NovitaAI API key"
|
|
46
|
+
}],
|
|
47
|
+
configSchema: {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"additionalProperties": false,
|
|
50
|
+
"properties": {}
|
|
51
|
+
},
|
|
52
|
+
modelCatalog: {
|
|
53
|
+
"aliases": {
|
|
54
|
+
"novita-ai": { "provider": "novita" },
|
|
55
|
+
"novitaai": { "provider": "novita" }
|
|
56
|
+
},
|
|
57
|
+
"providers": { "novita": {
|
|
58
|
+
"baseUrl": "https://api.novita.ai/openai/v1",
|
|
59
|
+
"api": "openai-completions",
|
|
60
|
+
"defaultModel": "deepseek/deepseek-v4-pro",
|
|
61
|
+
"models": [
|
|
62
|
+
{
|
|
63
|
+
"id": "moonshotai/kimi-k3",
|
|
64
|
+
"name": "Kimi K3",
|
|
65
|
+
"reasoning": true,
|
|
66
|
+
"input": ["text", "image"],
|
|
67
|
+
"contextWindow": 1048576,
|
|
68
|
+
"maxTokens": 1048576,
|
|
69
|
+
"cost": {
|
|
70
|
+
"input": 3,
|
|
71
|
+
"output": 15,
|
|
72
|
+
"cacheRead": .3,
|
|
73
|
+
"cacheWrite": 0
|
|
74
|
+
},
|
|
75
|
+
"compat": { "codeMode": "capable" }
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "moonshotai/kimi-k2.7-code",
|
|
79
|
+
"name": "Kimi K2.7 Code",
|
|
80
|
+
"reasoning": true,
|
|
81
|
+
"input": ["text", "image"],
|
|
82
|
+
"contextWindow": 262144,
|
|
83
|
+
"maxTokens": 262144,
|
|
84
|
+
"cost": {
|
|
85
|
+
"input": .95,
|
|
86
|
+
"output": 4,
|
|
87
|
+
"cacheRead": .19,
|
|
88
|
+
"cacheWrite": 0
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "minimax/minimax-m3",
|
|
93
|
+
"name": "MiniMax M3",
|
|
94
|
+
"reasoning": true,
|
|
95
|
+
"input": ["text", "image"],
|
|
96
|
+
"contextWindow": 1e6,
|
|
97
|
+
"maxTokens": 131072,
|
|
98
|
+
"cost": {
|
|
99
|
+
"input": .3,
|
|
100
|
+
"output": 1.2,
|
|
101
|
+
"cacheRead": .06,
|
|
102
|
+
"cacheWrite": 0
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "zai-org/glm-5.2",
|
|
107
|
+
"name": "GLM-5.2",
|
|
108
|
+
"reasoning": true,
|
|
109
|
+
"input": ["text"],
|
|
110
|
+
"contextWindow": 1048576,
|
|
111
|
+
"maxTokens": 131072,
|
|
112
|
+
"cost": {
|
|
113
|
+
"input": 1.4,
|
|
114
|
+
"output": 4.4,
|
|
115
|
+
"cacheRead": .26,
|
|
116
|
+
"cacheWrite": 0
|
|
117
|
+
},
|
|
118
|
+
"compat": { "codeMode": "capable" }
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "deepseek/deepseek-v4-pro",
|
|
122
|
+
"name": "DeepSeek V4 Pro",
|
|
123
|
+
"reasoning": true,
|
|
124
|
+
"input": ["text"],
|
|
125
|
+
"contextWindow": 1048576,
|
|
126
|
+
"maxTokens": 393216,
|
|
127
|
+
"cost": {
|
|
128
|
+
"input": 1.6,
|
|
129
|
+
"output": 3.2,
|
|
130
|
+
"cacheRead": .135,
|
|
131
|
+
"cacheWrite": 0
|
|
132
|
+
},
|
|
133
|
+
"compat": { "codeMode": "capable" }
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"id": "deepseek/deepseek-v4-flash",
|
|
137
|
+
"name": "DeepSeek V4 Flash",
|
|
138
|
+
"reasoning": true,
|
|
139
|
+
"input": ["text"],
|
|
140
|
+
"contextWindow": 1048576,
|
|
141
|
+
"maxTokens": 393216,
|
|
142
|
+
"cost": {
|
|
143
|
+
"input": .14,
|
|
144
|
+
"output": .28,
|
|
145
|
+
"cacheRead": .028,
|
|
146
|
+
"cacheWrite": 0
|
|
147
|
+
},
|
|
148
|
+
"compat": { "codeMode": "capable" }
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "qwen/qwen3.7-max",
|
|
152
|
+
"name": "Qwen3.7-Max",
|
|
153
|
+
"reasoning": true,
|
|
154
|
+
"input": ["text"],
|
|
155
|
+
"contextWindow": 1e6,
|
|
156
|
+
"maxTokens": 65536,
|
|
157
|
+
"cost": {
|
|
158
|
+
"input": 1.25,
|
|
159
|
+
"output": 3.75,
|
|
160
|
+
"cacheRead": .25,
|
|
161
|
+
"cacheWrite": 0
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"id": "minimax/minimax-m2.7",
|
|
166
|
+
"name": "MiniMax M2.7",
|
|
167
|
+
"status": "deprecated",
|
|
168
|
+
"replacedBy": "minimax/minimax-m3",
|
|
169
|
+
"reasoning": true,
|
|
170
|
+
"input": ["text"],
|
|
171
|
+
"contextWindow": 204800,
|
|
172
|
+
"maxTokens": 131072,
|
|
173
|
+
"cost": {
|
|
174
|
+
"input": .3,
|
|
175
|
+
"output": 1.2,
|
|
176
|
+
"cacheRead": .06,
|
|
177
|
+
"cacheWrite": 0
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
]
|
|
181
|
+
} },
|
|
182
|
+
"discovery": { "novita": "refreshable" }
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
//#endregion
|
|
186
|
+
//#region extensions/novita/index.ts
|
|
187
|
+
const PROVIDER_ID = "novita";
|
|
188
|
+
var novita_default = defineSingleProviderPluginEntry({
|
|
189
|
+
id: PROVIDER_ID,
|
|
190
|
+
name: "NovitaAI Provider",
|
|
191
|
+
description: "Official OpenClaw NovitaAI provider plugin",
|
|
192
|
+
manifest: openclaw_plugin_default,
|
|
193
|
+
provider: {
|
|
194
|
+
label: "NovitaAI",
|
|
195
|
+
docsPath: "/providers/novita",
|
|
196
|
+
aliases: ["novita-ai", "novitaai"],
|
|
197
|
+
manifestAuth: {
|
|
198
|
+
noteTitle: "NovitaAI",
|
|
199
|
+
noteMessage: "Manage API keys at https://novita.ai/settings/key-management"
|
|
200
|
+
},
|
|
201
|
+
catalog: {
|
|
202
|
+
allowExplicitBaseUrl: true,
|
|
203
|
+
liveModelDiscovery: true
|
|
204
|
+
},
|
|
205
|
+
augmentModelCatalog: ({ config }) => readConfiguredProviderCatalogEntries({
|
|
206
|
+
config,
|
|
207
|
+
providerId: PROVIDER_ID
|
|
208
|
+
}),
|
|
209
|
+
...buildProviderReplayFamilyHooks({
|
|
210
|
+
family: "openai-compatible",
|
|
211
|
+
dropReasoningFromHistory: false
|
|
212
|
+
}),
|
|
213
|
+
...buildProviderToolCompatFamilyHooks("openai")
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
//#endregion
|
|
217
|
+
export { novita_default as default };
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "novita",
|
|
3
|
+
"activation": {
|
|
4
|
+
"onStartup": false
|
|
5
|
+
},
|
|
6
|
+
"enabledByDefault": true,
|
|
7
|
+
"providers": ["novita", "novita-ai", "novitaai"],
|
|
8
|
+
"providerAuthAliases": {
|
|
9
|
+
"novita-ai": "novita",
|
|
10
|
+
"novitaai": "novita"
|
|
11
|
+
},
|
|
12
|
+
"providerEndpoints": [
|
|
13
|
+
{
|
|
14
|
+
"endpointClass": "novita-native",
|
|
15
|
+
"hosts": ["api.novita.ai"]
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"providerRequest": {
|
|
19
|
+
"providers": {
|
|
20
|
+
"novita": {
|
|
21
|
+
"family": "novita"
|
|
22
|
+
},
|
|
23
|
+
"novita-ai": {
|
|
24
|
+
"family": "novita"
|
|
25
|
+
},
|
|
26
|
+
"novitaai": {
|
|
27
|
+
"family": "novita"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"setup": {
|
|
32
|
+
"providers": [
|
|
33
|
+
{
|
|
34
|
+
"id": "novita",
|
|
35
|
+
"envVars": ["NOVITA_API_KEY"]
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"providerAuthChoices": [
|
|
40
|
+
{
|
|
41
|
+
"provider": "novita",
|
|
42
|
+
"method": "api-key",
|
|
43
|
+
"choiceId": "novita-api-key",
|
|
44
|
+
"appGuidedSecret": true,
|
|
45
|
+
"choiceLabel": "NovitaAI API key",
|
|
46
|
+
"choiceHint": "OpenAI-compatible NovitaAI endpoint",
|
|
47
|
+
"groupId": "novita",
|
|
48
|
+
"groupLabel": "NovitaAI",
|
|
49
|
+
"groupHint": "OpenAI-compatible NovitaAI endpoint",
|
|
50
|
+
"optionKey": "novitaApiKey",
|
|
51
|
+
"cliFlag": "--novita-api-key",
|
|
52
|
+
"cliOption": "--novita-api-key <key>",
|
|
53
|
+
"cliDescription": "NovitaAI API key"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"configSchema": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"additionalProperties": false,
|
|
59
|
+
"properties": {}
|
|
60
|
+
},
|
|
61
|
+
"modelCatalog": {
|
|
62
|
+
"aliases": {
|
|
63
|
+
"novita-ai": {
|
|
64
|
+
"provider": "novita"
|
|
65
|
+
},
|
|
66
|
+
"novitaai": {
|
|
67
|
+
"provider": "novita"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"providers": {
|
|
71
|
+
"novita": {
|
|
72
|
+
"baseUrl": "https://api.novita.ai/openai/v1",
|
|
73
|
+
"api": "openai-completions",
|
|
74
|
+
"defaultModel": "deepseek/deepseek-v4-pro",
|
|
75
|
+
"models": [
|
|
76
|
+
{
|
|
77
|
+
"id": "moonshotai/kimi-k3",
|
|
78
|
+
"name": "Kimi K3",
|
|
79
|
+
"reasoning": true,
|
|
80
|
+
"input": ["text", "image"],
|
|
81
|
+
"contextWindow": 1048576,
|
|
82
|
+
"maxTokens": 1048576,
|
|
83
|
+
"cost": {
|
|
84
|
+
"input": 3,
|
|
85
|
+
"output": 15,
|
|
86
|
+
"cacheRead": 0.3,
|
|
87
|
+
"cacheWrite": 0
|
|
88
|
+
},
|
|
89
|
+
"compat": {
|
|
90
|
+
"codeMode": "capable"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "moonshotai/kimi-k2.7-code",
|
|
95
|
+
"name": "Kimi K2.7 Code",
|
|
96
|
+
"reasoning": true,
|
|
97
|
+
"input": ["text", "image"],
|
|
98
|
+
"contextWindow": 262144,
|
|
99
|
+
"maxTokens": 262144,
|
|
100
|
+
"cost": {
|
|
101
|
+
"input": 0.95,
|
|
102
|
+
"output": 4,
|
|
103
|
+
"cacheRead": 0.19,
|
|
104
|
+
"cacheWrite": 0
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "minimax/minimax-m3",
|
|
109
|
+
"name": "MiniMax M3",
|
|
110
|
+
"reasoning": true,
|
|
111
|
+
"input": ["text", "image"],
|
|
112
|
+
"contextWindow": 1000000,
|
|
113
|
+
"maxTokens": 131072,
|
|
114
|
+
"cost": {
|
|
115
|
+
"input": 0.3,
|
|
116
|
+
"output": 1.2,
|
|
117
|
+
"cacheRead": 0.06,
|
|
118
|
+
"cacheWrite": 0
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "zai-org/glm-5.2",
|
|
123
|
+
"name": "GLM-5.2",
|
|
124
|
+
"reasoning": true,
|
|
125
|
+
"input": ["text"],
|
|
126
|
+
"contextWindow": 1048576,
|
|
127
|
+
"maxTokens": 131072,
|
|
128
|
+
"cost": {
|
|
129
|
+
"input": 1.4,
|
|
130
|
+
"output": 4.4,
|
|
131
|
+
"cacheRead": 0.26,
|
|
132
|
+
"cacheWrite": 0
|
|
133
|
+
},
|
|
134
|
+
"compat": {
|
|
135
|
+
"codeMode": "capable"
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "deepseek/deepseek-v4-pro",
|
|
140
|
+
"name": "DeepSeek V4 Pro",
|
|
141
|
+
"reasoning": true,
|
|
142
|
+
"input": ["text"],
|
|
143
|
+
"contextWindow": 1048576,
|
|
144
|
+
"maxTokens": 393216,
|
|
145
|
+
"cost": {
|
|
146
|
+
"input": 1.6,
|
|
147
|
+
"output": 3.2,
|
|
148
|
+
"cacheRead": 0.135,
|
|
149
|
+
"cacheWrite": 0
|
|
150
|
+
},
|
|
151
|
+
"compat": {
|
|
152
|
+
"codeMode": "capable"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"id": "deepseek/deepseek-v4-flash",
|
|
157
|
+
"name": "DeepSeek V4 Flash",
|
|
158
|
+
"reasoning": true,
|
|
159
|
+
"input": ["text"],
|
|
160
|
+
"contextWindow": 1048576,
|
|
161
|
+
"maxTokens": 393216,
|
|
162
|
+
"cost": {
|
|
163
|
+
"input": 0.14,
|
|
164
|
+
"output": 0.28,
|
|
165
|
+
"cacheRead": 0.028,
|
|
166
|
+
"cacheWrite": 0
|
|
167
|
+
},
|
|
168
|
+
"compat": {
|
|
169
|
+
"codeMode": "capable"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"id": "qwen/qwen3.7-max",
|
|
174
|
+
"name": "Qwen3.7-Max",
|
|
175
|
+
"reasoning": true,
|
|
176
|
+
"input": ["text"],
|
|
177
|
+
"contextWindow": 1000000,
|
|
178
|
+
"maxTokens": 65536,
|
|
179
|
+
"cost": {
|
|
180
|
+
"input": 1.25,
|
|
181
|
+
"output": 3.75,
|
|
182
|
+
"cacheRead": 0.25,
|
|
183
|
+
"cacheWrite": 0
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"id": "minimax/minimax-m2.7",
|
|
188
|
+
"name": "MiniMax M2.7",
|
|
189
|
+
"status": "deprecated",
|
|
190
|
+
"replacedBy": "minimax/minimax-m3",
|
|
191
|
+
"reasoning": true,
|
|
192
|
+
"input": ["text"],
|
|
193
|
+
"contextWindow": 204800,
|
|
194
|
+
"maxTokens": 131072,
|
|
195
|
+
"cost": {
|
|
196
|
+
"input": 0.3,
|
|
197
|
+
"output": 1.2,
|
|
198
|
+
"cacheRead": 0.06,
|
|
199
|
+
"cacheWrite": 0
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"discovery": {
|
|
206
|
+
"novita": "refreshable"
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
package/package.json
CHANGED
|
@@ -1,14 +1,49 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/novita-provider",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"license": "MIT",
|
|
3
|
+
"version": "2026.8.1-beta.2",
|
|
4
|
+
"description": "OpenClaw NovitaAI provider plugin",
|
|
6
5
|
"repository": {
|
|
7
6
|
"type": "git",
|
|
8
|
-
"url": "
|
|
7
|
+
"url": "https://github.com/openclaw/openclaw"
|
|
9
8
|
},
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
9
|
+
"type": "module",
|
|
10
|
+
"openclaw": {
|
|
11
|
+
"extensions": [
|
|
12
|
+
"./index.ts"
|
|
13
|
+
],
|
|
14
|
+
"install": {
|
|
15
|
+
"clawhubSpec": "clawhub:@openclaw/novita-provider",
|
|
16
|
+
"npmSpec": "@openclaw/novita-provider",
|
|
17
|
+
"defaultChoice": "npm",
|
|
18
|
+
"minHostVersion": ">=2026.7.2"
|
|
19
|
+
},
|
|
20
|
+
"compat": {
|
|
21
|
+
"pluginApi": ">=2026.8.1-beta.2"
|
|
22
|
+
},
|
|
23
|
+
"build": {
|
|
24
|
+
"openclawVersion": "2026.8.1-beta.2",
|
|
25
|
+
"bundledDist": false
|
|
26
|
+
},
|
|
27
|
+
"release": {
|
|
28
|
+
"publishToClawHub": true,
|
|
29
|
+
"publishToNpm": true
|
|
30
|
+
},
|
|
31
|
+
"runtimeExtensions": [
|
|
32
|
+
"./dist/index.js"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist/**",
|
|
37
|
+
"openclaw.plugin.json",
|
|
38
|
+
"README.md"
|
|
39
|
+
],
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"openclaw": ">=2026.8.1-beta.2"
|
|
42
|
+
},
|
|
43
|
+
"peerDependenciesMeta": {
|
|
44
|
+
"openclaw": {
|
|
45
|
+
"optional": true
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"bundledDependencies": []
|
|
14
49
|
}
|