openfox 2.0.118 → 2.0.120
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 +34 -0
- package/dist/CHANGELOG.md +34 -0
- package/dist/agent-defaults/code-reviewer.agent.md +8 -3
- package/dist/{auto-config-AAUO4PKW.js → auto-config-YXNCBYEY.js} +125 -11
- package/dist/{chat-handler-KNBP6WVI.js → chat-handler-TIR5CMWE.js} +12 -11
- package/dist/{chunk-RXIDGWNV.js → chunk-54FTLSWS.js} +102 -55
- package/dist/{chunk-CIYA6BNB.js → chunk-A5JAVQKG.js} +2 -2
- package/dist/{chunk-HZSKKJHQ.js → chunk-AS7KAH66.js} +28 -9
- package/dist/{chunk-5ZR5O5GC.js → chunk-CYXAMXN5.js} +4 -4
- package/dist/{chunk-W7VIYHPQ.js → chunk-GJL3QSMP.js} +3 -2
- package/dist/{chunk-CX7UJZA5.js → chunk-HWHWXLM5.js} +4 -4
- package/dist/{chunk-NP2SV2CX.js → chunk-IQFPRQWM.js} +10 -4
- package/dist/{chunk-5E5G3DLI.js → chunk-IW46BUOP.js} +3 -3
- package/dist/{chunk-45OS4H3L.js → chunk-JDBIR2J7.js} +7 -7
- package/dist/{chunk-IDUXGSQV.js → chunk-JDWJ2PJJ.js} +16 -12
- package/dist/chunk-K2QKX4ZJ.js +31 -0
- package/dist/{chunk-MKWS7TQH.js → chunk-KFQKBXLO.js} +22 -16
- package/dist/{chunk-TOKQ2UVG.js → chunk-MIPQOHWS.js} +20 -6
- package/dist/{chunk-Y6WWEQPC.js → chunk-PI4X3Y6H.js} +11 -11
- package/dist/chunk-PXEWE5YP.js +7 -0
- package/dist/{chunk-MTFLMNLN.js → chunk-USNG72WA.js} +2 -2
- package/dist/{chunk-GZTMCTUS.js → chunk-WN76RDRU.js} +18 -22
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{client-KCNTDTIR.js → client-GXRHODRQ.js} +4 -4
- package/dist/{client-pure-B5DHEKQJ.js → client-pure-QSY7TJGK.js} +2 -2
- package/dist/{compactor-5ATICQ2A.js → compactor-TI352G7B.js} +5 -5
- package/dist/{dynamic-context-4SKLIPJ4.js → dynamic-context-C6HGUQTR.js} +2 -2
- package/dist/{launch-Q6GUJ22H.js → launch-SRSMTDEM.js} +12 -11
- package/dist/{orchestrator-DVCGWWNA.js → orchestrator-SCH2T4JB.js} +11 -10
- package/dist/package.json +1 -1
- package/dist/{processor-G6UJGA2K.js → processor-GM4D26E6.js} +11 -10
- package/dist/{profiles-GYHXBWPV.js → profiles-3YLLEJ2B.js} +2 -2
- package/dist/{protocol-DzJrspsl.d.ts → protocol-D5kJLGWy.d.ts} +1 -1
- package/dist/provider/index.d.ts +4 -4
- package/dist/{provider-Q7J4UFTS.js → provider-5V6RDVU2.js} +6 -5
- package/dist/{provider-manager-TMBO4DFG.js → provider-manager-7QD5HAOL.js} +6 -5
- package/dist/{serve-23YIIMXH.js → serve-M7I3HWVQ.js} +17 -16
- package/dist/server/index.d.ts +22 -5
- package/dist/server/index.js +16 -15
- package/dist/{server-IDXIAC5L.js → server-F72WN4KP.js} +15 -14
- package/dist/{service-M7XJHAK4.js → service-A3YLLXW3.js} +7 -6
- package/dist/session-status-6Q5B5PEN.js +35 -0
- package/dist/shared/index.d.ts +3 -3
- package/dist/{tasks-X5H5HM4J.js → tasks-X5U7DWZR.js} +9 -7
- package/dist/{tools-GOGLGTNV.js → tools-GCBDO7TU.js} +9 -8
- package/dist/{types-CIVhQMvD.d.ts → types-B5CI_Ql3.d.ts} +3 -1
- package/dist/{types-Df7NM9b5.d.ts → types-CZlj7ufS.d.ts} +2 -0
- package/dist/{update-T3YMIWQO.js → update-TUGN3JJE.js} +2 -2
- package/dist/web/assets/index-BlYcAqzD.js +324 -0
- package/dist/web/assets/{index-XTp1QlHA.css → index-D9sfxcRH.css} +1 -1
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/dist/workflow-defaults/default.workflow.json +1 -1
- package/package.json +1 -1
- package/dist/chunk-BSULZIPW.js +0 -7
- package/dist/web/assets/index-BgENxR9h.js +0 -324
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
terminalManager,
|
|
17
17
|
tokenFromPassword,
|
|
18
18
|
verifyPassword
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-PI4X3Y6H.js";
|
|
20
20
|
import {
|
|
21
21
|
TEMPLATE_VARIABLES
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-JDBIR2J7.js";
|
|
23
23
|
import {
|
|
24
24
|
createToolRegistry,
|
|
25
25
|
devServerManager,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
setMcpManagerForTools,
|
|
30
30
|
setMcpTools,
|
|
31
31
|
setNotifyMcpServersChanged
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-JDWJ2PJJ.js";
|
|
33
33
|
import {
|
|
34
34
|
deleteOwnedSkill,
|
|
35
35
|
deleteProjectSkill,
|
|
@@ -102,7 +102,7 @@ import {
|
|
|
102
102
|
saveWorkflow,
|
|
103
103
|
saveWorkflowToProject,
|
|
104
104
|
workflowExists
|
|
105
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-AS7KAH66.js";
|
|
106
106
|
import {
|
|
107
107
|
getSessionDisabledServers,
|
|
108
108
|
setSessionDisabledServers
|
|
@@ -167,7 +167,7 @@ import {
|
|
|
167
167
|
} from "./chunk-JLAR2CMV.js";
|
|
168
168
|
import {
|
|
169
169
|
VERSION
|
|
170
|
-
} from "./chunk-
|
|
170
|
+
} from "./chunk-PXEWE5YP.js";
|
|
171
171
|
import {
|
|
172
172
|
agentExists,
|
|
173
173
|
deleteAgent,
|
|
@@ -199,10 +199,10 @@ import {
|
|
|
199
199
|
detectModel,
|
|
200
200
|
getLlmStatus,
|
|
201
201
|
parseDefaultModelSelection
|
|
202
|
-
} from "./chunk-
|
|
202
|
+
} from "./chunk-WN76RDRU.js";
|
|
203
203
|
import {
|
|
204
204
|
getModelProfile
|
|
205
|
-
} from "./chunk-
|
|
205
|
+
} from "./chunk-GJL3QSMP.js";
|
|
206
206
|
import {
|
|
207
207
|
getBackendDisplayName
|
|
208
208
|
} from "./chunk-AZHWLLPP.js";
|
|
@@ -2799,9 +2799,45 @@ var SessionManager = class {
|
|
|
2799
2799
|
if (!model || !providerId) return void 0;
|
|
2800
2800
|
return this.providerManager.getModelSettings(providerId, model);
|
|
2801
2801
|
}
|
|
2802
|
-
getCurrentModelContext() {
|
|
2802
|
+
getCurrentModelContext(sessionId) {
|
|
2803
|
+
if (sessionId) {
|
|
2804
|
+
const sessionContext = this.getSessionModelContext(sessionId);
|
|
2805
|
+
if (sessionContext !== void 0) return sessionContext;
|
|
2806
|
+
}
|
|
2803
2807
|
return this.providerManager.getCurrentModelContext();
|
|
2804
2808
|
}
|
|
2809
|
+
/**
|
|
2810
|
+
* Resolve the context window for a session's own provider/model, if set.
|
|
2811
|
+
* Exact match first, then fuzzy match (spaces/dashes/underscores variations).
|
|
2812
|
+
* Returns undefined when the session has no model or no matching config —
|
|
2813
|
+
* callers fall back to the global default context.
|
|
2814
|
+
*/
|
|
2815
|
+
getSessionModelContext(sessionId) {
|
|
2816
|
+
const session = this.getSession(sessionId);
|
|
2817
|
+
if (!session?.providerId || !session.providerModel) return void 0;
|
|
2818
|
+
return this.resolveModelContext(session.providerId, session.providerModel);
|
|
2819
|
+
}
|
|
2820
|
+
/**
|
|
2821
|
+
* Resolve a provider/model pair's context window (exact, then fuzzy match).
|
|
2822
|
+
* Takes provider/model directly so callers with a raw DB session (e.g.
|
|
2823
|
+
* buildSessionFromDb) can use it without going through getSession, which
|
|
2824
|
+
* would recurse back into this class's session building.
|
|
2825
|
+
*/
|
|
2826
|
+
resolveModelContext(providerId, providerModel) {
|
|
2827
|
+
if (!providerId || !providerModel) return void 0;
|
|
2828
|
+
const provider = this.providerManager.getProviders().find((p) => p.id === providerId);
|
|
2829
|
+
if (!provider) return void 0;
|
|
2830
|
+
let modelConfig = provider.models.find((m) => m.id === providerModel);
|
|
2831
|
+
if (!modelConfig) {
|
|
2832
|
+
const normalize = (s) => s.toLowerCase().replace(/[-_\s]+/g, "");
|
|
2833
|
+
const sessionModelNormalized = normalize(providerModel);
|
|
2834
|
+
modelConfig = provider.models.find((m) => {
|
|
2835
|
+
const modelIdNormalized = normalize(m.id);
|
|
2836
|
+
return modelIdNormalized === sessionModelNormalized || modelIdNormalized.includes(sessionModelNormalized) || sessionModelNormalized.includes(modelIdNormalized);
|
|
2837
|
+
});
|
|
2838
|
+
}
|
|
2839
|
+
return modelConfig?.contextWindow;
|
|
2840
|
+
}
|
|
2805
2841
|
getModelCompactionThreshold(sessionId) {
|
|
2806
2842
|
const session = this.getSession(sessionId);
|
|
2807
2843
|
const providerId = session?.providerId ?? this.providerManager.getActiveProviderId();
|
|
@@ -3447,11 +3483,12 @@ var SessionManager = class {
|
|
|
3447
3483
|
* Stores promptTokens + completionTokens so the tracked size reflects the
|
|
3448
3484
|
* true context occupancy — the last call's output is re-fed into the next
|
|
3449
3485
|
* request as an assistant message, so it must count toward the budget.
|
|
3450
|
-
* maxTokens comes from
|
|
3486
|
+
* maxTokens comes from the session model's context window (falling back to
|
|
3487
|
+
* the currently selected model's limit).
|
|
3451
3488
|
*/
|
|
3452
3489
|
setCurrentContextSize(sessionId, promptTokens, completionTokens = 0, subAgentId) {
|
|
3453
|
-
const state = getSessionState(sessionId, this.
|
|
3454
|
-
const maxTokens = this.
|
|
3490
|
+
const state = getSessionState(sessionId, this.getCurrentModelContext(sessionId));
|
|
3491
|
+
const maxTokens = this.getCurrentModelContext(sessionId);
|
|
3455
3492
|
const currentTokens = promptTokens + completionTokens;
|
|
3456
3493
|
const compactionCount = state?.contextState.compactionCount ?? 0;
|
|
3457
3494
|
const dynamicContextChanged = this.getDynamicContextChanged(sessionId);
|
|
@@ -3727,27 +3764,7 @@ var SessionManager = class {
|
|
|
3727
3764
|
getContextState(sessionId) {
|
|
3728
3765
|
const session = this.getSession(sessionId);
|
|
3729
3766
|
const providerManager = this.providerManager;
|
|
3730
|
-
|
|
3731
|
-
if (session?.providerId && session.providerModel) {
|
|
3732
|
-
const providers = providerManager.getProviders();
|
|
3733
|
-
const provider = providers.find((p) => p.id === session.providerId);
|
|
3734
|
-
if (provider) {
|
|
3735
|
-
let modelConfig = provider.models.find((m) => m.id === session.providerModel);
|
|
3736
|
-
if (!modelConfig && session.providerModel) {
|
|
3737
|
-
const normalize = (s) => s.toLowerCase().replace(/[-_\s]+/g, "");
|
|
3738
|
-
const sessionModelNormalized = normalize(session.providerModel);
|
|
3739
|
-
modelConfig = provider.models.find((m) => {
|
|
3740
|
-
const modelIdNormalized = normalize(m.id);
|
|
3741
|
-
return modelIdNormalized === sessionModelNormalized || modelIdNormalized.includes(sessionModelNormalized) || sessionModelNormalized.includes(modelIdNormalized);
|
|
3742
|
-
});
|
|
3743
|
-
}
|
|
3744
|
-
maxTokens = modelConfig?.contextWindow ?? providerManager.getCurrentModelContext();
|
|
3745
|
-
} else {
|
|
3746
|
-
maxTokens = providerManager.getCurrentModelContext();
|
|
3747
|
-
}
|
|
3748
|
-
} else {
|
|
3749
|
-
maxTokens = providerManager.getCurrentModelContext();
|
|
3750
|
-
}
|
|
3767
|
+
const maxTokens = session?.providerId && session.providerModel ? this.getSessionModelContext(sessionId) ?? providerManager.getCurrentModelContext() : providerManager.getCurrentModelContext();
|
|
3751
3768
|
const state = getSessionState(sessionId, maxTokens);
|
|
3752
3769
|
const dynamicContextChanged = this.getDynamicContextChanged(sessionId);
|
|
3753
3770
|
const debugDump = this.debugDumpStore.get(sessionId);
|
|
@@ -4016,7 +4033,7 @@ All file and git operations should use this directory.
|
|
|
4016
4033
|
* Build a full Session object from DB session + EventStore state
|
|
4017
4034
|
*/
|
|
4018
4035
|
buildSessionFromDb(dbSession) {
|
|
4019
|
-
const maxTokens = this.providerManager.getCurrentModelContext();
|
|
4036
|
+
const maxTokens = this.resolveModelContext(dbSession.providerId, dbSession.providerModel) ?? this.providerManager.getCurrentModelContext();
|
|
4020
4037
|
const eventState = getSessionState(dbSession.id, maxTokens, dbSession.mode);
|
|
4021
4038
|
if (!eventState) {
|
|
4022
4039
|
return {
|
|
@@ -5947,7 +5964,7 @@ async function createServerHandle(config3) {
|
|
|
5947
5964
|
toolRegistry = createToolRegistry();
|
|
5948
5965
|
logger.info("MCP tools registered", { count: mcpTools.length });
|
|
5949
5966
|
}
|
|
5950
|
-
const { signalMcpReady } = await import("./server-
|
|
5967
|
+
const { signalMcpReady } = await import("./server-F72WN4KP.js");
|
|
5951
5968
|
signalMcpReady();
|
|
5952
5969
|
});
|
|
5953
5970
|
const app = express();
|
|
@@ -6143,9 +6160,9 @@ async function createServerHandle(config3) {
|
|
|
6143
6160
|
const sessionFavoriteRouter = express.Router();
|
|
6144
6161
|
registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
|
|
6145
6162
|
app.use("/api", sessionFavoriteRouter);
|
|
6146
|
-
const { createTasksService } = await import("./service-
|
|
6147
|
-
const { registerTaskRoutes } = await import("./tasks-
|
|
6148
|
-
const { setTasksService } = await import("./tools-
|
|
6163
|
+
const { createTasksService } = await import("./service-A3YLLXW3.js");
|
|
6164
|
+
const { registerTaskRoutes } = await import("./tasks-X5U7DWZR.js");
|
|
6165
|
+
const { setTasksService } = await import("./tools-GCBDO7TU.js");
|
|
6149
6166
|
const tasksService = createTasksService({
|
|
6150
6167
|
sessionManager,
|
|
6151
6168
|
config: config3,
|
|
@@ -6474,7 +6491,7 @@ All file and git operations should use this branch.
|
|
|
6474
6491
|
app.get("/api/sessions/:id", async (req, res) => {
|
|
6475
6492
|
const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-KDFMBVP5.js");
|
|
6476
6493
|
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-RTGU63BW.js");
|
|
6477
|
-
const { getPendingQuestionsForSession } = await import("./tools-
|
|
6494
|
+
const { getPendingQuestionsForSession } = await import("./tools-GCBDO7TU.js");
|
|
6478
6495
|
const { getMaxVisibleItems } = await import("./settings-FGXQHKUH.js");
|
|
6479
6496
|
const { getAgentModelOverride: getAgentModelOverride2 } = await import("./model-overrides-7F2EOA4U.js");
|
|
6480
6497
|
const { updateSessionProvider: updateSessionProvider2 } = await import("./sessions-I7ELDIIP.js");
|
|
@@ -6510,14 +6527,42 @@ All file and git operations should use this branch.
|
|
|
6510
6527
|
activeWorkflowExecution
|
|
6511
6528
|
});
|
|
6512
6529
|
});
|
|
6530
|
+
app.get("/api/sessions/:id/status", async (req, res) => {
|
|
6531
|
+
const { projectSessionStatus } = await import("./session-status-6Q5B5PEN.js");
|
|
6532
|
+
const { getPendingQuestionsForSession } = await import("./tools-GCBDO7TU.js");
|
|
6533
|
+
const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-KDFMBVP5.js");
|
|
6534
|
+
const { foldPendingConfirmations } = await import("./folding-RTGU63BW.js");
|
|
6535
|
+
const sessionId = req.params["id"];
|
|
6536
|
+
if (!sessionId) {
|
|
6537
|
+
return res.status(400).json({ error: "Session id is required" });
|
|
6538
|
+
}
|
|
6539
|
+
const session = sessionManager.getSession(sessionId);
|
|
6540
|
+
if (!session) {
|
|
6541
|
+
return res.status(404).json({ error: "Session not found" });
|
|
6542
|
+
}
|
|
6543
|
+
const activeWorkflowExecution = sessionManager.getActiveWorkflowExecution(sessionId);
|
|
6544
|
+
const activeWorkflowStepName = activeWorkflowExecution?.currentStepName ?? null;
|
|
6545
|
+
const pendingQuestions = getPendingQuestionsForSession(sessionId);
|
|
6546
|
+
const eventStore = getEventStore2();
|
|
6547
|
+
const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
|
|
6548
|
+
const events = combineEventsWithSnapshot(sessionId, snapshot, eventsSinceSnapshot);
|
|
6549
|
+
const pendingConfirmations = foldPendingConfirmations(events);
|
|
6550
|
+
const status = projectSessionStatus({
|
|
6551
|
+
session,
|
|
6552
|
+
pendingQuestionsCount: pendingQuestions.length,
|
|
6553
|
+
pendingConfirmationsCount: pendingConfirmations.length,
|
|
6554
|
+
activeWorkflowStepName
|
|
6555
|
+
});
|
|
6556
|
+
res.json(status);
|
|
6557
|
+
});
|
|
6513
6558
|
app.delete("/api/sessions/:id", async (req, res) => {
|
|
6514
6559
|
const sessionId = req.params["id"];
|
|
6515
6560
|
const session = sessionManager.getSession(sessionId);
|
|
6516
6561
|
if (!session) {
|
|
6517
6562
|
return res.status(404).json({ error: "Session not found" });
|
|
6518
6563
|
}
|
|
6519
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
6520
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
6564
|
+
const { stopSessionExecution } = await import("./chat-handler-TIR5CMWE.js");
|
|
6565
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-GCBDO7TU.js");
|
|
6521
6566
|
sessionManager.clearMessageQueue(sessionId);
|
|
6522
6567
|
stopSessionExecution(sessionId, sessionManager);
|
|
6523
6568
|
abortSession(sessionId);
|
|
@@ -6767,7 +6812,7 @@ All file and git operations should use this branch.
|
|
|
6767
6812
|
if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
|
|
6768
6813
|
return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
|
|
6769
6814
|
}
|
|
6770
|
-
const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-
|
|
6815
|
+
const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-GCBDO7TU.js");
|
|
6771
6816
|
const pendingSessionId = getConfirmationSessionId(callId);
|
|
6772
6817
|
if (!pendingSessionId) {
|
|
6773
6818
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
@@ -6782,7 +6827,7 @@ All file and git operations should use this branch.
|
|
|
6782
6827
|
const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-KDFMBVP5.js");
|
|
6783
6828
|
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-RTGU63BW.js");
|
|
6784
6829
|
const { createSessionStateMessage } = await import("./protocol-TLODRZSB.js");
|
|
6785
|
-
const { getPendingQuestionsForSession } = await import("./tools-
|
|
6830
|
+
const { getPendingQuestionsForSession } = await import("./tools-GCBDO7TU.js");
|
|
6786
6831
|
const { getMaxVisibleItems } = await import("./settings-FGXQHKUH.js");
|
|
6787
6832
|
const eventStore = getEventStore2();
|
|
6788
6833
|
const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
|
|
@@ -6820,7 +6865,7 @@ All file and git operations should use this branch.
|
|
|
6820
6865
|
if (!skip && typeof answer !== "string") {
|
|
6821
6866
|
return res.status(400).json({ error: "answer is required when not skipping" });
|
|
6822
6867
|
}
|
|
6823
|
-
const { provideAnswer } = await import("./tools-
|
|
6868
|
+
const { provideAnswer } = await import("./tools-GCBDO7TU.js");
|
|
6824
6869
|
const found = provideAnswer(callId, answer ?? "", skip ?? false);
|
|
6825
6870
|
if (!found) {
|
|
6826
6871
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -6885,7 +6930,7 @@ All file and git operations should use this branch.
|
|
|
6885
6930
|
backend: activeProvider?.backend ?? llmClient.getBackend(),
|
|
6886
6931
|
model: llmClient.getModel()
|
|
6887
6932
|
};
|
|
6888
|
-
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-
|
|
6933
|
+
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-SCH2T4JB.js");
|
|
6889
6934
|
runAgentTurn(
|
|
6890
6935
|
{
|
|
6891
6936
|
sessionManager,
|
|
@@ -6923,8 +6968,8 @@ All file and git operations should use this branch.
|
|
|
6923
6968
|
if (!session) {
|
|
6924
6969
|
return res.status(404).json({ error: "Session not found" });
|
|
6925
6970
|
}
|
|
6926
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
6927
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
6971
|
+
const { stopSessionExecution } = await import("./chat-handler-TIR5CMWE.js");
|
|
6972
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-GCBDO7TU.js");
|
|
6928
6973
|
const queuedMessages = sessionManager.getQueueState(sessionId);
|
|
6929
6974
|
sessionManager.clearMessageQueue(sessionId);
|
|
6930
6975
|
stopSessionExecution(sessionId, sessionManager);
|
|
@@ -7173,6 +7218,7 @@ All file and git operations should use this branch.
|
|
|
7173
7218
|
...m.nonThinkingExtraKwargs !== void 0 && { nonThinkingExtraKwargs: m.nonThinkingExtraKwargs },
|
|
7174
7219
|
...m.thinkingQueryParams !== void 0 && { thinkingQueryParams: m.thinkingQueryParams },
|
|
7175
7220
|
...m.nonThinkingQueryParams !== void 0 && { nonThinkingQueryParams: m.nonThinkingQueryParams },
|
|
7221
|
+
...m.omitParams !== void 0 && { omitParams: m.omitParams },
|
|
7176
7222
|
...m.temperature !== void 0 && { temperature: m.temperature },
|
|
7177
7223
|
...m.topP !== void 0 && { topP: m.topP },
|
|
7178
7224
|
...m.topK !== void 0 && { topK: m.topK },
|
|
@@ -7301,8 +7347,8 @@ All file and git operations should use this branch.
|
|
|
7301
7347
|
const backend = req.query["backend"];
|
|
7302
7348
|
if (!url) return res.status(400).json({ error: "url is required" });
|
|
7303
7349
|
try {
|
|
7304
|
-
const { fetchModelsWithContext } = await import("./provider-manager-
|
|
7305
|
-
const { getModelProfile: getModelProfile2 } = await import("./profiles-
|
|
7350
|
+
const { fetchModelsWithContext } = await import("./provider-manager-7QD5HAOL.js");
|
|
7351
|
+
const { getModelProfile: getModelProfile2 } = await import("./profiles-3YLLEJ2B.js");
|
|
7306
7352
|
const models = await fetchModelsWithContext(
|
|
7307
7353
|
url,
|
|
7308
7354
|
apiKey,
|
|
@@ -7337,7 +7383,7 @@ All file and git operations should use this branch.
|
|
|
7337
7383
|
if (!url) return res.status(400).json({ error: "url is required" });
|
|
7338
7384
|
if (!models?.length) return res.status(400).json({ error: "models is required" });
|
|
7339
7385
|
try {
|
|
7340
|
-
const { autoConfig } = await import("./auto-config-
|
|
7386
|
+
const { autoConfig } = await import("./auto-config-YXNCBYEY.js");
|
|
7341
7387
|
const result = await autoConfig({
|
|
7342
7388
|
url,
|
|
7343
7389
|
...apiKey ? { apiKey } : {},
|
|
@@ -7369,9 +7415,9 @@ All file and git operations should use this branch.
|
|
|
7369
7415
|
});
|
|
7370
7416
|
return res.json({ success: true, message: { content: response2.content }, raw: response2 });
|
|
7371
7417
|
}
|
|
7372
|
-
const { getModelProfile: getModelProfile2 } = await import("./profiles-
|
|
7418
|
+
const { getModelProfile: getModelProfile2 } = await import("./profiles-3YLLEJ2B.js");
|
|
7373
7419
|
const { getBackendCapabilities } = await import("./backend-67OLCS5O.js");
|
|
7374
|
-
const { buildNonStreamingCreateParams } = await import("./client-pure-
|
|
7420
|
+
const { buildNonStreamingCreateParams } = await import("./client-pure-QSY7TJGK.js");
|
|
7375
7421
|
const { OpenAIHttpClient } = await import("./http-client-IPUW2MSW.js");
|
|
7376
7422
|
const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
|
|
7377
7423
|
const profile = getModelProfile2(model);
|
|
@@ -7382,6 +7428,7 @@ All file and git operations should use this branch.
|
|
|
7382
7428
|
if (modelConfig?.topK !== void 0) modelSettings["topK"] = modelConfig.topK;
|
|
7383
7429
|
if (modelConfig?.maxTokens !== void 0) modelSettings["maxTokens"] = modelConfig.maxTokens;
|
|
7384
7430
|
if (modelConfig?.supportsVision !== void 0) modelSettings["supportsVision"] = modelConfig.supportsVision;
|
|
7431
|
+
if (modelConfig?.omitParams !== void 0) modelSettings["omitParams"] = modelConfig.omitParams;
|
|
7385
7432
|
const rawQP = mode === "thinking" ? modelConfig?.thinkingQueryParams : modelConfig?.nonThinkingQueryParams;
|
|
7386
7433
|
if (rawQP) {
|
|
7387
7434
|
modelSettings["queryParams"] = JSON.parse(rawQP);
|
|
@@ -7724,7 +7771,7 @@ All file and git operations should use this branch.
|
|
|
7724
7771
|
});
|
|
7725
7772
|
async function rebuildMcpTools() {
|
|
7726
7773
|
const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-FJAFLDZA.js");
|
|
7727
|
-
const { setMcpTools: setMcpTools2 } = await import("./tools-
|
|
7774
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-GCBDO7TU.js");
|
|
7728
7775
|
const mcpTools = createMcpTools2(mcpManager);
|
|
7729
7776
|
setMcpTools2(mcpTools);
|
|
7730
7777
|
toolRegistry = createToolRegistry();
|
|
@@ -8278,7 +8325,7 @@ All file and git operations should use this branch.
|
|
|
8278
8325
|
);
|
|
8279
8326
|
const wss = wssExports.wss;
|
|
8280
8327
|
deferTasksBroadcast = (projectId, payload) => wssExports.broadcastForProject(projectId, "", { type: "tasks.update", payload });
|
|
8281
|
-
const { launchWorkflowRun, abortRunnerRun } = await import("./launch-
|
|
8328
|
+
const { launchWorkflowRun, abortRunnerRun } = await import("./launch-SRSMTDEM.js");
|
|
8282
8329
|
deferTasksLaunchWorkflow = (sessionId, launch) => {
|
|
8283
8330
|
const session = sessionManager.getSession(sessionId);
|
|
8284
8331
|
let llmClient = getLLMClient();
|
|
@@ -8316,7 +8363,7 @@ All file and git operations should use this branch.
|
|
|
8316
8363
|
const state = sessionManager.getContextState(sessionId);
|
|
8317
8364
|
wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
|
|
8318
8365
|
});
|
|
8319
|
-
const { QueueProcessor } = await import("./processor-
|
|
8366
|
+
const { QueueProcessor } = await import("./processor-GM4D26E6.js");
|
|
8320
8367
|
const queueProcessor = new QueueProcessor({
|
|
8321
8368
|
sessionManager,
|
|
8322
8369
|
providerManager,
|
|
@@ -8402,4 +8449,4 @@ export {
|
|
|
8402
8449
|
createServerHandle,
|
|
8403
8450
|
createServer
|
|
8404
8451
|
};
|
|
8405
|
-
//# sourceMappingURL=chunk-
|
|
8452
|
+
//# sourceMappingURL=chunk-54FTLSWS.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createMessageStartEvent
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IQFPRQWM.js";
|
|
4
4
|
import {
|
|
5
5
|
COMPACTION_PROMPT
|
|
6
6
|
} from "./chunk-27NABDXB.js";
|
|
@@ -36,4 +36,4 @@ export {
|
|
|
36
36
|
COMPACTION_MAX_RATIO,
|
|
37
37
|
shouldCompact
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-A5JAVQKG.js.map
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "./chunk-3PG65AXG.js";
|
|
12
12
|
import {
|
|
13
13
|
parseDefaultModelSelection
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-WN76RDRU.js";
|
|
15
15
|
import {
|
|
16
16
|
getDatabase
|
|
17
17
|
} from "./chunk-5PT4UMRR.js";
|
|
@@ -677,6 +677,12 @@ function createTasksService(deps) {
|
|
|
677
677
|
...autoLaunched ? { autoLaunched } : {}
|
|
678
678
|
});
|
|
679
679
|
}
|
|
680
|
+
function reusableTarget(projectId, sessionId) {
|
|
681
|
+
if (!sessionId) return void 0;
|
|
682
|
+
const session = sessionManager.getSession(sessionId);
|
|
683
|
+
if (!session || session.projectId !== projectId || session.messages.length > 0) return void 0;
|
|
684
|
+
return sessionId;
|
|
685
|
+
}
|
|
680
686
|
function list(projectId) {
|
|
681
687
|
return listTasks(projectId);
|
|
682
688
|
}
|
|
@@ -787,12 +793,14 @@ function createTasksService(deps) {
|
|
|
787
793
|
const launched = runningCount < settings.slotLimit && !settings.queuePaused;
|
|
788
794
|
setTaskRunState(taskId, launched ? "running" : "queued");
|
|
789
795
|
if (launched) {
|
|
790
|
-
const seeded = await seedSession(projectId, task, from);
|
|
796
|
+
const seeded = await seedSession(projectId, task, from, reusableTarget(projectId, opts.sessionId));
|
|
791
797
|
addTaskLink(taskId, seeded.session.id, true);
|
|
792
798
|
addAuditEntry(taskId, "human", "move", `Moved to In Progress (running)`, opts.actorName);
|
|
793
799
|
sessionId = seeded.session.id;
|
|
794
800
|
} else {
|
|
795
801
|
appendToBottom(taskId, "in_progress");
|
|
802
|
+
const earmarked = reusableTarget(projectId, opts.sessionId);
|
|
803
|
+
if (earmarked) addTaskLink(taskId, earmarked, false);
|
|
796
804
|
addAuditEntry(taskId, "human", "move", `Moved to In Progress (queued)`, opts.actorName);
|
|
797
805
|
}
|
|
798
806
|
}
|
|
@@ -905,11 +913,20 @@ function createTasksService(deps) {
|
|
|
905
913
|
function activeCount(projectId) {
|
|
906
914
|
return listTasks(projectId).filter((t) => t.status === "in_progress" && t.runState === "running").length;
|
|
907
915
|
}
|
|
908
|
-
async function seedSession(projectId, task, from) {
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
916
|
+
async function seedSession(projectId, task, from, targetSessionId) {
|
|
917
|
+
let session;
|
|
918
|
+
if (targetSessionId) {
|
|
919
|
+
const existing = sessionManager.getSession(targetSessionId);
|
|
920
|
+
if (!existing) {
|
|
921
|
+
return seedSession(projectId, task, from);
|
|
922
|
+
}
|
|
923
|
+
session = existing;
|
|
924
|
+
} else {
|
|
925
|
+
const defaults = parseDefaultModelSelection(config.defaultModelSelection);
|
|
926
|
+
const providerId = task.providerId ?? defaults.providerId ?? null;
|
|
927
|
+
const model = task.model ?? defaults.model ?? null;
|
|
928
|
+
session = sessionManager.createSession(projectId, void 0, providerId, model);
|
|
929
|
+
}
|
|
913
930
|
if (task.agentId) {
|
|
914
931
|
try {
|
|
915
932
|
sessionManager.setMode(session.id, task.agentId);
|
|
@@ -957,7 +974,9 @@ function createTasksService(deps) {
|
|
|
957
974
|
const next = queued[0];
|
|
958
975
|
if (!next) return void 0;
|
|
959
976
|
setTaskRunState(next.id, "running");
|
|
960
|
-
const
|
|
977
|
+
const earmarks = listTaskLinks(next.id);
|
|
978
|
+
const target = reusableTarget(projectId, earmarks[0]?.session_id);
|
|
979
|
+
const seeded = await seedSession(projectId, next, "queued", target);
|
|
961
980
|
addTaskLink(next.id, seeded.session.id, true);
|
|
962
981
|
addAuditEntry(next.id, "system", "auto_launch", `Auto-launched into session ${seeded.session.id}`, "system");
|
|
963
982
|
return {
|
|
@@ -1079,4 +1098,4 @@ export {
|
|
|
1079
1098
|
isTaskGateError,
|
|
1080
1099
|
createTasksService
|
|
1081
1100
|
};
|
|
1082
|
-
//# sourceMappingURL=chunk-
|
|
1101
|
+
//# sourceMappingURL=chunk-AS7KAH66.js.map
|
|
@@ -163,7 +163,7 @@ async function runCli(options) {
|
|
|
163
163
|
break;
|
|
164
164
|
}
|
|
165
165
|
case "provider": {
|
|
166
|
-
const { runProviderCommand } = await import("./provider-
|
|
166
|
+
const { runProviderCommand } = await import("./provider-5V6RDVU2.js");
|
|
167
167
|
const [, subcommand] = positionals;
|
|
168
168
|
await runProviderCommand(mode, subcommand);
|
|
169
169
|
break;
|
|
@@ -200,7 +200,7 @@ async function runCli(options) {
|
|
|
200
200
|
break;
|
|
201
201
|
}
|
|
202
202
|
case "update": {
|
|
203
|
-
const { runUpdate } = await import("./update-
|
|
203
|
+
const { runUpdate } = await import("./update-TUGN3JJE.js");
|
|
204
204
|
const code = await runUpdate();
|
|
205
205
|
if (code !== 0) {
|
|
206
206
|
process.exit(code);
|
|
@@ -213,7 +213,7 @@ async function runCli(options) {
|
|
|
213
213
|
if (!configExists) {
|
|
214
214
|
await runNetworkSetup(mode);
|
|
215
215
|
}
|
|
216
|
-
const { runServe } = await import("./serve-
|
|
216
|
+
const { runServe } = await import("./serve-M7I3HWVQ.js");
|
|
217
217
|
const serveOptions = { mode };
|
|
218
218
|
if (values.port) serveOptions.port = parseInt(values.port);
|
|
219
219
|
if (values["no-browser"] === true) serveOptions.openBrowser = false;
|
|
@@ -225,4 +225,4 @@ async function runCli(options) {
|
|
|
225
225
|
export {
|
|
226
226
|
runCli
|
|
227
227
|
};
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
228
|
+
//# sourceMappingURL=chunk-CYXAMXN5.js.map
|
|
@@ -61,7 +61,8 @@ var MODEL_PROFILES = [
|
|
|
61
61
|
pattern: "deepseek",
|
|
62
62
|
profile: {
|
|
63
63
|
name: "DeepSeek",
|
|
64
|
-
|
|
64
|
+
// Per DeepSeek API docs: default temperature is 1.0
|
|
65
|
+
temperature: 1,
|
|
65
66
|
topP: 0.95,
|
|
66
67
|
defaultMaxTokens: 16384,
|
|
67
68
|
supportsVision: false
|
|
@@ -172,4 +173,4 @@ export {
|
|
|
172
173
|
getModelProfile,
|
|
173
174
|
modelSupportsVision
|
|
174
175
|
};
|
|
175
|
-
//# sourceMappingURL=chunk-
|
|
176
|
+
//# sourceMappingURL=chunk-GJL3QSMP.js.map
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
getToolRegistryForAgent,
|
|
5
5
|
processEventsForConversation,
|
|
6
6
|
runTopLevelAgentLoop
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JDWJ2PJJ.js";
|
|
8
8
|
import {
|
|
9
9
|
buildCachedPrompt,
|
|
10
10
|
computeDynamicContextHash,
|
|
11
11
|
getToolFingerprint
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-IW46BUOP.js";
|
|
13
13
|
import {
|
|
14
14
|
getAllInstructions,
|
|
15
15
|
getEnabledSkillMetadata
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
TurnMetrics,
|
|
19
19
|
createChatDoneEvent,
|
|
20
20
|
createMessageStartEvent
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-IQFPRQWM.js";
|
|
22
22
|
import {
|
|
23
23
|
buildAgentReminder,
|
|
24
24
|
buildAgentSmallReminder
|
|
@@ -325,4 +325,4 @@ export {
|
|
|
325
325
|
runChatTurn,
|
|
326
326
|
runAgentTurn
|
|
327
327
|
};
|
|
328
|
-
//# sourceMappingURL=chunk-
|
|
328
|
+
//# sourceMappingURL=chunk-HWHWXLM5.js.map
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
} from "./chunk-J2GP3J3X.js";
|
|
4
4
|
import {
|
|
5
5
|
getModelProfile
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GJL3QSMP.js";
|
|
7
7
|
import {
|
|
8
8
|
getBackendCapabilities
|
|
9
9
|
} from "./chunk-AZHWLLPP.js";
|
|
10
10
|
import {
|
|
11
11
|
buildModelParams
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-MIPQOHWS.js";
|
|
13
13
|
import {
|
|
14
14
|
logger
|
|
15
15
|
} from "./chunk-K44MW7JJ.js";
|
|
@@ -111,7 +111,13 @@ async function* streamLLMPure(options) {
|
|
|
111
111
|
const maxTokens = userMaxTokens ?? profile.defaultMaxTokens;
|
|
112
112
|
const topP = userTopP ?? profile.topP;
|
|
113
113
|
const topK = userTopK ?? (backend.supportsTopK ? profile.topK : void 0);
|
|
114
|
-
const modelParams = buildModelParams({
|
|
114
|
+
const modelParams = buildModelParams({
|
|
115
|
+
temperature,
|
|
116
|
+
topP,
|
|
117
|
+
topK,
|
|
118
|
+
maxTokens,
|
|
119
|
+
...options.modelSettings?.omitParams !== void 0 && { omitParams: options.modelSettings.omitParams }
|
|
120
|
+
});
|
|
115
121
|
logger.debug("LLM request settings", {
|
|
116
122
|
model: llmClient.getModel(),
|
|
117
123
|
profile: profile.name,
|
|
@@ -510,4 +516,4 @@ export {
|
|
|
510
516
|
createChatDoneEvent,
|
|
511
517
|
consumeStreamGenerator
|
|
512
518
|
};
|
|
513
|
-
//# sourceMappingURL=chunk-
|
|
519
|
+
//# sourceMappingURL=chunk-IQFPRQWM.js.map
|
|
@@ -105,7 +105,7 @@ function resolveAgentDef(sessionManager, sessionId) {
|
|
|
105
105
|
}
|
|
106
106
|
async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName) {
|
|
107
107
|
const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
|
|
108
|
-
const { getToolRegistryForAgent } = await import("./tools-
|
|
108
|
+
const { getToolRegistryForAgent } = await import("./tools-GCBDO7TU.js");
|
|
109
109
|
const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
|
|
110
110
|
const toolFingerprint = getToolFingerprint(tools);
|
|
111
111
|
const allAgents = await loadAllAgentsDefault(sessionManager.getProjectWorkdir(sessionId));
|
|
@@ -124,7 +124,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName)
|
|
|
124
124
|
async function computeSessionHash(sessionManager, sessionId, modelName) {
|
|
125
125
|
const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
|
|
126
126
|
const agentDef = await resolveAgentDef(sessionManager, sessionId);
|
|
127
|
-
const { getToolRegistryForAgent } = await import("./tools-
|
|
127
|
+
const { getToolRegistryForAgent } = await import("./tools-GCBDO7TU.js");
|
|
128
128
|
const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
|
|
129
129
|
const toolFingerprint = getToolFingerprint(tools);
|
|
130
130
|
return computeDynamicContextHash(instructionContent, skills, toolFingerprint, modelName);
|
|
@@ -148,4 +148,4 @@ export {
|
|
|
148
148
|
computeSessionHash,
|
|
149
149
|
applyDynamicContext
|
|
150
150
|
};
|
|
151
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-IW46BUOP.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runAgentTurn
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HWHWXLM5.js";
|
|
4
4
|
import {
|
|
5
5
|
executeSubAgent,
|
|
6
6
|
getToolRegistryForAgent
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JDWJ2PJJ.js";
|
|
8
8
|
import {
|
|
9
9
|
TurnMetrics,
|
|
10
10
|
createMessageStartEvent
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-IQFPRQWM.js";
|
|
12
12
|
import {
|
|
13
13
|
checkAborted,
|
|
14
14
|
decodeUtf8,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
loadProjectWorkflows,
|
|
28
28
|
loadUserWorkflows,
|
|
29
29
|
normalizeWorkflowScope
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-AS7KAH66.js";
|
|
31
31
|
import {
|
|
32
32
|
getCurrentContextWindowId,
|
|
33
33
|
getEventStore
|
|
@@ -67,13 +67,13 @@ import { spawn } from "child_process";
|
|
|
67
67
|
function getGitDiffFiles(cwd) {
|
|
68
68
|
return new Promise((resolve) => {
|
|
69
69
|
const env = gitSpawnEnv();
|
|
70
|
-
const diffProc = spawn("git", ["diff", "--name-status", "HEAD"], {
|
|
70
|
+
const diffProc = spawn("git", ["diff", "--ignore-submodules=none", "--name-status", "HEAD"], {
|
|
71
71
|
cwd,
|
|
72
72
|
env,
|
|
73
73
|
stdio: ["ignore", "pipe", "pipe"],
|
|
74
74
|
windowsHide: true
|
|
75
75
|
});
|
|
76
|
-
const statusProc = spawn("git", ["status", "--porcelain"], {
|
|
76
|
+
const statusProc = spawn("git", ["status", "--porcelain", "--ignore-submodules=none"], {
|
|
77
77
|
cwd,
|
|
78
78
|
env,
|
|
79
79
|
stdio: ["ignore", "pipe", "pipe"],
|
|
@@ -1002,4 +1002,4 @@ export {
|
|
|
1002
1002
|
abortRunnerRun,
|
|
1003
1003
|
launchWorkflowRun
|
|
1004
1004
|
};
|
|
1005
|
-
//# sourceMappingURL=chunk-
|
|
1005
|
+
//# sourceMappingURL=chunk-JDBIR2J7.js.map
|