openfox 2.0.131 → 2.0.133
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 +30 -0
- package/dist/CHANGELOG.md +30 -0
- package/dist/agent-defaults/code-reviewer.agent.md +1 -0
- package/dist/agent-defaults/explorer.agent.md +1 -0
- package/dist/agent-defaults/verifier.agent.md +1 -0
- package/dist/{chat-handler-RAIMQU7F.js → chat-handler-T47GATL5.js} +8 -8
- package/dist/{chunk-ZVHUISW7.js → chunk-5JWJEZJ3.js} +2 -2
- package/dist/{chunk-7LGMQ5KS.js → chunk-A7CB4USC.js} +8 -8
- package/dist/{chunk-QJG5K3X2.js → chunk-CLDCHOEA.js} +2 -2
- package/dist/{chunk-ZCFQOC3C.js → chunk-FEIRWXLX.js} +2 -2
- package/dist/{chunk-WCM5ZW5N.js → chunk-GFW2HWJ6.js} +4 -4
- package/dist/{chunk-5AI3LHRQ.js → chunk-HXHPKGJE.js} +5 -5
- package/dist/chunk-JKGHTBEV.js +7 -0
- package/dist/{chunk-55DGZIZ6.js → chunk-OMMPTN6X.js} +4 -4
- package/dist/{chunk-6MUSEPV7.js → chunk-OUQZZEIQ.js} +43 -34
- package/dist/{chunk-RQPHGBWI.js → chunk-P5MSY7ZI.js} +26 -12
- package/dist/{chunk-6SUBBT2M.js → chunk-RRUSYVQD.js} +2 -2
- package/dist/{chunk-SVALN5KE.js → chunk-VXG3AFFY.js} +7 -8
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{client-E6QLHPHD.js → client-2K6PPPJJ.js} +2 -2
- package/dist/{dynamic-context-Y555VDLA.js → dynamic-context-NJZKAZE3.js} +2 -2
- package/dist/{launch-Y4H7FDU2.js → launch-UKXVO37B.js} +8 -8
- package/dist/{orchestrator-SQN2SJ2A.js → orchestrator-GX22Y5EM.js} +7 -7
- package/dist/package.json +1 -1
- package/dist/{processor-MEHODYNE.js → processor-V35OLKRV.js} +22 -7
- package/dist/{provider-6YRII4IV.js → provider-NWRGNGS3.js} +3 -3
- package/dist/{provider-manager-URNJBK5Q.js → provider-manager-BO5ZBG3T.js} +3 -3
- package/dist/{serve-NPADSJG7.js → serve-XRVT3D7Z.js} +12 -12
- package/dist/server/index.js +11 -11
- package/dist/{server-5TY22HDN.js → server-GXMZMPXI.js} +10 -10
- package/dist/{service-VPXGREXF.js → service-O3LCO3TQ.js} +4 -4
- package/dist/{tasks-MNPXK2S5.js → tasks-WOC3QUFA.js} +4 -4
- package/dist/{tools-6BDT5YMT.js → tools-CW6POKUL.js} +5 -5
- package/dist/{update-XKCOBE47.js → update-VC3Y3EOP.js} +2 -2
- package/dist/web/assets/index-ATAQvBwl.js +312 -0
- package/dist/web/index.html +1 -1
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-BMBOSVRM.js +0 -7
- package/dist/web/assets/index-Bx5r3aJx.js +0 -310
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.133 - 2026-08-30
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **Edit providers straight from model selectors** — a pencil button on each provider group header opens the editor without digging through settings
|
|
8
|
+
- **Sub-agents can load skills** — explorer, verifier, and code reviewer now use the load_skill tool
|
|
9
|
+
|
|
10
|
+
### Enhancements
|
|
11
|
+
|
|
12
|
+
- **Smoother workflow completion nudge** — when a step's transition condition is already satisfied, the agent gets a short "call step_done" reminder instead of the verbose prompt
|
|
13
|
+
- **Faster settings and config loading** — shared caching dedupes and single-flights resource requests
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- **Stale blocked-workflow message cleared** — starting a plain chat turn no longer leaves a "retry to continue" step message behind
|
|
18
|
+
- **Workflow template-variable suggestions load again** — the editor no longer hits a 404
|
|
19
|
+
- **Duplicate and Customize creates a real copy** — no longer overwrites the original command
|
|
20
|
+
- **No more 401s on the login page** — settings requests no longer fire before sign-in
|
|
21
|
+
|
|
22
|
+
## 2.0.132 - 2026-08-28
|
|
23
|
+
|
|
24
|
+
### Enhancements
|
|
25
|
+
|
|
26
|
+
- **Deterministic workspace commit-and-push flow** — landing workspace changes is now an unconditional recipe: push a temp branch, merge back into the original repo, then delete the workspace and push to the remote
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
- **OpenCode Go models work on unset backends** — gpt-5.6-luna, grok-4.6 and muse-spark route to the Responses API even when the provider backend is unknown, instead of being rejected with HTTP 400
|
|
31
|
+
- **Agent now calls newly added tools** — drift reminders explicitly tell the agent that fresh MCP tools are callable like any other tool
|
|
32
|
+
|
|
3
33
|
## 2.0.131 - 2026-08-28
|
|
4
34
|
|
|
5
35
|
### Enhancements
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.133 - 2026-08-30
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **Edit providers straight from model selectors** — a pencil button on each provider group header opens the editor without digging through settings
|
|
8
|
+
- **Sub-agents can load skills** — explorer, verifier, and code reviewer now use the load_skill tool
|
|
9
|
+
|
|
10
|
+
### Enhancements
|
|
11
|
+
|
|
12
|
+
- **Smoother workflow completion nudge** — when a step's transition condition is already satisfied, the agent gets a short "call step_done" reminder instead of the verbose prompt
|
|
13
|
+
- **Faster settings and config loading** — shared caching dedupes and single-flights resource requests
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- **Stale blocked-workflow message cleared** — starting a plain chat turn no longer leaves a "retry to continue" step message behind
|
|
18
|
+
- **Workflow template-variable suggestions load again** — the editor no longer hits a 404
|
|
19
|
+
- **Duplicate and Customize creates a real copy** — no longer overwrites the original command
|
|
20
|
+
- **No more 401s on the login page** — settings requests no longer fire before sign-in
|
|
21
|
+
|
|
22
|
+
## 2.0.132 - 2026-08-28
|
|
23
|
+
|
|
24
|
+
### Enhancements
|
|
25
|
+
|
|
26
|
+
- **Deterministic workspace commit-and-push flow** — landing workspace changes is now an unconditional recipe: push a temp branch, merge back into the original repo, then delete the workspace and push to the remote
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
- **OpenCode Go models work on unset backends** — gpt-5.6-luna, grok-4.6 and muse-spark route to the Responses API even when the provider backend is unknown, instead of being rejected with HTTP 400
|
|
31
|
+
- **Agent now calls newly added tools** — drift reminders explicitly tell the agent that fresh MCP tools are callable like any other tool
|
|
32
|
+
|
|
3
33
|
## 2.0.131 - 2026-08-28
|
|
4
34
|
|
|
5
35
|
### Enhancements
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
buildRunChatTurnParams,
|
|
3
3
|
finalizeTurnCompletion,
|
|
4
4
|
generateSessionNameForSession
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-RRUSYVQD.js";
|
|
6
6
|
import {
|
|
7
7
|
runChatTurn
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-GFW2HWJ6.js";
|
|
9
|
+
import "./chunk-HXHPKGJE.js";
|
|
10
10
|
import "./chunk-XE6UC5Z3.js";
|
|
11
11
|
import "./chunk-J7GAZGZT.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-FEIRWXLX.js";
|
|
13
13
|
import "./chunk-TACWRDDC.js";
|
|
14
14
|
import "./chunk-7ET46SNE.js";
|
|
15
15
|
import "./chunk-LW6MMSTD.js";
|
|
@@ -17,7 +17,7 @@ import "./chunk-MQMPIXON.js";
|
|
|
17
17
|
import "./chunk-I72ACQ6R.js";
|
|
18
18
|
import "./chunk-JE7LW7Y6.js";
|
|
19
19
|
import "./chunk-OAN4BXEW.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-VXG3AFFY.js";
|
|
21
21
|
import "./chunk-BKMWZTNO.js";
|
|
22
22
|
import "./chunk-7JVBDBXE.js";
|
|
23
23
|
import "./chunk-JURM3RPZ.js";
|
|
@@ -36,11 +36,11 @@ import {
|
|
|
36
36
|
} from "./chunk-P57IBMK4.js";
|
|
37
37
|
import "./chunk-LCLH6ZUL.js";
|
|
38
38
|
import "./chunk-MGEYAYGU.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-5JWJEZJ3.js";
|
|
40
40
|
import "./chunk-OA2FURC3.js";
|
|
41
41
|
import "./chunk-J2GP3J3X.js";
|
|
42
42
|
import "./chunk-DPFET73G.js";
|
|
43
|
-
import "./chunk-
|
|
43
|
+
import "./chunk-CLDCHOEA.js";
|
|
44
44
|
import "./chunk-TS5WKTFB.js";
|
|
45
45
|
import "./chunk-UV6IH6HK.js";
|
|
46
46
|
import "./chunk-HNCM3D7Y.js";
|
|
@@ -174,4 +174,4 @@ export {
|
|
|
174
174
|
startChatSession,
|
|
175
175
|
stopSessionExecution
|
|
176
176
|
};
|
|
177
|
-
//# sourceMappingURL=chat-handler-
|
|
177
|
+
//# sourceMappingURL=chat-handler-T47GATL5.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-OA2FURC3.js";
|
|
5
5
|
import {
|
|
6
6
|
createLLMClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CLDCHOEA.js";
|
|
8
8
|
import {
|
|
9
9
|
getModelProfile
|
|
10
10
|
} from "./chunk-TS5WKTFB.js";
|
|
@@ -895,4 +895,4 @@ export {
|
|
|
895
895
|
parseDefaultModelSelection,
|
|
896
896
|
createProviderManager
|
|
897
897
|
};
|
|
898
|
-
//# sourceMappingURL=chunk-
|
|
898
|
+
//# sourceMappingURL=chunk-5JWJEZJ3.js.map
|
|
@@ -2,16 +2,16 @@ import {
|
|
|
2
2
|
generateSessionNameForSession,
|
|
3
3
|
getSessionMessageCount,
|
|
4
4
|
needsNameGeneration
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-RRUSYVQD.js";
|
|
6
6
|
import {
|
|
7
7
|
launchWorkflowRun
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-P5MSY7ZI.js";
|
|
9
9
|
import {
|
|
10
10
|
runChatTurn
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-GFW2HWJ6.js";
|
|
12
12
|
import {
|
|
13
13
|
devServerManager
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-HXHPKGJE.js";
|
|
15
15
|
import {
|
|
16
16
|
gitSpawnEnv
|
|
17
17
|
} from "./chunk-J7GAZGZT.js";
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
applyDynamicContext,
|
|
33
33
|
computeSessionHash,
|
|
34
34
|
computeUnifiedDiff
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-VXG3AFFY.js";
|
|
36
36
|
import {
|
|
37
37
|
getPendingQuestionsForSession,
|
|
38
38
|
provideAnswer
|
|
@@ -1313,7 +1313,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
|
|
|
1313
1313
|
}
|
|
1314
1314
|
const session = sessionManager.requireSession(sessionId);
|
|
1315
1315
|
try {
|
|
1316
|
-
const { buildCachedPrompt, computePreviewToolDiff } = await import("./dynamic-context-
|
|
1316
|
+
const { buildCachedPrompt, computePreviewToolDiff } = await import("./dynamic-context-NJZKAZE3.js");
|
|
1317
1317
|
const allAgents = await import("./registry-CMSSZHDC.js");
|
|
1318
1318
|
const agentDef = allAgents.findAgentById(session.mode, await allAgents.loadAllAgentsDefault()) ?? allAgents.findAgentById("planner", await allAgents.loadAllAgentsDefault());
|
|
1319
1319
|
const modelName = session.providerModel ?? _providerManager?.getCurrentModel();
|
|
@@ -1325,7 +1325,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
|
|
|
1325
1325
|
const oldCached = sessionManager.getCachedPrompt(sessionId);
|
|
1326
1326
|
const oldPrompt = oldCached?.systemPrompt;
|
|
1327
1327
|
const diff = oldPrompt ? computeUnifiedDiff(oldPrompt, newPrompt) : [];
|
|
1328
|
-
const { getToolRegistryForAgent } = await import("./tools-
|
|
1328
|
+
const { getToolRegistryForAgent } = await import("./tools-CW6POKUL.js");
|
|
1329
1329
|
const unfilteredTools = getToolRegistryForAgent(agentDef).definitions;
|
|
1330
1330
|
const toolDiff = computePreviewToolDiff(oldCached?.tools, unfilteredTools, newTools);
|
|
1331
1331
|
send({
|
|
@@ -1642,4 +1642,4 @@ export {
|
|
|
1642
1642
|
signalMcpReady,
|
|
1643
1643
|
createWebSocketServer
|
|
1644
1644
|
};
|
|
1645
|
-
//# sourceMappingURL=chunk-
|
|
1645
|
+
//# sourceMappingURL=chunk-A7CB4USC.js.map
|
|
@@ -46,7 +46,7 @@ function resolveApiProtocol(input) {
|
|
|
46
46
|
const { model, backend, profileApiProtocol, explicitApiProtocol } = input;
|
|
47
47
|
if (explicitApiProtocol) return explicitApiProtocol;
|
|
48
48
|
if (backend === "openai" && profileApiProtocol) return profileApiProtocol;
|
|
49
|
-
if (backend === "opencode-go") {
|
|
49
|
+
if (backend === "opencode-go" || backend === "unknown") {
|
|
50
50
|
const matched = matchesRules(model, OPENCODE_GO_RESPONSES_RULES);
|
|
51
51
|
if (matched) return matched;
|
|
52
52
|
}
|
|
@@ -768,4 +768,4 @@ function createLLMClient(config, initialBackend = config.llm.backend ?? "unknown
|
|
|
768
768
|
export {
|
|
769
769
|
createLLMClient
|
|
770
770
|
};
|
|
771
|
-
//# sourceMappingURL=chunk-
|
|
771
|
+
//# sourceMappingURL=chunk-CLDCHOEA.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-OSXPQSLW.js";
|
|
9
9
|
import {
|
|
10
10
|
parseDefaultModelSelection
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-5JWJEZJ3.js";
|
|
12
12
|
import {
|
|
13
13
|
getProject
|
|
14
14
|
} from "./chunk-DPFET73G.js";
|
|
@@ -1119,4 +1119,4 @@ export {
|
|
|
1119
1119
|
isTaskGateError,
|
|
1120
1120
|
createTasksService
|
|
1121
1121
|
};
|
|
1122
|
-
//# sourceMappingURL=chunk-
|
|
1122
|
+
//# sourceMappingURL=chunk-FEIRWXLX.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
getToolRegistryForAgent,
|
|
5
5
|
processEventsForConversation,
|
|
6
6
|
runTopLevelAgentLoop
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HXHPKGJE.js";
|
|
8
8
|
import {
|
|
9
9
|
TurnMetrics,
|
|
10
10
|
createChatDoneEvent,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
checkToolChangesAndInject,
|
|
16
16
|
computeDynamicContextHash,
|
|
17
17
|
getToolFingerprint
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-VXG3AFFY.js";
|
|
19
19
|
import {
|
|
20
20
|
getAllInstructions,
|
|
21
21
|
getEnabledSkillMetadata
|
|
@@ -334,7 +334,7 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
|
|
|
334
334
|
getConversationMessages: buildGetConversationMessages(options.sessionId, resolveAgentClient, append),
|
|
335
335
|
injectAgentReminder: () => injectAgentReminder(options.sessionId, agentDef),
|
|
336
336
|
rebuildCachedContext: async () => {
|
|
337
|
-
const { applyDynamicContext } = await import("./dynamic-context-
|
|
337
|
+
const { applyDynamicContext } = await import("./dynamic-context-NJZKAZE3.js");
|
|
338
338
|
await applyDynamicContext(options.sessionManager, options.sessionId, agentLlmClient.getModel());
|
|
339
339
|
},
|
|
340
340
|
...options.initialCompacting ? { initialCompacting: true } : {},
|
|
@@ -364,4 +364,4 @@ export {
|
|
|
364
364
|
runChatTurn,
|
|
365
365
|
runAgentTurn
|
|
366
366
|
};
|
|
367
|
-
//# sourceMappingURL=chunk-
|
|
367
|
+
//# sourceMappingURL=chunk-GFW2HWJ6.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
getGateConfig,
|
|
8
8
|
isTaskConflictError,
|
|
9
9
|
isTaskGateError
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-FEIRWXLX.js";
|
|
11
11
|
import {
|
|
12
12
|
getSessionDisabledServers
|
|
13
13
|
} from "./chunk-TACWRDDC.js";
|
|
@@ -3187,7 +3187,7 @@ var callSubAgentTool = {
|
|
|
3187
3187
|
};
|
|
3188
3188
|
}
|
|
3189
3189
|
try {
|
|
3190
|
-
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-
|
|
3190
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-CW6POKUL.js");
|
|
3191
3191
|
const toolRegistry = getToolRegistryForAgent2(agentDef);
|
|
3192
3192
|
const turnMetrics = new TurnMetrics();
|
|
3193
3193
|
const result = await executeSubAgent({
|
|
@@ -4218,11 +4218,11 @@ var mcpConfigTool = createTool(
|
|
|
4218
4218
|
async function notifyContextChanged(sessionId) {
|
|
4219
4219
|
context.sessionManager.setDynamicContextChanged(sessionId, true);
|
|
4220
4220
|
mcpNotifyChanged?.(sessionId);
|
|
4221
|
-
const { injectContextDriftReminders } = await import("./dynamic-context-
|
|
4221
|
+
const { injectContextDriftReminders } = await import("./dynamic-context-NJZKAZE3.js");
|
|
4222
4222
|
await injectContextDriftReminders(context.sessionManager, sessionId);
|
|
4223
4223
|
}
|
|
4224
4224
|
async function rebuildTools() {
|
|
4225
|
-
const { setMcpTools: setMcpTools2 } = await import("./tools-
|
|
4225
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-CW6POKUL.js");
|
|
4226
4226
|
const mcpTools = createMcpTools(mcpManagerForTools);
|
|
4227
4227
|
setMcpTools2(mcpTools);
|
|
4228
4228
|
}
|
|
@@ -5158,4 +5158,4 @@ export {
|
|
|
5158
5158
|
getToolRegistryForAgent,
|
|
5159
5159
|
createToolRegistry
|
|
5160
5160
|
};
|
|
5161
|
-
//# sourceMappingURL=chunk-
|
|
5161
|
+
//# sourceMappingURL=chunk-HXHPKGJE.js.map
|
|
@@ -165,7 +165,7 @@ async function runCli(options) {
|
|
|
165
165
|
break;
|
|
166
166
|
}
|
|
167
167
|
case "provider": {
|
|
168
|
-
const { runProviderCommand } = await import("./provider-
|
|
168
|
+
const { runProviderCommand } = await import("./provider-NWRGNGS3.js");
|
|
169
169
|
const [, subcommand] = positionals;
|
|
170
170
|
await runProviderCommand(mode, subcommand);
|
|
171
171
|
break;
|
|
@@ -210,7 +210,7 @@ async function runCli(options) {
|
|
|
210
210
|
break;
|
|
211
211
|
}
|
|
212
212
|
case "update": {
|
|
213
|
-
const { runUpdate } = await import("./update-
|
|
213
|
+
const { runUpdate } = await import("./update-VC3Y3EOP.js");
|
|
214
214
|
const code = await runUpdate();
|
|
215
215
|
if (code !== 0) {
|
|
216
216
|
process.exit(code);
|
|
@@ -223,7 +223,7 @@ async function runCli(options) {
|
|
|
223
223
|
if (!configExists) {
|
|
224
224
|
await runNetworkSetup(mode);
|
|
225
225
|
}
|
|
226
|
-
const { runServe } = await import("./serve-
|
|
226
|
+
const { runServe } = await import("./serve-XRVT3D7Z.js");
|
|
227
227
|
const serveOptions = { mode };
|
|
228
228
|
if (values.port) serveOptions.port = parseInt(values.port);
|
|
229
229
|
if (values["no-browser"] === true) serveOptions.openBrowser = false;
|
|
@@ -235,4 +235,4 @@ async function runCli(options) {
|
|
|
235
235
|
export {
|
|
236
236
|
runCli
|
|
237
237
|
};
|
|
238
|
-
//# sourceMappingURL=chunk-
|
|
238
|
+
//# sourceMappingURL=chunk-OMMPTN6X.js.map
|
|
@@ -24,10 +24,10 @@ import {
|
|
|
24
24
|
terminalManager,
|
|
25
25
|
tokenFromPassword,
|
|
26
26
|
verifyPassword
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-A7CB4USC.js";
|
|
28
28
|
import {
|
|
29
29
|
TEMPLATE_VARIABLES
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-P5MSY7ZI.js";
|
|
31
31
|
import {
|
|
32
32
|
createToolRegistry,
|
|
33
33
|
devServerManager,
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
setMcpManagerForTools,
|
|
43
43
|
setMcpTools,
|
|
44
44
|
setNotifyMcpServersChanged
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-HXHPKGJE.js";
|
|
46
46
|
import {
|
|
47
47
|
checkoutBranchFromSharedSource,
|
|
48
48
|
deleteWorkspace,
|
|
@@ -87,7 +87,7 @@ import {
|
|
|
87
87
|
saveWorkflow,
|
|
88
88
|
saveWorkflowToProject,
|
|
89
89
|
workflowExists
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-FEIRWXLX.js";
|
|
91
91
|
import {
|
|
92
92
|
getSessionDisabledServers,
|
|
93
93
|
setSessionDisabledServers
|
|
@@ -209,13 +209,13 @@ import {
|
|
|
209
209
|
detectModel,
|
|
210
210
|
getLlmStatus,
|
|
211
211
|
parseDefaultModelSelection
|
|
212
|
-
} from "./chunk-
|
|
212
|
+
} from "./chunk-5JWJEZJ3.js";
|
|
213
213
|
import {
|
|
214
214
|
buildOpenFoxMcpBootstrap
|
|
215
215
|
} from "./chunk-YNMP647F.js";
|
|
216
216
|
import {
|
|
217
217
|
VERSION
|
|
218
|
-
} from "./chunk-
|
|
218
|
+
} from "./chunk-JKGHTBEV.js";
|
|
219
219
|
import {
|
|
220
220
|
deleteProject,
|
|
221
221
|
getProject,
|
|
@@ -1135,6 +1135,12 @@ function getPromptAwareToolResponse(prompt) {
|
|
|
1135
1135
|
function getConversationAwareToolResponse(request) {
|
|
1136
1136
|
const prompt = getLastUserPrompt(request);
|
|
1137
1137
|
const conversationText = getConversationText(request);
|
|
1138
|
+
if (/If you have finished the task, call step_done\(\)/i.test(prompt)) {
|
|
1139
|
+
return {
|
|
1140
|
+
tools: [{ name: "step_done", arguments: {} }],
|
|
1141
|
+
response: "Finished the step."
|
|
1142
|
+
};
|
|
1143
|
+
}
|
|
1138
1144
|
if (/Implement the task and make sure you fulfil the \d+ criteria\./i.test(prompt) || /Continue working on the acceptance criteria\./i.test(prompt)) {
|
|
1139
1145
|
const tools = [];
|
|
1140
1146
|
const completedCriteria = [];
|
|
@@ -2801,11 +2807,14 @@ function canCompact(currentTokens, maxTokens) {
|
|
|
2801
2807
|
|
|
2802
2808
|
// src/server/session/manager.ts
|
|
2803
2809
|
var WORKSPACE_COMMIT_RECIPE = `
|
|
2804
|
-
To land changes from this workspace
|
|
2810
|
+
To land changes from this workspace when the user asks to commit and push:
|
|
2805
2811
|
1. Commit your work.
|
|
2806
|
-
2.
|
|
2807
|
-
3.
|
|
2808
|
-
4.
|
|
2812
|
+
2. Push to the original repo on a temporary branch (its origin is the local repo itself): \`git push origin HEAD:<feature-slug>\`
|
|
2813
|
+
3. Switch back to the original project: \`workspace switch original\`
|
|
2814
|
+
4. Merge the temporary branch and delete it: \`git merge --ff-only <feature-slug> && git branch -d <feature-slug>\`
|
|
2815
|
+
5. Verify the work is present in the original repo.
|
|
2816
|
+
6. Delete the workspace \u2014 it can be recreated at any time: \`workspace delete <name> force=true\`
|
|
2817
|
+
7. Push to the remote from the original repo: \`git push origin <branch>\``;
|
|
2809
2818
|
var SessionManager = class {
|
|
2810
2819
|
events = new EventEmitter();
|
|
2811
2820
|
activeSessionId = null;
|
|
@@ -4415,6 +4424,7 @@ function createCrudRoutes(config3, configDir, projectDir) {
|
|
|
4415
4424
|
const ids = config3.getDefaultIds ? await config3.getDefaultIds() : [];
|
|
4416
4425
|
res.json({ ids });
|
|
4417
4426
|
});
|
|
4427
|
+
config3.extraRoutes?.(router);
|
|
4418
4428
|
router.get("/:id", async (req, res) => {
|
|
4419
4429
|
const { id } = req.params;
|
|
4420
4430
|
const effectiveProjectDir = resolveProjectDir(req, projectDir);
|
|
@@ -4509,7 +4519,6 @@ function createCrudRoutes(config3, configDir, projectDir) {
|
|
|
4509
4519
|
}
|
|
4510
4520
|
res.status(201).json(duplicated);
|
|
4511
4521
|
});
|
|
4512
|
-
config3.extraRoutes?.(router);
|
|
4513
4522
|
return router;
|
|
4514
4523
|
}
|
|
4515
4524
|
|
|
@@ -6801,7 +6810,7 @@ function detectWsl() {
|
|
|
6801
6810
|
// src/server/index.ts
|
|
6802
6811
|
var __dirname3 = dirname7(fileURLToPath6(import.meta.url));
|
|
6803
6812
|
async function announceContextDrift(sessionManager, sessionIds) {
|
|
6804
|
-
const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-
|
|
6813
|
+
const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-NJZKAZE3.js");
|
|
6805
6814
|
await injectContextDriftRemindersForSessions(sessionManager, sessionIds);
|
|
6806
6815
|
}
|
|
6807
6816
|
async function createServerHandle(config3) {
|
|
@@ -6908,7 +6917,7 @@ async function createServerHandle(config3) {
|
|
|
6908
6917
|
toolRegistry = createToolRegistry();
|
|
6909
6918
|
logger.info("MCP tools registered", { count: mcpTools.length });
|
|
6910
6919
|
}
|
|
6911
|
-
const { signalMcpReady } = await import("./server-
|
|
6920
|
+
const { signalMcpReady } = await import("./server-GXMZMPXI.js");
|
|
6912
6921
|
signalMcpReady();
|
|
6913
6922
|
});
|
|
6914
6923
|
const app = express();
|
|
@@ -7123,9 +7132,9 @@ async function createServerHandle(config3) {
|
|
|
7123
7132
|
const sessionFavoriteRouter = express.Router();
|
|
7124
7133
|
registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
|
|
7125
7134
|
app.use("/api", sessionFavoriteRouter);
|
|
7126
|
-
const { createTasksService } = await import("./service-
|
|
7127
|
-
const { registerTaskRoutes } = await import("./tasks-
|
|
7128
|
-
const { setTasksService } = await import("./tools-
|
|
7135
|
+
const { createTasksService } = await import("./service-O3LCO3TQ.js");
|
|
7136
|
+
const { registerTaskRoutes } = await import("./tasks-WOC3QUFA.js");
|
|
7137
|
+
const { setTasksService } = await import("./tools-CW6POKUL.js");
|
|
7129
7138
|
const tasksService = createTasksService({
|
|
7130
7139
|
sessionManager,
|
|
7131
7140
|
config: config3,
|
|
@@ -7454,7 +7463,7 @@ All file and git operations should use this branch.
|
|
|
7454
7463
|
app.get("/api/sessions/:id", async (req, res) => {
|
|
7455
7464
|
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ZJPRGVL2.js");
|
|
7456
7465
|
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
|
|
7457
|
-
const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-
|
|
7466
|
+
const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-CW6POKUL.js");
|
|
7458
7467
|
const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
|
|
7459
7468
|
const session = sessionManager.getSession(req.params.id);
|
|
7460
7469
|
if (!session) {
|
|
@@ -7483,7 +7492,7 @@ All file and git operations should use this branch.
|
|
|
7483
7492
|
});
|
|
7484
7493
|
app.get("/api/sessions/:id/status", async (req, res) => {
|
|
7485
7494
|
const { projectSessionStatus: projectSessionStatus2 } = await import("./session-status-UFO5IFI7.js");
|
|
7486
|
-
const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-
|
|
7495
|
+
const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-CW6POKUL.js");
|
|
7487
7496
|
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ZJPRGVL2.js");
|
|
7488
7497
|
const { foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
|
|
7489
7498
|
const sessionId = req.params["id"];
|
|
@@ -7515,8 +7524,8 @@ All file and git operations should use this branch.
|
|
|
7515
7524
|
if (!session) {
|
|
7516
7525
|
return res.status(404).json({ error: "Session not found" });
|
|
7517
7526
|
}
|
|
7518
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
7519
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
7527
|
+
const { stopSessionExecution } = await import("./chat-handler-T47GATL5.js");
|
|
7528
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-CW6POKUL.js");
|
|
7520
7529
|
sessionManager.clearMessageQueue(sessionId);
|
|
7521
7530
|
stopSessionExecution(sessionId, sessionManager);
|
|
7522
7531
|
abortSession(sessionId);
|
|
@@ -7769,7 +7778,7 @@ All file and git operations should use this branch.
|
|
|
7769
7778
|
setSessionDisabledServers(sessionId, disabledServers);
|
|
7770
7779
|
const messages = session.messages ?? [];
|
|
7771
7780
|
if (messages.length === 0) {
|
|
7772
|
-
const { applyDynamicContext } = await import("./dynamic-context-
|
|
7781
|
+
const { applyDynamicContext } = await import("./dynamic-context-NJZKAZE3.js");
|
|
7773
7782
|
const modelName = session.providerModel ?? providerManager.getCurrentModel();
|
|
7774
7783
|
await applyDynamicContext(sessionManager, sessionId, modelName);
|
|
7775
7784
|
} else {
|
|
@@ -7803,7 +7812,7 @@ All file and git operations should use this branch.
|
|
|
7803
7812
|
if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
|
|
7804
7813
|
return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
|
|
7805
7814
|
}
|
|
7806
|
-
const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-
|
|
7815
|
+
const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-CW6POKUL.js");
|
|
7807
7816
|
const pendingSessionId = getConfirmationSessionId(callId);
|
|
7808
7817
|
if (!pendingSessionId) {
|
|
7809
7818
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
@@ -7818,7 +7827,7 @@ All file and git operations should use this branch.
|
|
|
7818
7827
|
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-ZJPRGVL2.js");
|
|
7819
7828
|
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
|
|
7820
7829
|
const { createSessionStateMessage } = await import("./protocol-Y7MRKRUO.js");
|
|
7821
|
-
const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-
|
|
7830
|
+
const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-CW6POKUL.js");
|
|
7822
7831
|
const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
|
|
7823
7832
|
const eventStore = getEventStore2();
|
|
7824
7833
|
const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
|
|
@@ -7856,7 +7865,7 @@ All file and git operations should use this branch.
|
|
|
7856
7865
|
if (!skip && typeof answer !== "string") {
|
|
7857
7866
|
return res.status(400).json({ error: "answer is required when not skipping" });
|
|
7858
7867
|
}
|
|
7859
|
-
const { provideAnswer: provideAnswer2 } = await import("./tools-
|
|
7868
|
+
const { provideAnswer: provideAnswer2 } = await import("./tools-CW6POKUL.js");
|
|
7860
7869
|
const found = provideAnswer2(callId, answer ?? "", skip ?? false);
|
|
7861
7870
|
if (!found) {
|
|
7862
7871
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -7922,7 +7931,7 @@ All file and git operations should use this branch.
|
|
|
7922
7931
|
backend: activeProvider?.backend ?? llmClient.getBackend(),
|
|
7923
7932
|
model: llmClient.getModel()
|
|
7924
7933
|
};
|
|
7925
|
-
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-
|
|
7934
|
+
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-GX22Y5EM.js");
|
|
7926
7935
|
runAgentTurn(
|
|
7927
7936
|
{
|
|
7928
7937
|
sessionManager,
|
|
@@ -7960,8 +7969,8 @@ All file and git operations should use this branch.
|
|
|
7960
7969
|
if (!session) {
|
|
7961
7970
|
return res.status(404).json({ error: "Session not found" });
|
|
7962
7971
|
}
|
|
7963
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
7964
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
7972
|
+
const { stopSessionExecution } = await import("./chat-handler-T47GATL5.js");
|
|
7973
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-CW6POKUL.js");
|
|
7965
7974
|
const queuedMessages = sessionManager.getQueueState(sessionId);
|
|
7966
7975
|
sessionManager.clearMessageQueue(sessionId);
|
|
7967
7976
|
stopSessionExecution(sessionId, sessionManager);
|
|
@@ -8341,7 +8350,7 @@ All file and git operations should use this branch.
|
|
|
8341
8350
|
const backend = req.query["backend"];
|
|
8342
8351
|
if (!url) return res.status(400).json({ error: "url is required" });
|
|
8343
8352
|
try {
|
|
8344
|
-
const { fetchModelsWithContext } = await import("./provider-manager-
|
|
8353
|
+
const { fetchModelsWithContext } = await import("./provider-manager-BO5ZBG3T.js");
|
|
8345
8354
|
const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
|
|
8346
8355
|
const { getCatalogEntry } = await import("./model-catalog-2PCKTYGW.js");
|
|
8347
8356
|
const models = await fetchModelsWithContext(
|
|
@@ -8833,7 +8842,7 @@ All file and git operations should use this branch.
|
|
|
8833
8842
|
});
|
|
8834
8843
|
async function rebuildMcpTools() {
|
|
8835
8844
|
const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-FJAFLDZA.js");
|
|
8836
|
-
const { setMcpTools: setMcpTools2 } = await import("./tools-
|
|
8845
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-CW6POKUL.js");
|
|
8837
8846
|
const mcpTools = createMcpTools2(mcpManager);
|
|
8838
8847
|
setMcpTools2(mcpTools);
|
|
8839
8848
|
toolRegistry = createToolRegistry();
|
|
@@ -9409,7 +9418,7 @@ All file and git operations should use this branch.
|
|
|
9409
9418
|
);
|
|
9410
9419
|
const wss = wssExports.wss;
|
|
9411
9420
|
deferTasksBroadcast = (projectId, payload) => wssExports.broadcastForProject(projectId, "", { type: "tasks.update", payload });
|
|
9412
|
-
const { launchWorkflowRun, abortRunnerRun } = await import("./launch-
|
|
9421
|
+
const { launchWorkflowRun, abortRunnerRun } = await import("./launch-UKXVO37B.js");
|
|
9413
9422
|
deferTasksLaunchWorkflow = (sessionId, launch) => {
|
|
9414
9423
|
const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
|
|
9415
9424
|
let llmClient = getLLMClient();
|
|
@@ -9454,7 +9463,7 @@ All file and git operations should use this branch.
|
|
|
9454
9463
|
const state = sessionManager.getContextState(sessionId);
|
|
9455
9464
|
wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
|
|
9456
9465
|
});
|
|
9457
|
-
const { QueueProcessor } = await import("./processor-
|
|
9466
|
+
const { QueueProcessor } = await import("./processor-V35OLKRV.js");
|
|
9458
9467
|
const queueProcessor = new QueueProcessor({
|
|
9459
9468
|
sessionManager,
|
|
9460
9469
|
providerManager,
|
|
@@ -9496,8 +9505,8 @@ All file and git operations should use this branch.
|
|
|
9496
9505
|
launchWorkflow: (sessionId, launch) => deferTasksLaunchWorkflow(sessionId, launch),
|
|
9497
9506
|
stopSession: (sessionId) => {
|
|
9498
9507
|
void (async () => {
|
|
9499
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
9500
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
9508
|
+
const { stopSessionExecution } = await import("./chat-handler-T47GATL5.js");
|
|
9509
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-CW6POKUL.js");
|
|
9501
9510
|
sessionManager.clearMessageQueue(sessionId);
|
|
9502
9511
|
stopSessionExecution(sessionId, sessionManager);
|
|
9503
9512
|
abortSession(sessionId);
|
|
@@ -9618,4 +9627,4 @@ export {
|
|
|
9618
9627
|
createServerHandle,
|
|
9619
9628
|
createServer
|
|
9620
9629
|
};
|
|
9621
|
-
//# sourceMappingURL=chunk-
|
|
9630
|
+
//# sourceMappingURL=chunk-OUQZZEIQ.js.map
|