openfox 2.0.126 → 2.0.127

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/CHANGELOG.md +13 -0
  3. package/dist/{chat-handler-OJ4XBQY4.js → chat-handler-63VGKLM5.js} +5 -5
  4. package/dist/{chunk-77PJWQR7.js → chunk-7CBVJAN5.js} +3 -3
  5. package/dist/{chunk-2UPFWNC4.js → chunk-FGK6KPJ5.js} +3 -3
  6. package/dist/{chunk-TP2PGZSE.js → chunk-GKDJW4VP.js} +3 -3
  7. package/dist/{chunk-6VW4BQMP.js → chunk-IE2OMJIH.js} +6 -6
  8. package/dist/{chunk-76A3E4LK.js → chunk-IQYI7TWF.js} +5 -5
  9. package/dist/chunk-QDO3BEGW.js +7 -0
  10. package/dist/{chunk-KSXCOHHW.js → chunk-R5FAEKXQ.js} +16 -1
  11. package/dist/{chunk-H2RZDEVL.js → chunk-TY3ONJE4.js} +7 -7
  12. package/dist/{chunk-ZS55MMG6.js → chunk-TZJU6F6Z.js} +73 -40
  13. package/dist/cli/dev.js +1 -1
  14. package/dist/cli/index.js +1 -1
  15. package/dist/{config-TUCHLIWD.js → config-LOK3LXFH.js} +4 -2
  16. package/dist/{dynamic-context-PYAUG2LP.js → dynamic-context-KXZ6VJDE.js} +2 -2
  17. package/dist/{launch-3F2GCRRF.js → launch-DYWJD6L5.js} +6 -6
  18. package/dist/{orchestrator-BRHIA2KE.js → orchestrator-LBQWRAXC.js} +5 -5
  19. package/dist/package.json +1 -1
  20. package/dist/{processor-2IFXIJXG.js → processor-WP2LQOEV.js} +4 -4
  21. package/dist/{provider-6LUA73HF.js → provider-726LD2KU.js} +3 -3
  22. package/dist/{serve-WJKFUMLI.js → serve-OY3Y5PXK.js} +9 -9
  23. package/dist/server/index.js +8 -8
  24. package/dist/{server-6LDC4HU6.js → server-DMHNVEW4.js} +7 -7
  25. package/dist/{tools-AOLICK5U.js → tools-CZHV2FAD.js} +3 -3
  26. package/dist/{update-VH75MTCP.js → update-RCNZQCFG.js} +2 -2
  27. package/dist/web/assets/index-B63UkA7X.js +310 -0
  28. package/dist/web/assets/{index-DFMllFkv.css → index-CbX8veVW.css} +1 -1
  29. package/dist/web/index.html +2 -2
  30. package/dist/web/sw.js +1 -1
  31. package/package.json +1 -1
  32. package/dist/chunk-ABCCTPBC.js +0 -7
  33. package/dist/web/assets/index-DQ3Wg2OF.js +0 -324
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.127 - 2026-08-22
4
+
5
+ ### Features
6
+
7
+ - **Reorder providers with drag & drop or arrows** — Manage Providers list gains drag handles and arrows
8
+ - **Workspace switch reminders include a commit recipe** — the exact git commands to commit and push
9
+
10
+ ### Enhancements
11
+
12
+ - **Chat feed keeps a minimum width** — sidebars collapse left-first on narrow windows
13
+ - **Manage providers opens in a modal** — no longer buried in the onboarding wizard
14
+ - **Starring a model selects it** — the model picker now selects a starred model for the session
15
+
3
16
  ## 2.0.126 - 2026-08-21
4
17
 
5
18
  ### Bug Fixes
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.127 - 2026-08-22
4
+
5
+ ### Features
6
+
7
+ - **Reorder providers with drag & drop or arrows** — Manage Providers list gains drag handles and arrows
8
+ - **Workspace switch reminders include a commit recipe** — the exact git commands to commit and push
9
+
10
+ ### Enhancements
11
+
12
+ - **Chat feed keeps a minimum width** — sidebars collapse left-first on narrow windows
13
+ - **Manage providers opens in a modal** — no longer buried in the onboarding wizard
14
+ - **Starring a model selects it** — the model picker now selects a starred model for the session
15
+
3
16
  ## 2.0.126 - 2026-08-21
4
17
 
5
18
  ### Bug Fixes
@@ -5,9 +5,9 @@ import {
5
5
  } from "./chunk-HOSFRPPI.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-2UPFWNC4.js";
9
- import "./chunk-76A3E4LK.js";
10
- import "./chunk-TP2PGZSE.js";
8
+ } from "./chunk-FGK6KPJ5.js";
9
+ import "./chunk-IQYI7TWF.js";
10
+ import "./chunk-GKDJW4VP.js";
11
11
  import "./chunk-ZIL6VKLU.js";
12
12
  import "./chunk-LJX7KXRU.js";
13
13
  import "./chunk-GIJUWPRQ.js";
@@ -51,7 +51,7 @@ import "./chunk-OYBUJIC3.js";
51
51
  import "./chunk-ISE55FOR.js";
52
52
  import "./chunk-K44MW7JJ.js";
53
53
  import "./chunk-KSDWQ6IZ.js";
54
- import "./chunk-KSXCOHHW.js";
54
+ import "./chunk-R5FAEKXQ.js";
55
55
  import "./chunk-CQGTEGKL.js";
56
56
  import "./chunk-YLJ4XMA6.js";
57
57
 
@@ -174,4 +174,4 @@ export {
174
174
  startChatSession,
175
175
  stopSessionExecution
176
176
  };
177
- //# sourceMappingURL=chat-handler-OJ4XBQY4.js.map
177
+ //# sourceMappingURL=chat-handler-63VGKLM5.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  runAgentTurn
3
- } from "./chunk-2UPFWNC4.js";
3
+ } from "./chunk-FGK6KPJ5.js";
4
4
  import {
5
5
  executeSubAgent,
6
6
  getToolRegistryForAgent
7
- } from "./chunk-76A3E4LK.js";
7
+ } from "./chunk-IQYI7TWF.js";
8
8
  import {
9
9
  TurnMetrics,
10
10
  createMessageStartEvent
@@ -1002,4 +1002,4 @@ export {
1002
1002
  abortRunnerRun,
1003
1003
  launchWorkflowRun
1004
1004
  };
1005
- //# sourceMappingURL=chunk-77PJWQR7.js.map
1005
+ //# sourceMappingURL=chunk-7CBVJAN5.js.map
@@ -4,12 +4,12 @@ import {
4
4
  getToolRegistryForAgent,
5
5
  processEventsForConversation,
6
6
  runTopLevelAgentLoop
7
- } from "./chunk-76A3E4LK.js";
7
+ } from "./chunk-IQYI7TWF.js";
8
8
  import {
9
9
  buildCachedPrompt,
10
10
  computeDynamicContextHash,
11
11
  getToolFingerprint
12
- } from "./chunk-TP2PGZSE.js";
12
+ } from "./chunk-GKDJW4VP.js";
13
13
  import {
14
14
  getAllInstructions,
15
15
  getEnabledSkillMetadata
@@ -329,4 +329,4 @@ export {
329
329
  runChatTurn,
330
330
  runAgentTurn
331
331
  };
332
- //# sourceMappingURL=chunk-2UPFWNC4.js.map
332
+ //# sourceMappingURL=chunk-FGK6KPJ5.js.map
@@ -105,7 +105,7 @@ function resolveAgentDef(sessionManager, sessionId) {
105
105
  }
106
106
  async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName) {
107
107
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
108
- const { getToolRegistryForAgent } = await import("./tools-AOLICK5U.js");
108
+ const { getToolRegistryForAgent } = await import("./tools-CZHV2FAD.js");
109
109
  const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
110
110
  const toolFingerprint = getToolFingerprint(tools);
111
111
  const allAgents = await loadAllAgentsDefault(sessionManager.getProjectWorkdir(sessionId));
@@ -124,7 +124,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName)
124
124
  async function computeSessionHash(sessionManager, sessionId, modelName) {
125
125
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
126
126
  const agentDef = await resolveAgentDef(sessionManager, sessionId);
127
- const { getToolRegistryForAgent } = await import("./tools-AOLICK5U.js");
127
+ const { getToolRegistryForAgent } = await import("./tools-CZHV2FAD.js");
128
128
  const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
129
129
  const toolFingerprint = getToolFingerprint(tools);
130
130
  return computeDynamicContextHash(instructionContent, skills, toolFingerprint, modelName);
@@ -148,4 +148,4 @@ export {
148
148
  computeSessionHash,
149
149
  applyDynamicContext
150
150
  };
151
- //# sourceMappingURL=chunk-TP2PGZSE.js.map
151
+ //# sourceMappingURL=chunk-GKDJW4VP.js.map
@@ -5,18 +5,18 @@ import {
5
5
  } from "./chunk-HOSFRPPI.js";
6
6
  import {
7
7
  launchWorkflowRun
8
- } from "./chunk-77PJWQR7.js";
8
+ } from "./chunk-7CBVJAN5.js";
9
9
  import {
10
10
  runChatTurn
11
- } from "./chunk-2UPFWNC4.js";
11
+ } from "./chunk-FGK6KPJ5.js";
12
12
  import {
13
13
  devServerManager
14
- } from "./chunk-76A3E4LK.js";
14
+ } from "./chunk-IQYI7TWF.js";
15
15
  import {
16
16
  applyDynamicContext,
17
17
  computeSessionHash,
18
18
  computeUnifiedDiff
19
- } from "./chunk-TP2PGZSE.js";
19
+ } from "./chunk-GKDJW4VP.js";
20
20
  import {
21
21
  appendCompactionPrompt
22
22
  } from "./chunk-UAAFZEIS.js";
@@ -1299,7 +1299,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1299
1299
  }
1300
1300
  const session = sessionManager.requireSession(sessionId);
1301
1301
  try {
1302
- const { buildCachedPrompt } = await import("./dynamic-context-PYAUG2LP.js");
1302
+ const { buildCachedPrompt } = await import("./dynamic-context-KXZ6VJDE.js");
1303
1303
  const allAgents = await import("./registry-Z4GVYFTV.js");
1304
1304
  const agentDef = allAgents.findAgentById(session.mode, await allAgents.loadAllAgentsDefault()) ?? allAgents.findAgentById("planner", await allAgents.loadAllAgentsDefault());
1305
1305
  const modelName = session.providerModel ?? _providerManager?.getCurrentModel();
@@ -1624,4 +1624,4 @@ export {
1624
1624
  signalMcpReady,
1625
1625
  createWebSocketServer
1626
1626
  };
1627
- //# sourceMappingURL=chunk-6VW4BQMP.js.map
1627
+ //# sourceMappingURL=chunk-IE2OMJIH.js.map
@@ -132,7 +132,7 @@ import {
132
132
  import {
133
133
  loadGlobalConfig,
134
134
  saveGlobalConfig
135
- } from "./chunk-KSXCOHHW.js";
135
+ } from "./chunk-R5FAEKXQ.js";
136
136
  import {
137
137
  getGlobalConfigDir
138
138
  } from "./chunk-CQGTEGKL.js";
@@ -2519,7 +2519,7 @@ async function describeImageFromDataUrl(dataUrl, visionModel, options) {
2519
2519
  // src/server/context/image-processor.ts
2520
2520
  async function loadVisionModelFromGlobalConfig() {
2521
2521
  try {
2522
- const { loadGlobalConfig: loadGlobalConfig2, resolveVisionFallback } = await import("./config-TUCHLIWD.js");
2522
+ const { loadGlobalConfig: loadGlobalConfig2, resolveVisionFallback } = await import("./config-LOK3LXFH.js");
2523
2523
  const runtimeConfig = getRuntimeConfig();
2524
2524
  const mode = runtimeConfig.mode ?? "production";
2525
2525
  const globalConfig = await loadGlobalConfig2(mode);
@@ -3168,7 +3168,7 @@ var callSubAgentTool = {
3168
3168
  };
3169
3169
  }
3170
3170
  try {
3171
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-AOLICK5U.js");
3171
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-CZHV2FAD.js");
3172
3172
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3173
3173
  const turnMetrics = new TurnMetrics();
3174
3174
  const result = await executeSubAgent({
@@ -4190,7 +4190,7 @@ var mcpConfigTool = createTool(
4190
4190
  mcpNotifyChanged?.(sessionId);
4191
4191
  }
4192
4192
  async function rebuildTools() {
4193
- const { setMcpTools: setMcpTools2 } = await import("./tools-AOLICK5U.js");
4193
+ const { setMcpTools: setMcpTools2 } = await import("./tools-CZHV2FAD.js");
4194
4194
  const mcpTools = createMcpTools(mcpManagerForTools);
4195
4195
  setMcpTools2(mcpTools);
4196
4196
  }
@@ -5115,4 +5115,4 @@ export {
5115
5115
  getToolRegistryForAgent,
5116
5116
  createToolRegistry
5117
5117
  };
5118
- //# sourceMappingURL=chunk-76A3E4LK.js.map
5118
+ //# sourceMappingURL=chunk-IQYI7TWF.js.map
@@ -0,0 +1,7 @@
1
+ // src/constants.ts
2
+ var VERSION = "2.0.127";
3
+
4
+ export {
5
+ VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-QDO3BEGW.js.map
@@ -321,6 +321,20 @@ function removeProvider(config, providerId) {
321
321
  ...config.defaultAgent !== void 0 ? { defaultAgent: config.defaultAgent } : {}
322
322
  };
323
323
  }
324
+ function reorderProviders(config, orderedIds) {
325
+ const currentProviders = config.providers ?? [];
326
+ const currentIds = currentProviders.map((p) => p.id);
327
+ const orderedSet = new Set(orderedIds);
328
+ const isPermutation = orderedSet.size === orderedIds.length && orderedIds.length === currentIds.length && orderedIds.every((id) => currentIds.includes(id));
329
+ if (!isPermutation) {
330
+ throw new Error("orderedIds must be a permutation of the current provider ids");
331
+ }
332
+ const idToProvider = new Map(currentProviders.map((p) => [p.id, p]));
333
+ return {
334
+ ...config,
335
+ providers: orderedIds.map((id) => idToProvider.get(id))
336
+ };
337
+ }
324
338
  function activateProvider(config, providerId) {
325
339
  const provider = config.providers?.find((p) => p.id === providerId);
326
340
  if (!provider) {
@@ -367,6 +381,7 @@ export {
367
381
  addProvider,
368
382
  updateProvider,
369
383
  removeProvider,
384
+ reorderProviders,
370
385
  activateProvider
371
386
  };
372
- //# sourceMappingURL=chunk-KSXCOHHW.js.map
387
+ //# sourceMappingURL=chunk-R5FAEKXQ.js.map
@@ -37,7 +37,7 @@ Options:
37
37
  }
38
38
  async function runNetworkSetup(mode) {
39
39
  const { loadAuthConfig, saveAuthConfig, encryptPassword } = await import("./auth-GTGIGX5X.js");
40
- const { saveGlobalConfig } = await import("./config-TUCHLIWD.js");
40
+ const { saveGlobalConfig } = await import("./config-LOK3LXFH.js");
41
41
  const { getAuthKeyPath } = await import("./paths-BHR7CZ7I.js");
42
42
  const existingAuth = await loadAuthConfig(mode);
43
43
  if (existingAuth) {
@@ -104,7 +104,7 @@ async function runNetworkSetup(mode) {
104
104
  console.log("\u2713 Configuration saved!\n");
105
105
  }
106
106
  async function runConfig(mode) {
107
- const { loadGlobalConfig, getActiveProvider, getDefaultModel } = await import("./config-TUCHLIWD.js");
107
+ const { loadGlobalConfig, getActiveProvider, getDefaultModel } = await import("./config-LOK3LXFH.js");
108
108
  const { getGlobalConfigPath } = await import("./paths-BHR7CZ7I.js");
109
109
  const config = await loadGlobalConfig(mode);
110
110
  const configPath = getGlobalConfigPath(mode);
@@ -163,7 +163,7 @@ async function runCli(options) {
163
163
  break;
164
164
  }
165
165
  case "provider": {
166
- const { runProviderCommand } = await import("./provider-6LUA73HF.js");
166
+ const { runProviderCommand } = await import("./provider-726LD2KU.js");
167
167
  const [, subcommand] = positionals;
168
168
  await runProviderCommand(mode, subcommand);
169
169
  break;
@@ -200,7 +200,7 @@ async function runCli(options) {
200
200
  break;
201
201
  }
202
202
  case "update": {
203
- const { runUpdate } = await import("./update-VH75MTCP.js");
203
+ const { runUpdate } = await import("./update-RCNZQCFG.js");
204
204
  const code = await runUpdate();
205
205
  if (code !== 0) {
206
206
  process.exit(code);
@@ -208,12 +208,12 @@ async function runCli(options) {
208
208
  break;
209
209
  }
210
210
  default: {
211
- const { configFileExists } = await import("./config-TUCHLIWD.js");
211
+ const { configFileExists } = await import("./config-LOK3LXFH.js");
212
212
  const configExists = await configFileExists(mode);
213
213
  if (!configExists) {
214
214
  await runNetworkSetup(mode);
215
215
  }
216
- const { runServe } = await import("./serve-WJKFUMLI.js");
216
+ const { runServe } = await import("./serve-OY3Y5PXK.js");
217
217
  const serveOptions = { mode };
218
218
  if (values.port) serveOptions.port = parseInt(values.port);
219
219
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -225,4 +225,4 @@ async function runCli(options) {
225
225
  export {
226
226
  runCli
227
227
  };
228
- //# sourceMappingURL=chunk-H2RZDEVL.js.map
228
+ //# sourceMappingURL=chunk-TY3ONJE4.js.map