pzero-operator 0.1.4 → 0.1.6

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.
@@ -11,7 +11,7 @@ const EXTENSIONS_DOC_URL = "https://github.com/operator/blob/main/packages/codin
11
11
  const DEFAULT_MODELS_CONFIG = {
12
12
  providers: {
13
13
  "alem-ai-plus-gpt-oss": {
14
- baseUrl: "https://llm.alem.ai/v1",
14
+ baseUrl: "https://llm.alem.ai",
15
15
  api: "openai-completions",
16
16
  authHeader: true,
17
17
  compat: {
@@ -69,9 +69,9 @@ const DEFAULT_MODELS_CONFIG = {
69
69
  },
70
70
  };
71
71
  const DEFAULT_SETTINGS_CONFIG = {
72
- defaultProvider: "alem-ai-plus-qwen3-6",
73
- defaultModel: "qwen3-6",
74
- defaultThinkingLevel: "high",
72
+ defaultProvider: "alem-ai-plus-gpt-oss",
73
+ defaultModel: "gpt-oss",
74
+ defaultThinkingLevel: "low",
75
75
  };
76
76
  function ensureDefaultRuntimeConfig() {
77
77
  const agentDir = getAgentDir();
@@ -98,9 +98,17 @@ function migrateAlemBaseUrls() {
98
98
  if (!parsed || typeof parsed !== "object" || !parsed.providers || typeof parsed.providers !== "object") {
99
99
  return false;
100
100
  }
101
- const expectedProviders = ["alem-ai-plus-gpt-oss", "alem-ai-plus-qwen3-6", "alem-ai-plus-gemma4"];
102
101
  let changed = false;
103
- for (const providerName of expectedProviders) {
102
+ const gptOssProvider = parsed.providers["alem-ai-plus-gpt-oss"];
103
+ if (gptOssProvider && typeof gptOssProvider === "object") {
104
+ if (gptOssProvider.baseUrl === "https://llm.alem.ai/v1" ||
105
+ gptOssProvider.baseUrl === "https://llm.alem.ai/chat/completions" ||
106
+ gptOssProvider.baseUrl === "https://llm.alem.ai/v1/chat/completions") {
107
+ gptOssProvider.baseUrl = "https://llm.alem.ai";
108
+ changed = true;
109
+ }
110
+ }
111
+ for (const providerName of ["alem-ai-plus-qwen3-6", "alem-ai-plus-gemma4"]) {
104
112
  const provider = parsed.providers[providerName];
105
113
  if (!provider || typeof provider !== "object") {
106
114
  continue;
@@ -121,6 +129,43 @@ function migrateAlemBaseUrls() {
121
129
  return false;
122
130
  }
123
131
  }
132
+ function migrateAlemDefaultSettings() {
133
+ const settingsPath = getSettingsPath();
134
+ if (!existsSync(settingsPath))
135
+ return false;
136
+ try {
137
+ const parsed = JSON.parse(readFileSync(settingsPath, "utf-8"));
138
+ if (!parsed || typeof parsed !== "object") {
139
+ return false;
140
+ }
141
+ let changed = false;
142
+ if (!parsed.defaultProvider) {
143
+ parsed.defaultProvider = DEFAULT_SETTINGS_CONFIG.defaultProvider;
144
+ changed = true;
145
+ }
146
+ if (!parsed.defaultModel) {
147
+ parsed.defaultModel = DEFAULT_SETTINGS_CONFIG.defaultModel;
148
+ changed = true;
149
+ }
150
+ if (!parsed.defaultThinkingLevel) {
151
+ parsed.defaultThinkingLevel = DEFAULT_SETTINGS_CONFIG.defaultThinkingLevel;
152
+ changed = true;
153
+ }
154
+ if (parsed.defaultProvider === "alem-ai-plus-qwen3-6" &&
155
+ parsed.defaultModel === "qwen3-6" &&
156
+ parsed.defaultThinkingLevel === "high") {
157
+ parsed.defaultThinkingLevel = "low";
158
+ changed = true;
159
+ }
160
+ if (changed) {
161
+ writeFileSync(settingsPath, `${JSON.stringify(parsed, null, 2)}\n`, "utf-8");
162
+ }
163
+ return changed;
164
+ }
165
+ catch {
166
+ return false;
167
+ }
168
+ }
124
169
  /**
125
170
  * Migrate legacy oauth.json and settings.json apiKeys to auth.json.
126
171
  *
@@ -386,6 +431,7 @@ export async function showDeprecationWarnings(warnings) {
386
431
  export function runMigrations(cwd) {
387
432
  ensureDefaultRuntimeConfig();
388
433
  migrateAlemBaseUrls();
434
+ migrateAlemDefaultSettings();
389
435
  const migratedAuthProviders = migrateAuthToAuthJson();
390
436
  migrateSessionsFromAgentRoot();
391
437
  migrateToolsToBin();
@@ -3394,6 +3394,7 @@ export class InteractiveMode {
3394
3394
  if (!requestedProvider) {
3395
3395
  const models = this.session.modelRegistry
3396
3396
  .getAll()
3397
+ .filter((model) => isAlemProvider(model.provider))
3397
3398
  .slice()
3398
3399
  .sort((a, b) => `${a.provider}/${a.id}`.localeCompare(`${b.provider}/${b.id}`));
3399
3400
  if (models.length === 0) {
@@ -3413,7 +3414,14 @@ export class InteractiveMode {
3413
3414
  this.showStatus("No active provider. Use /model first or pass a provider: /apikey <provider>");
3414
3415
  return;
3415
3416
  }
3416
- const knownProviders = new Set(this.session.modelRegistry.getAll().map((model) => model.provider));
3417
+ if (!isAlemProvider(provider)) {
3418
+ this.showStatus("API key updates are available only for Alem AI Plus models in this build.");
3419
+ return;
3420
+ }
3421
+ const knownProviders = new Set(this.session.modelRegistry
3422
+ .getAll()
3423
+ .filter((model) => isAlemProvider(model.provider))
3424
+ .map((model) => model.provider));
3417
3425
  if (!knownProviders.has(provider)) {
3418
3426
  this.showStatus(`Unknown provider: ${provider}`);
3419
3427
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pzero-operator",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Operator is a coding-first terminal AI agent from ProjectZero for software development, shell execution, local project workflows, and broader device-level operator control.",