openfox 2.0.113 → 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 (99) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/CHANGELOG.md +43 -0
  3. package/dist/agent-defaults/builder.agent.md +1 -0
  4. package/dist/agent-defaults/planner.agent.md +1 -0
  5. package/dist/{backend-P3GHHLHJ.js → backend-LVYHLGQJ.js} +2 -2
  6. package/dist/{chat-handler-PEK5JDHO.js → chat-handler-5SP265CR.js} +32 -26
  7. package/dist/{chunk-HKD4IMOE.js → chunk-27NABDXB.js} +2 -2
  8. package/dist/{chunk-FF2EKUQO.js → chunk-2FCLCUVR.js} +6 -6
  9. package/dist/{chunk-ONONXV3N.js → chunk-37QLXLML.js} +4 -4
  10. package/dist/{chunk-YB6WYVNY.js → chunk-3KBRMBTP.js} +2 -2
  11. package/dist/{chunk-YGPPFVLJ.js → chunk-3NPLERPQ.js} +17 -17
  12. package/dist/{chunk-XQR76MQ5.js → chunk-3PG65AXG.js} +18 -3
  13. package/dist/chunk-3QQAIUZI.js +957 -0
  14. package/dist/{chunk-PWXBIUEY.js → chunk-5PT4UMRR.js} +89 -1
  15. package/dist/chunk-5V3BF67X.js +7 -0
  16. package/dist/{chunk-6UPBZ2ZR.js → chunk-6KPJLELC.js} +4 -4
  17. package/dist/chunk-6RGACY4E.js +1081 -0
  18. package/dist/{chunk-BNFGDTEU.js → chunk-AESOGRFK.js} +2 -2
  19. package/dist/{chunk-YHEQTVFV.js → chunk-AZHWLLPP.js} +1 -1
  20. package/dist/{chunk-TCGWZBTS.js → chunk-BVVCRIVM.js} +4 -4
  21. package/dist/{chunk-EMI3YYLP.js → chunk-BWVO5WFK.js} +4 -4
  22. package/dist/{chunk-CP44U7BT.js → chunk-ERNWAKUB.js} +7 -7
  23. package/dist/{chunk-WWTYWLDM.js → chunk-HD6Y77RO.js} +2 -2
  24. package/dist/{chunk-4NMGX5F2.js → chunk-I7FY2LTR.js} +2 -2
  25. package/dist/{chunk-5VYSKVZT.js → chunk-JFK4GKQD.js} +321 -54
  26. package/dist/{chunk-43M7QZMX.js → chunk-JGWHRYWG.js} +4 -4
  27. package/dist/{chunk-Y64PEWKP.js → chunk-JLAR2CMV.js} +2 -2
  28. package/dist/{chunk-BYSUSSSC.js → chunk-LNNBLB6G.js} +48 -151
  29. package/dist/{chunk-V4664YKR.js → chunk-LTYL6ZGH.js} +2 -2
  30. package/dist/{chunk-R2MTWC7C.js → chunk-M6X6AIEG.js} +6 -4
  31. package/dist/{chunk-VGRVPYZ5.js → chunk-O6DU226D.js} +2 -2
  32. package/dist/{chunk-TEQEDOWI.js → chunk-OCBBAEMT.js} +288 -316
  33. package/dist/{chunk-SNLLOXCM.js → chunk-OCSTEGK7.js} +3 -3
  34. package/dist/{chunk-HGOTZWON.js → chunk-OKVHMKE2.js} +60 -1064
  35. package/dist/chunk-OSXPQSLW.js +128 -0
  36. package/dist/{chunk-O2YSYW2F.js → chunk-TFF5T3K3.js} +10 -10
  37. package/dist/{chunk-3R43CMLS.js → chunk-TGLVWAFC.js} +11 -11
  38. package/dist/{chunk-L737Y63F.js → chunk-TOKQ2UVG.js} +2 -2
  39. package/dist/{chunk-AZFZE36I.js → chunk-VWEATA7R.js} +18 -8
  40. package/dist/{chunk-BKCW3JLL.js → chunk-X25Q6RAV.js} +1 -1
  41. package/dist/{chunk-JR54MDZI.js → chunk-YX3OQBNX.js} +3 -3
  42. package/dist/{chunk-EC5T5A6O.js → chunk-ZTOG6LJD.js} +3 -3
  43. package/dist/cli/dev.js +1 -1
  44. package/dist/cli/index.js +1 -1
  45. package/dist/client-KE7EDI2D.js +16 -0
  46. package/dist/{client-pure-VFZIIK4S.js → client-pure-66Z6FWS6.js} +2 -2
  47. package/dist/command-defaults/mark-done.command.md +14 -0
  48. package/dist/compactor-SKVC2VNL.js +32 -0
  49. package/dist/{dynamic-context-F2XTQJR5.js → dynamic-context-QNB4ELLP.js} +10 -9
  50. package/dist/{events-224IO5NJ.js → events-5PLO4QJU.js} +9 -7
  51. package/dist/{folding-YTTTVS56.js → folding-CJWYFUKD.js} +7 -5
  52. package/dist/http-client-KLODRQC2.js +11 -0
  53. package/dist/{inspect-proxy-B7LGGTM7.js → inspect-proxy-K6QKEYDT.js} +4 -4
  54. package/dist/launch-EOXVWLOP.js +52 -0
  55. package/dist/{manager-4QGXI6WZ.js → manager-LZ3JQ443.js} +5 -5
  56. package/dist/{model-overrides-OY2YKUNV.js → model-overrides-5UVW3KTE.js} +4 -4
  57. package/dist/orchestrator-ED3KFPXO.js +63 -0
  58. package/dist/package.json +3 -3
  59. package/dist/{path-security-PFMZY7IA.js → path-security-B6EZC63L.js} +13 -11
  60. package/dist/{platform-QNGCKX4L.js → platform-6RPPBHKH.js} +4 -4
  61. package/dist/{processor-NYPJ5PFA.js → processor-226ZOTRI.js} +31 -25
  62. package/dist/{project-creator-AWP2JUFS.js → project-creator-VBFE35NI.js} +3 -3
  63. package/dist/{projects-C4353IQK.js → projects-AXHZOBR2.js} +5 -3
  64. package/dist/{protocol-CBT1d98i.d.ts → protocol-JdxRpPxM.d.ts} +21 -3
  65. package/dist/{protocol-LZZ7C4VQ.js → protocol-RKSWKNXI.js} +3 -3
  66. package/dist/provider/index.d.ts +4 -4
  67. package/dist/{provider-PIRPN2CC.js → provider-DL4ZWQY7.js} +8 -8
  68. package/dist/{provider-manager-GNEPR6UN.js → provider-manager-6CLRMGDE.js} +8 -8
  69. package/dist/{registry-VCKDSVKA.js → registry-5XI5NDBF.js} +6 -4
  70. package/dist/{serve-6DRHQLCG.js → serve-DARV4NJG.js} +36 -33
  71. package/dist/server/index.d.ts +13 -6
  72. package/dist/server/index.js +35 -32
  73. package/dist/server-LQJ7MBDS.js +55 -0
  74. package/dist/service-4JKTGPRG.js +25 -0
  75. package/dist/{session-overrides-RNKV35MU.js → session-overrides-AZKV6BRD.js} +8 -6
  76. package/dist/{sessions-D5CEPQGU.js → sessions-752IZIIK.js} +7 -5
  77. package/dist/{settings-BNRNX6IW.js → settings-2AHDKCD7.js} +3 -3
  78. package/dist/shared/index.d.ts +3 -3
  79. package/dist/shared/index.js +1 -1
  80. package/dist/skill-defaults/workflows/SKILL.md +24 -6
  81. package/dist/tasks-XJXHU623.js +217 -0
  82. package/dist/{tools-2B363F7L.js → tools-QYYNFMGU.js} +31 -23
  83. package/dist/{types-cVfqOj6M.d.ts → types-CIVhQMvD.d.ts} +1 -1
  84. package/dist/{types-BAxh20ZL.d.ts → types-Df7NM9b5.d.ts} +76 -1
  85. package/dist/{update-IQMRYN7J.js → update-2REP2WB6.js} +2 -2
  86. package/dist/web/assets/{index-CjWC6EQ4.css → index-BmILAZrT.css} +1 -1
  87. package/dist/web/assets/index-M7ToECa4.js +324 -0
  88. package/dist/web/index.html +2 -2
  89. package/dist/web/sw.js +1 -1
  90. package/dist/workflow-defaults/default.workflow.json +5 -3
  91. package/dist/{workspace-YUNHV4WS.js → workspace-RMZVTFJD.js} +4 -4
  92. package/package.json +3 -3
  93. package/dist/chunk-B2PHPBFU.js +0 -7
  94. package/dist/client-3LJGD6KY.js +0 -16
  95. package/dist/compactor-ZBNKANHV.js +0 -30
  96. package/dist/http-client-YC3UA5OZ.js +0 -11
  97. package/dist/orchestrator-JKBY7B3P.js +0 -57
  98. package/dist/server-HUHFJW7U.js +0 -48
  99. package/dist/web/assets/index-DBUtUSHK.js +0 -323
package/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
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
+
24
+ ## 2.0.114 - 2026-08-10
25
+
26
+ ### Features
27
+
28
+ - **Project-scoped task board**
29
+ - Every idea, bug, or chore gets a home — a clean To Do / In Progress / Done board right inside your project, with search and drag-and-drop
30
+ - Run tasks in parallel or leave them queued — the next one starts automatically when a slot frees, and you get a nudge linking to its session
31
+ - One click turns a card into a focused working session — the agent already knows the task and what's expected
32
+ - Define your own "definition of done" — a task needs the required evidence before it can move to Done
33
+ - Agents work the board just like you — picking up, working on, and completing tasks, with every move visible and reversible
34
+ - A fresh chat offers your next open task — start it with one click from the empty feed
35
+ - Creating a task feels like chatting — same composer, slash commands, attachments, and agent/model selection
36
+
37
+ ### Enhancements
38
+
39
+ - **Workflow sub-group slices can escape** — tagged transitions let a slice loop across groups (verify → build → verify → done) while untagged edges stay clamped
40
+
41
+ ### Bug Fixes
42
+
43
+ - **Wheel-up scrolling reliably stops auto-scroll** — scrolling up while streaming detaches the feed; deliberate scrolls down still re-attach
44
+ - **Dev-server inspect proxy survives high ports** — the port scan is clamped below 65536 so proxies above port 64535 start cleanly
45
+
3
46
  ## 2.0.113 - 2026-08-07
4
47
 
5
48
  ### Features
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
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
+
24
+ ## 2.0.114 - 2026-08-10
25
+
26
+ ### Features
27
+
28
+ - **Project-scoped task board**
29
+ - Every idea, bug, or chore gets a home — a clean To Do / In Progress / Done board right inside your project, with search and drag-and-drop
30
+ - Run tasks in parallel or leave them queued — the next one starts automatically when a slot frees, and you get a nudge linking to its session
31
+ - One click turns a card into a focused working session — the agent already knows the task and what's expected
32
+ - Define your own "definition of done" — a task needs the required evidence before it can move to Done
33
+ - Agents work the board just like you — picking up, working on, and completing tasks, with every move visible and reversible
34
+ - A fresh chat offers your next open task — start it with one click from the empty feed
35
+ - Creating a task feels like chatting — same composer, slash commands, attachments, and agent/model selection
36
+
37
+ ### Enhancements
38
+
39
+ - **Workflow sub-group slices can escape** — tagged transitions let a slice loop across groups (verify → build → verify → done) while untagged edges stay clamped
40
+
41
+ ### Bug Fixes
42
+
43
+ - **Wheel-up scrolling reliably stops auto-scroll** — scrolling up while streaming detaches the feed; deliberate scrolls down still re-attach
44
+ - **Dev-server inspect proxy survives high ports** — the port scan is clamped below 65536 so proxies above port 64535 start cleanly
45
+
3
46
  ## 2.0.113 - 2026-08-07
4
47
 
5
48
  ### Features
@@ -19,6 +19,7 @@ allowedTools:
19
19
  - background_process
20
20
  - mcp_config
21
21
  - workspace
22
+ - project_tasks
22
23
  ---
23
24
 
24
25
  # Build Mode
@@ -17,6 +17,7 @@ allowedTools:
17
17
  - mcp_config
18
18
  - dev_server
19
19
  - workspace
20
+ - project_tasks
20
21
  ---
21
22
 
22
23
  # Plan Mode
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getBackendCapabilities,
3
3
  getBackendDisplayName
4
- } from "./chunk-YHEQTVFV.js";
4
+ } from "./chunk-AZHWLLPP.js";
5
5
  import "./chunk-5WRI5ZAA.js";
6
6
  export {
7
7
  getBackendCapabilities,
8
8
  getBackendDisplayName
9
9
  };
10
- //# sourceMappingURL=backend-P3GHHLHJ.js.map
10
+ //# sourceMappingURL=backend-LVYHLGQJ.js.map
@@ -2,48 +2,54 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-3R43CMLS.js";
5
+ } from "./chunk-TGLVWAFC.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-YGPPFVLJ.js";
9
- import "./chunk-O2YSYW2F.js";
10
- import "./chunk-5VYSKVZT.js";
11
- import "./chunk-FF2EKUQO.js";
12
- import "./chunk-JR54MDZI.js";
13
- import "./chunk-HKD4IMOE.js";
14
- import "./chunk-R2MTWC7C.js";
15
- import "./chunk-EC5T5A6O.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-VGRVPYZ5.js";
19
+ import "./chunk-O6DU226D.js";
20
20
  import "./chunk-J7GAZGZT.js";
21
- import "./chunk-SNLLOXCM.js";
22
- import "./chunk-6UPBZ2ZR.js";
21
+ import "./chunk-6RGACY4E.js";
22
+ import "./chunk-OCSTEGK7.js";
23
+ import "./chunk-6KPJLELC.js";
23
24
  import {
24
25
  getEventStore
25
- } from "./chunk-CP44U7BT.js";
26
+ } from "./chunk-ERNWAKUB.js";
27
+ import "./chunk-VWEATA7R.js";
26
28
  import {
27
29
  createChatMessageMessage,
28
30
  createPhaseChangedMessage,
29
31
  createSessionRunningMessage
30
- } from "./chunk-4NMGX5F2.js";
31
- import "./chunk-BNFGDTEU.js";
32
+ } from "./chunk-I7FY2LTR.js";
33
+ import "./chunk-AESOGRFK.js";
32
34
  import "./chunk-JURM3RPZ.js";
33
- import "./chunk-Y64PEWKP.js";
34
- import "./chunk-XQR76MQ5.js";
35
- import "./chunk-YB6WYVNY.js";
35
+ import "./chunk-JLAR2CMV.js";
36
+ import "./chunk-3KBRMBTP.js";
36
37
  import "./chunk-LCLH6ZUL.js";
37
- import "./chunk-AZFZE36I.js";
38
- import "./chunk-BYSUSSSC.js";
38
+ import "./chunk-LNNBLB6G.js";
39
+ import "./chunk-OSXPQSLW.js";
40
+ import "./chunk-3PG65AXG.js";
41
+ import "./chunk-BVVCRIVM.js";
39
42
  import "./chunk-J2GP3J3X.js";
43
+ import "./chunk-JGWHRYWG.js";
40
44
  import "./chunk-V4IE7HJY.js";
41
- import "./chunk-YHEQTVFV.js";
42
- import "./chunk-L737Y63F.js";
43
- import "./chunk-WWTYWLDM.js";
44
- import "./chunk-PWXBIUEY.js";
45
+ import "./chunk-AZHWLLPP.js";
46
+ import "./chunk-HNCM3D7Y.js";
47
+ import "./chunk-TOKQ2UVG.js";
48
+ import "./chunk-LTYL6ZGH.js";
49
+ import "./chunk-HD6Y77RO.js";
50
+ import "./chunk-5PT4UMRR.js";
45
51
  import "./chunk-K44MW7JJ.js";
46
- import "./chunk-BKCW3JLL.js";
52
+ import "./chunk-X25Q6RAV.js";
47
53
  import "./chunk-KSXCOHHW.js";
48
54
  import "./chunk-CQGTEGKL.js";
49
55
  import "./chunk-5WRI5ZAA.js";
@@ -167,4 +173,4 @@ export {
167
173
  startChatSession,
168
174
  stopSessionExecution
169
175
  };
170
- //# sourceMappingURL=chat-handler-PEK5JDHO.js.map
176
+ //# sourceMappingURL=chat-handler-5SP265CR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getPlatformShell
3
- } from "./chunk-BNFGDTEU.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-HKD4IMOE.js.map
249
+ //# sourceMappingURL=chunk-27NABDXB.js.map
@@ -1,17 +1,17 @@
1
- import {
2
- getProject
3
- } from "./chunk-XQR76MQ5.js";
4
1
  import {
5
2
  deleteItemFromDir,
6
3
  loadItemsFromDir,
7
4
  pathExists
8
- } from "./chunk-BYSUSSSC.js";
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-WWTYWLDM.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-FF2EKUQO.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-PIRPN2CC.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-IQMRYN7J.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-6DRHQLCG.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-ONONXV3N.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-BYSUSSSC.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-YB6WYVNY.js.map
968
+ //# sourceMappingURL=chunk-3KBRMBTP.js.map
@@ -1,45 +1,45 @@
1
- import {
2
- buildCachedPrompt,
3
- computeDynamicContextHash,
4
- getToolFingerprint
5
- } from "./chunk-O2YSYW2F.js";
6
1
  import {
7
2
  createAssemblyResult,
8
3
  getConversationMessages,
9
4
  getToolRegistryForAgent,
10
5
  processEventsForConversation,
11
6
  runTopLevelAgentLoop
12
- } from "./chunk-5VYSKVZT.js";
7
+ } from "./chunk-JFK4GKQD.js";
8
+ import {
9
+ buildCachedPrompt,
10
+ computeDynamicContextHash,
11
+ getToolFingerprint
12
+ } from "./chunk-TFF5T3K3.js";
13
13
  import {
14
14
  getAllInstructions,
15
15
  getEnabledSkillMetadata
16
- } from "./chunk-FF2EKUQO.js";
16
+ } from "./chunk-2FCLCUVR.js";
17
17
  import {
18
18
  TurnMetrics,
19
19
  createChatDoneEvent,
20
20
  createMessageStartEvent
21
- } from "./chunk-JR54MDZI.js";
21
+ } from "./chunk-YX3OQBNX.js";
22
22
  import {
23
23
  buildAgentReminder,
24
24
  buildAgentSmallReminder
25
- } from "./chunk-HKD4IMOE.js";
25
+ } from "./chunk-27NABDXB.js";
26
26
  import {
27
27
  PathAccessDeniedError
28
- } from "./chunk-6UPBZ2ZR.js";
28
+ } from "./chunk-6KPJLELC.js";
29
29
  import {
30
30
  getCurrentContextWindowId,
31
31
  getCurrentWindowMessageOptions,
32
32
  getEventStore
33
- } from "./chunk-CP44U7BT.js";
33
+ } from "./chunk-ERNWAKUB.js";
34
34
  import {
35
35
  buildSnapshotFromSessionState
36
- } from "./chunk-YB6WYVNY.js";
36
+ } from "./chunk-3KBRMBTP.js";
37
37
  import {
38
38
  findAgentById,
39
39
  getRuntimeConfig,
40
40
  loadAllAgentsDefault,
41
41
  resolveDefaultAgentId
42
- } from "./chunk-BYSUSSSC.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-BNRNX6IW.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-YGPPFVLJ.js.map
322
+ //# sourceMappingURL=chunk-3NPLERPQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-PWXBIUEY.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-XQR76MQ5.js.map
147
+ //# sourceMappingURL=chunk-3PG65AXG.js.map