openfox 1.6.85 → 1.6.86

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 (31) hide show
  1. package/dist/{auto-compaction-LI6J3L5Y.js → auto-compaction-SFGVXG5N.js} +6 -6
  2. package/dist/{chat-handler-2J457X35.js → chat-handler-DNKX3XP4.js} +9 -9
  3. package/dist/{chunk-7FVEX6UG.js → chunk-3ZFBNQFW.js} +2 -2
  4. package/dist/{chunk-MNRVSEGN.js → chunk-56MJNPRR.js} +3 -3
  5. package/dist/{chunk-HEQ3V5SW.js → chunk-5GVCNVKV.js} +5 -1
  6. package/dist/{chunk-EBPKXVOF.js → chunk-5YZ6UPJD.js} +2 -2
  7. package/dist/{chunk-67LWZEDE.js → chunk-ENH5AUOX.js} +2 -2
  8. package/dist/{chunk-FBQWGH6N.js → chunk-IGPHQGUN.js} +5 -5
  9. package/dist/{chunk-PI7L2SEU.js → chunk-RCECKE5L.js} +2 -2
  10. package/dist/{chunk-2XCN5AUU.js → chunk-X77U3VSW.js} +38 -26
  11. package/dist/{chunk-X4VMSNLI.js → chunk-ZHBL5G5X.js} +10 -3
  12. package/dist/cli/dev.js +1 -1
  13. package/dist/cli/index.js +1 -1
  14. package/dist/{events-BKR4RUU3.js → events-ZHG3VBZC.js} +3 -3
  15. package/dist/{orchestrator-Y2YGSF4I.js → orchestrator-62JU2Z7E.js} +7 -7
  16. package/dist/package.json +1 -1
  17. package/dist/{processor-KULEUD7B.js → processor-ELRLBORH.js} +5 -5
  18. package/dist/{project-creator-Q5P4XA6O.js → project-creator-25F7KUPX.js} +3 -3
  19. package/dist/{projects-3EZINCLA.js → projects-55F45PH3.js} +5 -3
  20. package/dist/{protocol-C9hfluLv.d.ts → protocol-DaC_kENH.d.ts} +1 -0
  21. package/dist/{serve-K5T5YSDU.js → serve-Z2RZ5D3X.js} +8 -8
  22. package/dist/server/index.d.ts +1 -1
  23. package/dist/server/index.js +7 -7
  24. package/dist/{settings-E3KEHN2M.js → settings-VTVOBDYG.js} +3 -3
  25. package/dist/shared/index.d.ts +2 -2
  26. package/dist/{tools-OPJZOAZX.js → tools-DAOJPK7C.js} +6 -6
  27. package/dist/web/assets/{index-sEj9u40w.css → index-DNXnQmN1.css} +1 -1
  28. package/dist/web/assets/{index-C0VIA4P8.js → index-cQ_EgBxT.js} +43 -43
  29. package/dist/web/index.html +2 -2
  30. package/dist/web/sw.js +1 -1
  31. package/package.json +1 -1
@@ -2,15 +2,15 @@ import {
2
2
  maybeAutoCompactContext,
3
3
  performManualContextCompaction,
4
4
  resolveCompactionStatsIdentity
5
- } from "./chunk-FBQWGH6N.js";
6
- import "./chunk-PI7L2SEU.js";
7
- import "./chunk-X4VMSNLI.js";
5
+ } from "./chunk-IGPHQGUN.js";
6
+ import "./chunk-RCECKE5L.js";
7
+ import "./chunk-ZHBL5G5X.js";
8
8
  import "./chunk-DL6ZILAF.js";
9
9
  import "./chunk-PBGOZMVY.js";
10
10
  import "./chunk-VRGRAQDG.js";
11
11
  import "./chunk-YNIAFX24.js";
12
- import "./chunk-67LWZEDE.js";
13
- import "./chunk-HEQ3V5SW.js";
12
+ import "./chunk-ENH5AUOX.js";
13
+ import "./chunk-5GVCNVKV.js";
14
14
  import "./chunk-XVWVAWSG.js";
15
15
  import "./chunk-GN7RB4Y4.js";
16
16
  import "./chunk-BJYPTN5S.js";
@@ -24,4 +24,4 @@ export {
24
24
  performManualContextCompaction,
25
25
  resolveCompactionStatsIdentity
26
26
  };
27
- //# sourceMappingURL=auto-compaction-LI6J3L5Y.js.map
27
+ //# sourceMappingURL=auto-compaction-SFGVXG5N.js.map
@@ -5,21 +5,21 @@ import {
5
5
  generateSessionName,
6
6
  getSessionMessageCount,
7
7
  needsNameGenerationCheck
8
- } from "./chunk-7FVEX6UG.js";
8
+ } from "./chunk-3ZFBNQFW.js";
9
9
  import {
10
10
  runChatTurn
11
- } from "./chunk-MNRVSEGN.js";
12
- import "./chunk-FBQWGH6N.js";
13
- import "./chunk-PI7L2SEU.js";
14
- import "./chunk-X4VMSNLI.js";
11
+ } from "./chunk-56MJNPRR.js";
12
+ import "./chunk-IGPHQGUN.js";
13
+ import "./chunk-RCECKE5L.js";
14
+ import "./chunk-ZHBL5G5X.js";
15
15
  import "./chunk-DL6ZILAF.js";
16
16
  import "./chunk-PBGOZMVY.js";
17
17
  import "./chunk-VRGRAQDG.js";
18
18
  import "./chunk-YNIAFX24.js";
19
19
  import {
20
20
  getEventStore
21
- } from "./chunk-67LWZEDE.js";
22
- import "./chunk-HEQ3V5SW.js";
21
+ } from "./chunk-ENH5AUOX.js";
22
+ import "./chunk-5GVCNVKV.js";
23
23
  import "./chunk-XVWVAWSG.js";
24
24
  import {
25
25
  createChatMessageMessage,
@@ -61,7 +61,7 @@ async function startChatSession(sessionId, content, deps, options) {
61
61
  sessionManager.setRunning(sessionId, true);
62
62
  broadcastForSession(sessionId, createSessionRunningMessage(true));
63
63
  try {
64
- const { maybeAutoCompactContext } = await import("./auto-compaction-LI6J3L5Y.js");
64
+ const { maybeAutoCompactContext } = await import("./auto-compaction-SFGVXG5N.js");
65
65
  await maybeAutoCompactContext({
66
66
  sessionManager,
67
67
  sessionId,
@@ -175,4 +175,4 @@ export {
175
175
  startChatSession,
176
176
  stopSessionExecution
177
177
  };
178
- //# sourceMappingURL=chat-handler-2J457X35.js.map
178
+ //# sourceMappingURL=chat-handler-DNKX3XP4.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getEventStore,
3
3
  updateSessionMetadata
4
- } from "./chunk-67LWZEDE.js";
4
+ } from "./chunk-ENH5AUOX.js";
5
5
  import {
6
6
  buildMessagesFromStoredEvents,
7
7
  foldPendingConfirmations
@@ -143,4 +143,4 @@ export {
143
143
  needsNameGenerationCheck,
144
144
  applyGeneratedSessionName
145
145
  };
146
- //# sourceMappingURL=chunk-7FVEX6UG.js.map
146
+ //# sourceMappingURL=chunk-3ZFBNQFW.js.map
@@ -13,11 +13,11 @@ import {
13
13
  getToolRegistryForAgent,
14
14
  loadAllAgentsDefault,
15
15
  runTopLevelAgentLoop
16
- } from "./chunk-FBQWGH6N.js";
16
+ } from "./chunk-IGPHQGUN.js";
17
17
  import {
18
18
  getCurrentContextWindowId,
19
19
  getEventStore
20
- } from "./chunk-67LWZEDE.js";
20
+ } from "./chunk-ENH5AUOX.js";
21
21
  import {
22
22
  buildSnapshotFromSessionState
23
23
  } from "./chunk-XVWVAWSG.js";
@@ -327,4 +327,4 @@ export {
327
327
  runBuilderTurn,
328
328
  runVerifierTurn
329
329
  };
330
- //# sourceMappingURL=chunk-MNRVSEGN.js.map
330
+ //# sourceMappingURL=chunk-56MJNPRR.js.map
@@ -110,6 +110,10 @@ function runMigrations(db2) {
110
110
  logger.info("Migrating projects table: adding danger_level column");
111
111
  db2.exec(`ALTER TABLE projects ADD COLUMN danger_level TEXT`);
112
112
  }
113
+ if (!projectColumnNames.includes("is_starred")) {
114
+ logger.info("Migrating projects table: adding is_starred column");
115
+ db2.exec(`ALTER TABLE projects ADD COLUMN is_starred INTEGER NOT NULL DEFAULT 0`);
116
+ }
113
117
  db2.exec(`
114
118
  CREATE TABLE IF NOT EXISTS events (
115
119
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -168,4 +172,4 @@ export {
168
172
  initDatabase,
169
173
  getDatabase
170
174
  };
171
- //# sourceMappingURL=chunk-HEQ3V5SW.js.map
175
+ //# sourceMappingURL=chunk-5GVCNVKV.js.map
@@ -190,7 +190,7 @@ async function runCli(options) {
190
190
  if (!configExists) {
191
191
  await runNetworkSetup(mode);
192
192
  }
193
- const { runServe } = await import("./serve-K5T5YSDU.js");
193
+ const { runServe } = await import("./serve-Z2RZ5D3X.js");
194
194
  const serveOptions = { mode };
195
195
  if (values.port) serveOptions.port = parseInt(values.port);
196
196
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -202,4 +202,4 @@ async function runCli(options) {
202
202
  export {
203
203
  runCli
204
204
  };
205
- //# sourceMappingURL=chunk-EBPKXVOF.js.map
205
+ //# sourceMappingURL=chunk-5YZ6UPJD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-HEQ3V5SW.js";
3
+ } from "./chunk-5GVCNVKV.js";
4
4
  import {
5
5
  buildContextMessagesFromEventHistory,
6
6
  buildMessagesFromStoredEvents,
@@ -1279,4 +1279,4 @@ export {
1279
1279
  compactContext,
1280
1280
  getRecentUserPromptsForSession
1281
1281
  };
1282
- //# sourceMappingURL=chunk-67LWZEDE.js.map
1282
+ //# sourceMappingURL=chunk-ENH5AUOX.js.map
@@ -3,10 +3,10 @@ import {
3
3
  deleteSetting,
4
4
  getSetting,
5
5
  setSetting
6
- } from "./chunk-PI7L2SEU.js";
6
+ } from "./chunk-RCECKE5L.js";
7
7
  import {
8
8
  getProject
9
- } from "./chunk-X4VMSNLI.js";
9
+ } from "./chunk-ZHBL5G5X.js";
10
10
  import {
11
11
  startInspectProxy
12
12
  } from "./chunk-DL6ZILAF.js";
@@ -32,7 +32,7 @@ import {
32
32
  import {
33
33
  getCurrentContextWindowId,
34
34
  getEventStore
35
- } from "./chunk-67LWZEDE.js";
35
+ } from "./chunk-ENH5AUOX.js";
36
36
  import {
37
37
  buildContextMessagesFromEventHistory,
38
38
  foldContextState,
@@ -3793,7 +3793,7 @@ var callSubAgentTool = {
3793
3793
  };
3794
3794
  }
3795
3795
  try {
3796
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-OPJZOAZX.js");
3796
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-DAOJPK7C.js");
3797
3797
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3798
3798
  const turnMetrics = new TurnMetrics();
3799
3799
  const result = await executeSubAgent({
@@ -4983,4 +4983,4 @@ export {
4983
4983
  getToolRegistryForAgent,
4984
4984
  createToolRegistry
4985
4985
  };
4986
- //# sourceMappingURL=chunk-FBQWGH6N.js.map
4986
+ //# sourceMappingURL=chunk-IGPHQGUN.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-HEQ3V5SW.js";
3
+ } from "./chunk-5GVCNVKV.js";
4
4
 
5
5
  // src/server/db/settings.ts
6
6
  var SETTINGS_KEYS = {
@@ -63,4 +63,4 @@ export {
63
63
  deleteSetting,
64
64
  getAllSettings
65
65
  };
66
- //# sourceMappingURL=chunk-PI7L2SEU.js.map
66
+ //# sourceMappingURL=chunk-RCECKE5L.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createVerifierNudgeConfig,
3
3
  runBuilderTurn,
4
4
  runChatTurn
5
- } from "./chunk-MNRVSEGN.js";
5
+ } from "./chunk-56MJNPRR.js";
6
6
  import {
7
7
  TurnMetrics,
8
8
  agentExists,
@@ -37,10 +37,10 @@ import {
37
37
  setSkillEnabled,
38
38
  skillExists,
39
39
  spawnShellProcess
40
- } from "./chunk-FBQWGH6N.js";
40
+ } from "./chunk-IGPHQGUN.js";
41
41
  import {
42
42
  getProject
43
- } from "./chunk-X4VMSNLI.js";
43
+ } from "./chunk-ZHBL5G5X.js";
44
44
  import {
45
45
  getPathSeparator,
46
46
  getPlatformShell,
@@ -87,10 +87,10 @@ import {
87
87
  updateSessionProvider,
88
88
  updateSessionRunning,
89
89
  updateSessionSummary
90
- } from "./chunk-67LWZEDE.js";
90
+ } from "./chunk-ENH5AUOX.js";
91
91
  import {
92
92
  initDatabase
93
- } from "./chunk-HEQ3V5SW.js";
93
+ } from "./chunk-5GVCNVKV.js";
94
94
  import {
95
95
  buildMessagesFromStoredEvents,
96
96
  foldPendingConfirmations
@@ -5261,7 +5261,7 @@ function createTerminalRoutes() {
5261
5261
  }
5262
5262
 
5263
5263
  // src/constants.ts
5264
- var VERSION = "1.6.85";
5264
+ var VERSION = "1.6.86";
5265
5265
 
5266
5266
  // src/server/index.ts
5267
5267
  var __dirname2 = dirname5(fileURLToPath4(import.meta.url));
@@ -5380,7 +5380,7 @@ async function createServerHandle(config) {
5380
5380
  res.json({ tools });
5381
5381
  });
5382
5382
  app.get("/api/projects", async (_req, res) => {
5383
- const { listProjects } = await import("./projects-3EZINCLA.js");
5383
+ const { listProjects } = await import("./projects-55F45PH3.js");
5384
5384
  const projects = listProjects();
5385
5385
  res.json({ projects });
5386
5386
  });
@@ -5389,7 +5389,7 @@ async function createServerHandle(config) {
5389
5389
  if (!name || !workdir) {
5390
5390
  return res.status(400).json({ error: "name and workdir are required" });
5391
5391
  }
5392
- const { createDirectoryWithGit } = await import("./project-creator-Q5P4XA6O.js");
5392
+ const { createDirectoryWithGit } = await import("./project-creator-25F7KUPX.js");
5393
5393
  try {
5394
5394
  const project = await createDirectoryWithGit(name, workdir);
5395
5395
  res.status(201).json({ project });
@@ -5434,7 +5434,7 @@ async function createServerHandle(config) {
5434
5434
  }
5435
5435
  });
5436
5436
  app.get("/api/projects/:id", async (req, res) => {
5437
- const { getProject: getProject2 } = await import("./projects-3EZINCLA.js");
5437
+ const { getProject: getProject2 } = await import("./projects-55F45PH3.js");
5438
5438
  const project = getProject2(req.params.id);
5439
5439
  if (!project) {
5440
5440
  return res.status(404).json({ error: "Project not found" });
@@ -5442,7 +5442,7 @@ async function createServerHandle(config) {
5442
5442
  res.json({ project });
5443
5443
  });
5444
5444
  app.put("/api/projects/:id", async (req, res) => {
5445
- const { updateProject } = await import("./projects-3EZINCLA.js");
5445
+ const { updateProject } = await import("./projects-55F45PH3.js");
5446
5446
  const { name, customInstructions, dangerLevel } = req.body;
5447
5447
  const updates = {};
5448
5448
  if (name !== void 0) updates.name = name;
@@ -5455,7 +5455,7 @@ async function createServerHandle(config) {
5455
5455
  res.json({ project: updated });
5456
5456
  });
5457
5457
  app.delete("/api/projects/:id", async (req, res) => {
5458
- const { getProject: getProject2, deleteProject } = await import("./projects-3EZINCLA.js");
5458
+ const { getProject: getProject2, deleteProject } = await import("./projects-55F45PH3.js");
5459
5459
  const project = getProject2(req.params.id);
5460
5460
  if (!project) {
5461
5461
  return res.status(404).json({ error: "Project not found" });
@@ -5463,8 +5463,20 @@ async function createServerHandle(config) {
5463
5463
  deleteProject(req.params.id);
5464
5464
  res.json({ success: true });
5465
5465
  });
5466
+ app.put("/api/projects/:id/star", async (req, res) => {
5467
+ const { toggleStar } = await import("./projects-55F45PH3.js");
5468
+ const { isStarred } = req.body;
5469
+ if (typeof isStarred !== "boolean") {
5470
+ return res.status(400).json({ error: "isStarred is required and must be a boolean" });
5471
+ }
5472
+ const project = toggleStar(req.params.id, isStarred);
5473
+ if (!project) {
5474
+ return res.status(404).json({ error: "Project not found" });
5475
+ }
5476
+ res.json({ project });
5477
+ });
5466
5478
  app.get("/api/sessions", async (req, res) => {
5467
- const { getRecentUserPromptsForSession } = await import("./events-BKR4RUU3.js");
5479
+ const { getRecentUserPromptsForSession } = await import("./events-ZHG3VBZC.js");
5468
5480
  const projectId = req.query["projectId"];
5469
5481
  const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
5470
5482
  const offset = parseInt(req.query["offset"]) || 0;
@@ -5497,7 +5509,7 @@ async function createServerHandle(config) {
5497
5509
  res.status(201).json({ session });
5498
5510
  });
5499
5511
  app.get("/api/sessions/:id", async (req, res) => {
5500
- const { getEventStore: getEventStore2 } = await import("./events-BKR4RUU3.js");
5512
+ const { getEventStore: getEventStore2 } = await import("./events-ZHG3VBZC.js");
5501
5513
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5502
5514
  const session = sessionManager.getSession(req.params.id);
5503
5515
  if (!session) {
@@ -5528,7 +5540,7 @@ async function createServerHandle(config) {
5528
5540
  res.json({ success: true });
5529
5541
  });
5530
5542
  app.post("/api/sessions/:id/provider", async (req, res) => {
5531
- const { getEventStore: getEventStore2 } = await import("./events-BKR4RUU3.js");
5543
+ const { getEventStore: getEventStore2 } = await import("./events-ZHG3VBZC.js");
5532
5544
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5533
5545
  const sessionId = req.params.id;
5534
5546
  const session = sessionManager.getSession(sessionId);
@@ -5566,7 +5578,7 @@ async function createServerHandle(config) {
5566
5578
  res.json({ success: true });
5567
5579
  });
5568
5580
  app.put("/api/sessions/:id/mode", async (req, res) => {
5569
- const { getEventStore: getEventStore2 } = await import("./events-BKR4RUU3.js");
5581
+ const { getEventStore: getEventStore2 } = await import("./events-ZHG3VBZC.js");
5570
5582
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5571
5583
  const sessionId = req.params.id;
5572
5584
  const session = sessionManager.getSession(sessionId);
@@ -5619,12 +5631,12 @@ async function createServerHandle(config) {
5619
5631
  if (!callId || approved === void 0) {
5620
5632
  return res.status(400).json({ error: "callId and approved are required" });
5621
5633
  }
5622
- const { providePathConfirmation } = await import("./tools-OPJZOAZX.js");
5634
+ const { providePathConfirmation } = await import("./tools-DAOJPK7C.js");
5623
5635
  const result = providePathConfirmation(callId, approved, alwaysAllow);
5624
5636
  if (!result.found) {
5625
5637
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
5626
5638
  }
5627
- const { getEventStore: getEventStore2 } = await import("./events-BKR4RUU3.js");
5639
+ const { getEventStore: getEventStore2 } = await import("./events-ZHG3VBZC.js");
5628
5640
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-4VHGQE6Y.js");
5629
5641
  const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-NEBXAMJ3.js");
5630
5642
  const eventStore = getEventStore2();
@@ -5643,7 +5655,7 @@ async function createServerHandle(config) {
5643
5655
  if (!callId || !answer) {
5644
5656
  return res.status(400).json({ error: "callId and answer are required" });
5645
5657
  }
5646
- const { provideAnswer: provideAnswer2 } = await import("./tools-OPJZOAZX.js");
5658
+ const { provideAnswer: provideAnswer2 } = await import("./tools-DAOJPK7C.js");
5647
5659
  const found = provideAnswer2(callId, answer);
5648
5660
  if (!found) {
5649
5661
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -5679,14 +5691,14 @@ async function createServerHandle(config) {
5679
5691
  if (!session) {
5680
5692
  return res.status(404).json({ error: "Session not found" });
5681
5693
  }
5682
- const { stopSessionExecution } = await import("./chat-handler-2J457X35.js");
5683
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-OPJZOAZX.js");
5694
+ const { stopSessionExecution } = await import("./chat-handler-DNKX3XP4.js");
5695
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-DAOJPK7C.js");
5684
5696
  stopSessionExecution(sessionId, sessionManager);
5685
5697
  abortSession(sessionId);
5686
5698
  cancelQuestionsForSession(sessionId, "Session stopped by user");
5687
5699
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
5688
5700
  sessionManager.clearMessageQueue(sessionId);
5689
- const eventStore = (await import("./events-BKR4RUU3.js")).getEventStore();
5701
+ const eventStore = (await import("./events-ZHG3VBZC.js")).getEventStore();
5690
5702
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
5691
5703
  res.json({ success: true });
5692
5704
  });
@@ -5700,7 +5712,7 @@ async function createServerHandle(config) {
5700
5712
  if (typeof messageIndex !== "number" || messageIndex < 0) {
5701
5713
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
5702
5714
  }
5703
- const { truncateSessionMessages } = await import("./events-BKR4RUU3.js");
5715
+ const { truncateSessionMessages } = await import("./events-ZHG3VBZC.js");
5704
5716
  truncateSessionMessages(sessionId, messageIndex);
5705
5717
  res.json({ success: true });
5706
5718
  });
@@ -5731,13 +5743,13 @@ async function createServerHandle(config) {
5731
5743
  res.json({ accepted: true });
5732
5744
  });
5733
5745
  app.get("/api/settings/:key", async (req, res) => {
5734
- const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-E3KEHN2M.js");
5746
+ const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-VTVOBDYG.js");
5735
5747
  const key = req.params.key;
5736
5748
  const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
5737
5749
  res.json({ key, value });
5738
5750
  });
5739
5751
  app.put("/api/settings/:key", async (req, res) => {
5740
- const { setSetting } = await import("./settings-E3KEHN2M.js");
5752
+ const { setSetting } = await import("./settings-VTVOBDYG.js");
5741
5753
  const key = req.params.key;
5742
5754
  const { value } = req.body;
5743
5755
  if (value === void 0) {
@@ -6169,7 +6181,7 @@ async function createServerHandle(config) {
6169
6181
  providerManager
6170
6182
  );
6171
6183
  const wss = wssExports.wss;
6172
- const { QueueProcessor } = await import("./processor-KULEUD7B.js");
6184
+ const { QueueProcessor } = await import("./processor-ELRLBORH.js");
6173
6185
  const queueProcessor = new QueueProcessor({
6174
6186
  sessionManager,
6175
6187
  providerManager,
@@ -6244,4 +6256,4 @@ export {
6244
6256
  createServerHandle,
6245
6257
  createServer
6246
6258
  };
6247
- //# sourceMappingURL=chunk-2XCN5AUU.js.map
6259
+ //# sourceMappingURL=chunk-X77U3VSW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-HEQ3V5SW.js";
3
+ } from "./chunk-5GVCNVKV.js";
4
4
 
5
5
  // src/server/db/projects.ts
6
6
  function createProject(name, workdir) {
@@ -86,6 +86,11 @@ function deleteProject(id) {
86
86
  const db = getDatabase();
87
87
  db.prepare("DELETE FROM projects WHERE id = ?").run(id);
88
88
  }
89
+ function toggleStar(id, isStarred) {
90
+ const db = getDatabase();
91
+ db.prepare("UPDATE projects SET is_starred = ? WHERE id = ?").run(isStarred ? 1 : 0, id);
92
+ return getProject(id);
93
+ }
89
94
  function rowToProject(row) {
90
95
  return {
91
96
  id: row.id,
@@ -93,6 +98,7 @@ function rowToProject(row) {
93
98
  workdir: row.workdir,
94
99
  ...row.custom_instructions ? { customInstructions: row.custom_instructions } : {},
95
100
  ...row.danger_level ? { dangerLevel: row.danger_level } : {},
101
+ isStarred: !!row.is_starred,
96
102
  createdAt: row.created_at,
97
103
  updatedAt: row.updated_at
98
104
  };
@@ -104,6 +110,7 @@ export {
104
110
  getProjectByWorkdir,
105
111
  listProjects,
106
112
  updateProject,
107
- deleteProject
113
+ deleteProject,
114
+ toggleStar
108
115
  };
109
- //# sourceMappingURL=chunk-X4VMSNLI.js.map
116
+ //# sourceMappingURL=chunk-ZHBL5G5X.js.map
package/dist/cli/dev.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-EBPKXVOF.js";
4
+ } from "../chunk-5YZ6UPJD.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-K44MW7JJ.js";
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-EBPKXVOF.js";
4
+ } from "../chunk-5YZ6UPJD.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-K44MW7JJ.js";
@@ -37,8 +37,8 @@ import {
37
37
  isStoredEvent,
38
38
  isTurnEvent,
39
39
  truncateSessionMessages
40
- } from "./chunk-67LWZEDE.js";
41
- import "./chunk-HEQ3V5SW.js";
40
+ } from "./chunk-ENH5AUOX.js";
41
+ import "./chunk-5GVCNVKV.js";
42
42
  import {
43
43
  buildContextMessagesFromEventHistory,
44
44
  buildContextMessagesFromMessages,
@@ -113,4 +113,4 @@ export {
113
113
  isTurnEvent,
114
114
  truncateSessionMessages
115
115
  };
116
- //# sourceMappingURL=events-BKR4RUU3.js.map
116
+ //# sourceMappingURL=events-ZHG3VBZC.js.map
@@ -3,7 +3,7 @@ import {
3
3
  runBuilderTurn,
4
4
  runChatTurn,
5
5
  runVerifierTurn
6
- } from "./chunk-MNRVSEGN.js";
6
+ } from "./chunk-56MJNPRR.js";
7
7
  import {
8
8
  TurnMetrics,
9
9
  createChatDoneEvent,
@@ -11,15 +11,15 @@ import {
11
11
  createMessageStartEvent,
12
12
  createToolCallEvent,
13
13
  createToolResultEvent
14
- } from "./chunk-FBQWGH6N.js";
15
- import "./chunk-PI7L2SEU.js";
16
- import "./chunk-X4VMSNLI.js";
14
+ } from "./chunk-IGPHQGUN.js";
15
+ import "./chunk-RCECKE5L.js";
16
+ import "./chunk-ZHBL5G5X.js";
17
17
  import "./chunk-DL6ZILAF.js";
18
18
  import "./chunk-PBGOZMVY.js";
19
19
  import "./chunk-VRGRAQDG.js";
20
20
  import "./chunk-YNIAFX24.js";
21
- import "./chunk-67LWZEDE.js";
22
- import "./chunk-HEQ3V5SW.js";
21
+ import "./chunk-ENH5AUOX.js";
22
+ import "./chunk-5GVCNVKV.js";
23
23
  import "./chunk-XVWVAWSG.js";
24
24
  import "./chunk-GN7RB4Y4.js";
25
25
  import "./chunk-BJYPTN5S.js";
@@ -40,4 +40,4 @@ export {
40
40
  runChatTurn,
41
41
  runVerifierTurn
42
42
  };
43
- //# sourceMappingURL=orchestrator-Y2YGSF4I.js.map
43
+ //# sourceMappingURL=orchestrator-62JU2Z7E.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "1.6.85",
3
+ "version": "1.6.86",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -5,11 +5,11 @@ import {
5
5
  generateSessionName,
6
6
  getSessionMessageCount,
7
7
  needsNameGenerationCheck
8
- } from "./chunk-7FVEX6UG.js";
8
+ } from "./chunk-3ZFBNQFW.js";
9
9
  import {
10
10
  getEventStore
11
- } from "./chunk-67LWZEDE.js";
12
- import "./chunk-HEQ3V5SW.js";
11
+ } from "./chunk-ENH5AUOX.js";
12
+ import "./chunk-5GVCNVKV.js";
13
13
  import "./chunk-XVWVAWSG.js";
14
14
  import {
15
15
  createChatMessageMessage,
@@ -177,7 +177,7 @@ var QueueProcessor = class {
177
177
  backend: provider?.backend ?? llmClient.getBackend(),
178
178
  model: llmClient.getModel()
179
179
  };
180
- const { runChatTurn } = await import("./orchestrator-Y2YGSF4I.js");
180
+ const { runChatTurn } = await import("./orchestrator-62JU2Z7E.js");
181
181
  const runChatTurnParams = buildRunChatTurnParams({
182
182
  sessionManager,
183
183
  sessionId,
@@ -221,4 +221,4 @@ var QueueProcessor = class {
221
221
  export {
222
222
  QueueProcessor
223
223
  };
224
- //# sourceMappingURL=processor-KULEUD7B.js.map
224
+ //# sourceMappingURL=processor-ELRLBORH.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createProject
3
- } from "./chunk-X4VMSNLI.js";
4
- import "./chunk-HEQ3V5SW.js";
3
+ } from "./chunk-ZHBL5G5X.js";
4
+ import "./chunk-5GVCNVKV.js";
5
5
  import "./chunk-K44MW7JJ.js";
6
6
 
7
7
  // src/server/utils/project-creator.ts
@@ -108,4 +108,4 @@ export {
108
108
  createDirectoryWithGit,
109
109
  validateProjectName
110
110
  };
111
- //# sourceMappingURL=project-creator-Q5P4XA6O.js.map
111
+ //# sourceMappingURL=project-creator-25F7KUPX.js.map
@@ -4,9 +4,10 @@ import {
4
4
  getProject,
5
5
  getProjectByWorkdir,
6
6
  listProjects,
7
+ toggleStar,
7
8
  updateProject
8
- } from "./chunk-X4VMSNLI.js";
9
- import "./chunk-HEQ3V5SW.js";
9
+ } from "./chunk-ZHBL5G5X.js";
10
+ import "./chunk-5GVCNVKV.js";
10
11
  import "./chunk-K44MW7JJ.js";
11
12
  export {
12
13
  createProject,
@@ -14,6 +15,7 @@ export {
14
15
  getProject,
15
16
  getProjectByWorkdir,
16
17
  listProjects,
18
+ toggleStar,
17
19
  updateProject
18
20
  };
19
- //# sourceMappingURL=projects-3EZINCLA.js.map
21
+ //# sourceMappingURL=projects-55F45PH3.js.map
@@ -4,6 +4,7 @@ interface Project {
4
4
  workdir: string;
5
5
  customInstructions?: string;
6
6
  dangerLevel?: DangerLevel;
7
+ isStarred?: boolean;
7
8
  createdAt: string;
8
9
  updatedAt: string;
9
10
  }
@@ -6,19 +6,19 @@ import {
6
6
  import {
7
7
  VERSION,
8
8
  createServer
9
- } from "./chunk-2XCN5AUU.js";
10
- import "./chunk-MNRVSEGN.js";
11
- import "./chunk-FBQWGH6N.js";
12
- import "./chunk-PI7L2SEU.js";
13
- import "./chunk-X4VMSNLI.js";
9
+ } from "./chunk-X77U3VSW.js";
10
+ import "./chunk-56MJNPRR.js";
11
+ import "./chunk-IGPHQGUN.js";
12
+ import "./chunk-RCECKE5L.js";
13
+ import "./chunk-ZHBL5G5X.js";
14
14
  import "./chunk-DL6ZILAF.js";
15
15
  import "./chunk-PBGOZMVY.js";
16
16
  import "./chunk-VRGRAQDG.js";
17
17
  import "./chunk-6GGYIEBM.js";
18
18
  import "./chunk-JDDNBK6T.js";
19
19
  import "./chunk-YNIAFX24.js";
20
- import "./chunk-67LWZEDE.js";
21
- import "./chunk-HEQ3V5SW.js";
20
+ import "./chunk-ENH5AUOX.js";
21
+ import "./chunk-5GVCNVKV.js";
22
22
  import "./chunk-XVWVAWSG.js";
23
23
  import "./chunk-GN7RB4Y4.js";
24
24
  import "./chunk-BJYPTN5S.js";
@@ -190,4 +190,4 @@ async function runServe(options) {
190
190
  export {
191
191
  runServe
192
192
  };
193
- //# sourceMappingURL=serve-K5T5YSDU.js.map
193
+ //# sourceMappingURL=serve-Z2RZ5D3X.js.map
@@ -1,4 +1,4 @@
1
- import { aO as ToolCall, c as Attachment, T as Diagnostic, an as Provider, a8 as ModelConfig, aA as Session, aJ as SessionSummary, af as Project, aE as SessionMode, aG as SessionPhase, M as Message, K as Criterion, N as CriterionStatus, aw as QueuedMessage, G as ContextState, P as DangerLevel$1, ay as ServerMessage, aL as StatsIdentity, aR as ToolResult, E as Config } from '../protocol-C9hfluLv.js';
1
+ import { aO as ToolCall, c as Attachment, T as Diagnostic, an as Provider, a8 as ModelConfig, aA as Session, aJ as SessionSummary, af as Project, aE as SessionMode, aG as SessionPhase, M as Message, K as Criterion, N as CriterionStatus, aw as QueuedMessage, G as ContextState, P as DangerLevel$1, ay as ServerMessage, aL as StatsIdentity, aR as ToolResult, E as Config } from '../protocol-DaC_kENH.js';
2
2
  import { Server } from 'node:http';
3
3
 
4
4
  interface LLMMessage {