nemoris 0.1.18 → 0.1.19
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
CHANGED
|
@@ -20,12 +20,17 @@ export function resolveInstallDir({ env = process.env, cwd: _cwd = process.cwd()
|
|
|
20
20
|
}
|
|
21
21
|
return resolved;
|
|
22
22
|
}
|
|
23
|
-
//
|
|
23
|
+
// Default data dir — prefer this if it exists with actual config
|
|
24
|
+
const defaultDataDir = path.join(os.homedir(), ".nemoris-data");
|
|
25
|
+
if (fs.existsSync(path.join(defaultDataDir, "config"))) {
|
|
26
|
+
return defaultDataDir;
|
|
27
|
+
}
|
|
28
|
+
// Dev mode: when CWD is the source repo and no ~/.nemoris-data config exists
|
|
24
29
|
if (_cwd && fs.existsSync(path.join(_cwd, "package.json")) &&
|
|
25
30
|
fs.existsSync(path.join(_cwd, "src", "cli.js"))) {
|
|
26
31
|
return _cwd;
|
|
27
32
|
}
|
|
28
|
-
return
|
|
33
|
+
return defaultDataDir;
|
|
29
34
|
}
|
|
30
35
|
|
|
31
36
|
export function resolveAuthProfilesPath({ env = process.env, cwd = process.cwd() } = {}) {
|
|
@@ -10,18 +10,18 @@ export const PROVIDER_ENV_KEYS = {
|
|
|
10
10
|
export const CURATED_MODELS = {
|
|
11
11
|
anthropic: [
|
|
12
12
|
{
|
|
13
|
-
value: "anthropic/claude-
|
|
14
|
-
label: "claude-
|
|
15
|
-
hint: "ctx 200k ·
|
|
13
|
+
value: "anthropic/claude-sonnet-4.6",
|
|
14
|
+
label: "claude-sonnet-4.6",
|
|
15
|
+
hint: "ctx 200k · balanced · recommended",
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
|
-
value: "anthropic/claude-
|
|
19
|
-
label: "claude-
|
|
20
|
-
hint: "ctx 200k ·
|
|
18
|
+
value: "anthropic/claude-haiku-4.5",
|
|
19
|
+
label: "claude-haiku-4.5",
|
|
20
|
+
hint: "ctx 200k · fast · cheapest",
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
value: "anthropic/claude-opus-4
|
|
24
|
-
label: "claude-opus-4
|
|
23
|
+
value: "anthropic/claude-opus-4.6",
|
|
24
|
+
label: "claude-opus-4.6",
|
|
25
25
|
hint: "ctx 200k · most capable · expensive",
|
|
26
26
|
},
|
|
27
27
|
],
|
|
@@ -50,13 +50,13 @@ export const CURATED_MODELS = {
|
|
|
50
50
|
openrouter: [
|
|
51
51
|
// ── Top picks (most popular on OpenRouter) ──
|
|
52
52
|
{
|
|
53
|
-
value: "openrouter/anthropic/claude-sonnet-4
|
|
54
|
-
label: "anthropic/claude-sonnet-4
|
|
53
|
+
value: "openrouter/anthropic/claude-sonnet-4.6",
|
|
54
|
+
label: "anthropic/claude-sonnet-4.6",
|
|
55
55
|
hint: "ctx 200k · balanced · recommended",
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
|
-
value: "openrouter/anthropic/claude-haiku-4
|
|
59
|
-
label: "anthropic/claude-haiku-4
|
|
58
|
+
value: "openrouter/anthropic/claude-haiku-4.5",
|
|
59
|
+
label: "anthropic/claude-haiku-4.5",
|
|
60
60
|
hint: "ctx 200k · fast · cheap",
|
|
61
61
|
},
|
|
62
62
|
{
|
|
@@ -70,8 +70,8 @@ export const CURATED_MODELS = {
|
|
|
70
70
|
hint: "ctx 164k · strong · very cheap",
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
|
-
value: "openrouter/anthropic/claude-opus-4
|
|
74
|
-
label: "anthropic/claude-opus-4
|
|
73
|
+
value: "openrouter/anthropic/claude-opus-4.6",
|
|
74
|
+
label: "anthropic/claude-opus-4.6",
|
|
75
75
|
hint: "ctx 200k · most capable · expensive",
|
|
76
76
|
},
|
|
77
77
|
// ── More options ──
|
|
@@ -59,79 +59,80 @@ const PROVIDER_CONFIGS = {
|
|
|
59
59
|
const MODEL_ROLE_ORDER = ["cheap_interactive", "fallback", "manual_bump"];
|
|
60
60
|
const PROVIDER_MODEL_PRESETS = {
|
|
61
61
|
anthropic: [
|
|
62
|
-
{
|
|
63
|
-
key: "haiku",
|
|
64
|
-
id: "anthropic/claude-haiku-4-5",
|
|
65
|
-
label: "Claude Haiku 4.5",
|
|
66
|
-
description: "Fastest and cheapest for interactive work.",
|
|
67
|
-
},
|
|
68
62
|
{
|
|
69
63
|
key: "sonnet",
|
|
70
|
-
id: "anthropic/claude-sonnet-4
|
|
64
|
+
id: "anthropic/claude-sonnet-4.6",
|
|
71
65
|
label: "Claude Sonnet 4.6",
|
|
72
66
|
description: "Balanced default for most serious work.",
|
|
73
67
|
},
|
|
68
|
+
{
|
|
69
|
+
key: "haiku",
|
|
70
|
+
id: "anthropic/claude-haiku-4.5",
|
|
71
|
+
label: "Claude Haiku 4.5",
|
|
72
|
+
description: "Fastest and cheapest for interactive work.",
|
|
73
|
+
},
|
|
74
74
|
{
|
|
75
75
|
key: "opus",
|
|
76
|
-
id: "anthropic/claude-opus-4
|
|
76
|
+
id: "anthropic/claude-opus-4.6",
|
|
77
77
|
label: "Claude Opus 4.6",
|
|
78
78
|
description: "Highest quality, slowest and most expensive.",
|
|
79
79
|
},
|
|
80
80
|
],
|
|
81
81
|
openrouter: [
|
|
82
|
-
// Anthropic via OpenRouter
|
|
82
|
+
// Anthropic via OpenRouter — top picks
|
|
83
83
|
{
|
|
84
84
|
key: "sonnet",
|
|
85
|
-
id: "openrouter/anthropic/claude-sonnet-4
|
|
85
|
+
id: "openrouter/anthropic/claude-sonnet-4.6",
|
|
86
86
|
label: "Sonnet 4.6 (Anthropic)",
|
|
87
|
-
description: "Strong
|
|
87
|
+
description: "Strong balanced default · ctx 200k",
|
|
88
88
|
group: "Anthropic",
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
key: "haiku",
|
|
92
|
-
id: "openrouter/anthropic/claude-haiku-4
|
|
92
|
+
id: "openrouter/anthropic/claude-haiku-4.5",
|
|
93
93
|
label: "Haiku 4.5 (Anthropic)",
|
|
94
|
-
description: "Fastest and cheapest
|
|
94
|
+
description: "Fastest and cheapest · ctx 200k",
|
|
95
95
|
group: "Anthropic",
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
98
|
key: "opus",
|
|
99
|
-
id: "openrouter/anthropic/claude-opus-4
|
|
99
|
+
id: "openrouter/anthropic/claude-opus-4.6",
|
|
100
100
|
label: "Opus 4.6 (Anthropic)",
|
|
101
|
-
description: "Highest quality
|
|
101
|
+
description: "Highest quality · ctx 200k",
|
|
102
102
|
group: "Anthropic",
|
|
103
103
|
},
|
|
104
|
-
// OpenAI via OpenRouter
|
|
105
|
-
{
|
|
106
|
-
key: "gpt4o",
|
|
107
|
-
id: "openrouter/openai/gpt-4o",
|
|
108
|
-
label: "GPT-4o (OpenAI)",
|
|
109
|
-
description: "Fast multimodal OpenAI model.",
|
|
110
|
-
group: "OpenAI",
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
key: "gpt4omini",
|
|
114
|
-
id: "openrouter/openai/gpt-4o-mini",
|
|
115
|
-
label: "GPT-4o mini (OpenAI)",
|
|
116
|
-
description: "Cheapest OpenAI option.",
|
|
117
|
-
group: "OpenAI",
|
|
118
|
-
},
|
|
119
104
|
// Google via OpenRouter
|
|
120
105
|
{
|
|
121
|
-
key: "
|
|
122
|
-
id: "openrouter/google/gemini-3
|
|
123
|
-
label: "Gemini 3
|
|
124
|
-
description: "
|
|
106
|
+
key: "gemini3flash",
|
|
107
|
+
id: "openrouter/google/gemini-3-flash-preview",
|
|
108
|
+
label: "Gemini 3 Flash (Google)",
|
|
109
|
+
description: "Fast, long context · ctx 1M",
|
|
125
110
|
group: "Google",
|
|
126
111
|
},
|
|
112
|
+
// DeepSeek via OpenRouter
|
|
113
|
+
{
|
|
114
|
+
key: "deepseek",
|
|
115
|
+
id: "openrouter/deepseek/deepseek-v3.2",
|
|
116
|
+
label: "DeepSeek V3.2",
|
|
117
|
+
description: "Strong and very cheap · ctx 164k",
|
|
118
|
+
group: "DeepSeek",
|
|
119
|
+
},
|
|
127
120
|
// Meta via OpenRouter
|
|
128
121
|
{
|
|
129
|
-
key: "
|
|
130
|
-
id: "openrouter/meta-llama/llama-4-
|
|
131
|
-
label: "Llama 4
|
|
132
|
-
description: "Open-weight
|
|
122
|
+
key: "llama4maverick",
|
|
123
|
+
id: "openrouter/meta-llama/llama-4-maverick",
|
|
124
|
+
label: "Llama 4 Maverick (Meta)",
|
|
125
|
+
description: "Open-weight · ctx 1M · free tier",
|
|
133
126
|
group: "Meta",
|
|
134
127
|
},
|
|
128
|
+
// OpenAI via OpenRouter
|
|
129
|
+
{
|
|
130
|
+
key: "gpt4o",
|
|
131
|
+
id: "openrouter/openai/gpt-4o",
|
|
132
|
+
label: "GPT-4o (OpenAI)",
|
|
133
|
+
description: "Fast multimodal · ctx 128k",
|
|
134
|
+
group: "OpenAI",
|
|
135
|
+
},
|
|
135
136
|
],
|
|
136
137
|
openai: [
|
|
137
138
|
{
|
|
@@ -110,14 +110,14 @@ export function routerTemplate({ anthropic = false, openrouter = false, openai =
|
|
|
110
110
|
};
|
|
111
111
|
|
|
112
112
|
const anthropicModels = pick("anthropic", [
|
|
113
|
-
"anthropic/claude-
|
|
114
|
-
"anthropic/claude-
|
|
115
|
-
"anthropic/claude-opus-4
|
|
113
|
+
"anthropic/claude-sonnet-4.6",
|
|
114
|
+
"anthropic/claude-haiku-4.5",
|
|
115
|
+
"anthropic/claude-opus-4.6",
|
|
116
116
|
]);
|
|
117
117
|
const openrouterModels = pick("openrouter", [
|
|
118
|
-
"openrouter/anthropic/claude-
|
|
119
|
-
"openrouter/anthropic/claude-
|
|
120
|
-
"openrouter/anthropic/claude-opus-4
|
|
118
|
+
"openrouter/anthropic/claude-sonnet-4.6",
|
|
119
|
+
"openrouter/anthropic/claude-haiku-4.5",
|
|
120
|
+
"openrouter/anthropic/claude-opus-4.6",
|
|
121
121
|
]);
|
|
122
122
|
const openaiModels = pick("openai", [
|
|
123
123
|
"openai-codex/gpt-4.1",
|