openfox 2.0.92 → 2.0.93
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.
- package/CHANGELOG.md +22 -0
- package/dist/CHANGELOG.md +22 -0
- package/dist/{chat-handler-PC5BUJGA.js → chat-handler-MSQFJH7S.js} +13 -13
- package/dist/{chunk-AXFPEGJI.js → chunk-3QQKKZMF.js} +23 -3
- package/dist/{chunk-Z24V2LEL.js → chunk-AA4PXMSI.js} +63 -38
- package/dist/{chunk-WPACSSBS.js → chunk-AQ4KCGXL.js} +3 -3
- package/dist/{chunk-VJEVCZZA.js → chunk-ESJNJ5B6.js} +3 -3
- package/dist/{chunk-DVVRKNFS.js → chunk-FK6R2YTQ.js} +24 -9
- package/dist/{chunk-NO65CC2R.js → chunk-GAIAJDPH.js} +152 -44
- package/dist/{chunk-CND2YWIJ.js → chunk-IAAHDCJN.js} +9 -4
- package/dist/chunk-LVZ6VQ3K.js +7 -0
- package/dist/{chunk-4IBFA5IF.js → chunk-NV63HYNR.js} +6 -4
- package/dist/{chunk-FSLCOA4R.js → chunk-NW2KP7PE.js} +4 -4
- package/dist/{chunk-LT4MPTGU.js → chunk-PYJ2SRVC.js} +2 -2
- package/dist/{chunk-Q7CN4JOO.js → chunk-RJQDC2OO.js} +7 -7
- package/dist/{chunk-CFK34T26.js → chunk-TQATAKVV.js} +1 -1
- package/dist/{chunk-NLJXZZTB.js → chunk-U2RSFH6A.js} +3 -1
- package/dist/{chunk-AKZGFLMD.js → chunk-YM267G4F.js} +3 -3
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{compactor-HW6GBRAG.js → compactor-R7GGPBPR.js} +5 -5
- package/dist/{dynamic-context-TDD3Q43F.js → dynamic-context-4UPNVL3N.js} +3 -3
- package/dist/{events-ICX5KVET.js → events-D5AFN2CW.js} +3 -3
- package/dist/{folding-L2L4OHX6.js → folding-BO6Z6HMP.js} +4 -2
- package/dist/{orchestrator-56LSHPPK.js → orchestrator-YQI2D4LW.js} +10 -10
- package/dist/package.json +1 -1
- package/dist/{path-security-XENIR7SX.js → path-security-DP75YZK5.js} +6 -6
- package/dist/{processor-H6NFFRI2.js → processor-LVQWRG6M.js} +10 -10
- package/dist/{protocol-3GNSIGP4.js → protocol-4ZDERZNC.js} +3 -3
- package/dist/{protocol-CaSHnORC.d.ts → protocol-8BzyapcK.d.ts} +11 -3
- package/dist/provider/index.d.ts +4 -4
- package/dist/{serve-OYOC5O4A.js → serve-HEHWSYMX.js} +15 -14
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +14 -13
- package/dist/{server-H3525HD6.js → server-AAIYC4BH.js} +13 -12
- package/dist/shared/index.d.ts +3 -3
- package/dist/shared/index.js +1 -1
- package/dist/{tools-DXBIHSMY.js → tools-HDD7RHEG.js} +8 -8
- package/dist/{types-CHCZiJvw.d.ts → types-Ci7Tdpq3.d.ts} +9 -2
- package/dist/{types-Cw7L4Bze.d.ts → types-_OEK96iM.d.ts} +1 -1
- package/dist/{update-7ZIRWYSC.js → update-JARYMNGH.js} +2 -2
- package/dist/web/assets/{index-mS37wyUs.css → index-B3lfsL1_.css} +1 -1
- package/dist/web/assets/index-DxTIqntH.js +317 -0
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-5OGB3MCV.js +0 -7
- package/dist/web/assets/index-CrenD396.js +0 -316
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.93 - 2026-07-26
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **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.
|
|
8
|
+
- **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}}`.
|
|
9
|
+
- **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.
|
|
10
|
+
- **Command template parameters** — commands support `{{param_name}}` placeholders in their prompt; launching from the UI shows a parameter collection modal.
|
|
11
|
+
- **Clear logs button and visual markers in LogViewer** — clear dev server output with one click and insert divider markers to annotate log sections.
|
|
12
|
+
|
|
13
|
+
### Enhancements
|
|
14
|
+
|
|
15
|
+
- **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".
|
|
16
|
+
- **Runner errors surfaced as visible chat messages** — workflow launch failures now show as error messages in the feed instead of silent logs.
|
|
17
|
+
- **OpenFox repo URL included in system prompt** — the agent can self-reference the repository when working on OpenFox itself.
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- **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.
|
|
22
|
+
- **Saving workflows and agents to project `.openfox/` directory now works** — the "Project" destination option in creation modals correctly saves to the repository-scoped location.
|
|
23
|
+
- **Double-submit guard prevents duplicate sends** — rapid clicks on Send no longer trigger multiple message deliveries.
|
|
24
|
+
|
|
3
25
|
## 2.0.92 - 2026-07-25
|
|
4
26
|
|
|
5
27
|
### Bug Fixes
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.93 - 2026-07-26
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **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.
|
|
8
|
+
- **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}}`.
|
|
9
|
+
- **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.
|
|
10
|
+
- **Command template parameters** — commands support `{{param_name}}` placeholders in their prompt; launching from the UI shows a parameter collection modal.
|
|
11
|
+
- **Clear logs button and visual markers in LogViewer** — clear dev server output with one click and insert divider markers to annotate log sections.
|
|
12
|
+
|
|
13
|
+
### Enhancements
|
|
14
|
+
|
|
15
|
+
- **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".
|
|
16
|
+
- **Runner errors surfaced as visible chat messages** — workflow launch failures now show as error messages in the feed instead of silent logs.
|
|
17
|
+
- **OpenFox repo URL included in system prompt** — the agent can self-reference the repository when working on OpenFox itself.
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- **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.
|
|
22
|
+
- **Saving workflows and agents to project `.openfox/` directory now works** — the "Project" destination option in creation modals correctly saves to the repository-scoped location.
|
|
23
|
+
- **Double-submit guard prevents duplicate sends** — rapid clicks on Send no longer trigger multiple message deliveries.
|
|
24
|
+
|
|
3
25
|
## 2.0.92 - 2026-07-25
|
|
4
26
|
|
|
5
27
|
### Bug Fixes
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runChatTurn
|
|
3
|
+
} from "./chunk-RJQDC2OO.js";
|
|
1
4
|
import {
|
|
2
5
|
buildRunChatTurnParams,
|
|
3
6
|
finalizeTurnCompletion,
|
|
4
7
|
generateSessionNameForSession
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import
|
|
7
|
-
runChatTurn
|
|
8
|
-
} from "./chunk-Q7CN4JOO.js";
|
|
9
|
-
import "./chunk-DVVRKNFS.js";
|
|
8
|
+
} from "./chunk-NV63HYNR.js";
|
|
9
|
+
import "./chunk-FK6R2YTQ.js";
|
|
10
10
|
import "./chunk-DH32AHTL.js";
|
|
11
11
|
import "./chunk-U7D72C4O.js";
|
|
12
12
|
import "./chunk-I72ACQ6R.js";
|
|
@@ -14,24 +14,24 @@ import "./chunk-NWO6GRYE.js";
|
|
|
14
14
|
import "./chunk-VKWVPQJ5.js";
|
|
15
15
|
import "./chunk-BJHPUMRX.js";
|
|
16
16
|
import "./chunk-J7GAZGZT.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-NW2KP7PE.js";
|
|
18
18
|
import "./chunk-SXHGRPCI.js";
|
|
19
19
|
import "./chunk-3NGD6IVM.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-AQ4KCGXL.js";
|
|
21
21
|
import {
|
|
22
22
|
createChatMessageMessage,
|
|
23
23
|
createPhaseChangedMessage,
|
|
24
24
|
createSessionRunningMessage
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-IAAHDCJN.js";
|
|
26
26
|
import "./chunk-EU3WWTFH.js";
|
|
27
27
|
import "./chunk-ST4NYXLH.js";
|
|
28
28
|
import "./chunk-K2O7JTCX.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-U2RSFH6A.js";
|
|
30
30
|
import {
|
|
31
31
|
getEventStore
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-PYJ2SRVC.js";
|
|
33
33
|
import "./chunk-WWC3R3YL.js";
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-3QQKKZMF.js";
|
|
35
35
|
import "./chunk-6J5IZ2NL.js";
|
|
36
36
|
import "./chunk-NGN3Q26A.js";
|
|
37
37
|
import "./chunk-J2GP3J3X.js";
|
|
@@ -41,7 +41,7 @@ import "./chunk-RMXPVQP4.js";
|
|
|
41
41
|
import "./chunk-54Q4TGG6.js";
|
|
42
42
|
import "./chunk-6OAJNCRY.js";
|
|
43
43
|
import "./chunk-K44MW7JJ.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-TQATAKVV.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-
|
|
168
|
+
//# sourceMappingURL=chat-handler-MSQFJH7S.js.map
|
|
@@ -807,10 +807,27 @@ function foldSessionState(events, initialWindowId, maxTokens, initialMessages, d
|
|
|
807
807
|
...formatRetries.length > 0 && { formatRetries },
|
|
808
808
|
...pendingUserInput !== void 0 && { pendingUserInput },
|
|
809
809
|
...taskStats !== void 0 && { taskStats },
|
|
810
|
+
...computeWaitingWorkflow(events),
|
|
810
811
|
...messageStats.length > 0 && { messageStats },
|
|
811
812
|
...contextWindows.length > 0 && { contextWindows }
|
|
812
813
|
};
|
|
813
814
|
}
|
|
815
|
+
function computeWaitingWorkflow(events) {
|
|
816
|
+
const ww = foldWaitingWorkflow(events);
|
|
817
|
+
return ww !== void 0 ? { waitingWorkflow: ww } : {};
|
|
818
|
+
}
|
|
819
|
+
function foldWaitingWorkflow(events) {
|
|
820
|
+
let waitingWorkflow;
|
|
821
|
+
for (const event of events) {
|
|
822
|
+
if (event.type === "workflow.waiting") {
|
|
823
|
+
const data = event.data;
|
|
824
|
+
waitingWorkflow = data;
|
|
825
|
+
} else if (event.type === "task.completed") {
|
|
826
|
+
waitingWorkflow = void 0;
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
return waitingWorkflow;
|
|
830
|
+
}
|
|
814
831
|
function buildSnapshot(foldedState, latestSeq, snapshotAt = Date.now()) {
|
|
815
832
|
return {
|
|
816
833
|
mode: foldedState.mode,
|
|
@@ -835,7 +852,8 @@ function buildSnapshot(foldedState, latestSeq, snapshotAt = Date.now()) {
|
|
|
835
852
|
...foldedState.taskStats !== void 0 && { taskStats: foldedState.taskStats },
|
|
836
853
|
...foldedState.messageStats !== void 0 && { messageStats: foldedState.messageStats },
|
|
837
854
|
...foldedState.pendingConfirmations !== void 0 && { pendingConfirmations: foldedState.pendingConfirmations },
|
|
838
|
-
...foldedState.contextWindows !== void 0 && { contextWindows: foldedState.contextWindows }
|
|
855
|
+
...foldedState.contextWindows !== void 0 && { contextWindows: foldedState.contextWindows },
|
|
856
|
+
...foldedState.waitingWorkflow !== void 0 && { waitingWorkflow: foldedState.waitingWorkflow }
|
|
839
857
|
};
|
|
840
858
|
}
|
|
841
859
|
function buildSnapshotFromSessionState(input) {
|
|
@@ -878,7 +896,8 @@ function buildSnapshotFromSessionState(input) {
|
|
|
878
896
|
snapshotAt,
|
|
879
897
|
...foldedState.sessionInit !== void 0 && { sessionInit: foldedState.sessionInit },
|
|
880
898
|
...input.cachedSystemPrompt !== void 0 ? { cachedSystemPrompt: input.cachedSystemPrompt } : foldedState.cachedSystemPrompt !== void 0 ? { cachedSystemPrompt: foldedState.cachedSystemPrompt } : {},
|
|
881
|
-
...input.dynamicContextHash !== void 0 ? { dynamicContextHash: input.dynamicContextHash } : foldedState.dynamicContextHash !== void 0 ? { dynamicContextHash: foldedState.dynamicContextHash } : {}
|
|
899
|
+
...input.dynamicContextHash !== void 0 ? { dynamicContextHash: input.dynamicContextHash } : foldedState.dynamicContextHash !== void 0 ? { dynamicContextHash: foldedState.dynamicContextHash } : {},
|
|
900
|
+
...foldedState.waitingWorkflow !== void 0 && { waitingWorkflow: foldedState.waitingWorkflow }
|
|
882
901
|
};
|
|
883
902
|
}
|
|
884
903
|
|
|
@@ -906,7 +925,8 @@ export {
|
|
|
906
925
|
foldIsRunning,
|
|
907
926
|
foldPendingConfirmations,
|
|
908
927
|
foldSessionState,
|
|
928
|
+
foldWaitingWorkflow,
|
|
909
929
|
buildSnapshot,
|
|
910
930
|
buildSnapshotFromSessionState
|
|
911
931
|
};
|
|
912
|
-
//# sourceMappingURL=chunk-
|
|
932
|
+
//# sourceMappingURL=chunk-3QQKKZMF.js.map
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
tokenFromPassword,
|
|
22
22
|
verifyPassword,
|
|
23
23
|
workflowExists
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-GAIAJDPH.js";
|
|
25
25
|
import {
|
|
26
26
|
createToolRegistry,
|
|
27
27
|
devServerManager,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
setMcpManagerForTools,
|
|
31
31
|
setMcpTools,
|
|
32
32
|
setNotifyMcpServersChanged
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-FK6R2YTQ.js";
|
|
34
34
|
import {
|
|
35
35
|
createMcpTools
|
|
36
36
|
} from "./chunk-NWO6GRYE.js";
|
|
@@ -74,7 +74,7 @@ import {
|
|
|
74
74
|
} from "./chunk-3NGD6IVM.js";
|
|
75
75
|
import {
|
|
76
76
|
createContextStateMessage
|
|
77
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-IAAHDCJN.js";
|
|
78
78
|
import {
|
|
79
79
|
EventEmitter
|
|
80
80
|
} from "./chunk-EU3WWTFH.js";
|
|
@@ -87,7 +87,7 @@ import {
|
|
|
87
87
|
ALWAYS_ALLOWED,
|
|
88
88
|
ALWAYS_ALLOWED_FOR_SUBAGENTS,
|
|
89
89
|
TOP_LEVEL_ONLY_TOOLS
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-U2RSFH6A.js";
|
|
91
91
|
import {
|
|
92
92
|
emitAssistantMessageStart,
|
|
93
93
|
emitContextState,
|
|
@@ -103,14 +103,14 @@ import {
|
|
|
103
103
|
getEventStore,
|
|
104
104
|
getSessionState,
|
|
105
105
|
initEventStore
|
|
106
|
-
} from "./chunk-
|
|
106
|
+
} from "./chunk-PYJ2SRVC.js";
|
|
107
107
|
import {
|
|
108
108
|
getPathSeparator,
|
|
109
109
|
isAbsolutePath
|
|
110
110
|
} from "./chunk-WWC3R3YL.js";
|
|
111
111
|
import {
|
|
112
112
|
VERSION
|
|
113
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-LVZ6VQ3K.js";
|
|
114
114
|
import {
|
|
115
115
|
createSession,
|
|
116
116
|
deleteSession,
|
|
@@ -183,7 +183,7 @@ import {
|
|
|
183
183
|
} from "./chunk-K44MW7JJ.js";
|
|
184
184
|
import {
|
|
185
185
|
createServerMessage
|
|
186
|
-
} from "./chunk-
|
|
186
|
+
} from "./chunk-TQATAKVV.js";
|
|
187
187
|
import {
|
|
188
188
|
getGlobalConfigDir
|
|
189
189
|
} from "./chunk-CQGTEGKL.js";
|
|
@@ -4208,7 +4208,10 @@ var config = {
|
|
|
4208
4208
|
isDefault: isDefaultCommand,
|
|
4209
4209
|
getDefaultIds: getDefaultCommandIds,
|
|
4210
4210
|
validateCreate: validateNameIdPrompt,
|
|
4211
|
-
mapToResponse: (c) =>
|
|
4211
|
+
mapToResponse: (c) => ({
|
|
4212
|
+
...c.metadata,
|
|
4213
|
+
paramNames: [...new Set(Array.from(c.prompt.matchAll(/\{\{(\w+)\}\}/g), (m) => m[1]))]
|
|
4214
|
+
})
|
|
4212
4215
|
};
|
|
4213
4216
|
function createCommandRoutes(configDir, projectDir) {
|
|
4214
4217
|
return createCrudRoutes(config, configDir, projectDir);
|
|
@@ -4348,6 +4351,26 @@ function createDevServerRoutes() {
|
|
|
4348
4351
|
const result = devServerManager.getLogsSlice(workdir, offset, limit);
|
|
4349
4352
|
res.json({ logs: result.logs, total: result.total, offset, limit });
|
|
4350
4353
|
});
|
|
4354
|
+
router.post("/clear-logs", (req, res) => {
|
|
4355
|
+
const workdir = req.query["workdir"];
|
|
4356
|
+
if (!workdir) return res.status(400).json({ error: "workdir required" });
|
|
4357
|
+
try {
|
|
4358
|
+
devServerManager.clearLogs(workdir);
|
|
4359
|
+
res.json({ ok: true });
|
|
4360
|
+
} catch (err) {
|
|
4361
|
+
res.status(500).json({ error: err instanceof Error ? err.message : "Failed to clear logs" });
|
|
4362
|
+
}
|
|
4363
|
+
});
|
|
4364
|
+
router.post("/insert-marker", (req, res) => {
|
|
4365
|
+
const workdir = req.query["workdir"];
|
|
4366
|
+
if (!workdir) return res.status(400).json({ error: "workdir required" });
|
|
4367
|
+
try {
|
|
4368
|
+
devServerManager.insertMarker(workdir);
|
|
4369
|
+
res.json({ ok: true });
|
|
4370
|
+
} catch (err) {
|
|
4371
|
+
res.status(500).json({ error: err instanceof Error ? err.message : "Failed to insert marker" });
|
|
4372
|
+
}
|
|
4373
|
+
});
|
|
4351
4374
|
router.get("/config", async (req, res) => {
|
|
4352
4375
|
const workdir = req.query["workdir"];
|
|
4353
4376
|
if (!workdir) return res.status(400).json({ error: "workdir required" });
|
|
@@ -5552,7 +5575,7 @@ async function createServerHandle(config3) {
|
|
|
5552
5575
|
setMcpTools(mcpTools);
|
|
5553
5576
|
logger.info("MCP tools registered", { count: mcpTools.length });
|
|
5554
5577
|
}
|
|
5555
|
-
const { signalMcpReady } = await import("./server-
|
|
5578
|
+
const { signalMcpReady } = await import("./server-AAIYC4BH.js");
|
|
5556
5579
|
signalMcpReady();
|
|
5557
5580
|
});
|
|
5558
5581
|
const app = express();
|
|
@@ -5911,8 +5934,8 @@ All file and git operations should use this branch.
|
|
|
5911
5934
|
res.json({ workspaces: workspacesList });
|
|
5912
5935
|
});
|
|
5913
5936
|
app.get("/api/sessions", async (req, res) => {
|
|
5914
|
-
const { getRecentUserPromptsForSession } = await import("./events-
|
|
5915
|
-
const { getPendingConfirmationsBySession } = await import("./path-security-
|
|
5937
|
+
const { getRecentUserPromptsForSession } = await import("./events-D5AFN2CW.js");
|
|
5938
|
+
const { getPendingConfirmationsBySession } = await import("./path-security-DP75YZK5.js");
|
|
5916
5939
|
const projectId = req.query["projectId"];
|
|
5917
5940
|
const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
|
|
5918
5941
|
const offset = parseInt(req.query["offset"]) || 0;
|
|
@@ -6031,9 +6054,9 @@ All file and git operations should use this branch.
|
|
|
6031
6054
|
}
|
|
6032
6055
|
});
|
|
6033
6056
|
app.get("/api/sessions/:id", async (req, res) => {
|
|
6034
|
-
const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-
|
|
6035
|
-
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-
|
|
6036
|
-
const { getPendingQuestionsForSession } = await import("./tools-
|
|
6057
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-D5AFN2CW.js");
|
|
6058
|
+
const { buildMessagesFromStoredEvents, foldPendingConfirmations, foldWaitingWorkflow } = await import("./folding-BO6Z6HMP.js");
|
|
6059
|
+
const { getPendingQuestionsForSession } = await import("./tools-HDD7RHEG.js");
|
|
6037
6060
|
const { getMaxVisibleItems } = await import("./settings-2OVKFWR5.js");
|
|
6038
6061
|
const session = sessionManager.getSession(req.params.id);
|
|
6039
6062
|
if (!session) {
|
|
@@ -6048,6 +6071,7 @@ All file and git operations should use this branch.
|
|
|
6048
6071
|
const queueState = sessionManager.getQueueState(req.params.id);
|
|
6049
6072
|
const pendingQuestions = getPendingQuestionsForSession(req.params.id);
|
|
6050
6073
|
const pendingConfirmations = foldPendingConfirmations(events);
|
|
6074
|
+
const waitingWorkflow = foldWaitingWorkflow(events);
|
|
6051
6075
|
res.json({
|
|
6052
6076
|
session,
|
|
6053
6077
|
messages,
|
|
@@ -6055,7 +6079,8 @@ All file and git operations should use this branch.
|
|
|
6055
6079
|
contextState,
|
|
6056
6080
|
queueState,
|
|
6057
6081
|
pendingQuestions,
|
|
6058
|
-
pendingConfirmations
|
|
6082
|
+
pendingConfirmations,
|
|
6083
|
+
waitingWorkflow
|
|
6059
6084
|
});
|
|
6060
6085
|
});
|
|
6061
6086
|
app.delete("/api/sessions/:id", async (req, res) => {
|
|
@@ -6064,8 +6089,8 @@ All file and git operations should use this branch.
|
|
|
6064
6089
|
if (!session) {
|
|
6065
6090
|
return res.status(404).json({ error: "Session not found" });
|
|
6066
6091
|
}
|
|
6067
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
6068
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
6092
|
+
const { stopSessionExecution } = await import("./chat-handler-MSQFJH7S.js");
|
|
6093
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-HDD7RHEG.js");
|
|
6069
6094
|
sessionManager.clearMessageQueue(sessionId);
|
|
6070
6095
|
stopSessionExecution(sessionId, sessionManager);
|
|
6071
6096
|
abortSession(sessionId);
|
|
@@ -6094,8 +6119,8 @@ All file and git operations should use this branch.
|
|
|
6094
6119
|
res.json({ success: true });
|
|
6095
6120
|
});
|
|
6096
6121
|
app.post("/api/sessions/:id/provider", async (req, res) => {
|
|
6097
|
-
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-
|
|
6098
|
-
const { buildMessagesFromStoredEvents } = await import("./folding-
|
|
6122
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-D5AFN2CW.js");
|
|
6123
|
+
const { buildMessagesFromStoredEvents } = await import("./folding-BO6Z6HMP.js");
|
|
6099
6124
|
const { getMaxVisibleItems } = await import("./settings-2OVKFWR5.js");
|
|
6100
6125
|
const sessionId = req.params.id;
|
|
6101
6126
|
const session = sessionManager.getSession(sessionId);
|
|
@@ -6209,8 +6234,8 @@ All file and git operations should use this branch.
|
|
|
6209
6234
|
res.json({ success: true });
|
|
6210
6235
|
});
|
|
6211
6236
|
app.put("/api/sessions/:id/mode", async (req, res) => {
|
|
6212
|
-
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-
|
|
6213
|
-
const { buildMessagesFromStoredEvents } = await import("./folding-
|
|
6237
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-D5AFN2CW.js");
|
|
6238
|
+
const { buildMessagesFromStoredEvents } = await import("./folding-BO6Z6HMP.js");
|
|
6214
6239
|
const { getMaxVisibleItems } = await import("./settings-2OVKFWR5.js");
|
|
6215
6240
|
const sessionId = req.params.id;
|
|
6216
6241
|
const session = sessionManager.getSession(sessionId);
|
|
@@ -6297,7 +6322,7 @@ All file and git operations should use this branch.
|
|
|
6297
6322
|
if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
|
|
6298
6323
|
return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
|
|
6299
6324
|
}
|
|
6300
|
-
const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-
|
|
6325
|
+
const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-HDD7RHEG.js");
|
|
6301
6326
|
const pendingSessionId = getConfirmationSessionId(callId);
|
|
6302
6327
|
if (!pendingSessionId) {
|
|
6303
6328
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
@@ -6309,10 +6334,10 @@ All file and git operations should use this branch.
|
|
|
6309
6334
|
if (!result.found) {
|
|
6310
6335
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
6311
6336
|
}
|
|
6312
|
-
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-
|
|
6313
|
-
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-
|
|
6314
|
-
const { createSessionStateMessage } = await import("./protocol-
|
|
6315
|
-
const { getPendingQuestionsForSession } = await import("./tools-
|
|
6337
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-D5AFN2CW.js");
|
|
6338
|
+
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-BO6Z6HMP.js");
|
|
6339
|
+
const { createSessionStateMessage } = await import("./protocol-4ZDERZNC.js");
|
|
6340
|
+
const { getPendingQuestionsForSession } = await import("./tools-HDD7RHEG.js");
|
|
6316
6341
|
const { getMaxVisibleItems } = await import("./settings-2OVKFWR5.js");
|
|
6317
6342
|
const eventStore = getEventStore2();
|
|
6318
6343
|
const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
|
|
@@ -6349,7 +6374,7 @@ All file and git operations should use this branch.
|
|
|
6349
6374
|
if (!skip && typeof answer !== "string") {
|
|
6350
6375
|
return res.status(400).json({ error: "answer is required when not skipping" });
|
|
6351
6376
|
}
|
|
6352
|
-
const { provideAnswer } = await import("./tools-
|
|
6377
|
+
const { provideAnswer } = await import("./tools-HDD7RHEG.js");
|
|
6353
6378
|
const found = provideAnswer(callId, answer ?? "", skip ?? false);
|
|
6354
6379
|
if (!found) {
|
|
6355
6380
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -6414,7 +6439,7 @@ All file and git operations should use this branch.
|
|
|
6414
6439
|
backend: activeProvider?.backend ?? llmClient.getBackend(),
|
|
6415
6440
|
model: llmClient.getModel()
|
|
6416
6441
|
};
|
|
6417
|
-
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-
|
|
6442
|
+
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-YQI2D4LW.js");
|
|
6418
6443
|
runAgentTurn(
|
|
6419
6444
|
{
|
|
6420
6445
|
sessionManager,
|
|
@@ -6452,15 +6477,15 @@ All file and git operations should use this branch.
|
|
|
6452
6477
|
if (!session) {
|
|
6453
6478
|
return res.status(404).json({ error: "Session not found" });
|
|
6454
6479
|
}
|
|
6455
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
6456
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
6480
|
+
const { stopSessionExecution } = await import("./chat-handler-MSQFJH7S.js");
|
|
6481
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-HDD7RHEG.js");
|
|
6457
6482
|
const queuedMessages = sessionManager.getQueueState(sessionId);
|
|
6458
6483
|
sessionManager.clearMessageQueue(sessionId);
|
|
6459
6484
|
stopSessionExecution(sessionId, sessionManager);
|
|
6460
6485
|
abortSession(sessionId);
|
|
6461
6486
|
cancelQuestionsForSession(sessionId, "Session stopped by user");
|
|
6462
6487
|
cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
|
|
6463
|
-
const eventStore = (await import("./events-
|
|
6488
|
+
const eventStore = (await import("./events-D5AFN2CW.js")).getEventStore();
|
|
6464
6489
|
eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
|
|
6465
6490
|
res.json({ success: true, queuedMessages });
|
|
6466
6491
|
});
|
|
@@ -6474,7 +6499,7 @@ All file and git operations should use this branch.
|
|
|
6474
6499
|
if (typeof messageIndex !== "number" || messageIndex < 0) {
|
|
6475
6500
|
return res.status(400).json({ error: "messageIndex must be a non-negative number" });
|
|
6476
6501
|
}
|
|
6477
|
-
const { truncateSessionMessages } = await import("./events-
|
|
6502
|
+
const { truncateSessionMessages } = await import("./events-D5AFN2CW.js");
|
|
6478
6503
|
truncateSessionMessages(sessionId, messageIndex);
|
|
6479
6504
|
res.json({ success: true });
|
|
6480
6505
|
});
|
|
@@ -6491,8 +6516,8 @@ All file and git operations should use this branch.
|
|
|
6491
6516
|
if (content !== void 0 && (typeof content !== "string" || !content.trim())) {
|
|
6492
6517
|
return res.status(400).json({ error: "content must be a non-empty string if provided" });
|
|
6493
6518
|
}
|
|
6494
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6495
|
-
const { buildMessagesFromStoredEvents } = await import("./folding-
|
|
6519
|
+
const { getEventStore: getEventStore2 } = await import("./events-D5AFN2CW.js");
|
|
6520
|
+
const { buildMessagesFromStoredEvents } = await import("./folding-BO6Z6HMP.js");
|
|
6496
6521
|
const eventStore = getEventStore2();
|
|
6497
6522
|
const events = eventStore.getEvents(sessionId);
|
|
6498
6523
|
const { messages } = buildMessagesFromStoredEvents(events);
|
|
@@ -6504,7 +6529,7 @@ All file and git operations should use this branch.
|
|
|
6504
6529
|
if (msg.role !== "user" || msg.isSystemGenerated) {
|
|
6505
6530
|
return res.status(400).json({ error: "Can only replay user messages" });
|
|
6506
6531
|
}
|
|
6507
|
-
const { truncateSessionMessages } = await import("./events-
|
|
6532
|
+
const { truncateSessionMessages } = await import("./events-D5AFN2CW.js");
|
|
6508
6533
|
truncateSessionMessages(sessionId, msgIndex - 1);
|
|
6509
6534
|
sessionManager.queueMessage(sessionId, "asap", content ?? msg.content, msg.attachments, msg.messageKind);
|
|
6510
6535
|
res.json({ success: true });
|
|
@@ -7127,7 +7152,7 @@ All file and git operations should use this branch.
|
|
|
7127
7152
|
});
|
|
7128
7153
|
async function rebuildMcpTools() {
|
|
7129
7154
|
const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-MOGEI6TP.js");
|
|
7130
|
-
const { setMcpTools: setMcpTools2 } = await import("./tools-
|
|
7155
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-HDD7RHEG.js");
|
|
7131
7156
|
const mcpTools = createMcpTools2(mcpManager);
|
|
7132
7157
|
setMcpTools2(mcpTools);
|
|
7133
7158
|
}
|
|
@@ -7534,7 +7559,7 @@ All file and git operations should use this branch.
|
|
|
7534
7559
|
const state = sessionManager.getContextState(sessionId);
|
|
7535
7560
|
wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
|
|
7536
7561
|
});
|
|
7537
|
-
const { QueueProcessor } = await import("./processor-
|
|
7562
|
+
const { QueueProcessor } = await import("./processor-LVQWRG6M.js");
|
|
7538
7563
|
const queueProcessor = new QueueProcessor({
|
|
7539
7564
|
sessionManager,
|
|
7540
7565
|
providerManager,
|
|
@@ -7618,4 +7643,4 @@ export {
|
|
|
7618
7643
|
createServerHandle,
|
|
7619
7644
|
createServer
|
|
7620
7645
|
};
|
|
7621
|
-
//# sourceMappingURL=chunk-
|
|
7646
|
+
//# sourceMappingURL=chunk-AA4PXMSI.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createChatPathConfirmationMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IAAHDCJN.js";
|
|
4
4
|
import {
|
|
5
5
|
getEventStore
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PYJ2SRVC.js";
|
|
7
7
|
|
|
8
8
|
// src/server/tools/path-security.ts
|
|
9
9
|
import { realpath } from "fs/promises";
|
|
@@ -494,4 +494,4 @@ export {
|
|
|
494
494
|
getConfirmationSessionId,
|
|
495
495
|
getPendingConfirmationsBySession
|
|
496
496
|
};
|
|
497
|
-
//# sourceMappingURL=chunk-
|
|
497
|
+
//# sourceMappingURL=chunk-AQ4KCGXL.js.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-K2O7JTCX.js";
|
|
4
4
|
import {
|
|
5
5
|
COMPACTION_PROMPT
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-U2RSFH6A.js";
|
|
7
7
|
import {
|
|
8
8
|
getCurrentWindowMessageOptions
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PYJ2SRVC.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-
|
|
39
|
+
//# sourceMappingURL=chunk-ESJNJ5B6.js.map
|
|
@@ -44,14 +44,14 @@ import {
|
|
|
44
44
|
extractSensitivePathsFromCommand,
|
|
45
45
|
registerPathConfirmation,
|
|
46
46
|
requestPathAccess
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-AQ4KCGXL.js";
|
|
48
48
|
import {
|
|
49
49
|
createChatDoneMessage,
|
|
50
50
|
createChatMessageMessage,
|
|
51
51
|
createChatMessageUpdatedMessage,
|
|
52
52
|
createChatPathConfirmationMessage,
|
|
53
53
|
createQueueStateMessage
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-IAAHDCJN.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-
|
|
73
|
+
} from "./chunk-U2RSFH6A.js";
|
|
74
74
|
import {
|
|
75
75
|
getCurrentContextWindowId,
|
|
76
76
|
getCurrentWindowMessageOptions,
|
|
77
77
|
getEventStore
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-PYJ2SRVC.js";
|
|
79
79
|
import {
|
|
80
80
|
buildContextMessagesFromEventHistory,
|
|
81
81
|
foldContextState,
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
handleToolResult,
|
|
86
86
|
reorderToolMessages,
|
|
87
87
|
stripOrphanedToolCalls
|
|
88
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-3QQKKZMF.js";
|
|
89
89
|
import {
|
|
90
90
|
findAgentById,
|
|
91
91
|
getRuntimeConfig,
|
|
@@ -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-
|
|
1916
|
+
const { shouldCompact, appendCompactionPrompt } = await import("./compactor-R7GGPBPR.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-
|
|
2855
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-HDD7RHEG.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-
|
|
3876
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-HDD7RHEG.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-
|
|
4522
|
+
//# sourceMappingURL=chunk-FK6R2YTQ.js.map
|