openfox 2.0.92 → 2.0.94

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 (78) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/CHANGELOG.md +35 -0
  3. package/dist/{chat-handler-PC5BUJGA.js → chat-handler-Z7OCNJWO.js} +24 -24
  4. package/dist/{chunk-CND2YWIJ.js → chunk-27SDWNKL.js} +12 -4
  5. package/dist/{chunk-GH5PL3JW.js → chunk-2BCQDYNA.js} +3 -3
  6. package/dist/{chunk-VJEVCZZA.js → chunk-3WKAKOU4.js} +3 -3
  7. package/dist/{chunk-CFK34T26.js → chunk-4R7G5JB6.js} +1 -1
  8. package/dist/{chunk-3NGD6IVM.js → chunk-5N5JXT7R.js} +3 -3
  9. package/dist/{chunk-BJHPUMRX.js → chunk-62X2MPO6.js} +2 -2
  10. package/dist/{chunk-DVVRKNFS.js → chunk-DLCMSSG3.js} +32 -17
  11. package/dist/{chunk-LT4MPTGU.js → chunk-FVV7TZC2.js} +19 -4
  12. package/dist/{chunk-6OAJNCRY.js → chunk-GLF65XDS.js} +22 -1
  13. package/dist/{chunk-NO65CC2R.js → chunk-KNRE3DG4.js} +267 -48
  14. package/dist/{chunk-C56Z4OVW.js → chunk-KU3YUGAN.js} +2 -2
  15. package/dist/{chunk-AKZGFLMD.js → chunk-LSDJCJWA.js} +4 -4
  16. package/dist/{chunk-SXHGRPCI.js → chunk-MC3MCMAF.js} +4 -4
  17. package/dist/{chunk-NLJXZZTB.js → chunk-MRWR3SIT.js} +4 -2
  18. package/dist/{chunk-Q7CN4JOO.js → chunk-MUNVSHL5.js} +10 -10
  19. package/dist/{chunk-WWC3R3YL.js → chunk-NLN5LPQ4.js} +2 -2
  20. package/dist/chunk-O4NHL6IN.js +7 -0
  21. package/dist/{chunk-NGN3Q26A.js → chunk-OHBY2673.js} +2 -2
  22. package/dist/{chunk-Z24V2LEL.js → chunk-OQXG4MS4.js} +235 -92
  23. package/dist/{chunk-AXFPEGJI.js → chunk-P637C6X3.js} +24 -4
  24. package/dist/{chunk-6J5IZ2NL.js → chunk-TSHJW7OC.js} +37 -6
  25. package/dist/{chunk-54Q4TGG6.js → chunk-UEOEA6BB.js} +2 -2
  26. package/dist/{chunk-FSLCOA4R.js → chunk-V4QTGYXL.js} +6 -6
  27. package/dist/{chunk-WPACSSBS.js → chunk-VYN37NXW.js} +3 -3
  28. package/dist/{chunk-ST4NYXLH.js → chunk-WWFH5GAR.js} +2 -2
  29. package/dist/{chunk-7YBGCZSI.js → chunk-XNB3JWAR.js} +2 -2
  30. package/dist/{chunk-U7D72C4O.js → chunk-YJ5P33SE.js} +2 -2
  31. package/dist/{chunk-DH32AHTL.js → chunk-ZASSAZ73.js} +2 -2
  32. package/dist/{chunk-4IBFA5IF.js → chunk-ZYDPYFRH.js} +10 -8
  33. package/dist/cli/dev.js +1 -1
  34. package/dist/cli/index.js +1 -1
  35. package/dist/{client-RBXMHFX3.js → client-OBMJSTFN.js} +5 -5
  36. package/dist/{compactor-HW6GBRAG.js → compactor-RSEV7VYH.js} +10 -10
  37. package/dist/{dynamic-context-TDD3Q43F.js → dynamic-context-C3BWQ5GK.js} +9 -9
  38. package/dist/{events-ICX5KVET.js → events-SY5B4VED.js} +9 -7
  39. package/dist/{folding-L2L4OHX6.js → folding-O4OYOTPS.js} +7 -5
  40. package/dist/http-client-3MOFAPO6.js +11 -0
  41. package/dist/{inspect-proxy-NZ3VSMSC.js → inspect-proxy-GF6OI7MR.js} +4 -4
  42. package/dist/{manager-ZPQ6VSM5.js → manager-UP3XMLKX.js} +5 -5
  43. package/dist/{orchestrator-56LSHPPK.js → orchestrator-VSUL2C7G.js} +21 -21
  44. package/dist/package.json +1 -1
  45. package/dist/{path-security-XENIR7SX.js → path-security-E55IEQHD.js} +10 -10
  46. package/dist/{platform-UKZ2QC34.js → platform-7KXP3VVA.js} +4 -4
  47. package/dist/{processor-H6NFFRI2.js → processor-WP34IB3C.js} +21 -21
  48. package/dist/{project-creator-2WMZYQME.js → project-creator-SMWFMIU5.js} +3 -3
  49. package/dist/{projects-N6KVZGMS.js → projects-M5XKC7O6.js} +3 -3
  50. package/dist/{protocol-CaSHnORC.d.ts → protocol-C5ROb3nH.d.ts} +13 -4
  51. package/dist/{protocol-3GNSIGP4.js → protocol-YDNGGADL.js} +3 -3
  52. package/dist/provider/index.d.ts +4 -4
  53. package/dist/{provider-SYYZI2KX.js → provider-E5IP7RF7.js} +6 -6
  54. package/dist/{provider-manager-P3ZSA5QS.js → provider-manager-FVIFMUTO.js} +6 -6
  55. package/dist/{registry-ERUV33AP.js → registry-XBEHPY7C.js} +4 -4
  56. package/dist/{serve-OYOC5O4A.js → serve-NZZVFNMA.js} +29 -28
  57. package/dist/server/index.d.ts +39 -3
  58. package/dist/server/index.js +28 -27
  59. package/dist/server-DYJTLAZS.js +46 -0
  60. package/dist/{session-overrides-NPVYNHTM.js → session-overrides-QWD4V5KW.js} +6 -6
  61. package/dist/{sessions-7KCM5QH4.js → sessions-BT4PION7.js} +15 -7
  62. package/dist/{settings-2OVKFWR5.js → settings-2WVGUPYV.js} +3 -3
  63. package/dist/shared/index.d.ts +3 -3
  64. package/dist/shared/index.js +1 -1
  65. package/dist/{tools-DXBIHSMY.js → tools-YXOCUUKE.js} +19 -19
  66. package/dist/{types-Cw7L4Bze.d.ts → types-D-dEQIrh.d.ts} +1 -1
  67. package/dist/{types-CHCZiJvw.d.ts → types-DHxO1nqw.d.ts} +25 -2
  68. package/dist/{update-7ZIRWYSC.js → update-5HWU675H.js} +2 -2
  69. package/dist/web/assets/{index-mS37wyUs.css → index-BlV1FebL.css} +1 -1
  70. package/dist/web/assets/index-DxAR7yc9.js +317 -0
  71. package/dist/web/index.html +2 -2
  72. package/dist/web/sw.js +1 -1
  73. package/dist/{workspace-YLTMP3OX.js → workspace-IIRKILYL.js} +4 -4
  74. package/package.json +1 -1
  75. package/dist/chunk-5OGB3MCV.js +0 -7
  76. package/dist/http-client-E3CV6E5D.js +0 -11
  77. package/dist/server-H3525HD6.js +0 -45
  78. package/dist/web/assets/index-CrenD396.js +0 -316
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.94 - 2026-07-26
4
+
5
+ ### Features
6
+
7
+ - **WorkflowBar shows persistent workflow status** — a new bar above the chat input displays the current workflow name, active step, and an Exit button. Survives page refresh and server restarts thanks to DB-backed workflow state.
8
+
9
+ ### Bug Fixes
10
+
11
+ - **Workflow template parameters survive pause/resume** — params like `{{featureName}}` are now persisted across user-step pauses and correctly restored on continue.
12
+ - **Continue button reappears after page refresh** — the workflow waiting state is loaded from the server on session reload, so the button is always visible when a workflow is paused.
13
+ - **Launching a new workflow cancels the previous one** — if a workflow is already waiting, starting another automatically exits the old one first.
14
+ - **MCP server changes no longer bump session timestamps** — modifying MCP overrides in settings no longer pushes the session to the top of the list.
15
+
16
+ ## 2.0.93 - 2026-07-26
17
+
18
+ ### Features
19
+
20
+ - **Multi-step workflows with user pause points** — new `user` step type lets workflow authors insert natural hand-off points where execution pauses and waits for manual action before continuing; state survives page refreshes.
21
+ - **Workflow parameterization with named params** — define parameters with labels, descriptions, and positions on any workflow; values are collected via a modal or slash command and resolved in step prompts via `{{param_name}}`.
22
+ - **Slash autocomplete with inline parameter hints** — type `/` to fuzzy-match workflows and commands; select with Tab/Enter and fill in `param=?` hints that advance as you type values.
23
+ - **Command template parameters** — commands support `{{param_name}}` placeholders in their prompt; launching from the UI shows a parameter collection modal.
24
+ - **Clear logs button and visual markers in LogViewer** — clear dev server output with one click and insert divider markers to annotate log sections.
25
+
26
+ ### Enhancements
27
+
28
+ - **Automatic session naming on first workflow launch** — session titles are now generated from the workflow name and parameter values, producing contextual names like "PR #157: Fix bug".
29
+ - **Runner errors surfaced as visible chat messages** — workflow launch failures now show as error messages in the feed instead of silent logs.
30
+ - **OpenFox repo URL included in system prompt** — the agent can self-reference the repository when working on OpenFox itself.
31
+
32
+ ### Bug Fixes
33
+
34
+ - **Changelog no longer shown on first install** — the "What's New" modal now only appears on version upgrades, not when running the app for the first time.
35
+ - **Saving workflows and agents to project `.openfox/` directory now works** — the "Project" destination option in creation modals correctly saves to the repository-scoped location.
36
+ - **Double-submit guard prevents duplicate sends** — rapid clicks on Send no longer trigger multiple message deliveries.
37
+
3
38
  ## 2.0.92 - 2026-07-25
4
39
 
5
40
  ### Bug Fixes
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.94 - 2026-07-26
4
+
5
+ ### Features
6
+
7
+ - **WorkflowBar shows persistent workflow status** — a new bar above the chat input displays the current workflow name, active step, and an Exit button. Survives page refresh and server restarts thanks to DB-backed workflow state.
8
+
9
+ ### Bug Fixes
10
+
11
+ - **Workflow template parameters survive pause/resume** — params like `{{featureName}}` are now persisted across user-step pauses and correctly restored on continue.
12
+ - **Continue button reappears after page refresh** — the workflow waiting state is loaded from the server on session reload, so the button is always visible when a workflow is paused.
13
+ - **Launching a new workflow cancels the previous one** — if a workflow is already waiting, starting another automatically exits the old one first.
14
+ - **MCP server changes no longer bump session timestamps** — modifying MCP overrides in settings no longer pushes the session to the top of the list.
15
+
16
+ ## 2.0.93 - 2026-07-26
17
+
18
+ ### Features
19
+
20
+ - **Multi-step workflows with user pause points** — new `user` step type lets workflow authors insert natural hand-off points where execution pauses and waits for manual action before continuing; state survives page refreshes.
21
+ - **Workflow parameterization with named params** — define parameters with labels, descriptions, and positions on any workflow; values are collected via a modal or slash command and resolved in step prompts via `{{param_name}}`.
22
+ - **Slash autocomplete with inline parameter hints** — type `/` to fuzzy-match workflows and commands; select with Tab/Enter and fill in `param=?` hints that advance as you type values.
23
+ - **Command template parameters** — commands support `{{param_name}}` placeholders in their prompt; launching from the UI shows a parameter collection modal.
24
+ - **Clear logs button and visual markers in LogViewer** — clear dev server output with one click and insert divider markers to annotate log sections.
25
+
26
+ ### Enhancements
27
+
28
+ - **Automatic session naming on first workflow launch** — session titles are now generated from the workflow name and parameter values, producing contextual names like "PR #157: Fix bug".
29
+ - **Runner errors surfaced as visible chat messages** — workflow launch failures now show as error messages in the feed instead of silent logs.
30
+ - **OpenFox repo URL included in system prompt** — the agent can self-reference the repository when working on OpenFox itself.
31
+
32
+ ### Bug Fixes
33
+
34
+ - **Changelog no longer shown on first install** — the "What's New" modal now only appears on version upgrades, not when running the app for the first time.
35
+ - **Saving workflows and agents to project `.openfox/` directory now works** — the "Project" destination option in creation modals correctly saves to the repository-scoped location.
36
+ - **Double-submit guard prevents duplicate sends** — rapid clicks on Send no longer trigger multiple message deliveries.
37
+
3
38
  ## 2.0.92 - 2026-07-25
4
39
 
5
40
  ### Bug Fixes
@@ -1,47 +1,47 @@
1
+ import {
2
+ runChatTurn
3
+ } from "./chunk-MUNVSHL5.js";
1
4
  import {
2
5
  buildRunChatTurnParams,
3
6
  finalizeTurnCompletion,
4
7
  generateSessionNameForSession
5
- } from "./chunk-4IBFA5IF.js";
6
- import {
7
- runChatTurn
8
- } from "./chunk-Q7CN4JOO.js";
9
- import "./chunk-DVVRKNFS.js";
10
- import "./chunk-DH32AHTL.js";
11
- import "./chunk-U7D72C4O.js";
8
+ } from "./chunk-ZYDPYFRH.js";
9
+ import "./chunk-DLCMSSG3.js";
10
+ import "./chunk-ZASSAZ73.js";
11
+ import "./chunk-YJ5P33SE.js";
12
12
  import "./chunk-I72ACQ6R.js";
13
13
  import "./chunk-NWO6GRYE.js";
14
14
  import "./chunk-VKWVPQJ5.js";
15
- import "./chunk-BJHPUMRX.js";
15
+ import "./chunk-62X2MPO6.js";
16
16
  import "./chunk-J7GAZGZT.js";
17
- import "./chunk-FSLCOA4R.js";
18
- import "./chunk-SXHGRPCI.js";
19
- import "./chunk-3NGD6IVM.js";
20
- import "./chunk-WPACSSBS.js";
17
+ import "./chunk-V4QTGYXL.js";
18
+ import "./chunk-MC3MCMAF.js";
19
+ import "./chunk-5N5JXT7R.js";
20
+ import "./chunk-VYN37NXW.js";
21
21
  import {
22
22
  createChatMessageMessage,
23
23
  createPhaseChangedMessage,
24
24
  createSessionRunningMessage
25
- } from "./chunk-CND2YWIJ.js";
25
+ } from "./chunk-27SDWNKL.js";
26
26
  import "./chunk-EU3WWTFH.js";
27
- import "./chunk-ST4NYXLH.js";
27
+ import "./chunk-WWFH5GAR.js";
28
28
  import "./chunk-K2O7JTCX.js";
29
- import "./chunk-NLJXZZTB.js";
29
+ import "./chunk-MRWR3SIT.js";
30
30
  import {
31
31
  getEventStore
32
- } from "./chunk-LT4MPTGU.js";
33
- import "./chunk-WWC3R3YL.js";
34
- import "./chunk-AXFPEGJI.js";
35
- import "./chunk-6J5IZ2NL.js";
36
- import "./chunk-NGN3Q26A.js";
32
+ } from "./chunk-FVV7TZC2.js";
33
+ import "./chunk-NLN5LPQ4.js";
34
+ import "./chunk-P637C6X3.js";
35
+ import "./chunk-TSHJW7OC.js";
36
+ import "./chunk-OHBY2673.js";
37
37
  import "./chunk-J2GP3J3X.js";
38
38
  import "./chunk-V4IE7HJY.js";
39
39
  import "./chunk-YHEQTVFV.js";
40
40
  import "./chunk-RMXPVQP4.js";
41
- import "./chunk-54Q4TGG6.js";
42
- import "./chunk-6OAJNCRY.js";
41
+ import "./chunk-UEOEA6BB.js";
42
+ import "./chunk-GLF65XDS.js";
43
43
  import "./chunk-K44MW7JJ.js";
44
- import "./chunk-CFK34T26.js";
44
+ import "./chunk-4R7G5JB6.js";
45
45
  import "./chunk-OQTLFO4R.js";
46
46
  import "./chunk-CQGTEGKL.js";
47
47
  import "./chunk-5WRI5ZAA.js";
@@ -165,4 +165,4 @@ export {
165
165
  startChatSession,
166
166
  stopSessionExecution
167
167
  };
168
- //# sourceMappingURL=chat-handler-PC5BUJGA.js.map
168
+ //# sourceMappingURL=chat-handler-Z7OCNJWO.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createServerMessage,
3
3
  isClientMessage
4
- } from "./chunk-CFK34T26.js";
4
+ } from "./chunk-4R7G5JB6.js";
5
5
 
6
6
  // src/server/ws/protocol.ts
7
7
  function enrichMessagesWithToolResults(messages) {
@@ -43,7 +43,7 @@ function serializeServerMessage(message) {
43
43
  function createErrorMessage(code, message, correlationId) {
44
44
  return createServerMessage("error", { code, message }, correlationId);
45
45
  }
46
- function createSessionStateMessage(session, messages, pendingConfirmations = [], pendingQuestions, gitStatus, correlationId, hiddenCount) {
46
+ function createSessionStateMessage(session, messages, pendingConfirmations = [], pendingQuestions, gitStatus, correlationId, hiddenCount, activeWorkflowExecution) {
47
47
  const enrichedMessages = enrichMessagesWithToolResults(messages);
48
48
  return createServerMessage(
49
49
  "session.state",
@@ -53,7 +53,8 @@ function createSessionStateMessage(session, messages, pendingConfirmations = [],
53
53
  pendingConfirmations,
54
54
  ...pendingQuestions ? { pendingQuestions } : {},
55
55
  ...gitStatus ? { gitStatus } : {},
56
- ...hiddenCount !== void 0 ? { hiddenCount } : {}
56
+ ...hiddenCount !== void 0 ? { hiddenCount } : {},
57
+ ...activeWorkflowExecution !== void 0 && activeWorkflowExecution !== null ? { activeWorkflowExecution } : {}
57
58
  },
58
59
  correlationId
59
60
  );
@@ -240,6 +241,13 @@ function storedEventToServerMessage(event) {
240
241
  const data = event.data;
241
242
  return createServerMessage("task.completed", data);
242
243
  }
244
+ case "workflow.waiting": {
245
+ return null;
246
+ }
247
+ case "workflow.execution_changed": {
248
+ const data = event.data;
249
+ return createServerMessage("workflow.execution_changed", data);
250
+ }
243
251
  case "session.initialized": {
244
252
  return null;
245
253
  }
@@ -344,4 +352,4 @@ export {
344
352
  createQueueStateMessage,
345
353
  storedEventToServerMessage
346
354
  };
347
- //# sourceMappingURL=chunk-CND2YWIJ.js.map
355
+ //# sourceMappingURL=chunk-27SDWNKL.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLLMClient
3
- } from "./chunk-C56Z4OVW.js";
3
+ } from "./chunk-KU3YUGAN.js";
4
4
  import {
5
5
  getModelProfile
6
6
  } from "./chunk-V4IE7HJY.js";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-RMXPVQP4.js";
18
18
  import {
19
19
  proxyFetch
20
- } from "./chunk-7YBGCZSI.js";
20
+ } from "./chunk-XNB3JWAR.js";
21
21
  import {
22
22
  logger
23
23
  } from "./chunk-K44MW7JJ.js";
@@ -810,4 +810,4 @@ export {
810
810
  parseDefaultModelSelection,
811
811
  createProviderManager
812
812
  };
813
- //# sourceMappingURL=chunk-GH5PL3JW.js.map
813
+ //# sourceMappingURL=chunk-2BCQDYNA.js.map
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-K2O7JTCX.js";
4
4
  import {
5
5
  COMPACTION_PROMPT
6
- } from "./chunk-NLJXZZTB.js";
6
+ } from "./chunk-MRWR3SIT.js";
7
7
  import {
8
8
  getCurrentWindowMessageOptions
9
- } from "./chunk-LT4MPTGU.js";
9
+ } from "./chunk-FVV7TZC2.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-VJEVCZZA.js.map
39
+ //# sourceMappingURL=chunk-3WKAKOU4.js.map
@@ -26,4 +26,4 @@ export {
26
26
  isClientMessage,
27
27
  isServerMessage
28
28
  };
29
- //# sourceMappingURL=chunk-CFK34T26.js.map
29
+ //# sourceMappingURL=chunk-4R7G5JB6.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  updateSessionMcpDisabledServers
3
- } from "./chunk-6J5IZ2NL.js";
3
+ } from "./chunk-TSHJW7OC.js";
4
4
  import {
5
5
  getDatabase
6
- } from "./chunk-6OAJNCRY.js";
6
+ } from "./chunk-GLF65XDS.js";
7
7
 
8
8
  // src/server/mcp/session-overrides.ts
9
9
  var sessionOverrides = /* @__PURE__ */ new Map();
@@ -62,4 +62,4 @@ export {
62
62
  clearSessionOverrides,
63
63
  getAllSessionOverrides
64
64
  };
65
- //# sourceMappingURL=chunk-3NGD6IVM.js.map
65
+ //# sourceMappingURL=chunk-5N5JXT7R.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  getProjectByWorkdir,
6
6
  updateProject
7
- } from "./chunk-ST4NYXLH.js";
7
+ } from "./chunk-WWFH5GAR.js";
8
8
  import {
9
9
  logger
10
10
  } from "./chunk-K44MW7JJ.js";
@@ -324,4 +324,4 @@ export {
324
324
  deleteWorkspace,
325
325
  isGitRepository
326
326
  };
327
- //# sourceMappingURL=chunk-BJHPUMRX.js.map
327
+ //# sourceMappingURL=chunk-62X2MPO6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  startInspectProxy
3
- } from "./chunk-DH32AHTL.js";
3
+ } from "./chunk-ZASSAZ73.js";
4
4
  import {
5
5
  checkAborted,
6
6
  createProcess,
@@ -11,7 +11,7 @@ import {
11
11
  spawnShellProcess,
12
12
  startProcessCommand,
13
13
  stopProcess
14
- } from "./chunk-U7D72C4O.js";
14
+ } from "./chunk-YJ5P33SE.js";
15
15
  import {
16
16
  getMaxPerSession,
17
17
  getSessionProcessCount,
@@ -27,31 +27,31 @@ import {
27
27
  getGitBranch,
28
28
  isGitRepository,
29
29
  listWorkspaces
30
- } from "./chunk-BJHPUMRX.js";
30
+ } from "./chunk-62X2MPO6.js";
31
31
  import {
32
32
  findSkillById,
33
33
  getAllInstructions,
34
34
  getEnabledSkillMetadata,
35
35
  isSkillEnabled,
36
36
  loadAllSkills
37
- } from "./chunk-SXHGRPCI.js";
37
+ } from "./chunk-MC3MCMAF.js";
38
38
  import {
39
39
  getSessionDisabledServers
40
- } from "./chunk-3NGD6IVM.js";
40
+ } from "./chunk-5N5JXT7R.js";
41
41
  import {
42
42
  PathAccessDeniedError,
43
43
  extractAbsolutePathsFromCommand,
44
44
  extractSensitivePathsFromCommand,
45
45
  registerPathConfirmation,
46
46
  requestPathAccess
47
- } from "./chunk-WPACSSBS.js";
47
+ } from "./chunk-VYN37NXW.js";
48
48
  import {
49
49
  createChatDoneMessage,
50
50
  createChatMessageMessage,
51
51
  createChatMessageUpdatedMessage,
52
52
  createChatPathConfirmationMessage,
53
53
  createQueueStateMessage
54
- } from "./chunk-CND2YWIJ.js";
54
+ } from "./chunk-27SDWNKL.js";
55
55
  import {
56
56
  AskUserInterrupt,
57
57
  askUserTool
@@ -70,12 +70,12 @@ import {
70
70
  COMPACTION_PROMPT,
71
71
  buildBasePrompt,
72
72
  computeEffectiveTools
73
- } from "./chunk-NLJXZZTB.js";
73
+ } from "./chunk-MRWR3SIT.js";
74
74
  import {
75
75
  getCurrentContextWindowId,
76
76
  getCurrentWindowMessageOptions,
77
77
  getEventStore
78
- } from "./chunk-LT4MPTGU.js";
78
+ } from "./chunk-FVV7TZC2.js";
79
79
  import {
80
80
  buildContextMessagesFromEventHistory,
81
81
  foldContextState,
@@ -85,13 +85,13 @@ import {
85
85
  handleToolResult,
86
86
  reorderToolMessages,
87
87
  stripOrphanedToolCalls
88
- } from "./chunk-AXFPEGJI.js";
88
+ } from "./chunk-P637C6X3.js";
89
89
  import {
90
90
  findAgentById,
91
91
  getRuntimeConfig,
92
92
  getSubAgents,
93
93
  loadAllAgentsDefault
94
- } from "./chunk-NGN3Q26A.js";
94
+ } from "./chunk-OHBY2673.js";
95
95
  import {
96
96
  modelSupportsVision
97
97
  } from "./chunk-V4IE7HJY.js";
@@ -109,7 +109,7 @@ import {
109
109
  import {
110
110
  SETTINGS_KEYS,
111
111
  getSetting
112
- } from "./chunk-54Q4TGG6.js";
112
+ } from "./chunk-UEOEA6BB.js";
113
113
  import {
114
114
  logger
115
115
  } from "./chunk-K44MW7JJ.js";
@@ -133,7 +133,7 @@ async function requestUserConfirmation(context, toolLabel, desc) {
133
133
  if (context.dangerLevel === "dangerous") return Promise.resolve(true);
134
134
  if (toolLabel === "workspace" || toolLabel === "command") {
135
135
  try {
136
- const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-2OVKFWR5.js");
136
+ const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-2WVGUPYV.js");
137
137
  if (getSetting2(SETTINGS_KEYS2.CONFIRM_ON_WORKSPACE_ACTIONS) !== "true") {
138
138
  return Promise.resolve(true);
139
139
  }
@@ -1913,7 +1913,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
1913
1913
  sessionManager.setCurrentContextSize(sessionId, result.usage.promptTokens, config.subAgentMetadata?.subAgentId);
1914
1914
  if (!compacting) {
1915
1915
  const contextState2 = sessionManager.getContextState(sessionId);
1916
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-HW6GBRAG.js");
1916
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-RSEV7VYH.js");
1917
1917
  if (shouldCompact(
1918
1918
  contextState2.currentTokens,
1919
1919
  contextState2.maxTokens,
@@ -2852,7 +2852,7 @@ var callSubAgentTool = {
2852
2852
  };
2853
2853
  }
2854
2854
  try {
2855
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-DXBIHSMY.js");
2855
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-YXOCUUKE.js");
2856
2856
  const toolRegistry = getToolRegistryForAgent2(agentDef);
2857
2857
  const turnMetrics = new TurnMetrics();
2858
2858
  const result = await executeSubAgent({
@@ -3413,6 +3413,21 @@ ${recentLogs}`.trim();
3413
3413
  await this.stop(workdir);
3414
3414
  return this.start(workdir);
3415
3415
  }
3416
+ clearLogs(workdir) {
3417
+ const instance = this.getInstance(workdir);
3418
+ instance.logs = [];
3419
+ instance.totalLogBytes = 0;
3420
+ }
3421
+ insertMarker(workdir) {
3422
+ const instance = this.getInstance(workdir);
3423
+ const entry = {
3424
+ stream: "stdout",
3425
+ content: "\u2500".repeat(56),
3426
+ type: "marker"
3427
+ };
3428
+ instance.logs.push(entry);
3429
+ instance.totalLogBytes += entry.content.length;
3430
+ }
3416
3431
  getStatus(workdir) {
3417
3432
  const instance = this.getInstance(workdir);
3418
3433
  return {
@@ -3858,7 +3873,7 @@ var mcpConfigTool = createTool(
3858
3873
  mcpNotifyChanged?.(sessionId);
3859
3874
  }
3860
3875
  async function rebuildTools() {
3861
- const { setMcpTools: setMcpTools2 } = await import("./tools-DXBIHSMY.js");
3876
+ const { setMcpTools: setMcpTools2 } = await import("./tools-YXOCUUKE.js");
3862
3877
  const mcpTools = createMcpTools(mcpManagerForTools);
3863
3878
  setMcpTools2(mcpTools);
3864
3879
  }
@@ -4504,4 +4519,4 @@ export {
4504
4519
  getToolRegistryForAgent,
4505
4520
  createToolRegistry
4506
4521
  };
4507
- //# sourceMappingURL=chunk-DVVRKNFS.js.map
4522
+ //# sourceMappingURL=chunk-DLCMSSG3.js.map
@@ -5,13 +5,13 @@ import {
5
5
  foldContextState,
6
6
  foldSessionState,
7
7
  spreadOptionalMessageFields
8
- } from "./chunk-AXFPEGJI.js";
8
+ } from "./chunk-P637C6X3.js";
9
9
  import {
10
10
  updateSessionMessageCount
11
- } from "./chunk-6J5IZ2NL.js";
11
+ } from "./chunk-TSHJW7OC.js";
12
12
  import {
13
13
  getRuntimeConfig
14
- } from "./chunk-NGN3Q26A.js";
14
+ } from "./chunk-OHBY2673.js";
15
15
  import {
16
16
  logger
17
17
  } from "./chunk-K44MW7JJ.js";
@@ -948,6 +948,20 @@ function emitRunningChanged(sessionId, isRunning) {
948
948
  data: { isRunning }
949
949
  });
950
950
  }
951
+ function emitWorkflowExecutionChanged(sessionId, executionId, workflowId, workflowName, workflowColor, status, currentStepName) {
952
+ const eventStore = getEventStore();
953
+ eventStore.append(sessionId, {
954
+ type: "workflow.execution_changed",
955
+ data: {
956
+ executionId,
957
+ workflowId,
958
+ workflowName,
959
+ ...workflowColor ? { workflowColor } : {},
960
+ status,
961
+ ...currentStepName ? { currentStepName } : {}
962
+ }
963
+ });
964
+ }
951
965
  function emitCriteriaSet(sessionId, criteria) {
952
966
  const eventStore = getEventStore();
953
967
  eventStore.append(sessionId, {
@@ -1145,6 +1159,7 @@ export {
1145
1159
  emitModeChanged,
1146
1160
  emitPhaseChanged,
1147
1161
  emitRunningChanged,
1162
+ emitWorkflowExecutionChanged,
1148
1163
  emitCriteriaSet,
1149
1164
  emitCriterionUpdated,
1150
1165
  emitTodosUpdated,
@@ -1159,4 +1174,4 @@ export {
1159
1174
  truncateSessionMessages,
1160
1175
  getRecentUserPromptsForSession
1161
1176
  };
1162
- //# sourceMappingURL=chunk-LT4MPTGU.js.map
1177
+ //# sourceMappingURL=chunk-FVV7TZC2.js.map
@@ -197,6 +197,27 @@ function runMigrations(db2) {
197
197
  logger.info("Migrating sessions table: adding branch column");
198
198
  db2.exec(`ALTER TABLE sessions ADD COLUMN branch TEXT`);
199
199
  }
200
+ db2.exec(`
201
+ CREATE TABLE IF NOT EXISTS workflow_executions (
202
+ id TEXT PRIMARY KEY,
203
+ session_id TEXT NOT NULL,
204
+ workflow_id TEXT NOT NULL,
205
+ workflow_name TEXT NOT NULL,
206
+ workflow_color TEXT,
207
+ status TEXT NOT NULL DEFAULT 'running',
208
+ current_step_id TEXT,
209
+ current_step_name TEXT,
210
+ step_output TEXT,
211
+ params TEXT,
212
+ created_at INTEGER NOT NULL,
213
+ updated_at INTEGER NOT NULL,
214
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
215
+ )
216
+ `);
217
+ db2.exec(`
218
+ CREATE INDEX IF NOT EXISTS idx_workflow_executions_session
219
+ ON workflow_executions(session_id)
220
+ `);
200
221
  logger.info("Database migrations completed");
201
222
  }
202
223
 
@@ -204,4 +225,4 @@ export {
204
225
  initDatabase,
205
226
  getDatabase
206
227
  };
207
- //# sourceMappingURL=chunk-6OAJNCRY.js.map
228
+ //# sourceMappingURL=chunk-GLF65XDS.js.map