openfox 2.0.0-beta.10 → 2.0.0-beta.11
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-6COBLIDR.js → chat-handler-NMJCOCCB.js} +6 -6
- package/dist/{chunk-G4SACK4E.js → chunk-4RLDN2LL.js} +24 -25
- package/dist/{chunk-C75I2KZM.js → chunk-BU56QFHW.js} +25 -30
- package/dist/{chunk-LR5R7EEE.js → chunk-EQQDA4D3.js} +11 -5
- package/dist/{chunk-CDDMHSZF.js → chunk-EXYMWI7A.js} +3 -3
- package/dist/{chunk-XJEOP6XU.js → chunk-ITWVFGFV.js} +1 -30
- package/dist/{chunk-BE2S4NJX.js → chunk-LCRJWUW7.js} +2 -2
- package/dist/{chunk-NPHYEUYE.js → chunk-NSBYORD5.js} +51 -2
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{events-PQ3KTI5H.js → events-UGTGGFG3.js} +3 -3
- package/dist/{folding-CXORTBAU.js → folding-YOCGTZYH.js} +2 -2
- package/dist/{orchestrator-ZNGTMZ7W.js → orchestrator-75L5UGDU.js} +5 -5
- package/dist/package.json +1 -1
- package/dist/{processor-WMAU4C2N.js → processor-GHESQ2YV.js} +5 -5
- package/dist/{protocol-CDOV1pyc.d.ts → protocol-B9R1CUvt.d.ts} +1 -1
- package/dist/{serve-7VMTNIXT.js → serve-I6T7V62Z.js} +6 -6
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +5 -5
- package/dist/shared/index.d.ts +2 -2
- package/dist/{tools-CQGEU3JK.js → tools-D3WWIOQD.js} +4 -4
- package/dist/web/assets/{index-BF6jgTAb.js → index-tJDr1ODC.js} +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
|
@@ -5,18 +5,18 @@ import {
|
|
|
5
5
|
generateSessionName,
|
|
6
6
|
getSessionMessageCount,
|
|
7
7
|
needsNameGenerationCheck
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-EXYMWI7A.js";
|
|
9
9
|
import {
|
|
10
10
|
runChatTurn
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-BU56QFHW.js";
|
|
12
|
+
import "./chunk-EQQDA4D3.js";
|
|
13
13
|
import "./chunk-DL6ZILAF.js";
|
|
14
14
|
import "./chunk-PBGOZMVY.js";
|
|
15
15
|
import "./chunk-VRGRAQDG.js";
|
|
16
16
|
import {
|
|
17
17
|
getEventStore
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-NSBYORD5.js";
|
|
19
|
+
import "./chunk-ITWVFGFV.js";
|
|
20
20
|
import {
|
|
21
21
|
createChatMessageMessage,
|
|
22
22
|
createPhaseChangedMessage,
|
|
@@ -161,4 +161,4 @@ export {
|
|
|
161
161
|
startChatSession,
|
|
162
162
|
stopSessionExecution
|
|
163
163
|
};
|
|
164
|
-
//# sourceMappingURL=chat-handler-
|
|
164
|
+
//# sourceMappingURL=chat-handler-NMJCOCCB.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
injectWorkflowKickoffIfNeeded,
|
|
4
4
|
runAgentTurn,
|
|
5
5
|
runChatTurn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BU56QFHW.js";
|
|
7
7
|
import {
|
|
8
8
|
COMPACTION_PROMPT,
|
|
9
9
|
TurnMetrics,
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
skillExists,
|
|
60
60
|
spawnShellProcess,
|
|
61
61
|
streamLLMPure
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-EQQDA4D3.js";
|
|
63
63
|
import {
|
|
64
64
|
getPathSeparator,
|
|
65
65
|
getPlatformShell,
|
|
@@ -94,11 +94,11 @@ import {
|
|
|
94
94
|
updateSessionMetadata,
|
|
95
95
|
updateSessionProvider,
|
|
96
96
|
updateSessionRunning
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-NSBYORD5.js";
|
|
98
98
|
import {
|
|
99
99
|
buildMessagesFromStoredEvents,
|
|
100
100
|
foldPendingConfirmations
|
|
101
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-ITWVFGFV.js";
|
|
102
102
|
import {
|
|
103
103
|
createChatErrorMessage,
|
|
104
104
|
createChatMessageMessage,
|
|
@@ -5282,8 +5282,7 @@ ${summary}`,
|
|
|
5282
5282
|
metadataEntries: eventState.metadataEntries,
|
|
5283
5283
|
contextWindows: [],
|
|
5284
5284
|
// Derived from events, not stored separately
|
|
5285
|
-
executionState: eventState.
|
|
5286
|
-
lastModeWithReminder: eventState.lastModeWithReminder,
|
|
5285
|
+
executionState: eventState.cachedSystemPrompt || hasCachedPrompt ? {
|
|
5287
5286
|
cachedSystemPrompt: cachedData?.systemPrompt ?? eventState.cachedSystemPrompt,
|
|
5288
5287
|
dynamicContextHash: cachedData?.hash ?? eventState.dynamicContextHash
|
|
5289
5288
|
} : null
|
|
@@ -5831,7 +5830,7 @@ import { Router as Router6 } from "express";
|
|
|
5831
5830
|
import { spawn as spawn5 } from "child_process";
|
|
5832
5831
|
|
|
5833
5832
|
// src/constants.ts
|
|
5834
|
-
var VERSION = "2.0.0-beta.
|
|
5833
|
+
var VERSION = "2.0.0-beta.11";
|
|
5835
5834
|
|
|
5836
5835
|
// src/server/routes/auto-update.ts
|
|
5837
5836
|
var updateInProgress = false;
|
|
@@ -6134,7 +6133,7 @@ async function createServerHandle(config4) {
|
|
|
6134
6133
|
res.json({ project });
|
|
6135
6134
|
});
|
|
6136
6135
|
app.get("/api/sessions", async (req, res) => {
|
|
6137
|
-
const { getRecentUserPromptsForSession } = await import("./events-
|
|
6136
|
+
const { getRecentUserPromptsForSession } = await import("./events-UGTGGFG3.js");
|
|
6138
6137
|
const projectId = req.query["projectId"];
|
|
6139
6138
|
const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
|
|
6140
6139
|
const offset = parseInt(req.query["offset"]) || 0;
|
|
@@ -6167,8 +6166,8 @@ async function createServerHandle(config4) {
|
|
|
6167
6166
|
res.status(201).json({ session });
|
|
6168
6167
|
});
|
|
6169
6168
|
app.get("/api/sessions/:id", async (req, res) => {
|
|
6170
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6171
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
6169
|
+
const { getEventStore: getEventStore2 } = await import("./events-UGTGGFG3.js");
|
|
6170
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-YOCGTZYH.js");
|
|
6172
6171
|
const session = sessionManager.getSession(req.params.id);
|
|
6173
6172
|
if (!session) {
|
|
6174
6173
|
return res.status(404).json({ error: "Session not found" });
|
|
@@ -6198,8 +6197,8 @@ async function createServerHandle(config4) {
|
|
|
6198
6197
|
res.json({ success: true });
|
|
6199
6198
|
});
|
|
6200
6199
|
app.post("/api/sessions/:id/provider", async (req, res) => {
|
|
6201
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6202
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
6200
|
+
const { getEventStore: getEventStore2 } = await import("./events-UGTGGFG3.js");
|
|
6201
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-YOCGTZYH.js");
|
|
6203
6202
|
const sessionId = req.params.id;
|
|
6204
6203
|
const session = sessionManager.getSession(sessionId);
|
|
6205
6204
|
if (!session) {
|
|
@@ -6241,8 +6240,8 @@ async function createServerHandle(config4) {
|
|
|
6241
6240
|
res.json({ success: true });
|
|
6242
6241
|
});
|
|
6243
6242
|
app.put("/api/sessions/:id/mode", async (req, res) => {
|
|
6244
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6245
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
6243
|
+
const { getEventStore: getEventStore2 } = await import("./events-UGTGGFG3.js");
|
|
6244
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-YOCGTZYH.js");
|
|
6246
6245
|
const sessionId = req.params.id;
|
|
6247
6246
|
const session = sessionManager.getSession(sessionId);
|
|
6248
6247
|
if (!session) {
|
|
@@ -6298,13 +6297,13 @@ async function createServerHandle(config4) {
|
|
|
6298
6297
|
if (!callId || approved === void 0) {
|
|
6299
6298
|
return res.status(400).json({ error: "callId and approved are required" });
|
|
6300
6299
|
}
|
|
6301
|
-
const { providePathConfirmation } = await import("./tools-
|
|
6300
|
+
const { providePathConfirmation } = await import("./tools-D3WWIOQD.js");
|
|
6302
6301
|
const result = providePathConfirmation(callId, approved, alwaysAllow);
|
|
6303
6302
|
if (!result.found) {
|
|
6304
6303
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
6305
6304
|
}
|
|
6306
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
6307
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-
|
|
6305
|
+
const { getEventStore: getEventStore2 } = await import("./events-UGTGGFG3.js");
|
|
6306
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-YOCGTZYH.js");
|
|
6308
6307
|
const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-CN24IKQN.js");
|
|
6309
6308
|
const eventStore = getEventStore2();
|
|
6310
6309
|
const events = eventStore.getEvents(sessionId);
|
|
@@ -6322,7 +6321,7 @@ async function createServerHandle(config4) {
|
|
|
6322
6321
|
if (!callId || !answer) {
|
|
6323
6322
|
return res.status(400).json({ error: "callId and answer are required" });
|
|
6324
6323
|
}
|
|
6325
|
-
const { provideAnswer: provideAnswer2 } = await import("./tools-
|
|
6324
|
+
const { provideAnswer: provideAnswer2 } = await import("./tools-D3WWIOQD.js");
|
|
6326
6325
|
const found = provideAnswer2(callId, answer);
|
|
6327
6326
|
if (!found) {
|
|
6328
6327
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -6358,14 +6357,14 @@ async function createServerHandle(config4) {
|
|
|
6358
6357
|
if (!session) {
|
|
6359
6358
|
return res.status(404).json({ error: "Session not found" });
|
|
6360
6359
|
}
|
|
6361
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
6362
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
6360
|
+
const { stopSessionExecution } = await import("./chat-handler-NMJCOCCB.js");
|
|
6361
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-D3WWIOQD.js");
|
|
6363
6362
|
stopSessionExecution(sessionId, sessionManager);
|
|
6364
6363
|
abortSession(sessionId);
|
|
6365
6364
|
cancelQuestionsForSession(sessionId, "Session stopped by user");
|
|
6366
6365
|
cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
|
|
6367
6366
|
sessionManager.clearMessageQueue(sessionId);
|
|
6368
|
-
const eventStore = (await import("./events-
|
|
6367
|
+
const eventStore = (await import("./events-UGTGGFG3.js")).getEventStore();
|
|
6369
6368
|
eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
|
|
6370
6369
|
res.json({ success: true });
|
|
6371
6370
|
});
|
|
@@ -6379,7 +6378,7 @@ async function createServerHandle(config4) {
|
|
|
6379
6378
|
if (typeof messageIndex !== "number" || messageIndex < 0) {
|
|
6380
6379
|
return res.status(400).json({ error: "messageIndex must be a non-negative number" });
|
|
6381
6380
|
}
|
|
6382
|
-
const { truncateSessionMessages } = await import("./events-
|
|
6381
|
+
const { truncateSessionMessages } = await import("./events-UGTGGFG3.js");
|
|
6383
6382
|
truncateSessionMessages(sessionId, messageIndex);
|
|
6384
6383
|
res.json({ success: true });
|
|
6385
6384
|
});
|
|
@@ -6397,7 +6396,7 @@ async function createServerHandle(config4) {
|
|
|
6397
6396
|
if (!msg) {
|
|
6398
6397
|
return res.status(400).json({ error: "Message not found at this index" });
|
|
6399
6398
|
}
|
|
6400
|
-
const { truncateSessionMessages } = await import("./events-
|
|
6399
|
+
const { truncateSessionMessages } = await import("./events-UGTGGFG3.js");
|
|
6401
6400
|
truncateSessionMessages(sessionId, messageIndex - 1);
|
|
6402
6401
|
sessionManager.queueMessage(sessionId, "asap", msg.content, msg.attachments, msg.messageKind);
|
|
6403
6402
|
res.json({ success: true });
|
|
@@ -6895,7 +6894,7 @@ async function createServerHandle(config4) {
|
|
|
6895
6894
|
providerManager
|
|
6896
6895
|
);
|
|
6897
6896
|
const wss = wssExports.wss;
|
|
6898
|
-
const { QueueProcessor } = await import("./processor-
|
|
6897
|
+
const { QueueProcessor } = await import("./processor-GHESQ2YV.js");
|
|
6899
6898
|
const queueProcessor = new QueueProcessor({
|
|
6900
6899
|
sessionManager,
|
|
6901
6900
|
providerManager,
|
|
@@ -6967,4 +6966,4 @@ export {
|
|
|
6967
6966
|
createServerHandle,
|
|
6968
6967
|
createServer
|
|
6969
6968
|
};
|
|
6970
|
-
//# sourceMappingURL=chunk-
|
|
6969
|
+
//# sourceMappingURL=chunk-4RLDN2LL.js.map
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
WORKFLOW_KICKOFF_PROMPT,
|
|
5
5
|
assembleAgentRequest,
|
|
6
6
|
buildAgentReminder,
|
|
7
|
+
buildAgentSmallReminder,
|
|
7
8
|
createAssemblyResult,
|
|
8
9
|
createChatDoneEvent,
|
|
9
10
|
createMessageStartEvent,
|
|
@@ -16,16 +17,16 @@ import {
|
|
|
16
17
|
loadAllAgentsDefault,
|
|
17
18
|
processEventsForConversation,
|
|
18
19
|
runTopLevelAgentLoop
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-EQQDA4D3.js";
|
|
20
21
|
import {
|
|
21
22
|
getCurrentContextWindowId,
|
|
22
23
|
getCurrentWindowMessageOptions,
|
|
23
24
|
getEventStore,
|
|
24
25
|
getRuntimeConfig
|
|
25
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-NSBYORD5.js";
|
|
26
27
|
import {
|
|
27
28
|
buildSnapshotFromSessionState
|
|
28
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-ITWVFGFV.js";
|
|
29
30
|
import {
|
|
30
31
|
logger
|
|
31
32
|
} from "./chunk-K44MW7JJ.js";
|
|
@@ -166,28 +167,24 @@ async function runChatTurn(options) {
|
|
|
166
167
|
eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
|
|
167
168
|
}
|
|
168
169
|
}
|
|
169
|
-
function
|
|
170
|
+
function injectAgentReminder(sessionId, agentDef) {
|
|
170
171
|
const eventStore = getEventStore();
|
|
171
|
-
const events = eventStore.getEvents(sessionId);
|
|
172
|
-
return events.some((event) => {
|
|
173
|
-
if (event.type !== "message.start") return false;
|
|
174
|
-
const data = event.data;
|
|
175
|
-
return data.contextWindowId === windowId && data.messageKind === "auto-prompt" && typeof data.content === "string" && data.content.includes("<system-reminder>");
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
function injectModeReminderIfNeeded(sessionManager, sessionId, agentId, allAgents, _onMessage) {
|
|
179
|
-
const eventStore = getEventStore();
|
|
180
|
-
const session = sessionManager.requireSession(sessionId);
|
|
181
172
|
const currentWindowId = getCurrentContextWindowId(sessionId);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
173
|
+
let latestAgentName;
|
|
174
|
+
const events = eventStore.getAllEvents(sessionId);
|
|
175
|
+
for (let i = events.length - 1; i >= 0; i--) {
|
|
176
|
+
const event = events[i];
|
|
177
|
+
if (event.type === "message.start") {
|
|
178
|
+
const data = event.data;
|
|
179
|
+
if (data.isSystemGenerated && data.metadata?.type === "agent" && (data.contextWindowId === currentWindowId || !currentWindowId && !data.contextWindowId)) {
|
|
180
|
+
latestAgentName = data.metadata.name;
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
186
183
|
}
|
|
187
184
|
}
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
const
|
|
185
|
+
const currentAgentName = agentDef.metadata.name ?? agentDef.metadata.id;
|
|
186
|
+
const isSmallReminder = latestAgentName === currentAgentName;
|
|
187
|
+
const content = isSmallReminder ? buildAgentSmallReminder(currentAgentName) : buildAgentReminder(agentDef);
|
|
191
188
|
const reminderMsgId = crypto.randomUUID();
|
|
192
189
|
const currentWindowMessageOptions = currentWindowId ? { contextWindowId: currentWindowId } : void 0;
|
|
193
190
|
eventStore.append(sessionId, {
|
|
@@ -195,14 +192,15 @@ function injectModeReminderIfNeeded(sessionManager, sessionId, agentId, allAgent
|
|
|
195
192
|
data: {
|
|
196
193
|
messageId: reminderMsgId,
|
|
197
194
|
role: "user",
|
|
198
|
-
content
|
|
195
|
+
content,
|
|
199
196
|
...currentWindowMessageOptions ?? {},
|
|
200
197
|
isSystemGenerated: true,
|
|
201
198
|
messageKind: "auto-prompt",
|
|
202
199
|
metadata: {
|
|
203
200
|
type: "agent",
|
|
204
|
-
name:
|
|
205
|
-
color: agentDef.metadata.color ?? "#6b7280"
|
|
201
|
+
name: currentAgentName,
|
|
202
|
+
color: agentDef.metadata.color ?? "#6b7280",
|
|
203
|
+
kind: isSmallReminder ? "reminder" : "definition"
|
|
206
204
|
}
|
|
207
205
|
}
|
|
208
206
|
});
|
|
@@ -210,15 +208,12 @@ function injectModeReminderIfNeeded(sessionManager, sessionId, agentId, allAgent
|
|
|
210
208
|
type: "message.done",
|
|
211
209
|
data: { messageId: reminderMsgId }
|
|
212
210
|
});
|
|
213
|
-
sessionManager.updateExecutionState(sessionId, {
|
|
214
|
-
lastModeWithReminder: agentId
|
|
215
|
-
});
|
|
216
211
|
}
|
|
217
212
|
async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
|
|
218
213
|
const statsIdentity = resolveStatsIdentity(options);
|
|
219
214
|
const allAgents = await loadAllAgentsDefault();
|
|
220
|
-
injectModeReminderIfNeeded(options.sessionManager, options.sessionId, agentId, allAgents, options.onMessage);
|
|
221
215
|
const agentDef = findAgentById(agentId, allAgents) ?? findAgentById("planner", allAgents);
|
|
216
|
+
injectAgentReminder(options.sessionId, agentDef);
|
|
222
217
|
const subAgentDefs = getSubAgents(allAgents);
|
|
223
218
|
const { content: instructionContent } = await getAllInstructions(
|
|
224
219
|
options.sessionManager.requireSession(options.sessionId).workdir,
|
|
@@ -266,7 +261,7 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
|
|
|
266
261
|
},
|
|
267
262
|
getToolRegistry: () => getToolRegistryForAgent(agentDef),
|
|
268
263
|
getConversationMessages: buildGetConversationMessages(options.sessionId, options.llmClient, append),
|
|
269
|
-
|
|
264
|
+
injectAgentReminder: () => injectAgentReminder(options.sessionId, agentDef),
|
|
270
265
|
...callbacks?.injectKickoff ? { injectKickoff: callbacks.injectKickoff } : {},
|
|
271
266
|
...callbacks?.onToolExecuted ? { onToolExecuted: callbacks.onToolExecuted } : {}
|
|
272
267
|
},
|
|
@@ -317,4 +312,4 @@ export {
|
|
|
317
312
|
runAgentTurn,
|
|
318
313
|
injectWorkflowKickoffIfNeeded
|
|
319
314
|
};
|
|
320
|
-
//# sourceMappingURL=chunk-
|
|
315
|
+
//# sourceMappingURL=chunk-BU56QFHW.js.map
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
getCurrentWindowMessageOptions,
|
|
20
20
|
getEventStore,
|
|
21
21
|
getRuntimeConfig
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-NSBYORD5.js";
|
|
23
23
|
import {
|
|
24
24
|
buildContextMessagesFromEventHistory,
|
|
25
25
|
foldContextState,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
handleToolCall,
|
|
29
29
|
handleToolResult,
|
|
30
30
|
stripOrphanedToolCalls
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-ITWVFGFV.js";
|
|
32
32
|
import {
|
|
33
33
|
createChatDoneMessage,
|
|
34
34
|
createChatMessageMessage,
|
|
@@ -1955,6 +1955,11 @@ function buildAgentReminder(agentDef) {
|
|
|
1955
1955
|
${agentDef.prompt}${toolPermissions}
|
|
1956
1956
|
</system-reminder>`;
|
|
1957
1957
|
}
|
|
1958
|
+
function buildAgentSmallReminder(name) {
|
|
1959
|
+
return `<system-reminder>
|
|
1960
|
+
Reminder: you are in '${name}' mode.
|
|
1961
|
+
</system-reminder>`;
|
|
1962
|
+
}
|
|
1958
1963
|
var WORKFLOW_KICKOFF_PROMPT = (criteriaCount) => `Implement the task and make sure you fulfil the ${criteriaCount} criteria.`;
|
|
1959
1964
|
var COMPACTION_PROMPT = `You are a helpful AI assistant tasked with summarizing conversations for continuation.
|
|
1960
1965
|
|
|
@@ -3100,7 +3105,7 @@ ${COMPACTION_PROMPT}`,
|
|
|
3100
3105
|
});
|
|
3101
3106
|
append(createMessageDoneEvent(assistantMsgId, { stats: turnMetrics.buildStats(statsIdentity, mode) }));
|
|
3102
3107
|
append(createChatDoneEvent(assistantMsgId, "complete"));
|
|
3103
|
-
config.
|
|
3108
|
+
config.injectAgentReminder?.();
|
|
3104
3109
|
compacting = false;
|
|
3105
3110
|
continue;
|
|
3106
3111
|
}
|
|
@@ -3730,7 +3735,7 @@ var callSubAgentTool = {
|
|
|
3730
3735
|
};
|
|
3731
3736
|
}
|
|
3732
3737
|
try {
|
|
3733
|
-
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-
|
|
3738
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-D3WWIOQD.js");
|
|
3734
3739
|
const toolRegistry = getToolRegistryForAgent2(agentDef);
|
|
3735
3740
|
const turnMetrics = new TurnMetrics();
|
|
3736
3741
|
const result = await executeSubAgent({
|
|
@@ -4738,6 +4743,7 @@ export {
|
|
|
4738
4743
|
buildBasePrompt,
|
|
4739
4744
|
buildTopLevelSystemPrompt,
|
|
4740
4745
|
buildAgentReminder,
|
|
4746
|
+
buildAgentSmallReminder,
|
|
4741
4747
|
WORKFLOW_KICKOFF_PROMPT,
|
|
4742
4748
|
COMPACTION_PROMPT,
|
|
4743
4749
|
streamLLMPure,
|
|
@@ -4781,4 +4787,4 @@ export {
|
|
|
4781
4787
|
getToolRegistryForAgent,
|
|
4782
4788
|
createToolRegistry
|
|
4783
4789
|
};
|
|
4784
|
-
//# sourceMappingURL=chunk-
|
|
4790
|
+
//# sourceMappingURL=chunk-EQQDA4D3.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getEventStore,
|
|
3
3
|
updateSessionMetadata
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NSBYORD5.js";
|
|
5
5
|
import {
|
|
6
6
|
buildMessagesFromStoredEvents,
|
|
7
7
|
foldPendingConfirmations
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ITWVFGFV.js";
|
|
9
9
|
import {
|
|
10
10
|
createContextStateMessage,
|
|
11
11
|
createSessionStateMessage
|
|
@@ -143,4 +143,4 @@ export {
|
|
|
143
143
|
needsNameGenerationCheck,
|
|
144
144
|
applyGeneratedSessionName
|
|
145
145
|
};
|
|
146
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-EXYMWI7A.js.map
|
|
@@ -621,30 +621,12 @@ function foldSessionState(events, initialWindowId, maxTokens, initialMessages) {
|
|
|
621
621
|
dynamicContextChanged: false
|
|
622
622
|
};
|
|
623
623
|
const contextState = baseContextState.compactionCount !== contextResult.compactionCount || baseContextState.maxTokens !== maxTokens ? { ...baseContextState, compactionCount: contextResult.compactionCount, maxTokens } : { ...baseContextState, maxTokens };
|
|
624
|
-
let messageReminderMode;
|
|
625
|
-
let snapshotReminderMode;
|
|
626
624
|
let cachedSystemPrompt;
|
|
627
625
|
let dynamicContextHash;
|
|
628
626
|
for (let i = events.length - 1; i >= 0; i--) {
|
|
629
627
|
const event = events[i];
|
|
630
|
-
if (event.type === "message.start") {
|
|
631
|
-
const data = event.data;
|
|
632
|
-
if (data.role === "user" && data.messageKind === "auto-prompt" && data.content?.includes("<system-reminder>")) {
|
|
633
|
-
if (data.content.includes("Plan Mode")) {
|
|
634
|
-
messageReminderMode = { seq: event.seq, mode: "planner" };
|
|
635
|
-
} else if (data.content.includes("Build Mode")) {
|
|
636
|
-
messageReminderMode = { seq: event.seq, mode: "builder" };
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
628
|
if (event.type === "turn.snapshot") {
|
|
641
629
|
const snapshotData = event.data;
|
|
642
|
-
if (snapshotData.lastModeWithReminder) {
|
|
643
|
-
snapshotReminderMode = {
|
|
644
|
-
seq: event.seq,
|
|
645
|
-
mode: snapshotData.lastModeWithReminder
|
|
646
|
-
};
|
|
647
|
-
}
|
|
648
630
|
if (snapshotData.cachedSystemPrompt && !cachedSystemPrompt) {
|
|
649
631
|
cachedSystemPrompt = snapshotData.cachedSystemPrompt;
|
|
650
632
|
}
|
|
@@ -656,14 +638,6 @@ function foldSessionState(events, initialWindowId, maxTokens, initialMessages) {
|
|
|
656
638
|
}
|
|
657
639
|
}
|
|
658
640
|
}
|
|
659
|
-
let lastModeWithReminder;
|
|
660
|
-
if (messageReminderMode && snapshotReminderMode) {
|
|
661
|
-
lastModeWithReminder = messageReminderMode.seq > snapshotReminderMode.seq ? messageReminderMode.mode : snapshotReminderMode.mode;
|
|
662
|
-
} else if (snapshotReminderMode) {
|
|
663
|
-
lastModeWithReminder = snapshotReminderMode.mode;
|
|
664
|
-
} else if (messageReminderMode) {
|
|
665
|
-
lastModeWithReminder = messageReminderMode.mode;
|
|
666
|
-
}
|
|
667
641
|
let sessionInit;
|
|
668
642
|
let sessionTitle;
|
|
669
643
|
const visionFallbacks = [];
|
|
@@ -758,7 +732,6 @@ function foldSessionState(events, initialWindowId, maxTokens, initialMessages) {
|
|
|
758
732
|
contextState,
|
|
759
733
|
currentContextWindowId: contextResult.currentContextWindowId,
|
|
760
734
|
readFiles: contextResult.readFiles,
|
|
761
|
-
...lastModeWithReminder !== void 0 && { lastModeWithReminder },
|
|
762
735
|
...cachedSystemPrompt !== void 0 && { cachedSystemPrompt },
|
|
763
736
|
...dynamicContextHash !== void 0 && { dynamicContextHash },
|
|
764
737
|
pendingConfirmations,
|
|
@@ -784,7 +757,6 @@ function buildSnapshot(foldedState, latestSeq, snapshotAt = Date.now()) {
|
|
|
784
757
|
currentContextWindowId: foldedState.currentContextWindowId,
|
|
785
758
|
todos: foldedState.todos,
|
|
786
759
|
readFiles: foldedState.readFiles,
|
|
787
|
-
...foldedState.lastModeWithReminder !== void 0 && { lastModeWithReminder: foldedState.lastModeWithReminder },
|
|
788
760
|
...foldedState.cachedSystemPrompt !== void 0 && { cachedSystemPrompt: foldedState.cachedSystemPrompt },
|
|
789
761
|
...foldedState.dynamicContextHash !== void 0 && { dynamicContextHash: foldedState.dynamicContextHash },
|
|
790
762
|
snapshotSeq: latestSeq,
|
|
@@ -841,7 +813,6 @@ function buildSnapshotFromSessionState(input) {
|
|
|
841
813
|
snapshotSeq: latestSeq,
|
|
842
814
|
snapshotAt,
|
|
843
815
|
...foldedState.sessionInit !== void 0 && { sessionInit: foldedState.sessionInit },
|
|
844
|
-
...foldedState.lastModeWithReminder !== void 0 && { lastModeWithReminder: foldedState.lastModeWithReminder },
|
|
845
816
|
...input.cachedSystemPrompt !== void 0 ? { cachedSystemPrompt: input.cachedSystemPrompt } : foldedState.cachedSystemPrompt !== void 0 ? { cachedSystemPrompt: foldedState.cachedSystemPrompt } : {},
|
|
846
817
|
...input.dynamicContextHash !== void 0 ? { dynamicContextHash: input.dynamicContextHash } : foldedState.dynamicContextHash !== void 0 ? { dynamicContextHash: foldedState.dynamicContextHash } : {}
|
|
847
818
|
};
|
|
@@ -885,4 +856,4 @@ export {
|
|
|
885
856
|
getMessagesForWindow,
|
|
886
857
|
buildContextMessagesFromMessages
|
|
887
858
|
};
|
|
888
|
-
//# sourceMappingURL=chunk-
|
|
859
|
+
//# sourceMappingURL=chunk-ITWVFGFV.js.map
|
|
@@ -193,7 +193,7 @@ async function runCli(options) {
|
|
|
193
193
|
if (!configExists) {
|
|
194
194
|
await runNetworkSetup(mode);
|
|
195
195
|
}
|
|
196
|
-
const { runServe } = await import("./serve-
|
|
196
|
+
const { runServe } = await import("./serve-I6T7V62Z.js");
|
|
197
197
|
const serveOptions = { mode };
|
|
198
198
|
if (values.port) serveOptions.port = parseInt(values.port);
|
|
199
199
|
if (values["no-browser"] === true) serveOptions.openBrowser = false;
|
|
@@ -205,4 +205,4 @@ async function runCli(options) {
|
|
|
205
205
|
export {
|
|
206
206
|
runCli
|
|
207
207
|
};
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
208
|
+
//# sourceMappingURL=chunk-LCRJWUW7.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
foldContextState,
|
|
6
6
|
foldSessionState,
|
|
7
7
|
spreadOptionalMessageFields
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ITWVFGFV.js";
|
|
9
9
|
import {
|
|
10
10
|
getDatabase
|
|
11
11
|
} from "./chunk-FBGWG4N6.js";
|
|
@@ -263,6 +263,55 @@ var EventStore = class {
|
|
|
263
263
|
events
|
|
264
264
|
};
|
|
265
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* Get ALL events for a session, including synthetic events reconstructed
|
|
268
|
+
* from the latest snapshot's messages. This provides a unified view of the
|
|
269
|
+
* full event history even after cleanupOldEvents has deleted raw events.
|
|
270
|
+
*
|
|
271
|
+
* Synthetic events have seq=0 and are reconstructed as message.start +
|
|
272
|
+
* message.done pairs from snapshot messages. Real events since the snapshot
|
|
273
|
+
* keep their original seq numbers.
|
|
274
|
+
*/
|
|
275
|
+
getAllEvents(sessionId) {
|
|
276
|
+
const { snapshot, events } = this.getEventsSinceSnapshot(sessionId);
|
|
277
|
+
if (!snapshot) {
|
|
278
|
+
return events;
|
|
279
|
+
}
|
|
280
|
+
const syntheticEvents = [];
|
|
281
|
+
for (const msg of snapshot.messages) {
|
|
282
|
+
syntheticEvents.push({
|
|
283
|
+
seq: 0,
|
|
284
|
+
timestamp: msg.timestamp,
|
|
285
|
+
sessionId,
|
|
286
|
+
type: "message.start",
|
|
287
|
+
data: {
|
|
288
|
+
messageId: msg.id,
|
|
289
|
+
role: msg.role,
|
|
290
|
+
content: msg.content,
|
|
291
|
+
...msg.contextWindowId !== void 0 && { contextWindowId: msg.contextWindowId },
|
|
292
|
+
...msg.isSystemGenerated !== void 0 && { isSystemGenerated: msg.isSystemGenerated },
|
|
293
|
+
...msg.messageKind !== void 0 && { messageKind: msg.messageKind },
|
|
294
|
+
...msg.metadata !== void 0 && { metadata: msg.metadata },
|
|
295
|
+
...msg.subAgentId !== void 0 && { subAgentId: msg.subAgentId },
|
|
296
|
+
...msg.subAgentType !== void 0 && { subAgentType: msg.subAgentType },
|
|
297
|
+
...msg.isCompactionSummary !== void 0 && { isCompactionSummary: msg.isCompactionSummary },
|
|
298
|
+
...msg.attachments !== void 0 && { attachments: msg.attachments }
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
syntheticEvents.push({
|
|
302
|
+
seq: 0,
|
|
303
|
+
timestamp: msg.timestamp,
|
|
304
|
+
sessionId,
|
|
305
|
+
type: "message.done",
|
|
306
|
+
data: { messageId: msg.id }
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
return [...syntheticEvents, ...events].sort((a, b) => {
|
|
310
|
+
const tsDiff = a.timestamp - b.timestamp;
|
|
311
|
+
if (tsDiff !== 0) return tsDiff;
|
|
312
|
+
return a.seq - b.seq;
|
|
313
|
+
});
|
|
314
|
+
}
|
|
266
315
|
rowToStoredEvent(row) {
|
|
267
316
|
return {
|
|
268
317
|
seq: row.seq,
|
|
@@ -1373,4 +1422,4 @@ export {
|
|
|
1373
1422
|
compactContext,
|
|
1374
1423
|
getRecentUserPromptsForSession
|
|
1375
1424
|
};
|
|
1376
|
-
//# sourceMappingURL=chunk-
|
|
1425
|
+
//# sourceMappingURL=chunk-NSBYORD5.js.map
|
package/dist/cli/dev.js
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
isStoredEvent,
|
|
40
40
|
isTurnEvent,
|
|
41
41
|
truncateSessionMessages
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-NSBYORD5.js";
|
|
43
43
|
import {
|
|
44
44
|
buildContextMessagesFromEventHistory,
|
|
45
45
|
buildContextMessagesFromMessages,
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
foldTodos,
|
|
57
57
|
foldTurnEventsToSnapshotMessages,
|
|
58
58
|
getMessagesForWindow
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-ITWVFGFV.js";
|
|
60
60
|
import "./chunk-FBGWG4N6.js";
|
|
61
61
|
import "./chunk-K44MW7JJ.js";
|
|
62
62
|
export {
|
|
@@ -116,4 +116,4 @@ export {
|
|
|
116
116
|
isTurnEvent,
|
|
117
117
|
truncateSessionMessages
|
|
118
118
|
};
|
|
119
|
-
//# sourceMappingURL=events-
|
|
119
|
+
//# sourceMappingURL=events-UGTGGFG3.js.map
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
handleToolResult,
|
|
24
24
|
spreadOptionalMessageFields,
|
|
25
25
|
stripOrphanedToolCalls
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-ITWVFGFV.js";
|
|
27
27
|
export {
|
|
28
28
|
buildContextMessagesFromEventHistory,
|
|
29
29
|
buildContextMessagesFromMessages,
|
|
@@ -50,4 +50,4 @@ export {
|
|
|
50
50
|
spreadOptionalMessageFields,
|
|
51
51
|
stripOrphanedToolCalls
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=folding-
|
|
53
|
+
//# sourceMappingURL=folding-YOCGTZYH.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
injectWorkflowKickoffIfNeeded,
|
|
3
3
|
runAgentTurn,
|
|
4
4
|
runChatTurn
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-BU56QFHW.js";
|
|
6
6
|
import {
|
|
7
7
|
TurnMetrics,
|
|
8
8
|
createChatDoneEvent,
|
|
@@ -10,12 +10,12 @@ import {
|
|
|
10
10
|
createMessageStartEvent,
|
|
11
11
|
createToolCallEvent,
|
|
12
12
|
createToolResultEvent
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-EQQDA4D3.js";
|
|
14
14
|
import "./chunk-DL6ZILAF.js";
|
|
15
15
|
import "./chunk-PBGOZMVY.js";
|
|
16
16
|
import "./chunk-VRGRAQDG.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-NSBYORD5.js";
|
|
18
|
+
import "./chunk-ITWVFGFV.js";
|
|
19
19
|
import "./chunk-7TTEGAO6.js";
|
|
20
20
|
import "./chunk-BJYPTN5S.js";
|
|
21
21
|
import "./chunk-RFNEDBVO.js";
|
|
@@ -36,4 +36,4 @@ export {
|
|
|
36
36
|
runAgentTurn,
|
|
37
37
|
runChatTurn
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=orchestrator-
|
|
39
|
+
//# sourceMappingURL=orchestrator-75L5UGDU.js.map
|
package/dist/package.json
CHANGED
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
generateSessionName,
|
|
6
6
|
getSessionMessageCount,
|
|
7
7
|
needsNameGenerationCheck
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-EXYMWI7A.js";
|
|
9
9
|
import {
|
|
10
10
|
getEventStore
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-NSBYORD5.js";
|
|
12
|
+
import "./chunk-ITWVFGFV.js";
|
|
13
13
|
import {
|
|
14
14
|
createChatMessageMessage,
|
|
15
15
|
createSessionRunningMessage
|
|
@@ -176,7 +176,7 @@ var QueueProcessor = class {
|
|
|
176
176
|
backend: provider?.backend ?? llmClient.getBackend(),
|
|
177
177
|
model: llmClient.getModel()
|
|
178
178
|
};
|
|
179
|
-
const { runChatTurn } = await import("./orchestrator-
|
|
179
|
+
const { runChatTurn } = await import("./orchestrator-75L5UGDU.js");
|
|
180
180
|
const runChatTurnParams = buildRunChatTurnParams({
|
|
181
181
|
sessionManager,
|
|
182
182
|
sessionId,
|
|
@@ -220,4 +220,4 @@ var QueueProcessor = class {
|
|
|
220
220
|
export {
|
|
221
221
|
QueueProcessor
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=processor-
|
|
223
|
+
//# sourceMappingURL=processor-GHESQ2YV.js.map
|
|
@@ -238,6 +238,7 @@ interface Message {
|
|
|
238
238
|
type: string;
|
|
239
239
|
name: string;
|
|
240
240
|
color: string;
|
|
241
|
+
kind?: 'definition' | 'reminder';
|
|
241
242
|
};
|
|
242
243
|
}
|
|
243
244
|
interface ToolCall {
|
|
@@ -347,7 +348,6 @@ interface ExecutionState {
|
|
|
347
348
|
compactionCount: number;
|
|
348
349
|
startedAt: string;
|
|
349
350
|
lastActivityAt: string;
|
|
350
|
-
lastModeWithReminder?: string;
|
|
351
351
|
cachedSystemPrompt?: string;
|
|
352
352
|
dynamicContextHash?: string;
|
|
353
353
|
dynamicContextChanged?: boolean;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VERSION,
|
|
3
3
|
createServer
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4RLDN2LL.js";
|
|
5
5
|
import "./chunk-RI6GAMNP.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-BU56QFHW.js";
|
|
7
|
+
import "./chunk-EQQDA4D3.js";
|
|
8
8
|
import "./chunk-DL6ZILAF.js";
|
|
9
9
|
import "./chunk-PBGOZMVY.js";
|
|
10
10
|
import "./chunk-VRGRAQDG.js";
|
|
11
11
|
import {
|
|
12
12
|
loadConfig
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-NSBYORD5.js";
|
|
14
|
+
import "./chunk-ITWVFGFV.js";
|
|
15
15
|
import "./chunk-7TTEGAO6.js";
|
|
16
16
|
import "./chunk-BJYPTN5S.js";
|
|
17
17
|
import "./chunk-RFNEDBVO.js";
|
|
@@ -189,4 +189,4 @@ async function runServe(options) {
|
|
|
189
189
|
export {
|
|
190
190
|
runServe
|
|
191
191
|
};
|
|
192
|
-
//# sourceMappingURL=serve-
|
|
192
|
+
//# sourceMappingURL=serve-I6T7V62Z.js.map
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aN as ToolCall, c as Attachment, R as Diagnostic, am as Provider, ab as ModelConfig, az as Session, aI as SessionSummary, ai as Project, aD as SessionMode, aF as SessionPhase, M as Message, J as Criterion, L as CriterionStatus, a8 as MetadataEntry, av as QueuedMessage, F as ContextState, O as DangerLevel$1, ax as ServerMessage, aK as StatsIdentity, aQ as ToolResult, D as Config } from '../protocol-
|
|
1
|
+
import { aN as ToolCall, c as Attachment, R as Diagnostic, am as Provider, ab as ModelConfig, az as Session, aI as SessionSummary, ai as Project, aD as SessionMode, aF as SessionPhase, M as Message, J as Criterion, L as CriterionStatus, a8 as MetadataEntry, av as QueuedMessage, F as ContextState, O as DangerLevel$1, ax as ServerMessage, aK as StatsIdentity, aQ as ToolResult, D as Config } from '../protocol-B9R1CUvt.js';
|
|
2
2
|
import { Server } from 'node:http';
|
|
3
3
|
|
|
4
4
|
interface LLMMessage {
|
package/dist/server/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer,
|
|
3
3
|
createServerHandle
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-4RLDN2LL.js";
|
|
5
5
|
import "../chunk-RI6GAMNP.js";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-BU56QFHW.js";
|
|
7
|
+
import "../chunk-EQQDA4D3.js";
|
|
8
8
|
import "../chunk-DL6ZILAF.js";
|
|
9
9
|
import "../chunk-PBGOZMVY.js";
|
|
10
10
|
import "../chunk-VRGRAQDG.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-NSBYORD5.js";
|
|
12
|
+
import "../chunk-ITWVFGFV.js";
|
|
13
13
|
import "../chunk-7TTEGAO6.js";
|
|
14
14
|
import "../chunk-BJYPTN5S.js";
|
|
15
15
|
import "../chunk-RFNEDBVO.js";
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { M as Message, S as SessionStats } from '../protocol-
|
|
2
|
-
export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, c as Attachment, B as BackgroundProcess, d as BackgroundProcessExitedPayload, e as BackgroundProcessOutputPayload, f as BackgroundProcessRemovedPayload, g as BackgroundProcessStartedPayload, h as BackgroundProcessStatus, C as CallStatsDataPoint, i as ChatAskUserPayload, j as ChatDeltaPayload, k as ChatDonePayload, l as ChatErrorPayload, m as ChatFormatRetryPayload, n as ChatMessagePayload, o as ChatMessageUpdatedPayload, p as ChatPathConfirmationPayload, q as ChatProgressPayload, r as ChatThinkingPayload, s as ChatTodoPayload, t as ChatToolCallPayload, u as ChatToolOutputPayload, v as ChatToolPreparingPayload, w as ChatToolResultPayload, x as ChatVisionFallbackPayload, y as ClientMessage, z as ClientMessageType, D as Config, E as ContextCompactionEvent, F as ContextState, G as ContextStatePayload, H as ContextWindow, I as CriteriaUpdatedPayload, J as Criterion, K as CriterionAttempt, L as CriterionStatus, N as CriterionValidation, O as DangerLevel, P as DevServerOutputPayload, Q as DevServerStatePayload, R as Diagnostic, T as EditContextEdit, U as EditContextLine, V as EditContextRegion, W as ElementData, X as ErrorPayload, Y as ExecutionState, Z as FileReadEntry, _ as GitDiffFile, $ as GitStatusPayload, a0 as InjectedFile, a1 as LLMCallStats, a2 as LlmBackend, a3 as LogLine, a4 as LspDiagnosticsPayload, a5 as MessageRole, a6 as MessageSegment, a7 as MessageStats, a8 as MetadataEntry, a9 as MetadataUpdatedPayload, aa as ModeChangedPayload, ab as ModelConfig, ac as ModelSessionStats, ad as PathConfirmPayload, ae as PathConfirmationReason, af as PendingPathConfirmationPayload, ag as PhaseChangedPayload, ah as PreparingToolCall, ai as Project, aj as ProjectDeletedPayload, ak as ProjectListPayload, al as ProjectStatePayload, am as Provider, an as ProviderBackend, ao as ProviderChangedPayload, ap as QueueAddedEvent, aq as QueueCancelledEvent, ar as QueueDrainedEvent, as as QueueEvent, at as QueueEventType, au as QueueStatePayload, av as QueuedMessage, aw as RecentUserPrompt, ax as ServerMessage, ay as ServerMessageType, az as Session, aA as SessionListPayload, aB as SessionLoadPayload, aC as SessionMetadata, aD as SessionMode, aE as SessionNameGeneratedPayload, aF as SessionPhase, aG as SessionRunningPayload, aH as SessionStatePayload, aI as SessionSummary, aJ as StatsDataPoint, aK as StatsIdentity, aL as TaskCompletedPayload, aM as Todo, aN as ToolCall, aO as ToolMode, aP as ToolName, aQ as ToolResult, aR as ValidationResult, aS as createClientMessage, aT as createServerMessage, aU as isClientMessage, aV as isServerMessage } from '../protocol-
|
|
1
|
+
import { M as Message, S as SessionStats } from '../protocol-B9R1CUvt.js';
|
|
2
|
+
export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, c as Attachment, B as BackgroundProcess, d as BackgroundProcessExitedPayload, e as BackgroundProcessOutputPayload, f as BackgroundProcessRemovedPayload, g as BackgroundProcessStartedPayload, h as BackgroundProcessStatus, C as CallStatsDataPoint, i as ChatAskUserPayload, j as ChatDeltaPayload, k as ChatDonePayload, l as ChatErrorPayload, m as ChatFormatRetryPayload, n as ChatMessagePayload, o as ChatMessageUpdatedPayload, p as ChatPathConfirmationPayload, q as ChatProgressPayload, r as ChatThinkingPayload, s as ChatTodoPayload, t as ChatToolCallPayload, u as ChatToolOutputPayload, v as ChatToolPreparingPayload, w as ChatToolResultPayload, x as ChatVisionFallbackPayload, y as ClientMessage, z as ClientMessageType, D as Config, E as ContextCompactionEvent, F as ContextState, G as ContextStatePayload, H as ContextWindow, I as CriteriaUpdatedPayload, J as Criterion, K as CriterionAttempt, L as CriterionStatus, N as CriterionValidation, O as DangerLevel, P as DevServerOutputPayload, Q as DevServerStatePayload, R as Diagnostic, T as EditContextEdit, U as EditContextLine, V as EditContextRegion, W as ElementData, X as ErrorPayload, Y as ExecutionState, Z as FileReadEntry, _ as GitDiffFile, $ as GitStatusPayload, a0 as InjectedFile, a1 as LLMCallStats, a2 as LlmBackend, a3 as LogLine, a4 as LspDiagnosticsPayload, a5 as MessageRole, a6 as MessageSegment, a7 as MessageStats, a8 as MetadataEntry, a9 as MetadataUpdatedPayload, aa as ModeChangedPayload, ab as ModelConfig, ac as ModelSessionStats, ad as PathConfirmPayload, ae as PathConfirmationReason, af as PendingPathConfirmationPayload, ag as PhaseChangedPayload, ah as PreparingToolCall, ai as Project, aj as ProjectDeletedPayload, ak as ProjectListPayload, al as ProjectStatePayload, am as Provider, an as ProviderBackend, ao as ProviderChangedPayload, ap as QueueAddedEvent, aq as QueueCancelledEvent, ar as QueueDrainedEvent, as as QueueEvent, at as QueueEventType, au as QueueStatePayload, av as QueuedMessage, aw as RecentUserPrompt, ax as ServerMessage, ay as ServerMessageType, az as Session, aA as SessionListPayload, aB as SessionLoadPayload, aC as SessionMetadata, aD as SessionMode, aE as SessionNameGeneratedPayload, aF as SessionPhase, aG as SessionRunningPayload, aH as SessionStatePayload, aI as SessionSummary, aJ as StatsDataPoint, aK as StatsIdentity, aL as TaskCompletedPayload, aM as Todo, aN as ToolCall, aO as ToolMode, aP as ToolName, aQ as ToolResult, aR as ValidationResult, aS as createClientMessage, aT as createServerMessage, aU as isClientMessage, aV as isServerMessage } from '../protocol-B9R1CUvt.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Session stats computation - aggregates response-level MessageStats from
|
|
@@ -11,12 +11,12 @@ import {
|
|
|
11
11
|
requestPathAccess,
|
|
12
12
|
stepDoneTool,
|
|
13
13
|
validateToolAction
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-EQQDA4D3.js";
|
|
15
15
|
import "./chunk-DL6ZILAF.js";
|
|
16
16
|
import "./chunk-PBGOZMVY.js";
|
|
17
17
|
import "./chunk-VRGRAQDG.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-NSBYORD5.js";
|
|
19
|
+
import "./chunk-ITWVFGFV.js";
|
|
20
20
|
import "./chunk-7TTEGAO6.js";
|
|
21
21
|
import {
|
|
22
22
|
AskUserInterrupt,
|
|
@@ -47,4 +47,4 @@ export {
|
|
|
47
47
|
stepDoneTool,
|
|
48
48
|
validateToolAction
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=tools-
|
|
50
|
+
//# sourceMappingURL=tools-D3WWIOQD.js.map
|
|
@@ -280,7 +280,7 @@ XID_Start XIDS`.split(/\s/).map(e=>[ld(e),e])),jP=new Map([["s",nn(383)],[nn(383
|
|
|
280
280
|
[`)&&!t.startsWith("[")).map(t=>t.replace(/^\d+: /,"")).join(`
|
|
281
281
|
`)}const E6=R.memo(function({result:t,metadata:n,filePath:s,heightExpanded:a=!1}){const[o,u]=R.useState(!1),c=R.useMemo(()=>dd(s),[s]),h=n==null?void 0:n.mimeType,f=n==null?void 0:n.base64Data;if(h!=null&&h.startsWith("image/")&&f){const k=`data:${h};base64,${f}`;return l.jsxs(l.Fragment,{children:[l.jsx("div",{className:`rounded overflow-hidden border border-border ${a?"":"max-h-[45vh]"} flex items-center justify-center cursor-pointer hover:border-accent-primary transition-colors`,onClick:()=>u(!0),children:l.jsx("img",{src:k,alt:s,className:"max-w-full max-h-[45vh] object-contain"})}),l.jsx(TC,{src:k,alt:s,isOpen:o,onClose:()=>u(!1)})]})}if(!t)return l.jsx("div",{className:"text-xs text-text-muted italic p-2",children:"Empty file"});const p=t;if(c==="markdown"){const k=O0(p);return l.jsx("div",{className:`rounded overflow-hidden border border-border ${a?"":"max-h-[45vh]"} overflow-y-auto p-2`,children:l.jsx(ds,{content:k})})}const m=O0(p),x=p.split(`
|
|
282
282
|
`)[0],_=x==null?void 0:x.match(/^(\d+): /),w=_?parseInt(_[1],10):1;return l.jsx("div",{className:`rounded overflow-hidden border border-border ${a?"":"max-h-[45vh]"} overflow-y-auto`,children:l.jsx(Ua,{code:m,language:c,variant:"block",showLineNumbers:!0,startLine:w})})}),j6={error:{icon:"✗",color:"text-accent-error",bg:"bg-red-500/10",border:"border-red-500/30"},warning:{icon:"⚠",color:"text-accent-warning",bg:"bg-yellow-500/10",border:"border-yellow-500/30"},info:{icon:"ℹ",color:"text-accent-info",bg:"bg-blue-500/10",border:"border-blue-500/30"},hint:{icon:"💡",color:"text-text-muted",bg:"bg-gray-500/10",border:"border-gray-500/30"}},M0=R.memo(function({diagnostics:t}){if(t.length===0)return null;const n=t.filter(o=>o.severity==="error"),s=t.filter(o=>o.severity==="warning"),a=t.filter(o=>o.severity==="info"||o.severity==="hint");return l.jsxs("div",{className:"rounded border border-border overflow-hidden mt-2",children:[l.jsxs("div",{className:"flex items-center gap-3 px-2 py-1.5 bg-bg-tertiary border-b border-border",children:[l.jsx("span",{className:"text-xs font-medium text-text-secondary",children:"LSP Diagnostics"}),n.length>0&&l.jsxs("span",{className:"text-xs text-accent-error font-medium",children:[n.length," error",n.length!==1?"s":""]}),s.length>0&&l.jsxs("span",{className:"text-xs text-accent-warning font-medium",children:[s.length," warning",s.length!==1?"s":""]}),a.length>0&&l.jsxs("span",{className:"text-xs text-text-muted",children:[a.length," info"]})]}),l.jsx("div",{className:"max-h-48 overflow-y-auto",children:t.map((o,u)=>{const c=j6[o.severity];return l.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${c.bg} border-b border-border last:border-b-0`,children:[l.jsx("span",{className:`${c.color} text-xs flex-shrink-0 w-4 text-center`,children:c.icon}),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsxs("span",{className:"text-[10px] text-text-muted font-mono",children:["Ln ",o.range.start.line+1,":",o.range.start.character+1]}),o.code&&l.jsxs("span",{className:"text-[10px] text-text-muted font-mono",children:["[",o.code,"]"]})]}),l.jsx("div",{className:"text-xs text-text-primary break-words",children:o.message})]})]},u)})})]})}),T6=R.memo(function({command:t,timeout:n,startedAt:s,streamingOutput:a,status:o,result:u,error:c,durationMs:h}){const f=R.useRef(null),[p,m]=R.useState(0);R.useEffect(()=>{f.current&&o==="pending"&&(f.current.scrollTop=f.current.scrollHeight)},[a,o]),R.useEffect(()=>{if(o!=="pending"||!s)return;const k=setInterval(()=>{m(Date.now()-s)},100);return()=>clearInterval(k)},[o,s]);const x=n/1e3,_=o==="pending"?p/1e3:(h??0)/1e3,w=o==="pending"?(a==null?void 0:a.map(k=>k.content).join(""))??"":u??"";return l.jsxs("div",{className:"space-y-2",children:[l.jsxs("div",{className:"flex items-center justify-between gap-4",children:[l.jsxs("div",{className:"flex items-center gap-2 text-xs flex-1 min-w-0",children:[l.jsx("span",{className:"text-text-muted flex-shrink-0",children:"$"}),l.jsx("code",{className:"text-text-primary break-all",children:t})]}),l.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted flex-shrink-0",children:[o==="pending"&&l.jsx("span",{className:"animate-pulse text-accent-warning",children:"running"}),o==="interrupted"&&l.jsx("span",{className:"text-red-400",children:"interrupted"}),l.jsxs("span",{className:o==="pending"?"text-text-secondary":"text-text-muted",children:[_.toFixed(1),"s / ",x,"s"]})]})]}),o==="pending"&&l.jsx("div",{className:"h-1 bg-bg-tertiary rounded overflow-hidden",children:l.jsx("div",{className:"h-full bg-accent-warning transition-all duration-100",style:{width:`${Math.min(100,p/n*100)}%`}})}),(w||o==="pending")&&l.jsx("pre",{ref:f,className:`text-xs bg-bg-primary p-2 rounded max-h-64 overflow-y-auto ${o==="pending"?"border border-accent-warning/30":""}`,style:{overflowX:"hidden",whiteSpace:"normal"},children:o==="pending"&&a?a.map((k,v)=>l.jsx("span",{className:k.stream==="stderr"?"text-accent-warning":"",children:xu(k.content)},v)):xu(w)}),o==="error"&&c&&l.jsx("div",{className:"text-xs text-accent-error bg-accent-error/10 p-2 rounded",children:c}),o!=="pending"&&h!==void 0&&l.jsxs("div",{className:"text-[10px] text-text-muted",children:["Completed in ",(h/1e3).toFixed(2),"s"]})]})});function N6(e){switch(e){case"sensitive_file":return{title:"Sensitive File Access",description:"Accessing files that may contain secrets"};case"both":return{title:"Sensitive File Access",description:"Accessing sensitive files outside project"};case"dangerous_command":return{title:"Dangerous Command",description:"Running potentially dangerous command"};case"git_no_verify":return{title:"Git --no-verify",description:"Bypassing git hooks/pre-commit checks"};case"outside_workdir":default:return{title:"Path Access Request",description:"Accessing paths outside project directory"}}}function A6({confirmation:e}){const t=we(m=>m.confirmPath),n=we(m=>m.currentSession),s=we(m=>m.switchDangerLevel),{title:a,description:o}=N6(e.reason),u=e.reason==="sensitive_file"||e.reason==="both",c=u?"border-red-500/50":"border-amber-500/50",h=u?"bg-red-500/10":"bg-amber-500/10",f=e.reason==="git_no_verify",p=()=>{n!=null&&n.id&&s("dangerous"),t(e.callId,!0,!1)};return l.jsxs("div",{className:`border ${c} ${h} rounded p-3 my-2`,children:[l.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[l.jsx(Em,{}),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("div",{className:`text-sm font-medium ${u?"text-red-400":"text-amber-400"}`,children:a}),l.jsx("div",{className:"text-xs text-text-muted",children:o})]})]}),l.jsxs("div",{className:"text-xs text-text-muted mb-2",children:[l.jsx("span",{className:"font-medium",children:e.tool})," wants to access:"]}),l.jsx("div",{className:"bg-bg-primary rounded p-2 mb-3 max-h-24 overflow-y-auto",children:l.jsx("ul",{className:"space-y-0.5",children:e.paths.map((m,x)=>l.jsx("li",{className:`text-xs font-mono ${u?"text-red-300":"text-amber-300"} break-all`,children:m},x))})}),l.jsxs("div",{className:"flex gap-2",children:[l.jsx("button",{onClick:()=>t(e.callId,!1),className:"flex-1 px-3 py-1.5 text-xs font-medium rounded bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border transition-colors",children:"Deny"}),l.jsx("button",{onClick:()=>t(e.callId,!0,!1),className:"flex-1 px-3 py-1.5 text-xs font-medium rounded bg-accent-primary hover:bg-accent-primary/80 text-text-primary transition-colors",children:"Allow"}),l.jsx("button",{onClick:p,className:`flex-1 px-3 py-1.5 text-xs font-medium rounded transition-colors ${f?"hidden":"bg-red-600 hover:bg-red-700 text-white"}`,title:"Enable dangerous mode and allow this request",children:"Allow Everything"})]})]})}function D6(e,t){if(e==="read_file"){const s=String(t.path??""),a=t.offset,o=t.limit,u=[];return a!==void 0&&a!==1&&u.push(`offset=${a}`),o!==void 0&&u.push(`limit=${o}`),u.length>0?`${s} [${u.join(", ")}]`:s}if(e==="write_file"||e==="edit_file")return String(t.path??"");if(e==="run_command"||e==="bash")return String(t.command??"");if(e==="return_value"){const s=String(t.content??"");return s.length>60?s.slice(0,60)+"...":s}const n=JSON.stringify(t);return n.length>50?n.slice(0,50)+"...":n}function I0(e,t,n){return D6(e,t)}function L6(e){return JSON.stringify(e,null,2)}const R6={pending:{icon:"●",color:"text-accent-warning",animate:!0},success:{icon:"✓",color:"text-accent-success",animate:!1},error:{icon:"✗",color:"text-accent-error",animate:!1},interrupted:{icon:"✗",color:"text-red-400",animate:!1}},O6=R.memo(function({tool:t,args:n,status:s,variant:a="compact",forceCompact:o,result:u,error:c,durationMs:h,diagnostics:f,editContext:p,startedAt:m,streamingOutput:x,metadata:_,callId:w}){var q;const k=t==="edit_file"||t==="write_file",v=t==="run_command"&&s==="pending",S=t==="read_file",b=o?!1:k||v||t==="return_value",[E,N]=R.useState(b),T=R6[s],D=rn(G=>G.settings[Be.DISPLAY_SHOW_OPEN_IN_EDITOR])==="true",A=t==="edit_file"?(q=p==null?void 0:p.regions[0])==null?void 0:q.startLine:t==="read_file"?(()=>{const G=u==null?void 0:u.split(`
|
|
283
|
-
`)[0],M=G==null?void 0:G.match(/^(\d+): /);return M?parseInt(M[1],10):void 0})():void 0,L=we(G=>G.pendingPathConfirmations),B=s==="pending"&&w?L.find(G=>G.callId===w)??null:null;return a==="compact"?l.jsxs("div",{className:"flex items-center gap-1.5 text-xs bg-secondary rounded px-2 py-1.5",children:[l.jsx(jC,{tool:t}),l.jsx("span",{className:"text-accent-primary font-medium",children:t}),l.jsx("span",{className:"text-text-muted truncate flex-1",children:I0(t,n)}),l.jsx("span",{className:`${T.color} ${T.animate?"animate-pulse":""}`,children:s==="pending"?"...":"done"})]}):l.jsxs("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0",children:[l.jsxs("button",{className:"w-full flex items-center gap-1.5 p-2 bg-secondary hover:bg-secondary/80 text-left",onClick:()=>N(!E),children:[l.jsx("span",{className:`${T.color} ${T.animate?"animate-pulse":""}`,children:T.icon}),l.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),l.jsx("span",{className:"text-text-muted text-xs flex-1 truncate",children:I0(t,n)}),l.jsx("span",{className:"text-text-muted text-xs",children:E?"▼":"▶"})]}),B&&l.jsx(A6,{confirmation:B}),(E||S)&&l.jsxs("div",{className:"p-2 bg-primary border-t border-border space-y-2 min-w-0",children:[t==="run_command"&&l.jsx(T6,{command:String(n.command??""),timeout:n.timeout??12e4,startedAt:m,streamingOutput:x,status:s,result:u,error:c,durationMs:h}),t==="edit_file"&&s==="success"&&l.jsxs(l.Fragment,{children:[p&&p.regions.length>0?l.jsx(S6,{regions:p.regions,filePath:String(n.path??"")}):l.jsx(v6,{oldString:String(n.old_string??""),newString:String(n.new_string??""),filePath:String(n.path??"")}),f&&f.length>0&&l.jsx(M0,{diagnostics:f})]}),t==="write_file"&&s==="success"&&l.jsxs(l.Fragment,{children:[l.jsx(b6,{content:String(n.content??""),filePath:String(n.path??"")}),f&&f.length>0&&l.jsx(M0,{diagnostics:f})]}),t==="read_file"&&s==="success"&&l.jsx(E6,{result:u,metadata:_,filePath:String(n.path??""),heightExpanded:E}),t==="return_value"&&(()=>{const G=(x==null?void 0:x.map(W=>W.content).join(""))??"",M=s==="pending"&&G?G:String(n.content??"");return l.jsxs("div",{children:[l.jsx("div",{className:"text-[10px] text-accent-primary font-medium mb-1 uppercase tracking-wide",children:"Sub-Agent Summary"}),l.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none",children:l.jsx(ds,{content:M})})]})})(),t!=="edit_file"&&t!=="write_file"&&t!=="run_command"&&t!=="read_file"&&t!=="return_value"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{children:[l.jsx("div",{className:"text-[10px] text-text-muted mb-0.5",children:"Arguments:"}),l.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto",children:L6(n)})]}),s==="success"&&u!==void 0&&l.jsxs("div",{children:[l.jsxs("div",{className:"text-[10px] text-text-muted mb-0.5",children:["Result",h!==void 0&&` (${h}ms)`,":"]}),l.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto max-h-32",children:u||"No output"})]})]}),s==="success"&&(t==="edit_file"||t==="write_file"||t==="read_file")&&h!==void 0&&l.jsxs("div",{className:"text-[10px] text-text-muted flex items-center gap-2",children:[l.jsxs("span",{children:["Completed in ",h,"ms"]}),D&&(t==="read_file"||t==="write_file"||t==="edit_file")&&String(n.path??"")&&l.jsx("a",{href:`vscode://file/${String(n.path)}${A?`:${A}`:""}`,className:"text-accent-primary hover:underline ml-auto",children:"Open in VSCode"})]}),s==="error"&&c&&t!=="run_command"&&l.jsxs("div",{children:[l.jsx("div",{className:"text-[10px] text-accent-error mb-0.5",children:"Error:"}),l.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded text-accent-error",children:c})]})]})]})}),M6={read_file:"Reading file",write_file:"Writing file",edit_file:"Editing file",run_command:"Running command",glob:"Searching files",grep:"Searching content",ask_user:"Asking user",criterion:"Managing criterion",session_metadata:"Managing",todo_write:"Updating tasks"},I6={criteria:"criteria",review_findings:"review findings",todos:"tasks"};function P6(e,t){const n=M6[e];if(!n)return`Preparing ${e}`;if(e==="session_metadata"&&t)try{const a=JSON.parse(t).key;if(a){const o=I6[a]??a;return`${n} ${o}`}}catch{}return n}function B6(e){try{const t=e.replace(/\s*\}\s*$/,""),n=JSON.parse(t);if(typeof n.command=="string")return n.command}catch{const t=e.match(/"command"\s*:\s*"([^"]*)/);if(t&&t[1])return t[1]}return null}const z6=R.memo(function({name:t,arguments:n}){let a=P6(t,n)+"...";if(t==="run_command"&&n){const o=B6(n);o&&(a=o)}return l.jsx("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0 animate-pulse",children:l.jsxs("div",{className:"flex items-center gap-1.5 p-2 bg-bg-tertiary",children:[l.jsx("span",{className:"text-accent-warning animate-pulse",children:"..."}),l.jsx(jC,{tool:t}),l.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),t==="run_command"&&n?l.jsx("code",{className:"text-text-muted text-xs flex-1 truncate",children:a}):l.jsx("span",{className:"text-text-muted text-xs flex-1",children:a})]})})}),H6={pending:{icon:"○",color:"text-text-muted"},in_progress:{icon:"●",color:"text-accent-warning",animate:!0},completed:{icon:"✓",color:"text-accent-success"}},$6=R.memo(function({todos:t}){return Array.isArray(t)?t.length===0?l.jsx("div",{className:"text-xs text-text-muted italic my-1",children:"No tasks"}):l.jsxs("div",{className:"my-1 rounded border border-border bg-bg-tertiary overflow-hidden",children:[l.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-bg-secondary",children:l.jsx("span",{className:"text-xs font-medium text-text-muted",children:"Tasks"})}),l.jsx("div",{children:t.map((n,s)=>{const a=H6[n.status];return l.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${s>0?"border-t border-border":""}`,children:[l.jsx("span",{className:`${(a==null?void 0:a.color)??"text-text-muted"} ${a!=null&&a.animate?"animate-pulse":""} text-sm leading-tight`,children:(a==null?void 0:a.icon)??"○"}),l.jsx("span",{className:`text-sm leading-tight ${n.status==="completed"?"text-text-muted":"text-text-primary"}`,children:n.content})]},s)})})]}):l.jsx("div",{className:"text-xs text-accent-warning italic my-1",children:"⚠️ Invalid todos data"})}),P0={add:{icon:"○",color:"text-text-muted"},update:{icon:"○",color:"text-text-muted"},remove:{icon:"○",color:"text-text-muted"},complete:{icon:"◉",color:"text-purple-400"},pass:{icon:"✓",color:"text-accent-success"},fail:{icon:"✗",color:"text-accent-error"},get:{icon:"○",color:"text-text-muted"},list:{icon:"○",color:"text-text-muted"},schema:{icon:"○",color:"text-text-muted"}},NC=R.memo(function({toolCalls:t,criteria:n}){if(t.length===0)return null;const s=new Map((n==null?void 0:n.map(h=>[h.id,h]))??[]),a=t.find(h=>{var f,p;return h.arguments.action==="get"&&((f=h.result)==null?void 0:f.success)&&((p=h.result)==null?void 0:p.output)}),o=t.some(h=>h.name==="session_metadata"),u={criteria:"Acceptance Criteria",review_findings:"Review Findings",todos:"Tasks"},c=(()=>{if(!o)return"Acceptance Criteria";const h=new Set(t.map(f=>f.arguments.key).filter(Boolean));if(h.size===1){const f=h.values().next().value;return f?u[f]??f:"Session Data"}return"Session Data"})();return l.jsxs("div",{className:"my-1 rounded border border-border bg-secondary overflow-hidden",children:[l.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-secondary",children:l.jsx("span",{className:"text-xs font-medium text-text-muted",children:c})}),l.jsx("div",{className:"bg-primary",children:a?(()=>{const h=a.result.output;if(h==="No criteria defined yet.")return l.jsxs("div",{className:"flex items-start gap-2 px-2 py-1.5",children:[l.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),l.jsx("div",{className:"flex-1 min-w-0 text-text-muted text-sm",children:"No criteria defined yet."})]});try{return JSON.parse(h).map((p,m)=>l.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${m>0?"border-t border-border":""}`,children:[l.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),l.jsx("div",{className:"flex-1 min-w-0",children:l.jsx(ds,{content:`[${p.id}] ${p.description}`})})]},p.id??m))}catch{return t.map((f,p)=>l.jsx(B0,{tc:f,index:p,criteriaMap:s},f.id??p))}})():t.map((h,f)=>l.jsx(B0,{tc:h,index:f,criteriaMap:s},h.id??f))})]})});function B0({tc:e,index:t,criteriaMap:n}){const s=e.arguments.action,a=e.arguments,o=e.name==="session_metadata",u=s==="remove",c=a.id,h=a.description,f=c?n.get(c):void 0,p=h??(f==null?void 0:f.description)??(u&&c?`[${c}]`:"Criterion updated"),m=a.reason,x=s==="fail";return l.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${t>0?"border-t border-border":""}`,children:[o?l.jsx(Wu,{status:a.status,className:"text-sm leading-tight flex-shrink-0"}):(()=>{const _=s&&P0[s]?P0[s]:{icon:"○",color:"text-text-muted"};return l.jsx("span",{className:`${_.color} text-sm leading-tight flex-shrink-0`,children:_.icon})})(),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("div",{className:u?"line-through text-text-muted":"",children:l.jsx(ds,{content:p})}),m&&l.jsxs("div",{className:`mt-1 text-sm ${x?"text-accent-error":"text-text-muted"}`,children:[l.jsx("span",{className:"text-text-muted",children:"└ "}),'"',m,'"']})]})]})}function U6(e){return e==="criterion"||e==="session_metadata"}function F6(e){const t=[];let n=[];const s=()=>{n.length>0&&(t.push({type:"criteria_group",toolCalls:n}),n=[])};for(const a of e)a.type==="tool_call"&&U6(a.toolCall.name)?n.push(a.toolCall):(s(),t.push(a));return s(),t}function V6(e,t){if(e.segments&&e.segments.length>0)return G6(e.segments,e.toolCalls??[],e.preparingToolCalls??[],e.stats,t);const n=[];if(e.thinkingContent&&n.push({type:"thinking",content:e.thinkingContent}),e.content&&n.push({type:"text",content:e.content}),e.toolCalls)for(const s of e.toolCalls)n.push({type:"tool_call",toolCall:s});if(e.preparingToolCalls)for(const s of e.preparingToolCalls)n.push({type:"preparing_tool_call",preparing:s});return t&&e.stats&&n.push({type:"stats",stats:e.stats}),n}function G6(e,t,n,s,a){const o=[],u=new Map(t.map(c=>[c.id,c]));for(const c of e)switch(c.type){case"text":o.push({type:"text",content:c.content});break;case"thinking":c.content&&c.content.trim().length>0&&o.push({type:"thinking",content:c.content});break;case"tool_call":{const h=u.get(c.toolCallId);h&&o.push({type:"tool_call",toolCall:h});break}}for(const c of n)o.push({type:"preparing_tool_call",preparing:c});return a&&s&&o.push({type:"stats",stats:s}),o}const ig=R.memo(function({message:t,showStats:n=!0,showThinking:s=!0,showVerboseToolOutput:a=!0}){const o=we(x=>{var _,w;return(w=(_=x.currentSession)==null?void 0:_.metadataEntries)==null?void 0:w.criteria}),u=ht(x=>x.defaults),c=ht(x=>x.userItems),h=[...u,...c],f=V6(t,n),p=s?f:f.filter(x=>x.type!=="thinking"),m=F6(p);return m.length===0?null:l.jsx("div",{className:"feed-item",children:l.jsxs("div",{className:"min-w-0",children:[m.map((x,_)=>{var w,k;switch(x.type){case"thinking":return l.jsx(y6,{content:x.content},_);case"text":return l.jsx("div",{className:"prose prose-sm prose-invert max-w-none",children:l.jsx(ds,{content:x.content})},_);case"preparing_tool_call":return l.jsx(z6,{name:x.preparing.name,arguments:x.preparing.arguments},`preparing-${x.preparing.index}`);case"tool_call":{const v=x.toolCall,S=v.result;if(v.name==="todo_write"){const E=v.arguments.todos,N=Array.isArray(E)?E:[];return l.jsx($6,{todos:N},_)}const y=(w=S==null?void 0:S.output)==null?void 0:w.includes("[interrupted by user]"),b=S?y?"interrupted":S.success?"success":"error":"pending";return l.jsx(O6,{tool:v.name,args:v.arguments,status:b,variant:"expandable",forceCompact:!a,result:S==null?void 0:S.output,error:S==null?void 0:S.error,durationMs:S==null?void 0:S.durationMs,diagnostics:S==null?void 0:S.diagnostics,editContext:S==null?void 0:S.editContext,startedAt:v.startedAt,streamingOutput:v.streamingOutput,metadata:S==null?void 0:S.metadata,callId:v.id},_)}case"criteria_group":return l.jsx(NC,{toolCalls:x.toolCalls,criteria:o},_);case"stats":{const v=x.stats;if(!v||"error"in v)return null;const S=((k=v.model.split("/").pop())==null?void 0:k.split("-").slice(0,2).join("-"))??v.model,y=ll(h,v.mode),b=N=>N>=1e3?`${(N/1e3).toFixed(1)}k`:N.toString(),E=N=>N>=1e3?`${(N/1e3).toFixed(1)}k`:N.toFixed(1);return l.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted mt-3",children:[l.jsx("span",{className:"flex-1 h-px bg-border"}),l.jsx("span",{className:"text-text-secondary",children:S}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsx("span",{style:{color:y},children:v.mode}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsxs("span",{children:[v.totalTime.toFixed(1),"s"]}),v.toolTime>0&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsxs("span",{children:[v.toolTime.toFixed(1),"s tools"]})]}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsxs("span",{children:[b(v.prefillTokens)," @ ",E(v.prefillSpeed)," pp"]}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsxs("span",{children:[b(v.generationTokens)," @ ",E(v.generationSpeed)," tg"]}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsx("button",{type:"button",className:"text-text-muted hover:text-text-secondary transition-colors",title:"View detailed stats",onClick:()=>{const N=new CustomEvent("open-turn-stats",{detail:{stats:v}});window.dispatchEvent(N)},children:l.jsx(xS,{className:"w-3 h-3"})}),l.jsx("span",{className:"flex-1 h-px bg-border"})]},_)}}}),t.partial&&l.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-accent-warning mt-1",children:[l.jsx(Em,{}),l.jsx("span",{children:"Aborted"})]}),t.completeReason==="truncated"&&l.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-amber-400/80 mt-1",children:[l.jsx(Em,{}),l.jsx("span",{children:"Response was truncated — the model ran out of output tokens."})]})]})})});function Ou(e,t){const n=parseInt(e.slice(1,3),16),s=parseInt(e.slice(3,5),16),a=parseInt(e.slice(5,7),16);return`rgba(${n},${s},${a},${t})`}function W6(e){if(e<60)return`${e}s`;const t=Math.floor(e/60),n=Math.round(e%60);return n>0?`${t}m ${n}s`:`${t}m`}function q6(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}const K6=R.memo(function({data:t}){var u;const n=Ct(c=>c.defaults),s=Ct(c=>c.userItems),o=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#8b949e";return l.jsxs("div",{className:"feed-item rounded p-3 border",style:{borderColor:Ou(o,.3),backgroundColor:Ou(o,.08)},children:[l.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[l.jsx(Oj,{color:o}),l.jsx("span",{className:"text-sm font-medium",style:{color:o},children:t.workflowName??"Task Completed"})]}),l.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-5 gap-2",children:[l.jsx(Qo,{label:"Iterations",value:String(t.iterations)}),l.jsx(Qo,{label:"Total time",value:W6(t.totalTimeSeconds)}),l.jsx(Qo,{label:"Tool calls",value:String(t.totalToolCalls)}),l.jsx(Qo,{label:"Tokens",value:q6(t.totalTokensGenerated)}),l.jsx(Qo,{label:"Speed",value:t.avgGenerationSpeed>0?`${t.avgGenerationSpeed} tok/s`:"-"})]})]})});function Qo({label:e,value:t}){return l.jsxs("div",{className:"bg-bg-primary/50 rounded px-2 py-1",children:[l.jsx("div",{className:"text-sm text-text-muted",children:e}),l.jsx("div",{className:"text-sm text-text-primary font-medium",children:t})]})}const Y6=R.memo(function({data:t}){var u;const n=Ct(c=>c.defaults),s=Ct(c=>c.userItems),o=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#6b7280";return l.jsxs("div",{className:"feed-item flex items-center gap-2 px-3 py-2 rounded border",style:{borderColor:Ou(o,.3),backgroundColor:Ou(o,.08)},children:[l.jsx(Tj,{className:"w-3 h-3 shrink-0",color:o}),l.jsx("span",{className:"text-sm font-medium",style:{color:o},children:t.workflowName}),l.jsx("span",{className:"text-text-muted text-sm",children:"started"})]})});function X6({attachments:e,messageId:t}){const[n,s]=R.useState(null),a=we(p=>p.visionFallbackByMessage),o=we(p=>p.messages),u=R.useMemo(()=>{const p=o.findIndex(m=>m.id===t);if(p===-1)return null;for(let m=p+1;m<o.length;m++){const x=o[m];if(x&&x.role==="assistant")return x.id}return null},[o,t]),c=p=>{s(p)},h=()=>{s(null)},f=p=>{const m=`${t}-${p}`;if(a[m])return a[m];if(u){const x=`${u}-${p}`;return a[x]}return null};return e.length===0?null:l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"mt-3 flex flex-wrap gap-3",children:e.map(p=>{const m=f(p.id);return l.jsxs("div",{className:"relative inline-block",children:[l.jsxs("button",{onClick:()=>c(p.data),className:"group relative inline-block",title:p.filename,disabled:(m==null?void 0:m.type)==="start",children:[l.jsx("img",{src:p.data,alt:p.filename,className:"max-w-[256px] max-h-[256px] object-contain rounded-lg border border-border hover:border-accent-primary transition-colors cursor-pointer"}),(m==null?void 0:m.type)==="start"&&l.jsx("div",{className:"absolute inset-0 bg-black/60 flex items-center justify-center rounded-lg",children:l.jsx("span",{className:"text-xs text-text-primary animate-pulse",children:"Describing image..."})})]}),(m==null?void 0:m.type)==="done"&&m.description&&l.jsxs("div",{className:"mt-2 p-2 bg-bg-tertiary rounded text-xs text-text-secondary max-w-[256px]",children:[m.description.slice(0,200),m.description.length>200?"...":""]})]},p.id)})}),n&&l.jsx(TC,{src:n,alt:"Attached image",isOpen:!0,onClose:h})]})}function Q6({content:e,align:t="right",messageIndex:n,sessionId:s}){const[a,o]=R.useState(!1),[u,c]=R.useState(!1),[h,f]=R.useState("left"),p=R.useRef(null),m=R.useRef(null),x=we(S=>S.loadSession),_=t==="right",w=()=>{if(!m.current)return"left";const S=m.current.getBoundingClientRect(),y=window.innerWidth-S.right,b=S.left,E=160,N=y>=E,T=b>=E;return T&&N||T?"left":N?"right":b>=y?"left":"right"};R.useEffect(()=>{const S=y=>{p.current&&!p.current.contains(y.target)&&o(!1)};return a&&document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[a]);const k=async()=>{try{if(navigator.clipboard)await navigator.clipboard.writeText(e);else{const S=document.createElement("textarea");S.value=e,S.style.position="fixed",S.style.left="-999999px",document.body.appendChild(S),S.select(),document.execCommand("copy"),document.body.removeChild(S)}c(!0),o(!1),window.setTimeout(()=>c(!1),1500)}catch(S){console.error("Failed to copy:",S)}},v=async()=>{!s||n===void 0||(o(!1),await x2(s,n),x(s))};return l.jsx(l.Fragment,{children:l.jsxs("div",{className:`flex items-start gap-1.5 ${_?"":"order-first"}`,children:[u&&l.jsx(Or,{className:"w-4 h-4 text-accent-success"}),l.jsxs("div",{ref:p,className:"relative",children:[l.jsx("button",{ref:m,onClick:()=>{a||f(w()),o(!a)},className:"p-1 rounded hover:bg-bg-tertiary text-text-muted hover:text-text-primary",title:"Message options",children:l.jsx(dp,{})}),a&&l.jsxs("div",{className:`absolute top-full mt-1 bg-bg-secondary border border-border rounded shadow-xl z-50 py-1 min-w-36 ${h==="right"?"left-0":"right-0"}`,children:[l.jsxs("button",{onClick:k,className:"w-full px-3 py-1.5 text-left text-sm text-text-primary hover:bg-bg-tertiary flex items-center gap-2",children:[l.jsx(up,{className:"w-4 h-4"}),"Copy"]}),s&&n!==void 0&&l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"border-t border-border my-1"}),l.jsxs("button",{onClick:v,className:"w-full px-3 py-1.5 text-left text-sm text-text-primary hover:bg-bg-tertiary flex items-center gap-2",children:[l.jsx(hp,{className:"w-4 h-4"}),"Replay"]})]})]})]})]})})}function J6({message:e}){const[t,n]=R.useState(!1);if(e.messageKind!=="auto-prompt")return null;const s=e.metadata,a=(s==null?void 0:s.color)??"#6b7280",o=(s==null?void 0:s.name)??"Agent",u=(s==null?void 0:s.type)??"agent",h={agent:"definition injected",workflow:"instructions",compaction:"prompt injected",subagent:"instructions"}[u]??"injected",f=u==="workflow"||u==="subagent";return l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted font-mono mt-3 mb-4",children:[l.jsx("span",{className:"flex-1 h-px bg-border"}),l.jsx("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${f?"":"cursor-pointer"}`,style:{backgroundColor:a},onClick:()=>!f&&n(!0)}),l.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",style:{color:a},onClick:()=>!f&&n(!0),children:o}),l.jsx("span",{children:"·"}),l.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",onClick:()=>!f&&n(!0),children:h}),l.jsx("span",{className:"flex-1 h-px bg-border"})]}),f&&l.jsx("div",{className:"flex justify-center feed-item mb-4",children:l.jsx("div",{className:"max-w-[75%] rounded p-3 bg-bg-tertiary/50 text-text-secondary text-sm",style:{borderLeft:`3px solid ${a}`},children:l.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs",children:e.content})})}),l.jsx(kt,{isOpen:t,onClose:()=>n(!1),title:`${o} Prompt`,size:"lg",children:l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("span",{className:"w-3 h-3 rounded-full",style:{backgroundColor:a}}),l.jsx("span",{className:"text-sm text-text-primary font-medium",children:o}),l.jsxs("span",{className:"text-xs text-text-muted",children:["(",u,")"]})]}),l.jsx("div",{className:"h-full min-h-96",children:l.jsx("pre",{className:"text-sm text-text-secondary whitespace-pre-wrap bg-bg-tertiary rounded p-4 h-full min-h-96 overflow-auto font-mono",children:e.content})})]})})]})}function Z6({message:e,messageIndex:t,sessionId:n}){const s=e.messageKind==="auto-prompt",a=e.messageKind==="command",o=e.isSystemGenerated;return l.jsxs("div",{className:"flex justify-end items-start gap-1.5 feed-item",children:[!o&&l.jsx(Q6,{content:e.content,align:"right",messageIndex:t,sessionId:n}),l.jsxs("div",{className:`max-w-[75%] rounded p-2 ${o?a?"bg-teal-500/10 border border-teal-500/30":s?"bg-slate-500/10 border border-slate-500/30":"bg-amber-500/10 border border-amber-500/30":"bg-accent-primary/15 text-text-primary"}`,children:[o&&l.jsx("span",{className:`text-[10px] block mb-0.5 ${a?"text-teal-400":s?"text-slate-400":"text-amber-400"}`,children:a?"Command":s?"Auto":"System"}),l.jsx("div",{className:`whitespace-pre-wrap text-sm ${o?`${a?"text-teal-200":s?"text-slate-200":"text-amber-200 italic"}`:""}`,children:e.content}),e.attachments&&e.attachments.length>0&&l.jsx(X6,{attachments:e.attachments,messageId:e.id})]})]})}const AC=R.memo(function({message:t,isLastAssistantMessage:n=!1,messageIndex:s,sessionId:a}){const o=t.role==="user",u=t.role==="assistant",c=t.role==="system",h=t.role==="tool";if(u)return l.jsx(ig,{message:t,showStats:n});if(c&&t.isCompacted)return l.jsxs("div",{className:"feed-item bg-bg-tertiary/50 border border-border rounded p-2",children:[l.jsx("div",{className:"text-text-muted text-xs mb-0.5",children:"[Compacted]"}),l.jsx("div",{className:"text-text-secondary text-xs whitespace-pre-wrap",children:t.content.replace(`[COMPACTED HISTORY]
|
|
283
|
+
`)[0],M=G==null?void 0:G.match(/^(\d+): /);return M?parseInt(M[1],10):void 0})():void 0,L=we(G=>G.pendingPathConfirmations),B=s==="pending"&&w?L.find(G=>G.callId===w)??null:null;return a==="compact"?l.jsxs("div",{className:"flex items-center gap-1.5 text-xs bg-secondary rounded px-2 py-1.5",children:[l.jsx(jC,{tool:t}),l.jsx("span",{className:"text-accent-primary font-medium",children:t}),l.jsx("span",{className:"text-text-muted truncate flex-1",children:I0(t,n)}),l.jsx("span",{className:`${T.color} ${T.animate?"animate-pulse":""}`,children:s==="pending"?"...":"done"})]}):l.jsxs("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0",children:[l.jsxs("button",{className:"w-full flex items-center gap-1.5 p-2 bg-secondary hover:bg-secondary/80 text-left",onClick:()=>N(!E),children:[l.jsx("span",{className:`${T.color} ${T.animate?"animate-pulse":""}`,children:T.icon}),l.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),l.jsx("span",{className:"text-text-muted text-xs flex-1 truncate",children:I0(t,n)}),l.jsx("span",{className:"text-text-muted text-xs",children:E?"▼":"▶"})]}),B&&l.jsx(A6,{confirmation:B}),(E||S)&&l.jsxs("div",{className:"p-2 bg-primary border-t border-border space-y-2 min-w-0",children:[t==="run_command"&&l.jsx(T6,{command:String(n.command??""),timeout:n.timeout??12e4,startedAt:m,streamingOutput:x,status:s,result:u,error:c,durationMs:h}),t==="edit_file"&&s==="success"&&l.jsxs(l.Fragment,{children:[p&&p.regions.length>0?l.jsx(S6,{regions:p.regions,filePath:String(n.path??"")}):l.jsx(v6,{oldString:String(n.old_string??""),newString:String(n.new_string??""),filePath:String(n.path??"")}),f&&f.length>0&&l.jsx(M0,{diagnostics:f})]}),t==="write_file"&&s==="success"&&l.jsxs(l.Fragment,{children:[l.jsx(b6,{content:String(n.content??""),filePath:String(n.path??"")}),f&&f.length>0&&l.jsx(M0,{diagnostics:f})]}),t==="read_file"&&s==="success"&&l.jsx(E6,{result:u,metadata:_,filePath:String(n.path??""),heightExpanded:E}),t==="return_value"&&(()=>{const G=(x==null?void 0:x.map(W=>W.content).join(""))??"",M=s==="pending"&&G?G:String(n.content??"");return l.jsxs("div",{children:[l.jsx("div",{className:"text-[10px] text-accent-primary font-medium mb-1 uppercase tracking-wide",children:"Sub-Agent Summary"}),l.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none",children:l.jsx(ds,{content:M})})]})})(),t!=="edit_file"&&t!=="write_file"&&t!=="run_command"&&t!=="read_file"&&t!=="return_value"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{children:[l.jsx("div",{className:"text-[10px] text-text-muted mb-0.5",children:"Arguments:"}),l.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto",children:L6(n)})]}),s==="success"&&u!==void 0&&l.jsxs("div",{children:[l.jsxs("div",{className:"text-[10px] text-text-muted mb-0.5",children:["Result",h!==void 0&&` (${h}ms)`,":"]}),l.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto max-h-32",children:u||"No output"})]})]}),s==="success"&&(t==="edit_file"||t==="write_file"||t==="read_file")&&h!==void 0&&l.jsxs("div",{className:"text-[10px] text-text-muted flex items-center gap-2",children:[l.jsxs("span",{children:["Completed in ",h,"ms"]}),D&&(t==="read_file"||t==="write_file"||t==="edit_file")&&String(n.path??"")&&l.jsx("a",{href:`vscode://file/${String(n.path)}${A?`:${A}`:""}`,className:"text-accent-primary hover:underline ml-auto",children:"Open in VSCode"})]}),s==="error"&&c&&t!=="run_command"&&l.jsxs("div",{children:[l.jsx("div",{className:"text-[10px] text-accent-error mb-0.5",children:"Error:"}),l.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded text-accent-error",children:c})]})]})]})}),M6={read_file:"Reading file",write_file:"Writing file",edit_file:"Editing file",run_command:"Running command",glob:"Searching files",grep:"Searching content",ask_user:"Asking user",criterion:"Managing criterion",session_metadata:"Managing",todo_write:"Updating tasks"},I6={criteria:"criteria",review_findings:"review findings",todos:"tasks"};function P6(e,t){const n=M6[e];if(!n)return`Preparing ${e}`;if(e==="session_metadata"&&t)try{const a=JSON.parse(t).key;if(a){const o=I6[a]??a;return`${n} ${o}`}}catch{}return n}function B6(e){try{const t=e.replace(/\s*\}\s*$/,""),n=JSON.parse(t);if(typeof n.command=="string")return n.command}catch{const t=e.match(/"command"\s*:\s*"([^"]*)/);if(t&&t[1])return t[1]}return null}const z6=R.memo(function({name:t,arguments:n}){let a=P6(t,n)+"...";if(t==="run_command"&&n){const o=B6(n);o&&(a=o)}return l.jsx("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0 animate-pulse",children:l.jsxs("div",{className:"flex items-center gap-1.5 p-2 bg-bg-tertiary",children:[l.jsx("span",{className:"text-accent-warning animate-pulse",children:"..."}),l.jsx(jC,{tool:t}),l.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),t==="run_command"&&n?l.jsx("code",{className:"text-text-muted text-xs flex-1 truncate",children:a}):l.jsx("span",{className:"text-text-muted text-xs flex-1",children:a})]})})}),H6={pending:{icon:"○",color:"text-text-muted"},in_progress:{icon:"●",color:"text-accent-warning",animate:!0},completed:{icon:"✓",color:"text-accent-success"}},$6=R.memo(function({todos:t}){return Array.isArray(t)?t.length===0?l.jsx("div",{className:"text-xs text-text-muted italic my-1",children:"No tasks"}):l.jsxs("div",{className:"my-1 rounded border border-border bg-bg-tertiary overflow-hidden",children:[l.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-bg-secondary",children:l.jsx("span",{className:"text-xs font-medium text-text-muted",children:"Tasks"})}),l.jsx("div",{children:t.map((n,s)=>{const a=H6[n.status];return l.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${s>0?"border-t border-border":""}`,children:[l.jsx("span",{className:`${(a==null?void 0:a.color)??"text-text-muted"} ${a!=null&&a.animate?"animate-pulse":""} text-sm leading-tight`,children:(a==null?void 0:a.icon)??"○"}),l.jsx("span",{className:`text-sm leading-tight ${n.status==="completed"?"text-text-muted":"text-text-primary"}`,children:n.content})]},s)})})]}):l.jsx("div",{className:"text-xs text-accent-warning italic my-1",children:"⚠️ Invalid todos data"})}),P0={add:{icon:"○",color:"text-text-muted"},update:{icon:"○",color:"text-text-muted"},remove:{icon:"○",color:"text-text-muted"},complete:{icon:"◉",color:"text-purple-400"},pass:{icon:"✓",color:"text-accent-success"},fail:{icon:"✗",color:"text-accent-error"},get:{icon:"○",color:"text-text-muted"},list:{icon:"○",color:"text-text-muted"},schema:{icon:"○",color:"text-text-muted"}},NC=R.memo(function({toolCalls:t,criteria:n}){if(t.length===0)return null;const s=new Map((n==null?void 0:n.map(h=>[h.id,h]))??[]),a=t.find(h=>{var f,p;return h.arguments.action==="get"&&((f=h.result)==null?void 0:f.success)&&((p=h.result)==null?void 0:p.output)}),o=t.some(h=>h.name==="session_metadata"),u={criteria:"Acceptance Criteria",review_findings:"Review Findings",todos:"Tasks"},c=(()=>{if(!o)return"Acceptance Criteria";const h=new Set(t.map(f=>f.arguments.key).filter(Boolean));if(h.size===1){const f=h.values().next().value;return f?u[f]??f:"Session Data"}return"Session Data"})();return l.jsxs("div",{className:"my-1 rounded border border-border bg-secondary overflow-hidden",children:[l.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-secondary",children:l.jsx("span",{className:"text-xs font-medium text-text-muted",children:c})}),l.jsx("div",{className:"bg-primary",children:a?(()=>{const h=a.result.output;if(h==="No criteria defined yet.")return l.jsxs("div",{className:"flex items-start gap-2 px-2 py-1.5",children:[l.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),l.jsx("div",{className:"flex-1 min-w-0 text-text-muted text-sm",children:"No criteria defined yet."})]});try{return JSON.parse(h).map((p,m)=>l.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${m>0?"border-t border-border":""}`,children:[l.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),l.jsx("div",{className:"flex-1 min-w-0",children:l.jsx(ds,{content:`[${p.id}] ${p.description}`})})]},p.id??m))}catch{return t.map((f,p)=>l.jsx(B0,{tc:f,index:p,criteriaMap:s},f.id??p))}})():t.map((h,f)=>l.jsx(B0,{tc:h,index:f,criteriaMap:s},h.id??f))})]})});function B0({tc:e,index:t,criteriaMap:n}){const s=e.arguments.action,a=e.arguments,o=e.name==="session_metadata",u=s==="remove",c=a.id,h=a.description,f=c?n.get(c):void 0,p=h??(f==null?void 0:f.description)??(u&&c?`[${c}]`:"Criterion updated"),m=a.reason,x=s==="fail";return l.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${t>0?"border-t border-border":""}`,children:[o?l.jsx(Wu,{status:a.status,className:"text-sm leading-tight flex-shrink-0"}):(()=>{const _=s&&P0[s]?P0[s]:{icon:"○",color:"text-text-muted"};return l.jsx("span",{className:`${_.color} text-sm leading-tight flex-shrink-0`,children:_.icon})})(),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("div",{className:u?"line-through text-text-muted":"",children:l.jsx(ds,{content:p})}),m&&l.jsxs("div",{className:`mt-1 text-sm ${x?"text-accent-error":"text-text-muted"}`,children:[l.jsx("span",{className:"text-text-muted",children:"└ "}),'"',m,'"']})]})]})}function U6(e){return e==="criterion"||e==="session_metadata"}function F6(e){const t=[];let n=[];const s=()=>{n.length>0&&(t.push({type:"criteria_group",toolCalls:n}),n=[])};for(const a of e)a.type==="tool_call"&&U6(a.toolCall.name)?n.push(a.toolCall):(s(),t.push(a));return s(),t}function V6(e,t){if(e.segments&&e.segments.length>0)return G6(e.segments,e.toolCalls??[],e.preparingToolCalls??[],e.stats,t);const n=[];if(e.thinkingContent&&n.push({type:"thinking",content:e.thinkingContent}),e.content&&n.push({type:"text",content:e.content}),e.toolCalls)for(const s of e.toolCalls)n.push({type:"tool_call",toolCall:s});if(e.preparingToolCalls)for(const s of e.preparingToolCalls)n.push({type:"preparing_tool_call",preparing:s});return t&&e.stats&&n.push({type:"stats",stats:e.stats}),n}function G6(e,t,n,s,a){const o=[],u=new Map(t.map(c=>[c.id,c]));for(const c of e)switch(c.type){case"text":o.push({type:"text",content:c.content});break;case"thinking":c.content&&c.content.trim().length>0&&o.push({type:"thinking",content:c.content});break;case"tool_call":{const h=u.get(c.toolCallId);h&&o.push({type:"tool_call",toolCall:h});break}}for(const c of n)o.push({type:"preparing_tool_call",preparing:c});return a&&s&&o.push({type:"stats",stats:s}),o}const ig=R.memo(function({message:t,showStats:n=!0,showThinking:s=!0,showVerboseToolOutput:a=!0}){const o=we(x=>{var _,w;return(w=(_=x.currentSession)==null?void 0:_.metadataEntries)==null?void 0:w.criteria}),u=ht(x=>x.defaults),c=ht(x=>x.userItems),h=[...u,...c],f=V6(t,n),p=s?f:f.filter(x=>x.type!=="thinking"),m=F6(p);return m.length===0?null:l.jsx("div",{className:"feed-item",children:l.jsxs("div",{className:"min-w-0",children:[m.map((x,_)=>{var w,k;switch(x.type){case"thinking":return l.jsx(y6,{content:x.content},_);case"text":return l.jsx("div",{className:"prose prose-sm prose-invert max-w-none",children:l.jsx(ds,{content:x.content})},_);case"preparing_tool_call":return l.jsx(z6,{name:x.preparing.name,arguments:x.preparing.arguments},`preparing-${x.preparing.index}`);case"tool_call":{const v=x.toolCall,S=v.result;if(v.name==="todo_write"){const E=v.arguments.todos,N=Array.isArray(E)?E:[];return l.jsx($6,{todos:N},_)}const y=(w=S==null?void 0:S.output)==null?void 0:w.includes("[interrupted by user]"),b=S?y?"interrupted":S.success?"success":"error":"pending";return l.jsx(O6,{tool:v.name,args:v.arguments,status:b,variant:"expandable",forceCompact:!a,result:S==null?void 0:S.output,error:S==null?void 0:S.error,durationMs:S==null?void 0:S.durationMs,diagnostics:S==null?void 0:S.diagnostics,editContext:S==null?void 0:S.editContext,startedAt:v.startedAt,streamingOutput:v.streamingOutput,metadata:S==null?void 0:S.metadata,callId:v.id},_)}case"criteria_group":return l.jsx(NC,{toolCalls:x.toolCalls,criteria:o},_);case"stats":{const v=x.stats;if(!v||"error"in v)return null;const S=((k=v.model.split("/").pop())==null?void 0:k.split("-").slice(0,2).join("-"))??v.model,y=ll(h,v.mode),b=N=>N>=1e3?`${(N/1e3).toFixed(1)}k`:N.toString(),E=N=>N>=1e3?`${(N/1e3).toFixed(1)}k`:N.toFixed(1);return l.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted mt-3",children:[l.jsx("span",{className:"flex-1 h-px bg-border"}),l.jsx("span",{className:"text-text-secondary",children:S}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsx("span",{style:{color:y},children:v.mode}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsxs("span",{children:[v.totalTime.toFixed(1),"s"]}),v.toolTime>0&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsxs("span",{children:[v.toolTime.toFixed(1),"s tools"]})]}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsxs("span",{children:[b(v.prefillTokens)," @ ",E(v.prefillSpeed)," pp"]}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsxs("span",{children:[b(v.generationTokens)," @ ",E(v.generationSpeed)," tg"]}),l.jsx("span",{className:"text-text-muted",children:"·"}),l.jsx("button",{type:"button",className:"text-text-muted hover:text-text-secondary transition-colors",title:"View detailed stats",onClick:()=>{const N=new CustomEvent("open-turn-stats",{detail:{stats:v}});window.dispatchEvent(N)},children:l.jsx(xS,{className:"w-3 h-3"})}),l.jsx("span",{className:"flex-1 h-px bg-border"})]},_)}}}),t.partial&&l.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-accent-warning mt-1",children:[l.jsx(Em,{}),l.jsx("span",{children:"Aborted"})]}),t.completeReason==="truncated"&&l.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-amber-400/80 mt-1",children:[l.jsx(Em,{}),l.jsx("span",{children:"Response was truncated — the model ran out of output tokens."})]})]})})});function Ou(e,t){const n=parseInt(e.slice(1,3),16),s=parseInt(e.slice(3,5),16),a=parseInt(e.slice(5,7),16);return`rgba(${n},${s},${a},${t})`}function W6(e){if(e<60)return`${e}s`;const t=Math.floor(e/60),n=Math.round(e%60);return n>0?`${t}m ${n}s`:`${t}m`}function q6(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}const K6=R.memo(function({data:t}){var u;const n=Ct(c=>c.defaults),s=Ct(c=>c.userItems),o=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#8b949e";return l.jsxs("div",{className:"feed-item rounded p-3 border",style:{borderColor:Ou(o,.3),backgroundColor:Ou(o,.08)},children:[l.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[l.jsx(Oj,{color:o}),l.jsx("span",{className:"text-sm font-medium",style:{color:o},children:t.workflowName??"Task Completed"})]}),l.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-5 gap-2",children:[l.jsx(Qo,{label:"Iterations",value:String(t.iterations)}),l.jsx(Qo,{label:"Total time",value:W6(t.totalTimeSeconds)}),l.jsx(Qo,{label:"Tool calls",value:String(t.totalToolCalls)}),l.jsx(Qo,{label:"Tokens",value:q6(t.totalTokensGenerated)}),l.jsx(Qo,{label:"Speed",value:t.avgGenerationSpeed>0?`${t.avgGenerationSpeed} tok/s`:"-"})]})]})});function Qo({label:e,value:t}){return l.jsxs("div",{className:"bg-bg-primary/50 rounded px-2 py-1",children:[l.jsx("div",{className:"text-sm text-text-muted",children:e}),l.jsx("div",{className:"text-sm text-text-primary font-medium",children:t})]})}const Y6=R.memo(function({data:t}){var u;const n=Ct(c=>c.defaults),s=Ct(c=>c.userItems),o=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#6b7280";return l.jsxs("div",{className:"feed-item flex items-center gap-2 px-3 py-2 rounded border",style:{borderColor:Ou(o,.3),backgroundColor:Ou(o,.08)},children:[l.jsx(Tj,{className:"w-3 h-3 shrink-0",color:o}),l.jsx("span",{className:"text-sm font-medium",style:{color:o},children:t.workflowName}),l.jsx("span",{className:"text-text-muted text-sm",children:"started"})]})});function X6({attachments:e,messageId:t}){const[n,s]=R.useState(null),a=we(p=>p.visionFallbackByMessage),o=we(p=>p.messages),u=R.useMemo(()=>{const p=o.findIndex(m=>m.id===t);if(p===-1)return null;for(let m=p+1;m<o.length;m++){const x=o[m];if(x&&x.role==="assistant")return x.id}return null},[o,t]),c=p=>{s(p)},h=()=>{s(null)},f=p=>{const m=`${t}-${p}`;if(a[m])return a[m];if(u){const x=`${u}-${p}`;return a[x]}return null};return e.length===0?null:l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"mt-3 flex flex-wrap gap-3",children:e.map(p=>{const m=f(p.id);return l.jsxs("div",{className:"relative inline-block",children:[l.jsxs("button",{onClick:()=>c(p.data),className:"group relative inline-block",title:p.filename,disabled:(m==null?void 0:m.type)==="start",children:[l.jsx("img",{src:p.data,alt:p.filename,className:"max-w-[256px] max-h-[256px] object-contain rounded-lg border border-border hover:border-accent-primary transition-colors cursor-pointer"}),(m==null?void 0:m.type)==="start"&&l.jsx("div",{className:"absolute inset-0 bg-black/60 flex items-center justify-center rounded-lg",children:l.jsx("span",{className:"text-xs text-text-primary animate-pulse",children:"Describing image..."})})]}),(m==null?void 0:m.type)==="done"&&m.description&&l.jsxs("div",{className:"mt-2 p-2 bg-bg-tertiary rounded text-xs text-text-secondary max-w-[256px]",children:[m.description.slice(0,200),m.description.length>200?"...":""]})]},p.id)})}),n&&l.jsx(TC,{src:n,alt:"Attached image",isOpen:!0,onClose:h})]})}function Q6({content:e,align:t="right",messageIndex:n,sessionId:s}){const[a,o]=R.useState(!1),[u,c]=R.useState(!1),[h,f]=R.useState("left"),p=R.useRef(null),m=R.useRef(null),x=we(S=>S.loadSession),_=t==="right",w=()=>{if(!m.current)return"left";const S=m.current.getBoundingClientRect(),y=window.innerWidth-S.right,b=S.left,E=160,N=y>=E,T=b>=E;return T&&N||T?"left":N?"right":b>=y?"left":"right"};R.useEffect(()=>{const S=y=>{p.current&&!p.current.contains(y.target)&&o(!1)};return a&&document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[a]);const k=async()=>{try{if(navigator.clipboard)await navigator.clipboard.writeText(e);else{const S=document.createElement("textarea");S.value=e,S.style.position="fixed",S.style.left="-999999px",document.body.appendChild(S),S.select(),document.execCommand("copy"),document.body.removeChild(S)}c(!0),o(!1),window.setTimeout(()=>c(!1),1500)}catch(S){console.error("Failed to copy:",S)}},v=async()=>{!s||n===void 0||(o(!1),await x2(s,n),x(s))};return l.jsx(l.Fragment,{children:l.jsxs("div",{className:`flex items-start gap-1.5 ${_?"":"order-first"}`,children:[u&&l.jsx(Or,{className:"w-4 h-4 text-accent-success"}),l.jsxs("div",{ref:p,className:"relative",children:[l.jsx("button",{ref:m,onClick:()=>{a||f(w()),o(!a)},className:"p-1 rounded hover:bg-bg-tertiary text-text-muted hover:text-text-primary",title:"Message options",children:l.jsx(dp,{})}),a&&l.jsxs("div",{className:`absolute top-full mt-1 bg-bg-secondary border border-border rounded shadow-xl z-50 py-1 min-w-36 ${h==="right"?"left-0":"right-0"}`,children:[l.jsxs("button",{onClick:k,className:"w-full px-3 py-1.5 text-left text-sm text-text-primary hover:bg-bg-tertiary flex items-center gap-2",children:[l.jsx(up,{className:"w-4 h-4"}),"Copy"]}),s&&n!==void 0&&l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"border-t border-border my-1"}),l.jsxs("button",{onClick:v,className:"w-full px-3 py-1.5 text-left text-sm text-text-primary hover:bg-bg-tertiary flex items-center gap-2",children:[l.jsx(hp,{className:"w-4 h-4"}),"Replay"]})]})]})]})]})})}function J6({message:e}){const[t,n]=R.useState(!1);if(e.messageKind!=="auto-prompt")return null;const s=e.metadata,a=(s==null?void 0:s.color)??"#6b7280",o=(s==null?void 0:s.name)??"Agent",u=(s==null?void 0:s.type)??"agent",h={agent:(s==null?void 0:s.kind)==="reminder"?"reminder":"definition injected",workflow:"instructions",compaction:"prompt injected",subagent:"instructions"}[u]??"injected",f=u==="workflow"||u==="subagent";return l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted font-mono mt-3 mb-4",children:[l.jsx("span",{className:"flex-1 h-px bg-border"}),l.jsx("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${f?"":"cursor-pointer"}`,style:{backgroundColor:a},onClick:()=>!f&&n(!0)}),l.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",style:{color:a},onClick:()=>!f&&n(!0),children:o}),l.jsx("span",{children:"·"}),l.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",onClick:()=>!f&&n(!0),children:h}),l.jsx("span",{className:"flex-1 h-px bg-border"})]}),f&&l.jsx("div",{className:"flex justify-center feed-item mb-4",children:l.jsx("div",{className:"max-w-[75%] rounded p-3 bg-bg-tertiary/50 text-text-secondary text-sm",style:{borderLeft:`3px solid ${a}`},children:l.jsx("pre",{className:"whitespace-pre-wrap font-mono text-xs",children:e.content})})}),l.jsx(kt,{isOpen:t,onClose:()=>n(!1),title:`${o} Prompt`,size:"lg",children:l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("span",{className:"w-3 h-3 rounded-full",style:{backgroundColor:a}}),l.jsx("span",{className:"text-sm text-text-primary font-medium",children:o}),l.jsxs("span",{className:"text-xs text-text-muted",children:["(",u,")"]})]}),l.jsx("div",{className:"h-full min-h-96",children:l.jsx("pre",{className:"text-sm text-text-secondary whitespace-pre-wrap bg-bg-tertiary rounded p-4 h-full min-h-96 overflow-auto font-mono",children:e.content})})]})})]})}function Z6({message:e,messageIndex:t,sessionId:n}){const s=e.messageKind==="auto-prompt",a=e.messageKind==="command",o=e.isSystemGenerated;return l.jsxs("div",{className:"flex justify-end items-start gap-1.5 feed-item",children:[!o&&l.jsx(Q6,{content:e.content,align:"right",messageIndex:t,sessionId:n}),l.jsxs("div",{className:`max-w-[75%] rounded p-2 ${o?a?"bg-teal-500/10 border border-teal-500/30":s?"bg-slate-500/10 border border-slate-500/30":"bg-amber-500/10 border border-amber-500/30":"bg-accent-primary/15 text-text-primary"}`,children:[o&&l.jsx("span",{className:`text-[10px] block mb-0.5 ${a?"text-teal-400":s?"text-slate-400":"text-amber-400"}`,children:a?"Command":s?"Auto":"System"}),l.jsx("div",{className:`whitespace-pre-wrap text-sm ${o?`${a?"text-teal-200":s?"text-slate-200":"text-amber-200 italic"}`:""}`,children:e.content}),e.attachments&&e.attachments.length>0&&l.jsx(X6,{attachments:e.attachments,messageId:e.id})]})]})}const AC=R.memo(function({message:t,isLastAssistantMessage:n=!1,messageIndex:s,sessionId:a}){const o=t.role==="user",u=t.role==="assistant",c=t.role==="system",h=t.role==="tool";if(u)return l.jsx(ig,{message:t,showStats:n});if(c&&t.isCompacted)return l.jsxs("div",{className:"feed-item bg-bg-tertiary/50 border border-border rounded p-2",children:[l.jsx("div",{className:"text-text-muted text-xs mb-0.5",children:"[Compacted]"}),l.jsx("div",{className:"text-text-secondary text-xs whitespace-pre-wrap",children:t.content.replace(`[COMPACTED HISTORY]
|
|
284
284
|
`,"")})]});if(h)return l.jsxs("div",{className:"feed-item bg-bg-tertiary/30 border-l-2 border-accent-primary rounded-r p-2",children:[l.jsxs("div",{className:"text-accent-primary text-xs mb-0.5",children:["Tool: ",t.toolName]}),l.jsxs("pre",{className:"text-text-secondary text-xs whitespace-pre-wrap overflow-x-auto max-h-32",children:[t.content.slice(0,500),t.content.length>500&&"..."]})]});if(t.messageKind==="workflow-started")try{const f=JSON.parse(t.content);return l.jsx(Y6,{data:f})}catch{}if(t.messageKind==="task-completed")try{const f=JSON.parse(t.content);return l.jsx(K6,{data:f})}catch{}return t.messageKind==="context-reset"?l.jsxs("div",{className:"flex items-center gap-4 mb-6 text-text-muted text-xs uppercase tracking-wide",children:[l.jsx("div",{className:"flex-1 border-t border-border"}),l.jsx("span",{children:t.content}),l.jsx("div",{className:"flex-1 border-t border-border"})]}):t.messageKind==="auto-prompt"&&t.isSystemGenerated?l.jsx(J6,{message:t}):t.messageKind==="correction"&&t.isSystemGenerated?l.jsx("div",{className:"flex justify-end feed-item",children:l.jsxs("div",{className:"max-w-[75%] rounded p-2 bg-amber-500/10 border border-amber-500/30",children:[l.jsx("span",{className:"text-[10px] block mb-0.5 text-amber-400",children:"System"}),l.jsx("div",{className:"whitespace-pre-wrap text-sm text-amber-200 italic",children:t.content})]})}):o?l.jsx(Z6,{message:t,messageIndex:s,sessionId:a}):l.jsx("div",{className:"flex justify-start feed-item",children:l.jsx("div",{className:"max-w-[75%] rounded p-2 bg-bg-tertiary text-text-primary",children:l.jsx(ds,{content:t.content})})})}),DC=(e,t)=>{const n=R.useRef(!0),s=R.useRef(null),[a,o]=R.useState(!0),u=()=>{const c=e.current;c&&(c.scrollTop=c.scrollHeight)};return R.useEffect(()=>{const c=e.current;if(!c)return;const h=_=>{if(_.deltaY>0){requestAnimationFrame(()=>requestAnimationFrame(()=>{c.scrollHeight-c.scrollTop-c.offsetHeight<100&&(n.current=!0,o(!0))}));return}n.current=!1,o(!1)},f=_=>{_.touches[0]&&(s.current=_.touches[0].clientY)},p=_=>{if(s.current===null)return;const w=_.touches[0];if(!w)return;if(w.clientY-s.current>0){n.current=!1,o(!1);return}requestAnimationFrame(()=>requestAnimationFrame(()=>{c.scrollHeight-c.scrollTop-c.offsetHeight<100&&(n.current=!0,o(!0))}))},m=new MutationObserver(()=>{n.current&&requestAnimationFrame(u)}),x=setInterval(()=>{n.current&&u()},1e3);return c.addEventListener("wheel",h,{passive:!0}),c.addEventListener("touchstart",f,{passive:!0}),c.addEventListener("touchmove",p,{passive:!0}),m.observe(c,{childList:!0,subtree:!0,characterData:!0}),()=>{c.removeEventListener("wheel",h),c.removeEventListener("touchstart",f),c.removeEventListener("touchmove",p),m.disconnect(),clearInterval(x)}},[t==null?void 0:t.id]),{force_scroll_to_bottom:()=>{n.current=!0,o(!0),u()},isAutoScrollActive:a,setAutoScroll:c=>{n.current=c,o(c),c&&u()}}},eB={verifier:"Verification",code_reviewer:"Code Review",test_generator:"Test Generation",debugger:"Debug"};function tB(e){return{backgroundColor:`${e}20`,color:e,borderColor:`${e}4d`}}function z0(e,t){return t||e>85?"text-accent-error":e>60?"text-accent-warning":"text-text-muted"}function nB({contextState:e}){const{currentTokens:t,maxTokens:n,compactionCount:s,dangerZone:a}=e,o=Math.round(t/n*100);return l.jsxs("div",{className:"flex items-center gap-1.5 text-[10px]",children:[l.jsxs("span",{className:z0(o,a),children:[pu(t),"/",pu(n)]}),l.jsxs("span",{className:z0(o,a),children:["(",o,"%)"]}),l.jsx(YS,{percent:o,dangerZone:a,size:"sm"}),a&&l.jsx("span",{className:"text-accent-error animate-pulse",children:"Low!"}),s>0&&l.jsxs("span",{className:"text-text-muted bg-bg-tertiary px-1 rounded",children:[s,"x"]})]})}const rB=R.memo(function({messages:t,subAgentType:n,subAgentId:s,isStreaming:a}){const o=R.useRef(null),u=R.useRef(null),[c,h]=R.useState(!1),f=ht(D=>D.defaults),p=ht(D=>D.userItems),m=[...f,...p],x=we(D=>D.subAgentContextStates[s]),{showThinking:_,showVerboseToolOutput:w}=Pu(),{isAutoScrollActive:k,setAutoScroll:v}=DC(u,null);R.useEffect(()=>{a||v(!0)},[a]);const S=R.useCallback(()=>{const D=!c;h(D),D&&setTimeout(()=>{var A;(A=o.current)==null||A.scrollIntoView({block:"start",behavior:"smooth"})},220)},[c]),y=m.find(D=>D.id===n),b=(y==null?void 0:y.name)??eB[n]??n,E=ll(m,n),N=tB(E),T=t.filter(D=>D.role!=="tool");return l.jsxs("div",{ref:o,className:"feed-item border border-border rounded overflow-hidden bg-secondary",children:[l.jsxs("div",{className:"w-full flex items-center justify-between px-2 py-1 border-b relative",style:N,children:[l.jsx("span",{className:"text-xs font-medium",children:b}),l.jsx("div",{className:"absolute left-1/2 -translate-x-1/2",children:x&&l.jsx(nB,{contextState:x})}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsxs("button",{type:"button",className:"text-sm text-text-muted hover:text-text-primary flex items-center gap-1.5",onClick:()=>v(!k),children:[l.jsx("span",{className:`w-1 h-1 rounded-full ${k?"bg-accent-success":"border border-text-muted"}`}),"live"]}),l.jsxs("button",{type:"button",className:"text-[10px] px-1.5 py-0.5 rounded bg-bg-tertiary",onClick:S,children:[c?"▼":"▶"," Expand"]})]})]}),l.jsx("div",{ref:u,className:`${c?"max-h-[calc(100vh-10rem)]":"max-h-80"} overflow-y-auto p-2 transition-[max-height] duration-200`,children:T.map(D=>D.role==="assistant"?l.jsx(ig,{message:D,showStats:!0,showThinking:_,showVerboseToolOutput:w},D.id):l.jsx(AC,{message:D,isLastAssistantMessage:!1},D.id))})]})});function LC(e,t,n=!0){R.useEffect(()=>{if(!n)return;const s=a=>{var o;(o=e.current)!=null&&o.contains(a.target)||t()};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[e,t,n])}const sB=[],iB=R.memo(function({displayItems:t,scrollContainerRef:n,highlightedMessageId:s}){const a=we(L=>{var B,q;return((q=(B=L.currentSession)==null?void 0:B.metadataEntries)==null?void 0:q.criteria)??sB}),o=we(L=>{var B;return(B=L.currentSession)==null?void 0:B.id}),u=we(L=>{var B;return(B=L.currentSession)==null?void 0:B.mode}),c=we(L=>{var B;return(B=L.currentSession)==null?void 0:B.phase}),h=we(L=>L.error),f=we(L=>L.clearError),p=we(L=>L.acceptAndBuild),m=Hu(),{showThinking:x,showVerboseToolOutput:_,showStats:w,showAgentDefinitions:k,showWorkflowBars:v}=Pu(),S=Ct(L=>L.defaults),y=Ct(L=>L.userItems),b=[...S,...y],E=u==="planner",N=a.length>0,T=c==="done",D=t.some(L=>L.type==="message"&&L.message.role==="assistant"),A=E&&N&&!m&&D&&!T;return l.jsxs("div",{ref:n,"data-testid":"chat-scroll-container",className:"flex-1 min-w-0 overflow-y-auto relative bg-primary",children:[l.jsx("div",{className:"pt-4",children:t.map((L,B)=>{if(L.type==="context-divider")return l.jsxs("div",{"data-item-index":B,className:"flex items-center gap-2 feed-item px-2 md:px-4",children:[l.jsx("div",{className:"flex-1 border-t border-border"}),l.jsx("span",{className:"text-[10px] text-text-muted font-medium px-2",children:"Earlier context summarized"}),l.jsx("div",{className:"flex-1 border-t border-border"})]},B);if(L.type==="subagent"){const W=L.messages.some(F=>F.isStreaming);return l.jsx("div",{"data-item-index":B,className:"px-2 md:px-4",children:l.jsx(rB,{messages:L.messages,subAgentType:L.subAgentType,subAgentId:L.subAgentId,isStreaming:W})},B)}if(L.type==="criteria-batch")return l.jsx("div",{"data-item-index":B,className:"feed-item px-2 md:px-4",children:l.jsx(NC,{toolCalls:L.toolCalls,criteria:a})},B);const q=L.message;if(q.role==="assistant")return l.jsx("div",{"data-item-index":B,className:"px-2 md:px-4",children:l.jsx(ig,{message:q,showStats:w,showThinking:x,showVerboseToolOutput:_})},B);const G=!k&&q.messageKind==="auto-prompt",M=!v&&(q.messageKind==="workflow-started"||q.messageKind==="task-completed");return G||M?null:l.jsx("div",{"data-item-index":B,className:"px-2 md:px-4",children:l.jsx("div",{"data-message-id":q.id,className:s===q.id?"rounded animate-highlight-fade":void 0,children:l.jsx(AC,{message:q,messageIndex:B,sessionId:o,isLastAssistantMessage:!1})})},B)})}),l.jsxs("div",{className:"px-2 md:px-4 pb-4",children:[h&&l.jsx("div",{className:"feed-item bg-red-500/10 border border-red-500/50 rounded p-2",children:l.jsxs("div",{className:"flex items-start justify-between gap-2",children:[l.jsxs("div",{children:[l.jsx("div",{className:"text-red-400 text-sm font-medium",children:h.code}),l.jsx("div",{className:"text-red-300 text-xs mt-0.5",children:h.message})]}),l.jsx(Sl,{onClick:f,className:"text-red-400 hover:text-red-300 p-0.5",size:"sm"})]})}),A&&l.jsx("div",{className:"flex justify-center gap-2 feed-item flex-wrap",children:b.map(L=>{const B=L.color??"#3b82f6",q=parseInt(B.slice(1,3),16),G=parseInt(B.slice(3,5),16),M=parseInt(B.slice(5,7),16),W=`rgba(${q},${G},${M},0.12)`,F=`rgba(${q},${G},${M},0.22)`,z=`rgba(${q},${G},${M},0.25)`;return l.jsx(aB,{workflowName:L.name,color:B,bg:W,bgHover:F,border:z,subGroups:L.subGroups,onLaunch:K=>p(L.id,void 0,void 0,K)},L.id)})})]})]})});function aB({workflowName:e,color:t,bg:n,bgHover:s,border:a,subGroups:o,onLaunch:u}){const[c,h]=R.useState(!1),f=R.useRef(null);return LC(f,()=>h(!1),c),l.jsxs("div",{className:"relative flex",children:[l.jsxs("button",{onClick:()=>u(),"data-testid":"workflow-run-button",className:"px-4 py-1.5 rounded-l text-sm font-medium transition-colors",style:{backgroundColor:n,color:t,border:`1px solid ${a}`,borderRight:"none"},onMouseEnter:p=>{p.currentTarget.style.backgroundColor=s},onMouseLeave:p=>{p.currentTarget.style.backgroundColor=n},children:["▶ ",e]}),o&&o.length>0&&l.jsxs("div",{ref:f,className:"relative",children:[l.jsx("button",{onClick:()=>h(!c),className:"px-1.5 py-1.5 rounded-r text-sm font-medium transition-colors",style:{backgroundColor:n,color:t,border:`1px solid ${a}`},onMouseEnter:p=>{p.currentTarget.style.backgroundColor=s},onMouseLeave:p=>{p.currentTarget.style.backgroundColor=n},children:"⋮"}),c&&l.jsxs("div",{className:"absolute top-full right-0 mt-1 w-40 bg-bg-secondary border border-border rounded-lg shadow-xl z-50 overflow-hidden",children:[l.jsx("button",{onClick:()=>{u(),h(!1)},className:"w-full text-left px-3 py-2 text-sm text-text-primary hover:bg-bg-tertiary transition-colors",children:"Full workflow"}),l.jsx("div",{className:"border-t border-border/50"}),o.map(p=>l.jsx("button",{onClick:()=>{u(p),h(!1)},className:"w-full text-left px-3 py-2 text-sm text-text-primary hover:bg-bg-tertiary transition-colors",children:p},p))]})]})]})}function oB({question:e}){const t=we(u=>u.answerQuestion),[n,s]=R.useState(""),a=()=>{t(e.callId,n)},o=u=>{u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),a())};return l.jsx(kt,{isOpen:!0,onClose:()=>{},size:"sm",closeOnBackdropClick:!1,closeOnEscape:!1,showCloseButton:!1,children:l.jsxs("div",{className:"space-y-4",children:[l.jsx("p",{className:"text-sm text-text-primary",children:e.question}),l.jsx("textarea",{value:n,onChange:u=>s(u.target.value),onKeyDown:o,placeholder:"Type your answer here...",className:"w-full min-h-[120px] px-3 py-2 bg-bg-tertiary border border-border rounded text-sm text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 resize-y",autoFocus:!0}),l.jsxs("div",{className:"flex justify-end gap-2",children:[l.jsx(Je,{variant:"secondary",size:"sm",onClick:()=>t(e.callId,""),children:"Skip"}),l.jsx(Je,{variant:"primary",size:"sm",onClick:a,children:"Send Answer"})]})]})})}function lB(){const e=we(s=>s.connectionStatus),t=we(s=>s.reconnect);if(e==="connected")return null;const n=e==="reconnecting";return l.jsxs("div",{className:`
|
|
285
285
|
flex items-center justify-between px-4 py-2
|
|
286
286
|
text-sm font-medium
|
package/dist/web/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" type="image/png" href="/assets/openfox.png" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height" />
|
|
7
7
|
<title>OpenFox</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-tJDr1ODC.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-CSOB8dwI.css">
|
|
10
10
|
<link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
|
|
11
11
|
<body class="bg-bg-primary text-text-primary font-mono">
|
package/dist/web/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let s,l={};const e=(e,r)=>(e=new URL(e+".js",r).href,l[e]||new Promise(l=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=l,document.head.appendChild(s)}else s=e,importScripts(e),l()}).then(()=>{let s=l[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s}));self.define=(r,i)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(l[n])return;let u={};const a=s=>e(s,n),t={module:{uri:n},exports:u,require:a};l[n]=Promise.all(r.map(s=>t[s]||a(s))).then(s=>(i(...s),u))}}define(["./workbox-8c29f6e4"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"index.html",revision:"8f2be11d71cec888f520fe01d13199ab"},{url:"__inspect__.js",revision:"878b477aaf1805c028895f3d3bb4af71"},{url:"assets/zig-VOosw3JB.js",revision:null},{url:"assets/zenscript-DVFEvuxE.js",revision:null},{url:"assets/yaml-Buea-lGh.js",revision:null},{url:"assets/xsl-CtQFsRM5.js",revision:null},{url:"assets/xml-sdJ4AIDG.js",revision:null},{url:"assets/wolfram-lXgVvXCa.js",revision:null},{url:"assets/wit-5i3qLPDT.js",revision:null},{url:"assets/wikitext-BhOHFoWU.js",revision:null},{url:"assets/wgsl-Dx-B1_4e.js",revision:null},{url:"assets/wenyan-BV7otONQ.js",revision:null},{url:"assets/wasm-MzD3tlZU.js",revision:null},{url:"assets/wasm-CG6Dc4jp.js",revision:null},{url:"assets/vyper-CDx5xZoG.js",revision:null},{url:"assets/vue-vine-BoDAl6tE.js",revision:null},{url:"assets/vue-html-AaS7Mt5G.js",revision:null},{url:"assets/vue-D2xRrEX4.js",revision:null},{url:"assets/vitesse-light-CVO1_9PV.js",revision:null},{url:"assets/vitesse-dark-D0r3Knsf.js",revision:null},{url:"assets/vitesse-black-Bkuqu6BP.js",revision:null},{url:"assets/viml-CJc9bBzg.js",revision:null},{url:"assets/vhdl-CeAyd5Ju.js",revision:null},{url:"assets/vesper-DRje8inN.js",revision:null},{url:"assets/verilog-BQ8w6xss.js",revision:null},{url:"assets/vb-D17OF-Vu.js",revision:null},{url:"assets/vala-CsfeWuGM.js",revision:null},{url:"assets/v-BcVCzyr7.js",revision:null},{url:"assets/typst-DHCkPAjA.js",revision:null},{url:"assets/typespec-CAFt9gP4.js",revision:null},{url:"assets/typescript-BPQ3VLAy.js",revision:null},{url:"assets/twig-CW1WmMYd.js",revision:null},{url:"assets/turtle-BsS91CYL.js",revision:null},{url:"assets/tsx-COt5Ahok.js",revision:null},{url:"assets/tsv-B_m7g4N7.js",revision:null},{url:"assets/ts-tags-D351s5mN.js",revision:null},{url:"assets/toml-vGWfd6FD.js",revision:null},{url:"assets/tokyo-night-hegEt444.js",revision:null},{url:"assets/tex-idrVyKtj.js",revision:null},{url:"assets/terraform-BETggiCN.js",revision:null},{url:"assets/templ-DhtptRzy.js",revision:null},{url:"assets/tcl-dwOrl1Do.js",revision:null},{url:"assets/tasl-QIJgUcNo.js",revision:null},{url:"assets/talonscript-CkByrt1z.js",revision:null},{url:"assets/systemd-4A_iFExJ.js",revision:null},{url:"assets/system-verilog-CnnmHF94.js",revision:null},{url:"assets/synthwave-84-CbfX1IO0.js",revision:null},{url:"assets/swift-D82vCrfD.js",revision:null},{url:"assets/svelte-Cy7k_4gC.js",revision:null},{url:"assets/surrealql-Bq5Q-fJD.js",revision:null},{url:"assets/stylus-BEDo0Tqx.js",revision:null},{url:"assets/stata-DI20mbqo.js",revision:null},{url:"assets/ssh-config-_ykCGR6B.js",revision:null},{url:"assets/sql-CRqJ_cUM.js",revision:null},{url:"assets/splunk-BtCnVYZw.js",revision:null},{url:"assets/sparql-rVzFXLq3.js",revision:null},{url:"assets/soy-8wufbnw4.js",revision:null},{url:"assets/solidity-rGO070M0.js",revision:null},{url:"assets/solarized-light-L9t79GZl.js",revision:null},{url:"assets/solarized-dark-DXbdFlpD.js",revision:null},{url:"assets/snazzy-light-Bw305WKR.js",revision:null},{url:"assets/smalltalk-BERRCDM3.js",revision:null},{url:"assets/slack-ochin-DqwNpetd.js",revision:null},{url:"assets/slack-dark-BthQWCQV.js",revision:null},{url:"assets/shellsession-BADoaaVG.js",revision:null},{url:"assets/shellscript-Yzrsuije.js",revision:null},{url:"assets/shaderlab-Dg9Lc6iA.js",revision:null},{url:"assets/sdbl-DVxCFoDh.js",revision:null},{url:"assets/scss-D5BDwBP9.js",revision:null},{url:"assets/scheme-C98Dy4si.js",revision:null},{url:"assets/scala-C151Ov-r.js",revision:null},{url:"assets/sass-Cj5Yp3dK.js",revision:null},{url:"assets/sas-DEy46yEz.js",revision:null},{url:"assets/rust-B1yitclQ.js",revision:null},{url:"assets/ruby-DyJCeAvU.js",revision:null},{url:"assets/rst-CpCqk9r5.js",revision:null},{url:"assets/rosmsg-BJDFO7_C.js",revision:null},{url:"assets/rose-pine-qdsjHGoJ.js",revision:null},{url:"assets/rose-pine-moon-D4_iv3hh.js",revision:null},{url:"assets/rose-pine-dawn-DHQR4-dF.js",revision:null},{url:"assets/ron-D8l8udqQ.js",revision:null},{url:"assets/riscv-BM1_JUlF.js",revision:null},{url:"assets/rel-C3B-1QV4.js",revision:null},{url:"assets/regexp-CDVJQ6XC.js",revision:null},{url:"assets/reg-C-SQnVFl.js",revision:null},{url:"assets/red-bN70gL4F.js",revision:null},{url:"assets/razor-BjBPvh-w.js",revision:null},{url:"assets/raku-DXvB9xmW.js",revision:null},{url:"assets/racket-BqYA7rlc.js",revision:null},{url:"assets/r-Dspwwk_N.js",revision:null},{url:"assets/qss-IeuSbFQv.js",revision:null},{url:"assets/qmldir-C8lEn-DE.js",revision:null},{url:"assets/qml-3beO22l8.js",revision:null},{url:"assets/python-B6aJPvgy.js",revision:null},{url:"assets/purescript-CklMAg4u.js",revision:null},{url:"assets/puppet-BMWR74SV.js",revision:null},{url:"assets/pug-DKIMFp6K.js",revision:null},{url:"assets/proto-C7zT0LnQ.js",revision:null},{url:"assets/prolog-CbFg5uaA.js",revision:null},{url:"assets/prisma-Dd19v3D-.js",revision:null},{url:"assets/powershell-Dpen1YoG.js",revision:null},{url:"assets/powerquery-CEu0bR-o.js",revision:null},{url:"assets/postcss-CXtECtnM.js",revision:null},{url:"assets/polar-C0HS_06l.js",revision:null},{url:"assets/poimandres-CS3Unz2-.js",revision:null},{url:"assets/po-BTJTHyun.js",revision:null},{url:"assets/plsql-ChMvpjG-.js",revision:null},{url:"assets/plastic-3e1v2bzS.js",revision:null},{url:"assets/pkl-u5AG7uiY.js",revision:null},{url:"assets/php-Csjmro_R.js",revision:null},{url:"assets/perl-B9cMNwum.js",revision:null},{url:"assets/pascal-D93ZcfNL.js",revision:null},{url:"assets/openscad-C4EeE6gA.js",revision:null},{url:"assets/one-light-C3Wv6jpd.js",revision:null},{url:"assets/one-dark-pro-DVMEJ2y_.js",revision:null},{url:"assets/odin-BBf5iR-q.js",revision:null},{url:"assets/ocaml-C0hk2d4L.js",revision:null},{url:"assets/objective-cpp-CLxacb5B.js",revision:null},{url:"assets/objective-c-DXmwc3jG.js",revision:null},{url:"assets/nushell-Cz2AlsmD.js",revision:null},{url:"assets/nord-Ddv68eIx.js",revision:null},{url:"assets/nix-CwoSXNpI.js",revision:null},{url:"assets/nim-BIad80T-.js",revision:null},{url:"assets/night-owl-light-CMTm3GFP.js",revision:null},{url:"assets/night-owl-C39BiMTA.js",revision:null},{url:"assets/nginx-BpAMiNFr.js",revision:null},{url:"assets/nextflow-groovy-vE_lwT2v.js",revision:null},{url:"assets/nextflow-C-mBbutL.js",revision:null},{url:"assets/narrat-DRg8JJMk.js",revision:null},{url:"assets/move-IF9eRakj.js",revision:null},{url:"assets/moonbit-_H4v1dQx.js",revision:null},{url:"assets/monokai-D4h5O-jR.js",revision:null},{url:"assets/mojo-rZm6bMo-.js",revision:null},{url:"assets/mipsasm-CKIfxQSi.js",revision:null},{url:"assets/min-light-CTRr51gU.js",revision:null},{url:"assets/min-dark-CafNBF8u.js",revision:null},{url:"assets/mermaid-mWjccvbQ.js",revision:null},{url:"assets/mdx-Cmh6b_Ma.js",revision:null},{url:"assets/mdc-DTYItulj.js",revision:null},{url:"assets/matlab-D7o27uSR.js",revision:null},{url:"assets/material-theme-palenight-Csfq5Kiy.js",revision:null},{url:"assets/material-theme-ocean-CyktbL80.js",revision:null},{url:"assets/material-theme-lighter-B0m2ddpp.js",revision:null},{url:"assets/material-theme-darker-BfHTSMKl.js",revision:null},{url:"assets/material-theme-D5KoaKCx.js",revision:null},{url:"assets/marko-DjSrsDqO.js",revision:null},{url:"assets/markdown-Cvjx9yec.js",revision:null},{url:"assets/make-CHLpvVh8.js",revision:null},{url:"assets/luau-KW6xsasC.js",revision:null},{url:"assets/lua-BaeVxFsk.js",revision:null},{url:"assets/logo-BtOb2qkB.js",revision:null},{url:"assets/log-2UxHyX5q.js",revision:null},{url:"assets/llvm-DjAJT7YJ.js",revision:null},{url:"assets/liquid-C0sCDyMI.js",revision:null},{url:"assets/light-plus-B7mTdjB0.js",revision:null},{url:"assets/less-B1dDrJ26.js",revision:null},{url:"assets/lean-BZvkOJ9d.js",revision:null},{url:"assets/latex-CaSxy8MP.js",revision:null},{url:"assets/laserwave-DUszq2jm.js",revision:null},{url:"assets/kusto-wEQ09or8.js",revision:null},{url:"assets/kotlin-BdnUsdx6.js",revision:null},{url:"assets/kdl-DV7GczEv.js",revision:null},{url:"assets/kanagawa-wave-DWedfzmr.js",revision:null},{url:"assets/kanagawa-lotus-CfQXZHmo.js",revision:null},{url:"assets/kanagawa-dragon-CkXjmgJE.js",revision:null},{url:"assets/just-CUsbIsdP.js",revision:null},{url:"assets/julia-D7OTSIA_.js",revision:null},{url:"assets/jsx-g9-lgVsj.js",revision:null},{url:"assets/jssm-C2t-YnRu.js",revision:null},{url:"assets/jsonnet-DFQXde-d.js",revision:null},{url:"assets/jsonl-DcaNXYhu.js",revision:null},{url:"assets/jsonc-Des-eS-w.js",revision:null},{url:"assets/json5-C9tS-k6U.js",revision:null},{url:"assets/json-Cp-IABpG.js",revision:null},{url:"assets/jison-wvAkD_A8.js",revision:null},{url:"assets/jinja-f2NsQr07.js",revision:null},{url:"assets/javascript-wDzz0qaB.js",revision:null},{url:"assets/java-CylS5w8V.js",revision:null},{url:"assets/ini-BEwlwnbL.js",revision:null},{url:"assets/index-CSOB8dwI.css",revision:null},{url:"assets/index-BF6jgTAb.js",revision:null},{url:"assets/imba-DGztddWO.js",revision:null},{url:"assets/hy-DFXneXwc.js",revision:null},{url:"assets/hxml-Bvhsp5Yf.js",revision:null},{url:"assets/hurl-irOxFIW8.js",revision:null},{url:"assets/http-jrhK8wxY.js",revision:null},{url:"assets/html2canvas.esm-QH1iLAAe.js",revision:null},{url:"assets/html-pp8916En.js",revision:null},{url:"assets/html-derivative-DlHx6ybY.js",revision:null},{url:"assets/houston-DnULxvSX.js",revision:null},{url:"assets/horizon-bright-CUuTKBJd.js",revision:null},{url:"assets/horizon-BUw7H-hv.js",revision:null},{url:"assets/hlsl-D3lLCCz7.js",revision:null},{url:"assets/hjson-D5-asLiD.js",revision:null},{url:"assets/hcl-BWvSN4gD.js",revision:null},{url:"assets/haxe-CzTSHFRz.js",revision:null},{url:"assets/haskell-Df6bDoY_.js",revision:null},{url:"assets/handlebars-BpdQsYii.js",revision:null},{url:"assets/haml-D5jkg6IW.js",revision:null},{url:"assets/hack-DbPARsA_.js",revision:null},{url:"assets/gruvbox-light-soft-hJgmCMqR.js",revision:null},{url:"assets/gruvbox-light-medium-DRw_LuNl.js",revision:null},{url:"assets/gruvbox-light-hard-CH1njM8p.js",revision:null},{url:"assets/gruvbox-dark-soft-CVdnzihN.js",revision:null},{url:"assets/gruvbox-dark-medium-GsRaNv29.js",revision:null},{url:"assets/gruvbox-dark-hard-CFHQjOhq.js",revision:null},{url:"assets/groovy-gcz8RCvz.js",revision:null},{url:"assets/graphql-ChdNCCLP.js",revision:null},{url:"assets/go-C27-OAKa.js",revision:null},{url:"assets/gnuplot-DdkO51Og.js",revision:null},{url:"assets/gn-n2N0HUVH.js",revision:null},{url:"assets/glsl-DplSGwfg.js",revision:null},{url:"assets/glimmer-ts-BfAWNZQY.js",revision:null},{url:"assets/glimmer-js-ByusRIyA.js",revision:null},{url:"assets/gleam-BspZqrRM.js",revision:null},{url:"assets/github-light-high-contrast-BfjtVDDH.js",revision:null},{url:"assets/github-light-default-D7oLnXFd.js",revision:null},{url:"assets/github-light-DAi9KRSo.js",revision:null},{url:"assets/github-dark-high-contrast-E3gJ1_iC.js",revision:null},{url:"assets/github-dark-dimmed-DH5Ifo-i.js",revision:null},{url:"assets/github-dark-default-Cuk6v7N8.js",revision:null},{url:"assets/github-dark-DHJKELXO.js",revision:null},{url:"assets/git-rebase-r7XF79zn.js",revision:null},{url:"assets/git-commit-F4YmCXRG.js",revision:null},{url:"assets/gherkin-DyxjwDmM.js",revision:null},{url:"assets/genie-D0YGMca9.js",revision:null},{url:"assets/gdshader-DkwncUOv.js",revision:null},{url:"assets/gdscript-C5YyOfLZ.js",revision:null},{url:"assets/gdresource-BOOCDP_w.js",revision:null},{url:"assets/fsharp-CXgrBDvD.js",revision:null},{url:"assets/fortran-free-form-BxgE0vQu.js",revision:null},{url:"assets/fortran-fixed-form-CkoXwp7k.js",revision:null},{url:"assets/fluent-C4IJs8-o.js",revision:null},{url:"assets/fish-BvzEVeQv.js",revision:null},{url:"assets/fennel-BYunw83y.js",revision:null},{url:"assets/everforest-light-C8M2exoo.js",revision:null},{url:"assets/everforest-dark-BgDCqdQA.js",revision:null},{url:"assets/erlang-DsQrWhSR.js",revision:null},{url:"assets/erb-Dm6A9KJ5.js",revision:null},{url:"assets/emacs-lisp-CXvaQtF9.js",revision:null},{url:"assets/elm-DbKCFpqz.js",revision:null},{url:"assets/elixir-CkH2-t6x.js",revision:null},{url:"assets/edge-FbVlp4U3.js",revision:null},{url:"assets/dream-maker-BtqSS_iP.js",revision:null},{url:"assets/dracula-soft-BXkSAIEj.js",revision:null},{url:"assets/dracula-BzJJZx-M.js",revision:null},{url:"assets/dotenv-Da5cRb03.js",revision:null},{url:"assets/docker-BcOcwvcX.js",revision:null},{url:"assets/diff-D97Zzqfu.js",revision:null},{url:"assets/desktop-BmXAJ9_W.js",revision:null},{url:"assets/dax-CEL-wOlO.js",revision:null},{url:"assets/dart-bE4Kk8sk.js",revision:null},{url:"assets/dark-plus-C3mMm8J8.js",revision:null},{url:"assets/d-85-TOEBH.js",revision:null},{url:"assets/cypher-COkxafJQ.js",revision:null},{url:"assets/cue-D82EKSYY.js",revision:null},{url:"assets/csv-fuZLfV_i.js",revision:null},{url:"assets/css-CLj8gQPS.js",revision:null},{url:"assets/csharp-DSvCPggb.js",revision:null},{url:"assets/crystal-DGywbUpC.js",revision:null},{url:"assets/cpp-UfJy6YNI.js",revision:null},{url:"assets/coq-DkFqJrB1.js",revision:null},{url:"assets/common-lisp-Cg-RD9OK.js",revision:null},{url:"assets/coffee-Ch7k5sss.js",revision:null},{url:"assets/codeql-DsOJ9woJ.js",revision:null},{url:"assets/codeowners-Bp6g37R7.js",revision:null},{url:"assets/cobol-nBiQ_Alo.js",revision:null},{url:"assets/cmake-D1j8_8rp.js",revision:null},{url:"assets/clojure-P80f7IUj.js",revision:null},{url:"assets/clarity-D53aC0YG.js",revision:null},{url:"assets/catppuccin-mocha-D87Tk5Gz.js",revision:null},{url:"assets/catppuccin-macchiato-DQyhUUbL.js",revision:null},{url:"assets/catppuccin-latte-C9dUb6Cb.js",revision:null},{url:"assets/catppuccin-frappe-DFWUc33u.js",revision:null},{url:"assets/cairo-KRGpt6FW.js",revision:null},{url:"assets/cadence-Bv_4Rxtq.js",revision:null},{url:"assets/c3-MRO5bC_T.js",revision:null},{url:"assets/c-BIGW1oBm.js",revision:null},{url:"assets/bsl-BO_Y6i37.js",revision:null},{url:"assets/blade-2xfisSek.js",revision:null},{url:"assets/bird2-BIv1doCn.js",revision:null},{url:"assets/bicep-Bmn6On1c.js",revision:null},{url:"assets/bibtex-CHM0blh-.js",revision:null},{url:"assets/berry-uYugtg8r.js",revision:null},{url:"assets/beancount-k_qm7-4y.js",revision:null},{url:"assets/bat-BkioyH1T.js",revision:null},{url:"assets/ballerina-BFfxhgS-.js",revision:null},{url:"assets/ayu-mirage-32ctXXKs.js",revision:null},{url:"assets/ayu-light-BA47KaF1.js",revision:null},{url:"assets/ayu-dark-DYE7WIF3.js",revision:null},{url:"assets/awk-DMzUqQB5.js",revision:null},{url:"assets/aurora-x-D-2ljcwZ.js",revision:null},{url:"assets/astro-HNnZUWAn.js",revision:null},{url:"assets/asm-D_Q5rh1f.js",revision:null},{url:"assets/asciidoc-Ve4PFQV2.js",revision:null},{url:"assets/ara-BRHolxvo.js",revision:null},{url:"assets/applescript-Co6uUVPk.js",revision:null},{url:"assets/apl-CORt7UWP.js",revision:null},{url:"assets/apex-Dqspr-GT.js",revision:null},{url:"assets/apache-Pmp26Uib.js",revision:null},{url:"assets/angular-ts-BrjP3tb8.js",revision:null},{url:"assets/angular-html-DA-rfuFy.js",revision:null},{url:"assets/andromeeda-C4gqWexZ.js",revision:null},{url:"assets/ada-bCR0ucgS.js",revision:null},{url:"assets/actionscript-3-CoDkCxhg.js",revision:null},{url:"assets/abap-BdImnpbu.js",revision:null},{url:"assets/openfox-192.png",revision:"79feeb86d692c274854e37959a7dae67"},{url:"assets/openfox-512.png",revision:"fee24b214220594b4f595a467e73036e"},{url:"manifest.webmanifest",revision:"c25f372c782e623ab1e768a8dfe350ca"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))});
|
|
1
|
+
if(!self.define){let s,l={};const e=(e,r)=>(e=new URL(e+".js",r).href,l[e]||new Promise(l=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=l,document.head.appendChild(s)}else s=e,importScripts(e),l()}).then(()=>{let s=l[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s}));self.define=(r,i)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(l[n])return;let u={};const a=s=>e(s,n),t={module:{uri:n},exports:u,require:a};l[n]=Promise.all(r.map(s=>t[s]||a(s))).then(s=>(i(...s),u))}}define(["./workbox-8c29f6e4"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"index.html",revision:"4cab97265e9020a6065f041ad4743f7e"},{url:"__inspect__.js",revision:"878b477aaf1805c028895f3d3bb4af71"},{url:"assets/zig-VOosw3JB.js",revision:null},{url:"assets/zenscript-DVFEvuxE.js",revision:null},{url:"assets/yaml-Buea-lGh.js",revision:null},{url:"assets/xsl-CtQFsRM5.js",revision:null},{url:"assets/xml-sdJ4AIDG.js",revision:null},{url:"assets/wolfram-lXgVvXCa.js",revision:null},{url:"assets/wit-5i3qLPDT.js",revision:null},{url:"assets/wikitext-BhOHFoWU.js",revision:null},{url:"assets/wgsl-Dx-B1_4e.js",revision:null},{url:"assets/wenyan-BV7otONQ.js",revision:null},{url:"assets/wasm-MzD3tlZU.js",revision:null},{url:"assets/wasm-CG6Dc4jp.js",revision:null},{url:"assets/vyper-CDx5xZoG.js",revision:null},{url:"assets/vue-vine-BoDAl6tE.js",revision:null},{url:"assets/vue-html-AaS7Mt5G.js",revision:null},{url:"assets/vue-D2xRrEX4.js",revision:null},{url:"assets/vitesse-light-CVO1_9PV.js",revision:null},{url:"assets/vitesse-dark-D0r3Knsf.js",revision:null},{url:"assets/vitesse-black-Bkuqu6BP.js",revision:null},{url:"assets/viml-CJc9bBzg.js",revision:null},{url:"assets/vhdl-CeAyd5Ju.js",revision:null},{url:"assets/vesper-DRje8inN.js",revision:null},{url:"assets/verilog-BQ8w6xss.js",revision:null},{url:"assets/vb-D17OF-Vu.js",revision:null},{url:"assets/vala-CsfeWuGM.js",revision:null},{url:"assets/v-BcVCzyr7.js",revision:null},{url:"assets/typst-DHCkPAjA.js",revision:null},{url:"assets/typespec-CAFt9gP4.js",revision:null},{url:"assets/typescript-BPQ3VLAy.js",revision:null},{url:"assets/twig-CW1WmMYd.js",revision:null},{url:"assets/turtle-BsS91CYL.js",revision:null},{url:"assets/tsx-COt5Ahok.js",revision:null},{url:"assets/tsv-B_m7g4N7.js",revision:null},{url:"assets/ts-tags-D351s5mN.js",revision:null},{url:"assets/toml-vGWfd6FD.js",revision:null},{url:"assets/tokyo-night-hegEt444.js",revision:null},{url:"assets/tex-idrVyKtj.js",revision:null},{url:"assets/terraform-BETggiCN.js",revision:null},{url:"assets/templ-DhtptRzy.js",revision:null},{url:"assets/tcl-dwOrl1Do.js",revision:null},{url:"assets/tasl-QIJgUcNo.js",revision:null},{url:"assets/talonscript-CkByrt1z.js",revision:null},{url:"assets/systemd-4A_iFExJ.js",revision:null},{url:"assets/system-verilog-CnnmHF94.js",revision:null},{url:"assets/synthwave-84-CbfX1IO0.js",revision:null},{url:"assets/swift-D82vCrfD.js",revision:null},{url:"assets/svelte-Cy7k_4gC.js",revision:null},{url:"assets/surrealql-Bq5Q-fJD.js",revision:null},{url:"assets/stylus-BEDo0Tqx.js",revision:null},{url:"assets/stata-DI20mbqo.js",revision:null},{url:"assets/ssh-config-_ykCGR6B.js",revision:null},{url:"assets/sql-CRqJ_cUM.js",revision:null},{url:"assets/splunk-BtCnVYZw.js",revision:null},{url:"assets/sparql-rVzFXLq3.js",revision:null},{url:"assets/soy-8wufbnw4.js",revision:null},{url:"assets/solidity-rGO070M0.js",revision:null},{url:"assets/solarized-light-L9t79GZl.js",revision:null},{url:"assets/solarized-dark-DXbdFlpD.js",revision:null},{url:"assets/snazzy-light-Bw305WKR.js",revision:null},{url:"assets/smalltalk-BERRCDM3.js",revision:null},{url:"assets/slack-ochin-DqwNpetd.js",revision:null},{url:"assets/slack-dark-BthQWCQV.js",revision:null},{url:"assets/shellsession-BADoaaVG.js",revision:null},{url:"assets/shellscript-Yzrsuije.js",revision:null},{url:"assets/shaderlab-Dg9Lc6iA.js",revision:null},{url:"assets/sdbl-DVxCFoDh.js",revision:null},{url:"assets/scss-D5BDwBP9.js",revision:null},{url:"assets/scheme-C98Dy4si.js",revision:null},{url:"assets/scala-C151Ov-r.js",revision:null},{url:"assets/sass-Cj5Yp3dK.js",revision:null},{url:"assets/sas-DEy46yEz.js",revision:null},{url:"assets/rust-B1yitclQ.js",revision:null},{url:"assets/ruby-DyJCeAvU.js",revision:null},{url:"assets/rst-CpCqk9r5.js",revision:null},{url:"assets/rosmsg-BJDFO7_C.js",revision:null},{url:"assets/rose-pine-qdsjHGoJ.js",revision:null},{url:"assets/rose-pine-moon-D4_iv3hh.js",revision:null},{url:"assets/rose-pine-dawn-DHQR4-dF.js",revision:null},{url:"assets/ron-D8l8udqQ.js",revision:null},{url:"assets/riscv-BM1_JUlF.js",revision:null},{url:"assets/rel-C3B-1QV4.js",revision:null},{url:"assets/regexp-CDVJQ6XC.js",revision:null},{url:"assets/reg-C-SQnVFl.js",revision:null},{url:"assets/red-bN70gL4F.js",revision:null},{url:"assets/razor-BjBPvh-w.js",revision:null},{url:"assets/raku-DXvB9xmW.js",revision:null},{url:"assets/racket-BqYA7rlc.js",revision:null},{url:"assets/r-Dspwwk_N.js",revision:null},{url:"assets/qss-IeuSbFQv.js",revision:null},{url:"assets/qmldir-C8lEn-DE.js",revision:null},{url:"assets/qml-3beO22l8.js",revision:null},{url:"assets/python-B6aJPvgy.js",revision:null},{url:"assets/purescript-CklMAg4u.js",revision:null},{url:"assets/puppet-BMWR74SV.js",revision:null},{url:"assets/pug-DKIMFp6K.js",revision:null},{url:"assets/proto-C7zT0LnQ.js",revision:null},{url:"assets/prolog-CbFg5uaA.js",revision:null},{url:"assets/prisma-Dd19v3D-.js",revision:null},{url:"assets/powershell-Dpen1YoG.js",revision:null},{url:"assets/powerquery-CEu0bR-o.js",revision:null},{url:"assets/postcss-CXtECtnM.js",revision:null},{url:"assets/polar-C0HS_06l.js",revision:null},{url:"assets/poimandres-CS3Unz2-.js",revision:null},{url:"assets/po-BTJTHyun.js",revision:null},{url:"assets/plsql-ChMvpjG-.js",revision:null},{url:"assets/plastic-3e1v2bzS.js",revision:null},{url:"assets/pkl-u5AG7uiY.js",revision:null},{url:"assets/php-Csjmro_R.js",revision:null},{url:"assets/perl-B9cMNwum.js",revision:null},{url:"assets/pascal-D93ZcfNL.js",revision:null},{url:"assets/openscad-C4EeE6gA.js",revision:null},{url:"assets/one-light-C3Wv6jpd.js",revision:null},{url:"assets/one-dark-pro-DVMEJ2y_.js",revision:null},{url:"assets/odin-BBf5iR-q.js",revision:null},{url:"assets/ocaml-C0hk2d4L.js",revision:null},{url:"assets/objective-cpp-CLxacb5B.js",revision:null},{url:"assets/objective-c-DXmwc3jG.js",revision:null},{url:"assets/nushell-Cz2AlsmD.js",revision:null},{url:"assets/nord-Ddv68eIx.js",revision:null},{url:"assets/nix-CwoSXNpI.js",revision:null},{url:"assets/nim-BIad80T-.js",revision:null},{url:"assets/night-owl-light-CMTm3GFP.js",revision:null},{url:"assets/night-owl-C39BiMTA.js",revision:null},{url:"assets/nginx-BpAMiNFr.js",revision:null},{url:"assets/nextflow-groovy-vE_lwT2v.js",revision:null},{url:"assets/nextflow-C-mBbutL.js",revision:null},{url:"assets/narrat-DRg8JJMk.js",revision:null},{url:"assets/move-IF9eRakj.js",revision:null},{url:"assets/moonbit-_H4v1dQx.js",revision:null},{url:"assets/monokai-D4h5O-jR.js",revision:null},{url:"assets/mojo-rZm6bMo-.js",revision:null},{url:"assets/mipsasm-CKIfxQSi.js",revision:null},{url:"assets/min-light-CTRr51gU.js",revision:null},{url:"assets/min-dark-CafNBF8u.js",revision:null},{url:"assets/mermaid-mWjccvbQ.js",revision:null},{url:"assets/mdx-Cmh6b_Ma.js",revision:null},{url:"assets/mdc-DTYItulj.js",revision:null},{url:"assets/matlab-D7o27uSR.js",revision:null},{url:"assets/material-theme-palenight-Csfq5Kiy.js",revision:null},{url:"assets/material-theme-ocean-CyktbL80.js",revision:null},{url:"assets/material-theme-lighter-B0m2ddpp.js",revision:null},{url:"assets/material-theme-darker-BfHTSMKl.js",revision:null},{url:"assets/material-theme-D5KoaKCx.js",revision:null},{url:"assets/marko-DjSrsDqO.js",revision:null},{url:"assets/markdown-Cvjx9yec.js",revision:null},{url:"assets/make-CHLpvVh8.js",revision:null},{url:"assets/luau-KW6xsasC.js",revision:null},{url:"assets/lua-BaeVxFsk.js",revision:null},{url:"assets/logo-BtOb2qkB.js",revision:null},{url:"assets/log-2UxHyX5q.js",revision:null},{url:"assets/llvm-DjAJT7YJ.js",revision:null},{url:"assets/liquid-C0sCDyMI.js",revision:null},{url:"assets/light-plus-B7mTdjB0.js",revision:null},{url:"assets/less-B1dDrJ26.js",revision:null},{url:"assets/lean-BZvkOJ9d.js",revision:null},{url:"assets/latex-CaSxy8MP.js",revision:null},{url:"assets/laserwave-DUszq2jm.js",revision:null},{url:"assets/kusto-wEQ09or8.js",revision:null},{url:"assets/kotlin-BdnUsdx6.js",revision:null},{url:"assets/kdl-DV7GczEv.js",revision:null},{url:"assets/kanagawa-wave-DWedfzmr.js",revision:null},{url:"assets/kanagawa-lotus-CfQXZHmo.js",revision:null},{url:"assets/kanagawa-dragon-CkXjmgJE.js",revision:null},{url:"assets/just-CUsbIsdP.js",revision:null},{url:"assets/julia-D7OTSIA_.js",revision:null},{url:"assets/jsx-g9-lgVsj.js",revision:null},{url:"assets/jssm-C2t-YnRu.js",revision:null},{url:"assets/jsonnet-DFQXde-d.js",revision:null},{url:"assets/jsonl-DcaNXYhu.js",revision:null},{url:"assets/jsonc-Des-eS-w.js",revision:null},{url:"assets/json5-C9tS-k6U.js",revision:null},{url:"assets/json-Cp-IABpG.js",revision:null},{url:"assets/jison-wvAkD_A8.js",revision:null},{url:"assets/jinja-f2NsQr07.js",revision:null},{url:"assets/javascript-wDzz0qaB.js",revision:null},{url:"assets/java-CylS5w8V.js",revision:null},{url:"assets/ini-BEwlwnbL.js",revision:null},{url:"assets/index-tJDr1ODC.js",revision:null},{url:"assets/index-CSOB8dwI.css",revision:null},{url:"assets/imba-DGztddWO.js",revision:null},{url:"assets/hy-DFXneXwc.js",revision:null},{url:"assets/hxml-Bvhsp5Yf.js",revision:null},{url:"assets/hurl-irOxFIW8.js",revision:null},{url:"assets/http-jrhK8wxY.js",revision:null},{url:"assets/html2canvas.esm-QH1iLAAe.js",revision:null},{url:"assets/html-pp8916En.js",revision:null},{url:"assets/html-derivative-DlHx6ybY.js",revision:null},{url:"assets/houston-DnULxvSX.js",revision:null},{url:"assets/horizon-bright-CUuTKBJd.js",revision:null},{url:"assets/horizon-BUw7H-hv.js",revision:null},{url:"assets/hlsl-D3lLCCz7.js",revision:null},{url:"assets/hjson-D5-asLiD.js",revision:null},{url:"assets/hcl-BWvSN4gD.js",revision:null},{url:"assets/haxe-CzTSHFRz.js",revision:null},{url:"assets/haskell-Df6bDoY_.js",revision:null},{url:"assets/handlebars-BpdQsYii.js",revision:null},{url:"assets/haml-D5jkg6IW.js",revision:null},{url:"assets/hack-DbPARsA_.js",revision:null},{url:"assets/gruvbox-light-soft-hJgmCMqR.js",revision:null},{url:"assets/gruvbox-light-medium-DRw_LuNl.js",revision:null},{url:"assets/gruvbox-light-hard-CH1njM8p.js",revision:null},{url:"assets/gruvbox-dark-soft-CVdnzihN.js",revision:null},{url:"assets/gruvbox-dark-medium-GsRaNv29.js",revision:null},{url:"assets/gruvbox-dark-hard-CFHQjOhq.js",revision:null},{url:"assets/groovy-gcz8RCvz.js",revision:null},{url:"assets/graphql-ChdNCCLP.js",revision:null},{url:"assets/go-C27-OAKa.js",revision:null},{url:"assets/gnuplot-DdkO51Og.js",revision:null},{url:"assets/gn-n2N0HUVH.js",revision:null},{url:"assets/glsl-DplSGwfg.js",revision:null},{url:"assets/glimmer-ts-BfAWNZQY.js",revision:null},{url:"assets/glimmer-js-ByusRIyA.js",revision:null},{url:"assets/gleam-BspZqrRM.js",revision:null},{url:"assets/github-light-high-contrast-BfjtVDDH.js",revision:null},{url:"assets/github-light-default-D7oLnXFd.js",revision:null},{url:"assets/github-light-DAi9KRSo.js",revision:null},{url:"assets/github-dark-high-contrast-E3gJ1_iC.js",revision:null},{url:"assets/github-dark-dimmed-DH5Ifo-i.js",revision:null},{url:"assets/github-dark-default-Cuk6v7N8.js",revision:null},{url:"assets/github-dark-DHJKELXO.js",revision:null},{url:"assets/git-rebase-r7XF79zn.js",revision:null},{url:"assets/git-commit-F4YmCXRG.js",revision:null},{url:"assets/gherkin-DyxjwDmM.js",revision:null},{url:"assets/genie-D0YGMca9.js",revision:null},{url:"assets/gdshader-DkwncUOv.js",revision:null},{url:"assets/gdscript-C5YyOfLZ.js",revision:null},{url:"assets/gdresource-BOOCDP_w.js",revision:null},{url:"assets/fsharp-CXgrBDvD.js",revision:null},{url:"assets/fortran-free-form-BxgE0vQu.js",revision:null},{url:"assets/fortran-fixed-form-CkoXwp7k.js",revision:null},{url:"assets/fluent-C4IJs8-o.js",revision:null},{url:"assets/fish-BvzEVeQv.js",revision:null},{url:"assets/fennel-BYunw83y.js",revision:null},{url:"assets/everforest-light-C8M2exoo.js",revision:null},{url:"assets/everforest-dark-BgDCqdQA.js",revision:null},{url:"assets/erlang-DsQrWhSR.js",revision:null},{url:"assets/erb-Dm6A9KJ5.js",revision:null},{url:"assets/emacs-lisp-CXvaQtF9.js",revision:null},{url:"assets/elm-DbKCFpqz.js",revision:null},{url:"assets/elixir-CkH2-t6x.js",revision:null},{url:"assets/edge-FbVlp4U3.js",revision:null},{url:"assets/dream-maker-BtqSS_iP.js",revision:null},{url:"assets/dracula-soft-BXkSAIEj.js",revision:null},{url:"assets/dracula-BzJJZx-M.js",revision:null},{url:"assets/dotenv-Da5cRb03.js",revision:null},{url:"assets/docker-BcOcwvcX.js",revision:null},{url:"assets/diff-D97Zzqfu.js",revision:null},{url:"assets/desktop-BmXAJ9_W.js",revision:null},{url:"assets/dax-CEL-wOlO.js",revision:null},{url:"assets/dart-bE4Kk8sk.js",revision:null},{url:"assets/dark-plus-C3mMm8J8.js",revision:null},{url:"assets/d-85-TOEBH.js",revision:null},{url:"assets/cypher-COkxafJQ.js",revision:null},{url:"assets/cue-D82EKSYY.js",revision:null},{url:"assets/csv-fuZLfV_i.js",revision:null},{url:"assets/css-CLj8gQPS.js",revision:null},{url:"assets/csharp-DSvCPggb.js",revision:null},{url:"assets/crystal-DGywbUpC.js",revision:null},{url:"assets/cpp-UfJy6YNI.js",revision:null},{url:"assets/coq-DkFqJrB1.js",revision:null},{url:"assets/common-lisp-Cg-RD9OK.js",revision:null},{url:"assets/coffee-Ch7k5sss.js",revision:null},{url:"assets/codeql-DsOJ9woJ.js",revision:null},{url:"assets/codeowners-Bp6g37R7.js",revision:null},{url:"assets/cobol-nBiQ_Alo.js",revision:null},{url:"assets/cmake-D1j8_8rp.js",revision:null},{url:"assets/clojure-P80f7IUj.js",revision:null},{url:"assets/clarity-D53aC0YG.js",revision:null},{url:"assets/catppuccin-mocha-D87Tk5Gz.js",revision:null},{url:"assets/catppuccin-macchiato-DQyhUUbL.js",revision:null},{url:"assets/catppuccin-latte-C9dUb6Cb.js",revision:null},{url:"assets/catppuccin-frappe-DFWUc33u.js",revision:null},{url:"assets/cairo-KRGpt6FW.js",revision:null},{url:"assets/cadence-Bv_4Rxtq.js",revision:null},{url:"assets/c3-MRO5bC_T.js",revision:null},{url:"assets/c-BIGW1oBm.js",revision:null},{url:"assets/bsl-BO_Y6i37.js",revision:null},{url:"assets/blade-2xfisSek.js",revision:null},{url:"assets/bird2-BIv1doCn.js",revision:null},{url:"assets/bicep-Bmn6On1c.js",revision:null},{url:"assets/bibtex-CHM0blh-.js",revision:null},{url:"assets/berry-uYugtg8r.js",revision:null},{url:"assets/beancount-k_qm7-4y.js",revision:null},{url:"assets/bat-BkioyH1T.js",revision:null},{url:"assets/ballerina-BFfxhgS-.js",revision:null},{url:"assets/ayu-mirage-32ctXXKs.js",revision:null},{url:"assets/ayu-light-BA47KaF1.js",revision:null},{url:"assets/ayu-dark-DYE7WIF3.js",revision:null},{url:"assets/awk-DMzUqQB5.js",revision:null},{url:"assets/aurora-x-D-2ljcwZ.js",revision:null},{url:"assets/astro-HNnZUWAn.js",revision:null},{url:"assets/asm-D_Q5rh1f.js",revision:null},{url:"assets/asciidoc-Ve4PFQV2.js",revision:null},{url:"assets/ara-BRHolxvo.js",revision:null},{url:"assets/applescript-Co6uUVPk.js",revision:null},{url:"assets/apl-CORt7UWP.js",revision:null},{url:"assets/apex-Dqspr-GT.js",revision:null},{url:"assets/apache-Pmp26Uib.js",revision:null},{url:"assets/angular-ts-BrjP3tb8.js",revision:null},{url:"assets/angular-html-DA-rfuFy.js",revision:null},{url:"assets/andromeeda-C4gqWexZ.js",revision:null},{url:"assets/ada-bCR0ucgS.js",revision:null},{url:"assets/actionscript-3-CoDkCxhg.js",revision:null},{url:"assets/abap-BdImnpbu.js",revision:null},{url:"assets/openfox-192.png",revision:"79feeb86d692c274854e37959a7dae67"},{url:"assets/openfox-512.png",revision:"fee24b214220594b4f595a467e73036e"},{url:"manifest.webmanifest",revision:"c25f372c782e623ab1e768a8dfe350ca"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))});
|