openfox 2.0.0-beta.4 → 2.0.0-beta.6
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/dist/{chat-handler-IUWEBZG7.js → chat-handler-27FY5TEH.js} +15 -29
- package/dist/{chunk-WBYS7AQN.js → chunk-3FFHHYWP.js} +178 -99
- package/dist/{chunk-HGAMIPFO.js → chunk-7FDY3EOH.js} +18 -176
- package/dist/{chunk-CEZNMLOO.js → chunk-7TTEGAO6.js} +12 -13
- package/dist/{chunk-FQLK5GL5.js → chunk-BVHFMAVN.js} +1 -1
- package/dist/{chunk-HW3U4XSZ.js → chunk-CDDMHSZF.js} +4 -4
- package/dist/{chunk-HHAJ3QF6.js → chunk-EMJGF3A7.js} +9 -24
- package/dist/{chunk-KEF4O3UM.js → chunk-FRCLNAE2.js} +2952 -3256
- package/dist/{chunk-RF2JGDSS.js → chunk-IGSZUXQP.js} +3 -3
- package/dist/{chunk-HLZV4S2I.js → chunk-NPHYEUYE.js} +127 -35
- package/dist/{chunk-NNEHZT3V.js → chunk-QUSUEN5R.js} +3 -3
- package/dist/{chunk-EYCCASW3.js → chunk-R3EK3ODJ.js} +6 -6
- package/dist/{chunk-7IKUIYFZ.js → chunk-RBJ25FIR.js} +135 -147
- package/dist/{chunk-PSJIT5LZ.js → chunk-RFNEDBVO.js} +4 -4
- package/dist/chunk-RI6GAMNP.js +13 -0
- package/dist/{chunk-26DZZZDC.js → chunk-XJEOP6XU.js} +5 -11
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/compactor-TDNRM3A7.js +9 -0
- package/dist/{config-YU7NYZYG.js → config-VBBMTXJZ.js} +5 -6
- package/dist/{events-YO52472Q.js → events-PQ3KTI5H.js} +8 -8
- package/dist/{folding-K5L6M4WK.js → folding-CXORTBAU.js} +2 -3
- package/dist/{orchestrator-F75DNQKQ.js → orchestrator-QDCVUBCL.js} +18 -23
- package/dist/package.json +1 -1
- package/dist/{processor-FTEASNGS.js → processor-K4B7QRO2.js} +8 -10
- package/dist/{protocol-K62EPEGS.js → protocol-CN24IKQN.js} +3 -5
- package/dist/{protocol-BQ12Aw5J.d.ts → protocol-De-Pzgry.d.ts} +12 -38
- package/dist/{provider-HTJEB3ON.js → provider-NRWSSO55.js} +9 -10
- package/dist/{serve-CEQ2QMM5.js → serve-J6EM3G6N.js} +25 -27
- package/dist/server/index.d.ts +1 -6
- package/dist/server/index.js +15 -17
- package/dist/{settings-VRAOAPLA.js → settings-6XX56F3F.js} +2 -2
- package/dist/shared/index.d.ts +2 -2
- package/dist/shared/index.js +1 -1
- package/dist/{tools-OPEU2E5M.js → tools-GCANYSB7.js} +12 -15
- package/dist/web/assets/{index-bDyDeCAz.css → index-aa3jRAZ9.css} +2 -2
- package/dist/web/assets/index-ntDiC8b_.js +299 -0
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/dist/workflow-defaults/default.workflow.json +3 -3
- package/package.json +1 -1
- package/dist/auto-compaction-A3PIMGLF.js +0 -28
- package/dist/chunk-CGZHLM3K.js +0 -70
- package/dist/chunk-MCPID4EJ.js +0 -28
- package/dist/chunk-SZKEGZIB.js +0 -140
- package/dist/optimize-storage-2N6BY5KZ.js +0 -7
- package/dist/runtime-config-NPSPMRDA.js +0 -9
- package/dist/vision-fallback-3MIZZ6NQ.js +0 -22
- package/dist/web/assets/index-ZTEHxmVW.js +0 -317
- /package/dist/web/{workbox-7fc22fbe.js → workbox-8c29f6e4.js} +0 -0
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
computeDynamicContextHash,
|
|
3
|
+
injectWorkflowKickoffIfNeeded,
|
|
4
|
+
runAgentTurn,
|
|
4
5
|
runChatTurn
|
|
5
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RBJ25FIR.js";
|
|
6
7
|
import {
|
|
8
|
+
COMPACTION_PROMPT,
|
|
7
9
|
TurnMetrics,
|
|
8
10
|
agentExists,
|
|
11
|
+
buildBasePrompt,
|
|
9
12
|
buildTopLevelSystemPrompt,
|
|
10
13
|
checkAborted,
|
|
11
|
-
|
|
14
|
+
consumeStreamGenerator,
|
|
15
|
+
createChatDoneEvent,
|
|
16
|
+
createMessageDoneEvent,
|
|
12
17
|
createMessageStartEvent,
|
|
13
18
|
createToolRegistry,
|
|
14
19
|
deleteAgent,
|
|
@@ -21,6 +26,7 @@ import {
|
|
|
21
26
|
findAgentById,
|
|
22
27
|
findSkillById,
|
|
23
28
|
getAllInstructions,
|
|
29
|
+
getConversationMessages,
|
|
24
30
|
getDefaultAgentIds,
|
|
25
31
|
getDefaultIds,
|
|
26
32
|
getDefaultSkillIds,
|
|
@@ -42,44 +48,24 @@ import {
|
|
|
42
48
|
loadProjectSkills,
|
|
43
49
|
loadUserAgents,
|
|
44
50
|
loadUserSkills,
|
|
51
|
+
loadVisionModelFromGlobalConfig,
|
|
45
52
|
pathExists,
|
|
46
|
-
|
|
53
|
+
processContextImages,
|
|
47
54
|
saveAgent,
|
|
48
55
|
saveAgentToProject,
|
|
49
56
|
saveItemToDir,
|
|
50
57
|
saveSkill,
|
|
51
58
|
saveSkillToProject,
|
|
52
59
|
skillExists,
|
|
53
|
-
spawnShellProcess
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
EventEmitter,
|
|
57
|
-
provideAnswer
|
|
58
|
-
} from "./chunk-BJYPTN5S.js";
|
|
59
|
-
import {
|
|
60
|
-
getProject
|
|
61
|
-
} from "./chunk-XAMAYRDA.js";
|
|
60
|
+
spawnShellProcess,
|
|
61
|
+
streamLLMPure
|
|
62
|
+
} from "./chunk-FRCLNAE2.js";
|
|
62
63
|
import {
|
|
63
64
|
getPathSeparator,
|
|
64
65
|
getPlatformShell,
|
|
65
66
|
isAbsolutePath,
|
|
66
67
|
onProcessEvent
|
|
67
68
|
} from "./chunk-PBGOZMVY.js";
|
|
68
|
-
import {
|
|
69
|
-
createProviderManager,
|
|
70
|
-
parseDefaultModelSelection
|
|
71
|
-
} from "./chunk-RF2JGDSS.js";
|
|
72
|
-
import {
|
|
73
|
-
SessionNotFoundError,
|
|
74
|
-
createLLMClient,
|
|
75
|
-
detectModel,
|
|
76
|
-
getLlmStatus
|
|
77
|
-
} from "./chunk-HHAJ3QF6.js";
|
|
78
|
-
import {
|
|
79
|
-
detectBackend,
|
|
80
|
-
getBackendDisplayName,
|
|
81
|
-
getModelProfile
|
|
82
|
-
} from "./chunk-HGAMIPFO.js";
|
|
83
69
|
import {
|
|
84
70
|
createSession,
|
|
85
71
|
deleteSession,
|
|
@@ -95,24 +81,24 @@ import {
|
|
|
95
81
|
emitSessionInitialized,
|
|
96
82
|
emitUserMessage,
|
|
97
83
|
getCurrentContextWindowId,
|
|
84
|
+
getCurrentWindowMessageOptions,
|
|
98
85
|
getEventStore,
|
|
86
|
+
getRuntimeConfig,
|
|
99
87
|
getSession,
|
|
100
88
|
getSessionState,
|
|
101
89
|
initEventStore,
|
|
102
90
|
listSessions,
|
|
103
91
|
listSessionsByProject,
|
|
92
|
+
setRuntimeConfig,
|
|
104
93
|
updateSessionDangerLevel,
|
|
105
94
|
updateSessionMetadata,
|
|
106
95
|
updateSessionProvider,
|
|
107
96
|
updateSessionRunning
|
|
108
|
-
} from "./chunk-
|
|
109
|
-
import {
|
|
110
|
-
initDatabase
|
|
111
|
-
} from "./chunk-FBGWG4N6.js";
|
|
97
|
+
} from "./chunk-NPHYEUYE.js";
|
|
112
98
|
import {
|
|
113
99
|
buildMessagesFromStoredEvents,
|
|
114
100
|
foldPendingConfirmations
|
|
115
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-XJEOP6XU.js";
|
|
116
102
|
import {
|
|
117
103
|
createChatErrorMessage,
|
|
118
104
|
createChatMessageMessage,
|
|
@@ -127,24 +113,46 @@ import {
|
|
|
127
113
|
parseClientMessage,
|
|
128
114
|
serializeServerMessage,
|
|
129
115
|
storedEventToServerMessage
|
|
130
|
-
} from "./chunk-
|
|
116
|
+
} from "./chunk-7TTEGAO6.js";
|
|
117
|
+
import {
|
|
118
|
+
EventEmitter,
|
|
119
|
+
provideAnswer
|
|
120
|
+
} from "./chunk-BJYPTN5S.js";
|
|
121
|
+
import {
|
|
122
|
+
getProject
|
|
123
|
+
} from "./chunk-XAMAYRDA.js";
|
|
124
|
+
import {
|
|
125
|
+
initDatabase
|
|
126
|
+
} from "./chunk-FBGWG4N6.js";
|
|
131
127
|
import {
|
|
132
128
|
computeSessionStats
|
|
133
129
|
} from "./chunk-VUQCQXXJ.js";
|
|
134
130
|
import {
|
|
135
131
|
createServerMessage
|
|
136
|
-
} from "./chunk-
|
|
132
|
+
} from "./chunk-BVHFMAVN.js";
|
|
137
133
|
import {
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
createProviderManager,
|
|
135
|
+
parseDefaultModelSelection
|
|
136
|
+
} from "./chunk-IGSZUXQP.js";
|
|
140
137
|
import {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
138
|
+
SessionNotFoundError,
|
|
139
|
+
createLLMClient,
|
|
140
|
+
detectModel,
|
|
141
|
+
getLlmStatus
|
|
142
|
+
} from "./chunk-EMJGF3A7.js";
|
|
143
|
+
import {
|
|
144
|
+
detectBackend,
|
|
145
|
+
getBackendDisplayName,
|
|
146
|
+
getModelProfile,
|
|
147
|
+
modelSupportsVision
|
|
148
|
+
} from "./chunk-7FDY3EOH.js";
|
|
144
149
|
import {
|
|
145
150
|
logger,
|
|
146
151
|
setLogLevel
|
|
147
152
|
} from "./chunk-K44MW7JJ.js";
|
|
153
|
+
import {
|
|
154
|
+
getGlobalConfigDir
|
|
155
|
+
} from "./chunk-CQGTEGKL.js";
|
|
148
156
|
|
|
149
157
|
// src/server/index.ts
|
|
150
158
|
import express from "express";
|
|
@@ -2041,7 +2049,7 @@ function emitWorkflowMessage(eventStore, sessionId, content, windowOptions, onMe
|
|
|
2041
2049
|
}
|
|
2042
2050
|
return msgId;
|
|
2043
2051
|
}
|
|
2044
|
-
function
|
|
2052
|
+
function getCurrentWindowMessageOptions2(sessionId) {
|
|
2045
2053
|
const contextWindowId = getCurrentContextWindowId(sessionId);
|
|
2046
2054
|
return contextWindowId ? { contextWindowId } : void 0;
|
|
2047
2055
|
}
|
|
@@ -2087,7 +2095,7 @@ async function executeWorkflow(workflow, options, subGroup) {
|
|
|
2087
2095
|
}
|
|
2088
2096
|
}
|
|
2089
2097
|
const startMsgId = crypto.randomUUID();
|
|
2090
|
-
const startWindowOpts =
|
|
2098
|
+
const startWindowOpts = getCurrentWindowMessageOptions2(sessionId);
|
|
2091
2099
|
eventStore.append(
|
|
2092
2100
|
sessionId,
|
|
2093
2101
|
createMessageStartEvent(
|
|
@@ -2129,7 +2137,7 @@ async function executeWorkflow(workflow, options, subGroup) {
|
|
|
2129
2137
|
};
|
|
2130
2138
|
}
|
|
2131
2139
|
const session = sessionManager.requireSession(sessionId);
|
|
2132
|
-
const currentWindowMessageOptions =
|
|
2140
|
+
const currentWindowMessageOptions = getCurrentWindowMessageOptions2(sessionId);
|
|
2133
2141
|
const criteriaEntries = session.metadataEntries["criteria"] ?? [];
|
|
2134
2142
|
const templateCtx = {
|
|
2135
2143
|
workdir: session.workdir,
|
|
@@ -2191,22 +2199,36 @@ async function executeWorkflow(workflow, options, subGroup) {
|
|
|
2191
2199
|
emitWorkflowMessage(eventStore, sessionId, nudgeContent, currentWindowMessageOptions, onMessage);
|
|
2192
2200
|
}
|
|
2193
2201
|
const turnMetrics = new TurnMetrics();
|
|
2194
|
-
const
|
|
2202
|
+
const es = getEventStore();
|
|
2203
|
+
const append = (event) => es.append(sessionId, event);
|
|
2204
|
+
let stepDoneCalled = false;
|
|
2205
|
+
const agentResult = await runAgentTurn(
|
|
2195
2206
|
{
|
|
2196
2207
|
sessionManager,
|
|
2197
2208
|
sessionId,
|
|
2198
2209
|
llmClient,
|
|
2199
|
-
injectStepDone: true,
|
|
2200
2210
|
...options.statsIdentity ? { statsIdentity: options.statsIdentity } : {},
|
|
2201
|
-
...!firstEntryForStep.has(step.id) && !agentStep.prompt && options.injectBuilderKickoff === true ? { injectBuilderKickoff: true } : {},
|
|
2202
2211
|
...signal ? { signal } : {},
|
|
2203
2212
|
...onMessage ? { onMessage } : {}
|
|
2204
2213
|
},
|
|
2205
|
-
turnMetrics
|
|
2214
|
+
turnMetrics,
|
|
2215
|
+
agentStep.agentId ?? "planner",
|
|
2216
|
+
append,
|
|
2217
|
+
{
|
|
2218
|
+
...!firstEntryForStep.has(step.id) && !agentStep.prompt && options.injectWorkflowKickoff === true ? { injectKickoff: () => injectWorkflowKickoffIfNeeded(sessionManager, sessionId, es) } : {},
|
|
2219
|
+
onToolExecuted: (toolCall, toolResult) => {
|
|
2220
|
+
if (toolCall.name === "step_done" && toolResult.success) {
|
|
2221
|
+
stepDoneCalled = true;
|
|
2222
|
+
}
|
|
2223
|
+
if (toolResult.success && ["write_file", "edit_file"].includes(toolCall.name)) {
|
|
2224
|
+
const path = toolCall.arguments["path"];
|
|
2225
|
+
sessionManager.addModifiedFile(sessionId, path);
|
|
2226
|
+
}
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2206
2229
|
);
|
|
2207
2230
|
firstEntryForStep.add(step.id);
|
|
2208
2231
|
const agentReturnValue = agentResult.returnValueResult ?? "completed";
|
|
2209
|
-
const stepDoneCalled = agentResult.stepDoneCalled ?? false;
|
|
2210
2232
|
lastStepOutput = {
|
|
2211
2233
|
...agentResult.returnValueContent ? { content: agentResult.returnValueContent } : {},
|
|
2212
2234
|
...agentResult.returnValueResult ? { result: agentResult.returnValueResult } : {},
|
|
@@ -2241,7 +2263,6 @@ async function executeWorkflow(workflow, options, subGroup) {
|
|
|
2241
2263
|
definitions: toolRegistry.definitions.filter((d) => d.type === "function" && d.function.name !== "step_done"),
|
|
2242
2264
|
execute: toolRegistry.execute
|
|
2243
2265
|
};
|
|
2244
|
-
const nudgeConfig = subStep.subAgentType === "verifier" && !subStep.nudgePrompt ? createVerifierNudgeConfig() : void 0;
|
|
2245
2266
|
const result = await executeSubAgent({
|
|
2246
2267
|
subAgentType: subStep.subAgentType,
|
|
2247
2268
|
prompt: resolvedPrompt,
|
|
@@ -2257,8 +2278,7 @@ async function executeWorkflow(workflow, options, subGroup) {
|
|
|
2257
2278
|
model: llmClient.getModel()
|
|
2258
2279
|
},
|
|
2259
2280
|
...signal ? { signal } : {},
|
|
2260
|
-
...onMessage ? { onMessage } : {}
|
|
2261
|
-
nudgeConfig
|
|
2281
|
+
...onMessage ? { onMessage } : {}
|
|
2262
2282
|
});
|
|
2263
2283
|
lastStepOutput = { content: result.content ?? "", ...result.result ? { result: result.result } : {} };
|
|
2264
2284
|
stepOutcome = { result: result.result ?? "success", output: lastStepOutput };
|
|
@@ -2414,6 +2434,76 @@ async function runOrchestrator(options) {
|
|
|
2414
2434
|
return executeWorkflow(workflow, options, options.subGroup);
|
|
2415
2435
|
}
|
|
2416
2436
|
|
|
2437
|
+
// src/server/context/auto-compaction.ts
|
|
2438
|
+
async function compactContext(options) {
|
|
2439
|
+
const { sessionManager, sessionId, llmClient, signal } = options;
|
|
2440
|
+
const eventStore = getEventStore();
|
|
2441
|
+
const session = sessionManager.requireSession(sessionId);
|
|
2442
|
+
const compactPromptMsgId = crypto.randomUUID();
|
|
2443
|
+
eventStore.append(
|
|
2444
|
+
sessionId,
|
|
2445
|
+
createMessageStartEvent(compactPromptMsgId, "user", COMPACTION_PROMPT, {
|
|
2446
|
+
...getCurrentWindowMessageOptions(sessionId) ?? {},
|
|
2447
|
+
isSystemGenerated: true,
|
|
2448
|
+
messageKind: "auto-prompt",
|
|
2449
|
+
metadata: { type: "compaction", name: "Compaction", color: "#64748b" }
|
|
2450
|
+
})
|
|
2451
|
+
);
|
|
2452
|
+
eventStore.append(sessionId, { type: "message.done", data: { messageId: compactPromptMsgId } });
|
|
2453
|
+
const rawEvents = eventStore.getEvents(sessionId);
|
|
2454
|
+
const modelVision = modelSupportsVision(llmClient.getModel());
|
|
2455
|
+
const runtimeConfig = getRuntimeConfig();
|
|
2456
|
+
const visionModel = runtimeConfig.llm.visionModel ? { baseUrl: runtimeConfig.llm.baseUrl, model: runtimeConfig.llm.visionModel, timeout: runtimeConfig.llm.timeout } : await loadVisionModelFromGlobalConfig();
|
|
2457
|
+
const { events: processedEvents } = await processContextImages(rawEvents, {
|
|
2458
|
+
modelSupportsVision: modelVision,
|
|
2459
|
+
...visionModel ? { visionModel } : {},
|
|
2460
|
+
onEvent: (event) => eventStore.append(sessionId, event)
|
|
2461
|
+
});
|
|
2462
|
+
const messages = getConversationMessages({ type: "toplevel", sessionId }, { events: processedEvents });
|
|
2463
|
+
const systemPrompt = buildBasePrompt(session.workdir);
|
|
2464
|
+
const assistantMsgId = crypto.randomUUID();
|
|
2465
|
+
const streamGen = streamLLMPure({
|
|
2466
|
+
messageId: assistantMsgId,
|
|
2467
|
+
systemPrompt,
|
|
2468
|
+
llmClient,
|
|
2469
|
+
messages,
|
|
2470
|
+
tools: [],
|
|
2471
|
+
toolChoice: "none",
|
|
2472
|
+
signal
|
|
2473
|
+
});
|
|
2474
|
+
const result = await consumeStreamGenerator(streamGen, (event) => {
|
|
2475
|
+
eventStore.append(sessionId, event);
|
|
2476
|
+
});
|
|
2477
|
+
const summary = result.content?.trim() || result.thinkingContent?.trim() || "";
|
|
2478
|
+
if (!summary) {
|
|
2479
|
+
eventStore.append(sessionId, {
|
|
2480
|
+
type: "chat.error",
|
|
2481
|
+
data: { error: "Compaction produced empty summary, continuing with full context", recoverable: true }
|
|
2482
|
+
});
|
|
2483
|
+
logger.warn("Compaction produced empty summary", { sessionId });
|
|
2484
|
+
return;
|
|
2485
|
+
}
|
|
2486
|
+
const closedWindowId = getCurrentContextWindowId(sessionId) ?? "";
|
|
2487
|
+
const newWindowId = crypto.randomUUID();
|
|
2488
|
+
eventStore.append(sessionId, {
|
|
2489
|
+
type: "context.compacted",
|
|
2490
|
+
data: { closedWindowId, newWindowId, beforeTokens: result.usage.promptTokens, afterTokens: 0, summary }
|
|
2491
|
+
});
|
|
2492
|
+
eventStore.append(sessionId, {
|
|
2493
|
+
type: "message.start",
|
|
2494
|
+
data: {
|
|
2495
|
+
messageId: assistantMsgId,
|
|
2496
|
+
role: "assistant",
|
|
2497
|
+
content: summary,
|
|
2498
|
+
contextWindowId: newWindowId,
|
|
2499
|
+
isCompactionSummary: true
|
|
2500
|
+
}
|
|
2501
|
+
});
|
|
2502
|
+
eventStore.append(sessionId, createMessageDoneEvent(assistantMsgId, {}));
|
|
2503
|
+
eventStore.append(sessionId, createChatDoneEvent(assistantMsgId, "complete"));
|
|
2504
|
+
logger.info("Manual compaction complete", { sessionId });
|
|
2505
|
+
}
|
|
2506
|
+
|
|
2417
2507
|
// src/server/auth.ts
|
|
2418
2508
|
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
|
|
2419
2509
|
import { join as join2, dirname as dirname2 } from "path";
|
|
@@ -2862,7 +2952,6 @@ function createWebSocketServer(httpServer, config4, getLLMClient, getActiveProvi
|
|
|
2862
2952
|
return;
|
|
2863
2953
|
}
|
|
2864
2954
|
sessionManager.clearMessageQueue(sessionId);
|
|
2865
|
-
sessionManager.setRunning(sessionId, false);
|
|
2866
2955
|
const contextState = sessionManager.getContextState(sessionId);
|
|
2867
2956
|
sendFn(sessionId, createContextStateMessage(contextState));
|
|
2868
2957
|
}
|
|
@@ -3157,17 +3246,14 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
|
|
|
3157
3246
|
send(createErrorMessage("SESSION_RUNNING", "Cannot compact while session is running", message.id));
|
|
3158
3247
|
return;
|
|
3159
3248
|
}
|
|
3160
|
-
const contextState = sessionManager.getContextState(sessionId);
|
|
3161
|
-
const tokensBefore = contextState.currentTokens;
|
|
3162
3249
|
send({ type: "ack", payload: {}, id: message.id });
|
|
3163
3250
|
(async () => {
|
|
3164
3251
|
try {
|
|
3165
|
-
await
|
|
3252
|
+
await compactContext({
|
|
3166
3253
|
sessionManager,
|
|
3167
3254
|
sessionId,
|
|
3168
3255
|
llmClient: llmForSession(sessionId),
|
|
3169
|
-
statsIdentity: statsForSession(sessionId)
|
|
3170
|
-
tokenCountAtClose: tokensBefore
|
|
3256
|
+
statsIdentity: statsForSession(sessionId)
|
|
3171
3257
|
});
|
|
3172
3258
|
const newContextState = sessionManager.getContextState(sessionId);
|
|
3173
3259
|
sendForSession(sessionId, createContextStateMessage(newContextState));
|
|
@@ -3302,10 +3388,6 @@ ${content}` : workflowInfo;
|
|
|
3302
3388
|
});
|
|
3303
3389
|
return;
|
|
3304
3390
|
}
|
|
3305
|
-
if (session.mode !== "builder") {
|
|
3306
|
-
send(createErrorMessage("INVALID_MODE", "Runner can only be launched in builder mode", message.id));
|
|
3307
|
-
return;
|
|
3308
|
-
}
|
|
3309
3391
|
const launchPayloadEarly = message.payload;
|
|
3310
3392
|
const pendingCriteria = session.criteria.filter((c) => c.status.type !== "passed");
|
|
3311
3393
|
if (!launchPayloadEarly?.workflowId && pendingCriteria.length === 0) {
|
|
@@ -3339,7 +3421,7 @@ ${content}` : workflowInfo;
|
|
|
3339
3421
|
sessionId,
|
|
3340
3422
|
llmClient: llmForSession(sessionId),
|
|
3341
3423
|
statsIdentity: statsForSession(sessionId),
|
|
3342
|
-
|
|
3424
|
+
injectWorkflowKickoff: !hasUserMessage,
|
|
3343
3425
|
...launchPayload?.workflowId ? { workflowId: launchPayload.workflowId } : {},
|
|
3344
3426
|
...launchPayload?.subGroup ? { subGroup: launchPayload.subGroup } : {},
|
|
3345
3427
|
...hasUserMessage ? {
|
|
@@ -3357,6 +3439,8 @@ ${content}` : workflowInfo;
|
|
|
3357
3439
|
}
|
|
3358
3440
|
logger.error("Runner error", { error, sessionId });
|
|
3359
3441
|
}).finally(() => {
|
|
3442
|
+
sessionManager.setRunning(sessionId, false);
|
|
3443
|
+
sendForSession(sessionId, createSessionRunningMessage(false));
|
|
3360
3444
|
cleanupAfterTurn(sessionId, controller, sendForSession, true);
|
|
3361
3445
|
});
|
|
3362
3446
|
break;
|
|
@@ -4756,7 +4840,6 @@ var SessionManager = class {
|
|
|
4756
4840
|
if (m.isSystemGenerated !== void 0) msg.isSystemGenerated = m.isSystemGenerated;
|
|
4757
4841
|
if (m.messageKind !== void 0) msg.messageKind = m.messageKind;
|
|
4758
4842
|
if (m.isCompactionSummary !== void 0) msg.isCompactionSummary = m.isCompactionSummary;
|
|
4759
|
-
if (m.promptContext !== void 0) msg.promptContext = m.promptContext;
|
|
4760
4843
|
return msg;
|
|
4761
4844
|
});
|
|
4762
4845
|
}
|
|
@@ -5174,7 +5257,6 @@ ${summary}`,
|
|
|
5174
5257
|
if (m.messageKind !== void 0) msg.messageKind = m.messageKind;
|
|
5175
5258
|
if (m.contextWindowId !== void 0) msg.contextWindowId = m.contextWindowId;
|
|
5176
5259
|
if (m.isCompactionSummary !== void 0) msg.isCompactionSummary = m.isCompactionSummary;
|
|
5177
|
-
if (m.promptContext !== void 0) msg.promptContext = m.promptContext;
|
|
5178
5260
|
return msg;
|
|
5179
5261
|
});
|
|
5180
5262
|
const isRunning = dbSession.isRunning;
|
|
@@ -5748,7 +5830,7 @@ import { Router as Router6 } from "express";
|
|
|
5748
5830
|
import { spawn as spawn5 } from "child_process";
|
|
5749
5831
|
|
|
5750
5832
|
// src/constants.ts
|
|
5751
|
-
var VERSION = "2.0.0-beta.
|
|
5833
|
+
var VERSION = "2.0.0-beta.6";
|
|
5752
5834
|
|
|
5753
5835
|
// src/server/routes/auto-update.ts
|
|
5754
5836
|
var updateInProgress = false;
|
|
@@ -6051,7 +6133,7 @@ async function createServerHandle(config4) {
|
|
|
6051
6133
|
res.json({ project });
|
|
6052
6134
|
});
|
|
6053
6135
|
app.get("/api/sessions", async (req, res) => {
|
|
6054
|
-
const { getRecentUserPromptsForSession } = await import("./events-
|
|
6136
|
+
const { getRecentUserPromptsForSession } = await import("./events-PQ3KTI5H.js");
|
|
6055
6137
|
const projectId = req.query["projectId"];
|
|
6056
6138
|
const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
|
|
6057
6139
|
const offset = parseInt(req.query["offset"]) || 0;
|
|
@@ -6084,9 +6166,8 @@ async function createServerHandle(config4) {
|
|
|
6084
6166
|
res.status(201).json({ session });
|
|
6085
6167
|
});
|
|
6086
6168
|
app.get("/api/sessions/:id", async (req, res) => {
|
|
6087
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6088
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
6089
|
-
const { stripPromptContextMessages } = await import("./optimize-storage-2N6BY5KZ.js");
|
|
6169
|
+
const { getEventStore: getEventStore2 } = await import("./events-PQ3KTI5H.js");
|
|
6170
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-CXORTBAU.js");
|
|
6090
6171
|
const session = sessionManager.getSession(req.params.id);
|
|
6091
6172
|
if (!session) {
|
|
6092
6173
|
return res.status(404).json({ error: "Session not found" });
|
|
@@ -6096,8 +6177,6 @@ async function createServerHandle(config4) {
|
|
|
6096
6177
|
const messages = buildMessagesFromStoredEvents2(events);
|
|
6097
6178
|
const contextState = sessionManager.getContextState(req.params.id);
|
|
6098
6179
|
const queueState = sessionManager.getQueueState(req.params.id);
|
|
6099
|
-
stripPromptContextMessages(session.messages);
|
|
6100
|
-
stripPromptContextMessages(messages);
|
|
6101
6180
|
res.json({ session, messages, contextState, queueState });
|
|
6102
6181
|
});
|
|
6103
6182
|
app.delete("/api/sessions/:id", (req, res) => {
|
|
@@ -6118,8 +6197,8 @@ async function createServerHandle(config4) {
|
|
|
6118
6197
|
res.json({ success: true });
|
|
6119
6198
|
});
|
|
6120
6199
|
app.post("/api/sessions/:id/provider", async (req, res) => {
|
|
6121
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6122
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
6200
|
+
const { getEventStore: getEventStore2 } = await import("./events-PQ3KTI5H.js");
|
|
6201
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-CXORTBAU.js");
|
|
6123
6202
|
const sessionId = req.params.id;
|
|
6124
6203
|
const session = sessionManager.getSession(sessionId);
|
|
6125
6204
|
if (!session) {
|
|
@@ -6130,7 +6209,7 @@ async function createServerHandle(config4) {
|
|
|
6130
6209
|
return res.status(400).json({ error: "providerId is required" });
|
|
6131
6210
|
}
|
|
6132
6211
|
sessionManager.setSessionProvider(sessionId, providerId, model ?? "auto");
|
|
6133
|
-
const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-
|
|
6212
|
+
const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-VBBMTXJZ.js");
|
|
6134
6213
|
const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
|
|
6135
6214
|
const updatedConfig = setDefaultModelSelection(globalConfig, providerId, model ?? "auto");
|
|
6136
6215
|
await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
|
|
@@ -6161,8 +6240,8 @@ async function createServerHandle(config4) {
|
|
|
6161
6240
|
res.json({ success: true });
|
|
6162
6241
|
});
|
|
6163
6242
|
app.put("/api/sessions/:id/mode", async (req, res) => {
|
|
6164
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6165
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
6243
|
+
const { getEventStore: getEventStore2 } = await import("./events-PQ3KTI5H.js");
|
|
6244
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-CXORTBAU.js");
|
|
6166
6245
|
const sessionId = req.params.id;
|
|
6167
6246
|
const session = sessionManager.getSession(sessionId);
|
|
6168
6247
|
if (!session) {
|
|
@@ -6218,14 +6297,14 @@ async function createServerHandle(config4) {
|
|
|
6218
6297
|
if (!callId || approved === void 0) {
|
|
6219
6298
|
return res.status(400).json({ error: "callId and approved are required" });
|
|
6220
6299
|
}
|
|
6221
|
-
const { providePathConfirmation } = await import("./tools-
|
|
6300
|
+
const { providePathConfirmation } = await import("./tools-GCANYSB7.js");
|
|
6222
6301
|
const result = providePathConfirmation(callId, approved, alwaysAllow);
|
|
6223
6302
|
if (!result.found) {
|
|
6224
6303
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
6225
6304
|
}
|
|
6226
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6227
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-
|
|
6228
|
-
const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-
|
|
6305
|
+
const { getEventStore: getEventStore2 } = await import("./events-PQ3KTI5H.js");
|
|
6306
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-CXORTBAU.js");
|
|
6307
|
+
const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-CN24IKQN.js");
|
|
6229
6308
|
const eventStore = getEventStore2();
|
|
6230
6309
|
const events = eventStore.getEvents(sessionId);
|
|
6231
6310
|
const messages = buildMessagesFromStoredEvents2(events);
|
|
@@ -6242,7 +6321,7 @@ async function createServerHandle(config4) {
|
|
|
6242
6321
|
if (!callId || !answer) {
|
|
6243
6322
|
return res.status(400).json({ error: "callId and answer are required" });
|
|
6244
6323
|
}
|
|
6245
|
-
const { provideAnswer: provideAnswer2 } = await import("./tools-
|
|
6324
|
+
const { provideAnswer: provideAnswer2 } = await import("./tools-GCANYSB7.js");
|
|
6246
6325
|
const found = provideAnswer2(callId, answer);
|
|
6247
6326
|
if (!found) {
|
|
6248
6327
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -6278,14 +6357,14 @@ async function createServerHandle(config4) {
|
|
|
6278
6357
|
if (!session) {
|
|
6279
6358
|
return res.status(404).json({ error: "Session not found" });
|
|
6280
6359
|
}
|
|
6281
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
6282
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
6360
|
+
const { stopSessionExecution } = await import("./chat-handler-27FY5TEH.js");
|
|
6361
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-GCANYSB7.js");
|
|
6283
6362
|
stopSessionExecution(sessionId, sessionManager);
|
|
6284
6363
|
abortSession(sessionId);
|
|
6285
6364
|
cancelQuestionsForSession(sessionId, "Session stopped by user");
|
|
6286
6365
|
cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
|
|
6287
6366
|
sessionManager.clearMessageQueue(sessionId);
|
|
6288
|
-
const eventStore = (await import("./events-
|
|
6367
|
+
const eventStore = (await import("./events-PQ3KTI5H.js")).getEventStore();
|
|
6289
6368
|
eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
|
|
6290
6369
|
res.json({ success: true });
|
|
6291
6370
|
});
|
|
@@ -6299,7 +6378,7 @@ async function createServerHandle(config4) {
|
|
|
6299
6378
|
if (typeof messageIndex !== "number" || messageIndex < 0) {
|
|
6300
6379
|
return res.status(400).json({ error: "messageIndex must be a non-negative number" });
|
|
6301
6380
|
}
|
|
6302
|
-
const { truncateSessionMessages } = await import("./events-
|
|
6381
|
+
const { truncateSessionMessages } = await import("./events-PQ3KTI5H.js");
|
|
6303
6382
|
truncateSessionMessages(sessionId, messageIndex);
|
|
6304
6383
|
res.json({ success: true });
|
|
6305
6384
|
});
|
|
@@ -6317,7 +6396,7 @@ async function createServerHandle(config4) {
|
|
|
6317
6396
|
if (!msg) {
|
|
6318
6397
|
return res.status(400).json({ error: "Message not found at this index" });
|
|
6319
6398
|
}
|
|
6320
|
-
const { truncateSessionMessages } = await import("./events-
|
|
6399
|
+
const { truncateSessionMessages } = await import("./events-PQ3KTI5H.js");
|
|
6321
6400
|
truncateSessionMessages(sessionId, messageIndex - 1);
|
|
6322
6401
|
sessionManager.queueMessage(sessionId, "asap", msg.content, msg.attachments, msg.messageKind);
|
|
6323
6402
|
res.json({ success: true });
|
|
@@ -6349,7 +6428,7 @@ async function createServerHandle(config4) {
|
|
|
6349
6428
|
res.json({ accepted: true });
|
|
6350
6429
|
});
|
|
6351
6430
|
app.get("/api/settings", async (req, res) => {
|
|
6352
|
-
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-
|
|
6431
|
+
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-6XX56F3F.js");
|
|
6353
6432
|
const keysParam = req.query["keys"];
|
|
6354
6433
|
if (!keysParam) {
|
|
6355
6434
|
return res.status(400).json({ error: "keys query parameter is required" });
|
|
@@ -6362,19 +6441,19 @@ async function createServerHandle(config4) {
|
|
|
6362
6441
|
res.json(result);
|
|
6363
6442
|
});
|
|
6364
6443
|
app.get("/api/settings/:key", async (req, res) => {
|
|
6365
|
-
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-
|
|
6444
|
+
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-6XX56F3F.js");
|
|
6366
6445
|
const key = req.params.key;
|
|
6367
6446
|
const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
|
|
6368
6447
|
res.json({ key, value });
|
|
6369
6448
|
});
|
|
6370
6449
|
app.get("/api/settings/:key", async (req, res) => {
|
|
6371
|
-
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-
|
|
6450
|
+
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-6XX56F3F.js");
|
|
6372
6451
|
const key = req.params.key;
|
|
6373
6452
|
const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
|
|
6374
6453
|
res.json({ key, value });
|
|
6375
6454
|
});
|
|
6376
6455
|
app.put("/api/settings/:key", async (req, res) => {
|
|
6377
|
-
const { setSetting } = await import("./settings-
|
|
6456
|
+
const { setSetting } = await import("./settings-6XX56F3F.js");
|
|
6378
6457
|
const key = req.params.key;
|
|
6379
6458
|
const { value } = req.body;
|
|
6380
6459
|
if (value === void 0) {
|
|
@@ -6389,7 +6468,7 @@ async function createServerHandle(config4) {
|
|
|
6389
6468
|
let visionFallback;
|
|
6390
6469
|
let globalWorkdir;
|
|
6391
6470
|
try {
|
|
6392
|
-
const { loadGlobalConfig, getVisionFallback } = await import("./config-
|
|
6471
|
+
const { loadGlobalConfig, getVisionFallback } = await import("./config-VBBMTXJZ.js");
|
|
6393
6472
|
const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
|
|
6394
6473
|
const fallback = getVisionFallback(globalConfig);
|
|
6395
6474
|
if (fallback) {
|
|
@@ -6468,7 +6547,7 @@ async function createServerHandle(config4) {
|
|
|
6468
6547
|
return res.status(400).json({ error: "name, url, and backend are required" });
|
|
6469
6548
|
}
|
|
6470
6549
|
try {
|
|
6471
|
-
const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-
|
|
6550
|
+
const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-VBBMTXJZ.js");
|
|
6472
6551
|
const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
|
|
6473
6552
|
const providerBackend = backend;
|
|
6474
6553
|
const configWithProvider = addProvider(globalConfig, {
|
|
@@ -6501,7 +6580,7 @@ async function createServerHandle(config4) {
|
|
|
6501
6580
|
app.post("/api/init/config", async (req, res) => {
|
|
6502
6581
|
const { workdir, visionFallback } = req.body;
|
|
6503
6582
|
try {
|
|
6504
|
-
const { loadGlobalConfig, saveGlobalConfig } = await import("./config-
|
|
6583
|
+
const { loadGlobalConfig, saveGlobalConfig } = await import("./config-VBBMTXJZ.js");
|
|
6505
6584
|
const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
|
|
6506
6585
|
const updatedConfig = {
|
|
6507
6586
|
...globalConfig,
|
|
@@ -6529,7 +6608,7 @@ async function createServerHandle(config4) {
|
|
|
6529
6608
|
});
|
|
6530
6609
|
app.delete("/api/providers/:id", async (req, res) => {
|
|
6531
6610
|
const { id } = req.params;
|
|
6532
|
-
const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-
|
|
6611
|
+
const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-VBBMTXJZ.js");
|
|
6533
6612
|
const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
|
|
6534
6613
|
const updatedConfig = removeProvider(globalConfig, id);
|
|
6535
6614
|
await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
|
|
@@ -6549,7 +6628,7 @@ async function createServerHandle(config4) {
|
|
|
6549
6628
|
return res.status(400).json({ error: result.error });
|
|
6550
6629
|
}
|
|
6551
6630
|
const llmClient = getLLMClient();
|
|
6552
|
-
const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-
|
|
6631
|
+
const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-VBBMTXJZ.js");
|
|
6553
6632
|
const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
|
|
6554
6633
|
const updatedConfig = setDefaultModelSelection(globalConfig, id, llmClient.getModel());
|
|
6555
6634
|
await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
|
|
@@ -6580,7 +6659,7 @@ async function createServerHandle(config4) {
|
|
|
6580
6659
|
if (!result.success) {
|
|
6581
6660
|
return res.status(400).json({ error: result.error });
|
|
6582
6661
|
}
|
|
6583
|
-
const { loadGlobalConfig, saveGlobalConfig } = await import("./config-
|
|
6662
|
+
const { loadGlobalConfig, saveGlobalConfig } = await import("./config-VBBMTXJZ.js");
|
|
6584
6663
|
const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
|
|
6585
6664
|
const updatedProviders = providerManager.getProviders();
|
|
6586
6665
|
const updatedConfig = {
|
|
@@ -6794,7 +6873,7 @@ async function createServerHandle(config4) {
|
|
|
6794
6873
|
providerManager
|
|
6795
6874
|
);
|
|
6796
6875
|
const wss = wssExports.wss;
|
|
6797
|
-
const { QueueProcessor } = await import("./processor-
|
|
6876
|
+
const { QueueProcessor } = await import("./processor-K4B7QRO2.js");
|
|
6798
6877
|
const queueProcessor = new QueueProcessor({
|
|
6799
6878
|
sessionManager,
|
|
6800
6879
|
providerManager,
|
|
@@ -6866,4 +6945,4 @@ export {
|
|
|
6866
6945
|
createServerHandle,
|
|
6867
6946
|
createServer
|
|
6868
6947
|
};
|
|
6869
|
-
//# sourceMappingURL=chunk-
|
|
6948
|
+
//# sourceMappingURL=chunk-3FFHHYWP.js.map
|