openfox 1.6.84 → 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-JGRRUO2G.js → auto-compaction-SFGVXG5N.js} +6 -6
  2. package/dist/{chat-handler-OH5GPGLH.js → chat-handler-DNKX3XP4.js} +9 -9
  3. package/dist/{chunk-6GH2PJJC.js → chunk-3ZFBNQFW.js} +2 -2
  4. package/dist/{chunk-QIMHUO3E.js → chunk-56MJNPRR.js} +3 -3
  5. package/dist/{chunk-KIOUKC3Z.js → chunk-5GVCNVKV.js} +9 -1
  6. package/dist/{chunk-M7INHE2B.js → chunk-5YZ6UPJD.js} +2 -2
  7. package/dist/{chunk-6THJULLK.js → chunk-ENH5AUOX.js} +15 -5
  8. package/dist/{chunk-2IIQ7EZV.js → chunk-IGPHQGUN.js} +5 -5
  9. package/dist/{chunk-OXI26S7U.js → chunk-RCECKE5L.js} +2 -2
  10. package/dist/{chunk-W7BC4WCC.js → chunk-X77U3VSW.js} +40 -27
  11. package/dist/{chunk-CMQCO27Y.js → chunk-ZHBL5G5X.js} +15 -3
  12. package/dist/cli/dev.js +1 -1
  13. package/dist/cli/index.js +1 -1
  14. package/dist/{events-H563T5M5.js → events-ZHG3VBZC.js} +3 -3
  15. package/dist/{orchestrator-NSDEXVSR.js → orchestrator-62JU2Z7E.js} +7 -7
  16. package/dist/package.json +1 -1
  17. package/dist/{processor-OHI5QJ6F.js → processor-ELRLBORH.js} +5 -5
  18. package/dist/{project-creator-GPOIXKX4.js → project-creator-25F7KUPX.js} +3 -3
  19. package/dist/{projects-XLMSDFTQ.js → projects-55F45PH3.js} +5 -3
  20. package/dist/{protocol-C_BF6KDE.d.ts → protocol-DaC_kENH.d.ts} +2 -0
  21. package/dist/{serve-IWRMBDPG.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-TQNQB56H.js → settings-VTVOBDYG.js} +3 -3
  25. package/dist/shared/index.d.ts +2 -2
  26. package/dist/{tools-NBBDVEXF.js → tools-DAOJPK7C.js} +6 -6
  27. package/dist/web/assets/{index-CA0bz_5H.css → index-DNXnQmN1.css} +1 -1
  28. package/dist/web/assets/{index-DmpkTC-2.js → index-cQ_EgBxT.js} +54 -54
  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-2IIQ7EZV.js";
6
- import "./chunk-OXI26S7U.js";
7
- import "./chunk-CMQCO27Y.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-6THJULLK.js";
13
- import "./chunk-KIOUKC3Z.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-JGRRUO2G.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-6GH2PJJC.js";
8
+ } from "./chunk-3ZFBNQFW.js";
9
9
  import {
10
10
  runChatTurn
11
- } from "./chunk-QIMHUO3E.js";
12
- import "./chunk-2IIQ7EZV.js";
13
- import "./chunk-OXI26S7U.js";
14
- import "./chunk-CMQCO27Y.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-6THJULLK.js";
22
- import "./chunk-KIOUKC3Z.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-JGRRUO2G.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-OH5GPGLH.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-6THJULLK.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-6GH2PJJC.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-2IIQ7EZV.js";
16
+ } from "./chunk-IGPHQGUN.js";
17
17
  import {
18
18
  getCurrentContextWindowId,
19
19
  getEventStore
20
- } from "./chunk-6THJULLK.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-QIMHUO3E.js.map
330
+ //# sourceMappingURL=chunk-56MJNPRR.js.map
@@ -106,6 +106,14 @@ function runMigrations(db2) {
106
106
  logger.info("Migrating projects table: adding custom_instructions column");
107
107
  db2.exec(`ALTER TABLE projects ADD COLUMN custom_instructions TEXT`);
108
108
  }
109
+ if (!projectColumnNames.includes("danger_level")) {
110
+ logger.info("Migrating projects table: adding danger_level column");
111
+ db2.exec(`ALTER TABLE projects ADD COLUMN danger_level TEXT`);
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
+ }
109
117
  db2.exec(`
110
118
  CREATE TABLE IF NOT EXISTS events (
111
119
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -164,4 +172,4 @@ export {
164
172
  initDatabase,
165
173
  getDatabase
166
174
  };
167
- //# sourceMappingURL=chunk-KIOUKC3Z.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-IWRMBDPG.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-M7INHE2B.js.map
205
+ //# sourceMappingURL=chunk-5YZ6UPJD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-KIOUKC3Z.js";
3
+ } from "./chunk-5GVCNVKV.js";
4
4
  import {
5
5
  buildContextMessagesFromEventHistory,
6
6
  buildMessagesFromStoredEvents,
@@ -587,16 +587,26 @@ function createEvent(type, data) {
587
587
  }
588
588
 
589
589
  // src/server/db/sessions.ts
590
+ function getProjectDangerLevel(projectId) {
591
+ try {
592
+ const db = getDatabase();
593
+ const row = db.prepare("SELECT danger_level FROM projects WHERE id = ?").get(projectId);
594
+ return row?.danger_level ?? "normal";
595
+ } catch {
596
+ return "normal";
597
+ }
598
+ }
590
599
  function createSession(projectId, workdir, title, providerId, providerModel) {
591
600
  const db = getDatabase();
592
601
  const now = (/* @__PURE__ */ new Date()).toISOString();
593
602
  const id = crypto.randomUUID();
603
+ const dangerLevel = getProjectDangerLevel(projectId);
594
604
  db.prepare(
595
605
  `
596
606
  INSERT INTO sessions (id, project_id, workdir, phase, mode, workflow_phase, is_running, created_at, updated_at, title, provider_id, provider_model, danger_level)
597
- VALUES (?, ?, ?, 'idle', 'planner', 'plan', 0, ?, ?, ?, ?, ?, 'normal')
607
+ VALUES (?, ?, ?, 'idle', 'planner', 'plan', 0, ?, ?, ?, ?, ?, ?)
598
608
  `
599
- ).run(id, projectId, workdir, now, now, title ?? null, providerId ?? null, providerModel ?? null);
609
+ ).run(id, projectId, workdir, now, now, title ?? null, providerId ?? null, providerModel ?? null, dangerLevel);
600
610
  return {
601
611
  id,
602
612
  projectId,
@@ -619,7 +629,7 @@ function createSession(projectId, workdir, title, providerId, providerModel) {
619
629
  totalToolCalls: 0,
620
630
  iterationCount: 0
621
631
  },
622
- dangerLevel: "normal"
632
+ dangerLevel
623
633
  };
624
634
  }
625
635
  function getSession(id) {
@@ -1269,4 +1279,4 @@ export {
1269
1279
  compactContext,
1270
1280
  getRecentUserPromptsForSession
1271
1281
  };
1272
- //# sourceMappingURL=chunk-6THJULLK.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-OXI26S7U.js";
6
+ } from "./chunk-RCECKE5L.js";
7
7
  import {
8
8
  getProject
9
- } from "./chunk-CMQCO27Y.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-6THJULLK.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-NBBDVEXF.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-2IIQ7EZV.js.map
4986
+ //# sourceMappingURL=chunk-IGPHQGUN.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-KIOUKC3Z.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-OXI26S7U.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-QIMHUO3E.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-2IIQ7EZV.js";
40
+ } from "./chunk-IGPHQGUN.js";
41
41
  import {
42
42
  getProject
43
- } from "./chunk-CMQCO27Y.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-6THJULLK.js";
90
+ } from "./chunk-ENH5AUOX.js";
91
91
  import {
92
92
  initDatabase
93
- } from "./chunk-KIOUKC3Z.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.84";
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-XLMSDFTQ.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-GPOIXKX4.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-XLMSDFTQ.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,11 +5442,12 @@ 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-XLMSDFTQ.js");
5446
- const { name, customInstructions } = req.body;
5445
+ const { updateProject } = await import("./projects-55F45PH3.js");
5446
+ const { name, customInstructions, dangerLevel } = req.body;
5447
5447
  const updates = {};
5448
5448
  if (name !== void 0) updates.name = name;
5449
5449
  if (customInstructions !== void 0) updates.customInstructions = customInstructions;
5450
+ if (dangerLevel !== void 0) updates.dangerLevel = dangerLevel;
5450
5451
  const updated = updateProject(req.params.id, updates);
5451
5452
  if (!updated) {
5452
5453
  return res.status(404).json({ error: "Project not found" });
@@ -5454,7 +5455,7 @@ async function createServerHandle(config) {
5454
5455
  res.json({ project: updated });
5455
5456
  });
5456
5457
  app.delete("/api/projects/:id", async (req, res) => {
5457
- const { getProject: getProject2, deleteProject } = await import("./projects-XLMSDFTQ.js");
5458
+ const { getProject: getProject2, deleteProject } = await import("./projects-55F45PH3.js");
5458
5459
  const project = getProject2(req.params.id);
5459
5460
  if (!project) {
5460
5461
  return res.status(404).json({ error: "Project not found" });
@@ -5462,8 +5463,20 @@ async function createServerHandle(config) {
5462
5463
  deleteProject(req.params.id);
5463
5464
  res.json({ success: true });
5464
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
+ });
5465
5478
  app.get("/api/sessions", async (req, res) => {
5466
- const { getRecentUserPromptsForSession } = await import("./events-H563T5M5.js");
5479
+ const { getRecentUserPromptsForSession } = await import("./events-ZHG3VBZC.js");
5467
5480
  const projectId = req.query["projectId"];
5468
5481
  const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
5469
5482
  const offset = parseInt(req.query["offset"]) || 0;
@@ -5496,7 +5509,7 @@ async function createServerHandle(config) {
5496
5509
  res.status(201).json({ session });
5497
5510
  });
5498
5511
  app.get("/api/sessions/:id", async (req, res) => {
5499
- const { getEventStore: getEventStore2 } = await import("./events-H563T5M5.js");
5512
+ const { getEventStore: getEventStore2 } = await import("./events-ZHG3VBZC.js");
5500
5513
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5501
5514
  const session = sessionManager.getSession(req.params.id);
5502
5515
  if (!session) {
@@ -5527,7 +5540,7 @@ async function createServerHandle(config) {
5527
5540
  res.json({ success: true });
5528
5541
  });
5529
5542
  app.post("/api/sessions/:id/provider", async (req, res) => {
5530
- const { getEventStore: getEventStore2 } = await import("./events-H563T5M5.js");
5543
+ const { getEventStore: getEventStore2 } = await import("./events-ZHG3VBZC.js");
5531
5544
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5532
5545
  const sessionId = req.params.id;
5533
5546
  const session = sessionManager.getSession(sessionId);
@@ -5565,7 +5578,7 @@ async function createServerHandle(config) {
5565
5578
  res.json({ success: true });
5566
5579
  });
5567
5580
  app.put("/api/sessions/:id/mode", async (req, res) => {
5568
- const { getEventStore: getEventStore2 } = await import("./events-H563T5M5.js");
5581
+ const { getEventStore: getEventStore2 } = await import("./events-ZHG3VBZC.js");
5569
5582
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5570
5583
  const sessionId = req.params.id;
5571
5584
  const session = sessionManager.getSession(sessionId);
@@ -5618,12 +5631,12 @@ async function createServerHandle(config) {
5618
5631
  if (!callId || approved === void 0) {
5619
5632
  return res.status(400).json({ error: "callId and approved are required" });
5620
5633
  }
5621
- const { providePathConfirmation } = await import("./tools-NBBDVEXF.js");
5634
+ const { providePathConfirmation } = await import("./tools-DAOJPK7C.js");
5622
5635
  const result = providePathConfirmation(callId, approved, alwaysAllow);
5623
5636
  if (!result.found) {
5624
5637
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
5625
5638
  }
5626
- const { getEventStore: getEventStore2 } = await import("./events-H563T5M5.js");
5639
+ const { getEventStore: getEventStore2 } = await import("./events-ZHG3VBZC.js");
5627
5640
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-4VHGQE6Y.js");
5628
5641
  const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-NEBXAMJ3.js");
5629
5642
  const eventStore = getEventStore2();
@@ -5642,7 +5655,7 @@ async function createServerHandle(config) {
5642
5655
  if (!callId || !answer) {
5643
5656
  return res.status(400).json({ error: "callId and answer are required" });
5644
5657
  }
5645
- const { provideAnswer: provideAnswer2 } = await import("./tools-NBBDVEXF.js");
5658
+ const { provideAnswer: provideAnswer2 } = await import("./tools-DAOJPK7C.js");
5646
5659
  const found = provideAnswer2(callId, answer);
5647
5660
  if (!found) {
5648
5661
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -5678,14 +5691,14 @@ async function createServerHandle(config) {
5678
5691
  if (!session) {
5679
5692
  return res.status(404).json({ error: "Session not found" });
5680
5693
  }
5681
- const { stopSessionExecution } = await import("./chat-handler-OH5GPGLH.js");
5682
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-NBBDVEXF.js");
5694
+ const { stopSessionExecution } = await import("./chat-handler-DNKX3XP4.js");
5695
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-DAOJPK7C.js");
5683
5696
  stopSessionExecution(sessionId, sessionManager);
5684
5697
  abortSession(sessionId);
5685
5698
  cancelQuestionsForSession(sessionId, "Session stopped by user");
5686
5699
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
5687
5700
  sessionManager.clearMessageQueue(sessionId);
5688
- const eventStore = (await import("./events-H563T5M5.js")).getEventStore();
5701
+ const eventStore = (await import("./events-ZHG3VBZC.js")).getEventStore();
5689
5702
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
5690
5703
  res.json({ success: true });
5691
5704
  });
@@ -5699,7 +5712,7 @@ async function createServerHandle(config) {
5699
5712
  if (typeof messageIndex !== "number" || messageIndex < 0) {
5700
5713
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
5701
5714
  }
5702
- const { truncateSessionMessages } = await import("./events-H563T5M5.js");
5715
+ const { truncateSessionMessages } = await import("./events-ZHG3VBZC.js");
5703
5716
  truncateSessionMessages(sessionId, messageIndex);
5704
5717
  res.json({ success: true });
5705
5718
  });
@@ -5730,13 +5743,13 @@ async function createServerHandle(config) {
5730
5743
  res.json({ accepted: true });
5731
5744
  });
5732
5745
  app.get("/api/settings/:key", async (req, res) => {
5733
- const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-TQNQB56H.js");
5746
+ const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-VTVOBDYG.js");
5734
5747
  const key = req.params.key;
5735
5748
  const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
5736
5749
  res.json({ key, value });
5737
5750
  });
5738
5751
  app.put("/api/settings/:key", async (req, res) => {
5739
- const { setSetting } = await import("./settings-TQNQB56H.js");
5752
+ const { setSetting } = await import("./settings-VTVOBDYG.js");
5740
5753
  const key = req.params.key;
5741
5754
  const { value } = req.body;
5742
5755
  if (value === void 0) {
@@ -6168,7 +6181,7 @@ async function createServerHandle(config) {
6168
6181
  providerManager
6169
6182
  );
6170
6183
  const wss = wssExports.wss;
6171
- const { QueueProcessor } = await import("./processor-OHI5QJ6F.js");
6184
+ const { QueueProcessor } = await import("./processor-ELRLBORH.js");
6172
6185
  const queueProcessor = new QueueProcessor({
6173
6186
  sessionManager,
6174
6187
  providerManager,
@@ -6243,4 +6256,4 @@ export {
6243
6256
  createServerHandle,
6244
6257
  createServer
6245
6258
  };
6246
- //# sourceMappingURL=chunk-W7BC4WCC.js.map
6259
+ //# sourceMappingURL=chunk-X77U3VSW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-KIOUKC3Z.js";
3
+ } from "./chunk-5GVCNVKV.js";
4
4
 
5
5
  // src/server/db/projects.ts
6
6
  function createProject(name, workdir) {
@@ -67,6 +67,10 @@ function updateProject(id, updates) {
67
67
  sets.push("custom_instructions = ?");
68
68
  values.push(updates.customInstructions);
69
69
  }
70
+ if (updates.dangerLevel !== void 0) {
71
+ sets.push("danger_level = ?");
72
+ values.push(updates.dangerLevel);
73
+ }
70
74
  values.push(id);
71
75
  const result = db.prepare(
72
76
  `
@@ -82,12 +86,19 @@ function deleteProject(id) {
82
86
  const db = getDatabase();
83
87
  db.prepare("DELETE FROM projects WHERE id = ?").run(id);
84
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
+ }
85
94
  function rowToProject(row) {
86
95
  return {
87
96
  id: row.id,
88
97
  name: row.name,
89
98
  workdir: row.workdir,
90
99
  ...row.custom_instructions ? { customInstructions: row.custom_instructions } : {},
100
+ ...row.danger_level ? { dangerLevel: row.danger_level } : {},
101
+ isStarred: !!row.is_starred,
91
102
  createdAt: row.created_at,
92
103
  updatedAt: row.updated_at
93
104
  };
@@ -99,6 +110,7 @@ export {
99
110
  getProjectByWorkdir,
100
111
  listProjects,
101
112
  updateProject,
102
- deleteProject
113
+ deleteProject,
114
+ toggleStar
103
115
  };
104
- //# sourceMappingURL=chunk-CMQCO27Y.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-M7INHE2B.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-M7INHE2B.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-6THJULLK.js";
41
- import "./chunk-KIOUKC3Z.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-H563T5M5.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-QIMHUO3E.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-2IIQ7EZV.js";
15
- import "./chunk-OXI26S7U.js";
16
- import "./chunk-CMQCO27Y.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-6THJULLK.js";
22
- import "./chunk-KIOUKC3Z.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-NSDEXVSR.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.84",
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-6GH2PJJC.js";
8
+ } from "./chunk-3ZFBNQFW.js";
9
9
  import {
10
10
  getEventStore
11
- } from "./chunk-6THJULLK.js";
12
- import "./chunk-KIOUKC3Z.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-NSDEXVSR.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-OHI5QJ6F.js.map
224
+ //# sourceMappingURL=processor-ELRLBORH.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createProject
3
- } from "./chunk-CMQCO27Y.js";
4
- import "./chunk-KIOUKC3Z.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-GPOIXKX4.js.map
111
+ //# sourceMappingURL=project-creator-25F7KUPX.js.map