openfox 2.0.114 → 2.0.115

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 (85) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/CHANGELOG.md +21 -0
  3. package/dist/{chat-handler-KWXRSWXZ.js → chat-handler-5SP265CR.js} +27 -27
  4. package/dist/{chunk-2XD65L7M.js → chunk-27NABDXB.js} +2 -2
  5. package/dist/{chunk-YGJIK3CG.js → chunk-2FCLCUVR.js} +5 -5
  6. package/dist/{chunk-HV6IALXF.js → chunk-37QLXLML.js} +4 -4
  7. package/dist/{chunk-UTIQ7OO5.js → chunk-3KBRMBTP.js} +2 -2
  8. package/dist/{chunk-FW4NDUBL.js → chunk-3NPLERPQ.js} +13 -13
  9. package/dist/{chunk-SFZGMB2G.js → chunk-3PG65AXG.js} +18 -3
  10. package/dist/{chunk-W77NBJAZ.js → chunk-3QQAIUZI.js} +9 -9
  11. package/dist/{chunk-PBW3YC3G.js → chunk-5PT4UMRR.js} +5 -1
  12. package/dist/chunk-5V3BF67X.js +7 -0
  13. package/dist/{chunk-BZVW77PI.js → chunk-6KPJLELC.js} +3 -3
  14. package/dist/{chunk-OTYAEEX3.js → chunk-6RGACY4E.js} +7 -7
  15. package/dist/{chunk-SA34STZ6.js → chunk-AESOGRFK.js} +2 -2
  16. package/dist/{chunk-MUSPWEBB.js → chunk-BVVCRIVM.js} +3 -3
  17. package/dist/{chunk-VPVLO436.js → chunk-BWVO5WFK.js} +4 -4
  18. package/dist/{chunk-JXLRL5JR.js → chunk-ERNWAKUB.js} +7 -7
  19. package/dist/{chunk-HP5CIB66.js → chunk-HD6Y77RO.js} +2 -2
  20. package/dist/{chunk-K733B5T2.js → chunk-JFK4GKQD.js} +87 -54
  21. package/dist/{chunk-LXYPMFTH.js → chunk-JGWHRYWG.js} +3 -3
  22. package/dist/{chunk-JP7NM545.js → chunk-JLAR2CMV.js} +2 -2
  23. package/dist/{chunk-UPBWEHIL.js → chunk-LNNBLB6G.js} +20 -5
  24. package/dist/{chunk-OXSTNSCF.js → chunk-LTYL6ZGH.js} +2 -2
  25. package/dist/{chunk-P5UANBBX.js → chunk-M6X6AIEG.js} +2 -2
  26. package/dist/{chunk-SBSUDHL4.js → chunk-O6DU226D.js} +2 -2
  27. package/dist/{chunk-QD7MRMCH.js → chunk-OCBBAEMT.js} +144 -128
  28. package/dist/{chunk-L63Q4JQJ.js → chunk-OCSTEGK7.js} +3 -3
  29. package/dist/{chunk-7GWARYQC.js → chunk-OKVHMKE2.js} +15 -15
  30. package/dist/{chunk-GUHHUDNL.js → chunk-TFF5T3K3.js} +10 -10
  31. package/dist/{chunk-NWJLWLKF.js → chunk-TGLVWAFC.js} +10 -10
  32. package/dist/{chunk-L737Y63F.js → chunk-TOKQ2UVG.js} +2 -2
  33. package/dist/{chunk-3O77NT4T.js → chunk-VWEATA7R.js} +4 -4
  34. package/dist/{chunk-NLO64UE3.js → chunk-YX3OQBNX.js} +2 -2
  35. package/dist/{chunk-TKKP56QK.js → chunk-ZTOG6LJD.js} +3 -3
  36. package/dist/cli/dev.js +1 -1
  37. package/dist/cli/index.js +1 -1
  38. package/dist/{client-EM7ISGUP.js → client-KE7EDI2D.js} +6 -6
  39. package/dist/{client-pure-VFZIIK4S.js → client-pure-66Z6FWS6.js} +2 -2
  40. package/dist/command-defaults/mark-done.command.md +14 -0
  41. package/dist/{compactor-V3LR7APW.js → compactor-SKVC2VNL.js} +13 -12
  42. package/dist/{dynamic-context-MVGOF5V2.js → dynamic-context-QNB4ELLP.js} +9 -9
  43. package/dist/{events-PI7IMPHT.js → events-5PLO4QJU.js} +8 -7
  44. package/dist/{folding-FO57K4JM.js → folding-CJWYFUKD.js} +6 -5
  45. package/dist/http-client-KLODRQC2.js +11 -0
  46. package/dist/{inspect-proxy-NHKQQ2CD.js → inspect-proxy-K6QKEYDT.js} +4 -4
  47. package/dist/launch-EOXVWLOP.js +52 -0
  48. package/dist/{manager-66YAEO7K.js → manager-LZ3JQ443.js} +5 -5
  49. package/dist/{model-overrides-L53PZNZA.js → model-overrides-5UVW3KTE.js} +4 -4
  50. package/dist/{orchestrator-XK5K3RPL.js → orchestrator-ED3KFPXO.js} +26 -26
  51. package/dist/package.json +1 -1
  52. package/dist/{path-security-RSEI3YKB.js → path-security-B6EZC63L.js} +10 -9
  53. package/dist/{platform-WA4GK5BO.js → platform-6RPPBHKH.js} +4 -4
  54. package/dist/{processor-WDZSFBVO.js → processor-226ZOTRI.js} +26 -26
  55. package/dist/{project-creator-676WQXVI.js → project-creator-VBFE35NI.js} +3 -3
  56. package/dist/{projects-SSBWIYL4.js → projects-AXHZOBR2.js} +5 -3
  57. package/dist/{protocol-BzHs024-.d.ts → protocol-JdxRpPxM.d.ts} +1 -1
  58. package/dist/provider/index.d.ts +4 -4
  59. package/dist/{provider-PLIWRBCF.js → provider-DL4ZWQY7.js} +7 -7
  60. package/dist/{provider-manager-2QSJTPWS.js → provider-manager-6CLRMGDE.js} +7 -7
  61. package/dist/{registry-ZP4TN2IN.js → registry-5XI5NDBF.js} +5 -4
  62. package/dist/{serve-MZ3BCCWC.js → serve-DARV4NJG.js} +32 -32
  63. package/dist/server/index.d.ts +12 -5
  64. package/dist/server/index.js +31 -31
  65. package/dist/server-LQJ7MBDS.js +55 -0
  66. package/dist/{service-54PGIPDQ.js → service-4JKTGPRG.js} +9 -9
  67. package/dist/{session-overrides-LXN6W7SA.js → session-overrides-AZKV6BRD.js} +7 -6
  68. package/dist/{sessions-CHPVUG6H.js → sessions-752IZIIK.js} +6 -5
  69. package/dist/{settings-NEBM3GQX.js → settings-2AHDKCD7.js} +3 -3
  70. package/dist/shared/index.d.ts +3 -3
  71. package/dist/{tasks-TJXG2V3U.js → tasks-XJXHU623.js} +10 -10
  72. package/dist/{tools-CIM26IFB.js → tools-QYYNFMGU.js} +24 -24
  73. package/dist/{types-CbggXFvR.d.ts → types-CIVhQMvD.d.ts} +1 -1
  74. package/dist/{types-CMtHpDWT.d.ts → types-Df7NM9b5.d.ts} +2 -0
  75. package/dist/{update-UZBBO42X.js → update-2REP2WB6.js} +2 -2
  76. package/dist/web/assets/index-M7ToECa4.js +324 -0
  77. package/dist/web/index.html +1 -1
  78. package/dist/web/sw.js +1 -1
  79. package/dist/{workspace-2XODU4YJ.js → workspace-RMZVTFJD.js} +4 -4
  80. package/package.json +1 -1
  81. package/dist/chunk-NCZRWCJN.js +0 -7
  82. package/dist/http-client-33EZ3BLR.js +0 -11
  83. package/dist/launch-L5ROVNI3.js +0 -52
  84. package/dist/server-EPXODFMB.js +0 -55
  85. package/dist/web/assets/index-rZHXkfMq.js +0 -324
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.115 - 2026-08-11
4
+
5
+ ### Features
6
+
7
+ - **Built-in Mark Task as Done command** — a bundled command that guides agents through completing a task
8
+ - **Per-project default agent for new sessions** — choose the agent fresh chats start with in Project Settings
9
+
10
+ ### Enhancements
11
+
12
+ - **Task board output renders as a kanban board** — project_tasks tool results show in the chat feed with columns, running/queued badges, and gate chips
13
+ - **New custom agents default to top-level type** — instead of being created as sub-agents
14
+
15
+ ### Bug Fixes
16
+
17
+ - **Partial thinking resumes cleanly on strict APIs** — content-less assistant messages now carry a space instead of null, clearing the "content or tool_calls must be set" 400
18
+ - **Workspace edits honor reads from the original clone** — the write/edit guard no longer rejects after browsing files in the base workspace
19
+ - **.openfox/ content resolves from the project root** — skills, commands, agents, and workflows scope to the session's project wherever it lives
20
+ - **Custom agents save beside their project** — not the server directory
21
+ - **session_metadata reads render real output** — the feed shows actual entries instead of a placeholder
22
+ - **Task sessions get auto-generated names** — and Open session links to a real session
23
+
3
24
  ## 2.0.114 - 2026-08-10
4
25
 
5
26
  ### Features
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.115 - 2026-08-11
4
+
5
+ ### Features
6
+
7
+ - **Built-in Mark Task as Done command** — a bundled command that guides agents through completing a task
8
+ - **Per-project default agent for new sessions** — choose the agent fresh chats start with in Project Settings
9
+
10
+ ### Enhancements
11
+
12
+ - **Task board output renders as a kanban board** — project_tasks tool results show in the chat feed with columns, running/queued badges, and gate chips
13
+ - **New custom agents default to top-level type** — instead of being created as sub-agents
14
+
15
+ ### Bug Fixes
16
+
17
+ - **Partial thinking resumes cleanly on strict APIs** — content-less assistant messages now carry a space instead of null, clearing the "content or tool_calls must be set" 400
18
+ - **Workspace edits honor reads from the original clone** — the write/edit guard no longer rejects after browsing files in the base workspace
19
+ - **.openfox/ content resolves from the project root** — skills, commands, agents, and workflows scope to the session's project wherever it lives
20
+ - **Custom agents save beside their project** — not the server directory
21
+ - **session_metadata reads render real output** — the feed shows actual entries instead of a placeholder
22
+ - **Task sessions get auto-generated names** — and Open session links to a real session
23
+
3
24
  ## 2.0.114 - 2026-08-10
4
25
 
5
26
  ### Features
@@ -2,52 +2,52 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-NWJLWLKF.js";
5
+ } from "./chunk-TGLVWAFC.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-FW4NDUBL.js";
9
- import "./chunk-K733B5T2.js";
10
- import "./chunk-GUHHUDNL.js";
11
- import "./chunk-YGJIK3CG.js";
12
- import "./chunk-NLO64UE3.js";
13
- import "./chunk-2XD65L7M.js";
14
- import "./chunk-P5UANBBX.js";
15
- import "./chunk-TKKP56QK.js";
8
+ } from "./chunk-3NPLERPQ.js";
9
+ import "./chunk-JFK4GKQD.js";
10
+ import "./chunk-TFF5T3K3.js";
11
+ import "./chunk-2FCLCUVR.js";
12
+ import "./chunk-YX3OQBNX.js";
13
+ import "./chunk-27NABDXB.js";
14
+ import "./chunk-M6X6AIEG.js";
15
+ import "./chunk-ZTOG6LJD.js";
16
16
  import "./chunk-I72ACQ6R.js";
17
17
  import "./chunk-JE7LW7Y6.js";
18
18
  import "./chunk-OAN4BXEW.js";
19
- import "./chunk-SBSUDHL4.js";
19
+ import "./chunk-O6DU226D.js";
20
20
  import "./chunk-J7GAZGZT.js";
21
- import "./chunk-OTYAEEX3.js";
22
- import "./chunk-L63Q4JQJ.js";
23
- import "./chunk-BZVW77PI.js";
21
+ import "./chunk-6RGACY4E.js";
22
+ import "./chunk-OCSTEGK7.js";
23
+ import "./chunk-6KPJLELC.js";
24
24
  import {
25
25
  getEventStore
26
- } from "./chunk-JXLRL5JR.js";
26
+ } from "./chunk-ERNWAKUB.js";
27
+ import "./chunk-VWEATA7R.js";
27
28
  import {
28
29
  createChatMessageMessage,
29
30
  createPhaseChangedMessage,
30
31
  createSessionRunningMessage
31
32
  } from "./chunk-I7FY2LTR.js";
32
- import "./chunk-SA34STZ6.js";
33
+ import "./chunk-AESOGRFK.js";
33
34
  import "./chunk-JURM3RPZ.js";
34
- import "./chunk-JP7NM545.js";
35
- import "./chunk-SFZGMB2G.js";
36
- import "./chunk-UTIQ7OO5.js";
35
+ import "./chunk-JLAR2CMV.js";
36
+ import "./chunk-3KBRMBTP.js";
37
37
  import "./chunk-LCLH6ZUL.js";
38
- import "./chunk-3O77NT4T.js";
39
- import "./chunk-UPBWEHIL.js";
38
+ import "./chunk-LNNBLB6G.js";
40
39
  import "./chunk-OSXPQSLW.js";
41
- import "./chunk-MUSPWEBB.js";
40
+ import "./chunk-3PG65AXG.js";
41
+ import "./chunk-BVVCRIVM.js";
42
42
  import "./chunk-J2GP3J3X.js";
43
- import "./chunk-LXYPMFTH.js";
43
+ import "./chunk-JGWHRYWG.js";
44
44
  import "./chunk-V4IE7HJY.js";
45
45
  import "./chunk-AZHWLLPP.js";
46
46
  import "./chunk-HNCM3D7Y.js";
47
- import "./chunk-L737Y63F.js";
48
- import "./chunk-OXSTNSCF.js";
49
- import "./chunk-HP5CIB66.js";
50
- import "./chunk-PBW3YC3G.js";
47
+ import "./chunk-TOKQ2UVG.js";
48
+ import "./chunk-LTYL6ZGH.js";
49
+ import "./chunk-HD6Y77RO.js";
50
+ import "./chunk-5PT4UMRR.js";
51
51
  import "./chunk-K44MW7JJ.js";
52
52
  import "./chunk-X25Q6RAV.js";
53
53
  import "./chunk-KSXCOHHW.js";
@@ -173,4 +173,4 @@ export {
173
173
  startChatSession,
174
174
  stopSessionExecution
175
175
  };
176
- //# sourceMappingURL=chat-handler-KWXRSWXZ.js.map
176
+ //# sourceMappingURL=chat-handler-5SP265CR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getPlatformShell
3
- } from "./chunk-SA34STZ6.js";
3
+ } from "./chunk-AESOGRFK.js";
4
4
 
5
5
  // src/server/tools/tool-policy.ts
6
6
  var ALWAYS_ALLOWED = /* @__PURE__ */ new Set(["step_done"]);
@@ -246,4 +246,4 @@ export {
246
246
  buildAgentSmallReminder,
247
247
  COMPACTION_PROMPT
248
248
  };
249
- //# sourceMappingURL=chunk-2XD65L7M.js.map
249
+ //# sourceMappingURL=chunk-27NABDXB.js.map
@@ -1,17 +1,17 @@
1
- import {
2
- getProject
3
- } from "./chunk-SFZGMB2G.js";
4
1
  import {
5
2
  deleteItemFromDir,
6
3
  loadItemsFromDir,
7
4
  pathExists
8
5
  } from "./chunk-OSXPQSLW.js";
6
+ import {
7
+ getProject
8
+ } from "./chunk-3PG65AXG.js";
9
9
  import {
10
10
  SETTINGS_KEYS,
11
11
  deleteSetting,
12
12
  getSetting,
13
13
  setSetting
14
- } from "./chunk-HP5CIB66.js";
14
+ } from "./chunk-HD6Y77RO.js";
15
15
 
16
16
  // src/server/context/instructions.ts
17
17
  import { readFile, access } from "fs/promises";
@@ -440,4 +440,4 @@ export {
440
440
  deleteSkill,
441
441
  deleteProjectSkill
442
442
  };
443
- //# sourceMappingURL=chunk-YGJIK3CG.js.map
443
+ //# sourceMappingURL=chunk-2FCLCUVR.js.map
@@ -163,7 +163,7 @@ async function runCli(options) {
163
163
  break;
164
164
  }
165
165
  case "provider": {
166
- const { runProviderCommand } = await import("./provider-PLIWRBCF.js");
166
+ const { runProviderCommand } = await import("./provider-DL4ZWQY7.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-UZBBO42X.js");
203
+ const { runUpdate } = await import("./update-2REP2WB6.js");
204
204
  const code = await runUpdate();
205
205
  if (code !== 0) {
206
206
  process.exit(code);
@@ -213,7 +213,7 @@ async function runCli(options) {
213
213
  if (!configExists) {
214
214
  await runNetworkSetup(mode);
215
215
  }
216
- const { runServe } = await import("./serve-MZ3BCCWC.js");
216
+ const { runServe } = await import("./serve-DARV4NJG.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-HV6IALXF.js.map
228
+ //# sourceMappingURL=chunk-37QLXLML.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-LCLH6ZUL.js";
4
4
  import {
5
5
  resolveDefaultAgentId
6
- } from "./chunk-UPBWEHIL.js";
6
+ } from "./chunk-LNNBLB6G.js";
7
7
 
8
8
  // src/server/events/apply-events.ts
9
9
  function markComplete(msg, reason) {
@@ -965,4 +965,4 @@ export {
965
965
  buildSnapshot,
966
966
  buildSnapshotFromSessionState
967
967
  };
968
- //# sourceMappingURL=chunk-UTIQ7OO5.js.map
968
+ //# sourceMappingURL=chunk-3KBRMBTP.js.map
@@ -4,42 +4,42 @@ import {
4
4
  getToolRegistryForAgent,
5
5
  processEventsForConversation,
6
6
  runTopLevelAgentLoop
7
- } from "./chunk-K733B5T2.js";
7
+ } from "./chunk-JFK4GKQD.js";
8
8
  import {
9
9
  buildCachedPrompt,
10
10
  computeDynamicContextHash,
11
11
  getToolFingerprint
12
- } from "./chunk-GUHHUDNL.js";
12
+ } from "./chunk-TFF5T3K3.js";
13
13
  import {
14
14
  getAllInstructions,
15
15
  getEnabledSkillMetadata
16
- } from "./chunk-YGJIK3CG.js";
16
+ } from "./chunk-2FCLCUVR.js";
17
17
  import {
18
18
  TurnMetrics,
19
19
  createChatDoneEvent,
20
20
  createMessageStartEvent
21
- } from "./chunk-NLO64UE3.js";
21
+ } from "./chunk-YX3OQBNX.js";
22
22
  import {
23
23
  buildAgentReminder,
24
24
  buildAgentSmallReminder
25
- } from "./chunk-2XD65L7M.js";
25
+ } from "./chunk-27NABDXB.js";
26
26
  import {
27
27
  PathAccessDeniedError
28
- } from "./chunk-BZVW77PI.js";
28
+ } from "./chunk-6KPJLELC.js";
29
29
  import {
30
30
  getCurrentContextWindowId,
31
31
  getCurrentWindowMessageOptions,
32
32
  getEventStore
33
- } from "./chunk-JXLRL5JR.js";
33
+ } from "./chunk-ERNWAKUB.js";
34
34
  import {
35
35
  buildSnapshotFromSessionState
36
- } from "./chunk-UTIQ7OO5.js";
36
+ } from "./chunk-3KBRMBTP.js";
37
37
  import {
38
38
  findAgentById,
39
39
  getRuntimeConfig,
40
40
  loadAllAgentsDefault,
41
41
  resolveDefaultAgentId
42
- } from "./chunk-UPBWEHIL.js";
42
+ } from "./chunk-LNNBLB6G.js";
43
43
  import {
44
44
  logger
45
45
  } from "./chunk-K44MW7JJ.js";
@@ -49,7 +49,7 @@ import {
49
49
 
50
50
  // src/server/chat/orchestrator.ts
51
51
  async function buildRetryPatterns() {
52
- const { getSetting, SETTINGS_KEYS } = await import("./settings-NEBM3GQX.js");
52
+ const { getSetting, SETTINGS_KEYS } = await import("./settings-2AHDKCD7.js");
53
53
  const raw = getSetting(SETTINGS_KEYS.RETRY_PATTERNS);
54
54
  if (!raw) {
55
55
  const oldXmlProtection = getSetting("llm.disableXmlProtection");
@@ -224,7 +224,7 @@ function injectAgentReminder(sessionId, agentDef) {
224
224
  });
225
225
  }
226
226
  async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
227
- const allAgents = await loadAllAgentsDefault();
227
+ const allAgents = await loadAllAgentsDefault(options.sessionManager.getProjectWorkdir(options.sessionId));
228
228
  const agentDef = findAgentById(agentId, allAgents) ?? findAgentById(resolveDefaultAgentId(), allAgents);
229
229
  const agentLlmClient = options.sessionManager.createClientForAgent(agentId, options.llmClient);
230
230
  const statsIdentity = resolveStatsIdentity({ ...options, llmClient: agentLlmClient });
@@ -235,7 +235,7 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
235
235
  const { content: instructionContent } = await getAllInstructions(session.workdir, session.projectId);
236
236
  const runtimeConfig = getRuntimeConfig();
237
237
  const configDir = getGlobalConfigDir(runtimeConfig.mode ?? "production");
238
- const skills = await getEnabledSkillMetadata(configDir, options.sessionManager.getEffectiveWorkdir(options.sessionId));
238
+ const skills = await getEnabledSkillMetadata(configDir, options.sessionManager.getProjectWorkdir(options.sessionId));
239
239
  return runTopLevelAgentLoop(
240
240
  {
241
241
  mode: agentId,
@@ -319,4 +319,4 @@ export {
319
319
  runChatTurn,
320
320
  runAgentTurn
321
321
  };
322
- //# sourceMappingURL=chunk-FW4NDUBL.js.map
322
+ //# sourceMappingURL=chunk-3NPLERPQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-PBW3YC3G.js";
3
+ } from "./chunk-5PT4UMRR.js";
4
4
 
5
5
  // src/server/db/projects.ts
6
6
  function createProject(name, workdir) {
@@ -75,6 +75,10 @@ function updateProject(id, updates) {
75
75
  sets.push("danger_level = ?");
76
76
  values.push(updates.dangerLevel);
77
77
  }
78
+ if (updates.defaultAgent !== void 0) {
79
+ sets.push("default_agent = ?");
80
+ values.push(updates.defaultAgent);
81
+ }
78
82
  if (updates.workspaceRootDir !== void 0) {
79
83
  sets.push("workspace_root_dir = ?");
80
84
  values.push(updates.workspaceRootDir);
@@ -103,6 +107,15 @@ function toggleStar(id, isStarred) {
103
107
  db.prepare("UPDATE projects SET is_starred = ? WHERE id = ?").run(isStarred ? 1 : 0, id);
104
108
  return getProject(id);
105
109
  }
110
+ function getProjectDefaultAgent(projectId) {
111
+ try {
112
+ const db = getDatabase();
113
+ const row = db.prepare("SELECT default_agent FROM projects WHERE id = ?").get(projectId);
114
+ return row?.default_agent ?? null;
115
+ } catch {
116
+ return null;
117
+ }
118
+ }
106
119
  function rowToProject(row) {
107
120
  return {
108
121
  id: row.id,
@@ -110,6 +123,7 @@ function rowToProject(row) {
110
123
  workdir: row.workdir,
111
124
  ...row.custom_instructions ? { customInstructions: row.custom_instructions } : {},
112
125
  ...row.danger_level ? { dangerLevel: row.danger_level } : {},
126
+ ...row.default_agent ? { defaultAgent: row.default_agent } : {},
113
127
  isStarred: !!row.is_starred,
114
128
  ...row.workspace_root_dir ? { workspaceRootDir: row.workspace_root_dir } : {},
115
129
  ...row.mcp_overrides ? {
@@ -127,6 +141,7 @@ export {
127
141
  listProjects,
128
142
  updateProject,
129
143
  deleteProject,
130
- toggleStar
144
+ toggleStar,
145
+ getProjectDefaultAgent
131
146
  };
132
- //# sourceMappingURL=chunk-SFZGMB2G.js.map
147
+ //# sourceMappingURL=chunk-3PG65AXG.js.map
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  runAgentTurn
3
- } from "./chunk-FW4NDUBL.js";
3
+ } from "./chunk-3NPLERPQ.js";
4
4
  import {
5
5
  executeSubAgent,
6
6
  getToolRegistryForAgent
7
- } from "./chunk-K733B5T2.js";
7
+ } from "./chunk-JFK4GKQD.js";
8
8
  import {
9
9
  TurnMetrics,
10
10
  createMessageStartEvent
11
- } from "./chunk-NLO64UE3.js";
11
+ } from "./chunk-YX3OQBNX.js";
12
12
  import {
13
13
  checkAborted,
14
14
  decodeUtf8,
15
15
  spawnShellProcess
16
- } from "./chunk-TKKP56QK.js";
16
+ } from "./chunk-ZTOG6LJD.js";
17
17
  import {
18
18
  terminateProcessTree
19
19
  } from "./chunk-I72ACQ6R.js";
@@ -27,11 +27,11 @@ import {
27
27
  loadProjectWorkflows,
28
28
  loadUserWorkflows,
29
29
  normalizeWorkflowScope
30
- } from "./chunk-OTYAEEX3.js";
30
+ } from "./chunk-6RGACY4E.js";
31
31
  import {
32
32
  getCurrentContextWindowId,
33
33
  getEventStore
34
- } from "./chunk-JXLRL5JR.js";
34
+ } from "./chunk-ERNWAKUB.js";
35
35
  import {
36
36
  createChatMessageMessage,
37
37
  createSessionRunningMessage
@@ -41,7 +41,7 @@ import {
41
41
  getRuntimeConfig,
42
42
  loadAllAgentsDefault,
43
43
  resolveDefaultAgentId
44
- } from "./chunk-UPBWEHIL.js";
44
+ } from "./chunk-LNNBLB6G.js";
45
45
  import {
46
46
  logger
47
47
  } from "./chunk-K44MW7JJ.js";
@@ -587,7 +587,7 @@ async function executeWorkflow(workflow, options, subGroup) {
587
587
  const turnMetrics = new TurnMetrics();
588
588
  const promptTemplate = subStep.prompt ?? "Perform your task.";
589
589
  const resolvedPrompt = resolveTemplate(promptTemplate, templateCtx);
590
- const allAgents = await loadAllAgentsDefault();
590
+ const allAgents = await loadAllAgentsDefault(sessionManager.getProjectWorkdir(sessionId));
591
591
  const agentDef = findAgentById(subStep.subAgentType, allAgents);
592
592
  if (!agentDef) {
593
593
  logger.error("Sub-agent definition not found", { subAgentType: subStep.subAgentType });
@@ -954,4 +954,4 @@ export {
954
954
  abortRunnerRun,
955
955
  launchWorkflowRun
956
956
  };
957
- //# sourceMappingURL=chunk-W77NBJAZ.js.map
957
+ //# sourceMappingURL=chunk-3QQAIUZI.js.map
@@ -110,6 +110,10 @@ function runMigrations(db2) {
110
110
  logger.info("Migrating projects table: adding is_starred column");
111
111
  db2.exec(`ALTER TABLE projects ADD COLUMN is_starred INTEGER NOT NULL DEFAULT 0`);
112
112
  }
113
+ if (!projectColumnNames.includes("default_agent")) {
114
+ logger.info("Migrating projects table: adding default_agent column");
115
+ db2.exec(`ALTER TABLE projects ADD COLUMN default_agent TEXT`);
116
+ }
113
117
  if (!projectColumnNames.includes("workspace_root_dir")) {
114
118
  logger.info("Migrating projects table: adding workspace_root_dir column");
115
119
  db2.exec(`ALTER TABLE projects ADD COLUMN workspace_root_dir TEXT`);
@@ -320,4 +324,4 @@ export {
320
324
  initDatabase,
321
325
  getDatabase
322
326
  };
323
- //# sourceMappingURL=chunk-PBW3YC3G.js.map
327
+ //# sourceMappingURL=chunk-5PT4UMRR.js.map
@@ -0,0 +1,7 @@
1
+ // src/constants.ts
2
+ var VERSION = "2.0.115";
3
+
4
+ export {
5
+ VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-5V3BF67X.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  getEventStore
3
- } from "./chunk-JXLRL5JR.js";
3
+ } from "./chunk-ERNWAKUB.js";
4
4
  import {
5
5
  createChatPathConfirmationMessage
6
6
  } from "./chunk-I7FY2LTR.js";
7
7
  import {
8
8
  getPlatformShell
9
- } from "./chunk-SA34STZ6.js";
9
+ } from "./chunk-AESOGRFK.js";
10
10
 
11
11
  // src/server/tools/path-security.ts
12
12
  import { realpath } from "fs/promises";
@@ -535,4 +535,4 @@ export {
535
535
  getConfirmationSessionId,
536
536
  getPendingConfirmationsBySession
537
537
  };
538
- //# sourceMappingURL=chunk-BZVW77PI.js.map
538
+ //# sourceMappingURL=chunk-6KPJLELC.js.map
@@ -1,6 +1,3 @@
1
- import {
2
- getProject
3
- } from "./chunk-SFZGMB2G.js";
4
1
  import {
5
2
  deleteItemFromDir,
6
3
  getDefaultIds,
@@ -9,12 +6,15 @@ import {
9
6
  pathExists,
10
7
  saveItemToDir
11
8
  } from "./chunk-OSXPQSLW.js";
9
+ import {
10
+ getProject
11
+ } from "./chunk-3PG65AXG.js";
12
12
  import {
13
13
  parseDefaultModelSelection
14
- } from "./chunk-MUSPWEBB.js";
14
+ } from "./chunk-BVVCRIVM.js";
15
15
  import {
16
16
  getDatabase
17
- } from "./chunk-PBW3YC3G.js";
17
+ } from "./chunk-5PT4UMRR.js";
18
18
  import {
19
19
  logger
20
20
  } from "./chunk-K44MW7JJ.js";
@@ -908,7 +908,7 @@ function createTasksService(deps) {
908
908
  const defaults = parseDefaultModelSelection(config.defaultModelSelection);
909
909
  const providerId = task.providerId ?? defaults.providerId ?? null;
910
910
  const model = task.model ?? defaults.model ?? null;
911
- const session = sessionManager.createSession(projectId, promptLabel(task.prompt), providerId, model);
911
+ const session = sessionManager.createSession(projectId, void 0, providerId, model);
912
912
  if (task.agentId) {
913
913
  try {
914
914
  sessionManager.setMode(session.id, task.agentId);
@@ -1078,4 +1078,4 @@ export {
1078
1078
  isTaskGateError,
1079
1079
  createTasksService
1080
1080
  };
1081
- //# sourceMappingURL=chunk-OTYAEEX3.js.map
1081
+ //# sourceMappingURL=chunk-6RGACY4E.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-HP5CIB66.js";
4
+ } from "./chunk-HD6Y77RO.js";
5
5
 
6
6
  // src/server/utils/platform.ts
7
7
  import os from "os";
@@ -63,4 +63,4 @@ export {
63
63
  isWindowsPath,
64
64
  isAbsolutePath
65
65
  };
66
- //# sourceMappingURL=chunk-SA34STZ6.js.map
66
+ //# sourceMappingURL=chunk-AESOGRFK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLLMClient
3
- } from "./chunk-LXYPMFTH.js";
3
+ } from "./chunk-JGWHRYWG.js";
4
4
  import {
5
5
  getModelProfile
6
6
  } from "./chunk-V4IE7HJY.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-HNCM3D7Y.js";
15
15
  import {
16
16
  resolveAttachmentsInMessages
17
- } from "./chunk-L737Y63F.js";
17
+ } from "./chunk-TOKQ2UVG.js";
18
18
  import {
19
19
  logger
20
20
  } from "./chunk-K44MW7JJ.js";
@@ -803,4 +803,4 @@ export {
803
803
  parseDefaultModelSelection,
804
804
  createProviderManager
805
805
  };
806
- //# sourceMappingURL=chunk-MUSPWEBB.js.map
806
+ //# sourceMappingURL=chunk-BVVCRIVM.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createMessageStartEvent
3
- } from "./chunk-NLO64UE3.js";
3
+ } from "./chunk-YX3OQBNX.js";
4
4
  import {
5
5
  COMPACTION_PROMPT
6
- } from "./chunk-2XD65L7M.js";
6
+ } from "./chunk-27NABDXB.js";
7
7
  import {
8
8
  getCurrentWindowMessageOptions
9
- } from "./chunk-JXLRL5JR.js";
9
+ } from "./chunk-ERNWAKUB.js";
10
10
 
11
11
  // src/server/context/compactor.ts
12
12
  function appendCompactionPrompt(sessionId, append) {
@@ -36,4 +36,4 @@ export {
36
36
  COMPACTION_MAX_RATIO,
37
37
  shouldCompact
38
38
  };
39
- //# sourceMappingURL=chunk-VPVLO436.js.map
39
+ //# sourceMappingURL=chunk-BWVO5WFK.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ updateSessionMessageCount
3
+ } from "./chunk-VWEATA7R.js";
1
4
  import {
2
5
  buildContextMessagesFromEventHistory,
3
6
  buildMessagesFromStoredEvents,
@@ -6,16 +9,13 @@ import {
6
9
  foldSessionState,
7
10
  spreadOptionalMessageFields,
8
11
  trimSnapshotStreamingOutput
9
- } from "./chunk-UTIQ7OO5.js";
10
- import {
11
- updateSessionMessageCount
12
- } from "./chunk-3O77NT4T.js";
12
+ } from "./chunk-3KBRMBTP.js";
13
13
  import {
14
14
  getRuntimeConfig
15
- } from "./chunk-UPBWEHIL.js";
15
+ } from "./chunk-LNNBLB6G.js";
16
16
  import {
17
17
  SETTINGS_KEYS
18
- } from "./chunk-HP5CIB66.js";
18
+ } from "./chunk-HD6Y77RO.js";
19
19
  import {
20
20
  logger
21
21
  } from "./chunk-K44MW7JJ.js";
@@ -1465,4 +1465,4 @@ export {
1465
1465
  truncateSessionMessages,
1466
1466
  getRecentUserPromptsForSession
1467
1467
  };
1468
- //# sourceMappingURL=chunk-JXLRL5JR.js.map
1468
+ //# sourceMappingURL=chunk-ERNWAKUB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-PBW3YC3G.js";
3
+ } from "./chunk-5PT4UMRR.js";
4
4
 
5
5
  // src/server/db/settings.ts
6
6
  var SETTINGS_KEYS = {
@@ -131,4 +131,4 @@ export {
131
131
  getAllSettings,
132
132
  getMaxVisibleItems
133
133
  };
134
- //# sourceMappingURL=chunk-HP5CIB66.js.map
134
+ //# sourceMappingURL=chunk-HD6Y77RO.js.map