openfox 2.0.63 → 2.0.64
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-WNARPARQ.js → chat-handler-LI4R4Z2E.js} +3 -3
- package/dist/{chunk-IVJYQZSN.js → chunk-73N5CJH3.js} +4 -4
- package/dist/{chunk-W4PUAODY.js → chunk-HZNY77HZ.js} +3 -3
- package/dist/{chunk-N5JF4RYJ.js → chunk-JFQSQO2N.js} +16 -16
- package/dist/{chunk-FGG4KRFX.js → chunk-O3G6X5CT.js} +2 -2
- package/dist/{chunk-5OPZLQDV.js → chunk-WD75RSGR.js} +114 -82
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{orchestrator-OIBLY5QJ.js → orchestrator-PFN7C5JI.js} +3 -3
- package/dist/package.json +1 -1
- package/dist/{processor-27VCKRGB.js → processor-AYYXP5NS.js} +3 -3
- package/dist/{serve-HB222ARV.js → serve-54KALE6R.js} +5 -5
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +4 -4
- package/dist/{server-XDC7R2IX.js → server-Z2A5YZM6.js} +4 -4
- package/dist/{tools-W2FFSF4N.js → tools-R6LPK6OS.js} +2 -2
- package/dist/web/assets/{index-bSaZSLjg.js → index-CkE65FP4.js} +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
} from "./chunk-QJ5FH5DP.js";
|
|
6
6
|
import {
|
|
7
7
|
runChatTurn
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-73N5CJH3.js";
|
|
9
|
+
import "./chunk-WD75RSGR.js";
|
|
10
10
|
import "./chunk-X5YCWKNS.js";
|
|
11
11
|
import "./chunk-LBGHZLLH.js";
|
|
12
12
|
import "./chunk-BGTEIA2S.js";
|
|
@@ -154,4 +154,4 @@ export {
|
|
|
154
154
|
startChatSession,
|
|
155
155
|
stopSessionExecution
|
|
156
156
|
};
|
|
157
|
-
//# sourceMappingURL=chat-handler-
|
|
157
|
+
//# sourceMappingURL=chat-handler-LI4R4Z2E.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
loadAllAgentsDefault,
|
|
11
11
|
processEventsForConversation,
|
|
12
12
|
runTopLevelAgentLoop
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-WD75RSGR.js";
|
|
14
14
|
import {
|
|
15
15
|
TurnMetrics,
|
|
16
16
|
WORKFLOW_KICKOFF_PROMPT,
|
|
@@ -65,7 +65,7 @@ function resolveAgentDef(sessionManager, sessionId) {
|
|
|
65
65
|
}
|
|
66
66
|
async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
|
|
67
67
|
const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
|
|
68
|
-
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-
|
|
68
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-R6LPK6OS.js");
|
|
69
69
|
const tools = getToolRegistryForAgent2(agentDef).definitions;
|
|
70
70
|
const toolFingerprint = getToolFingerprint(tools);
|
|
71
71
|
const allAgents = await loadAllAgentsDefault();
|
|
@@ -78,7 +78,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
|
|
|
78
78
|
async function computeSessionHash(sessionManager, sessionId) {
|
|
79
79
|
const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
|
|
80
80
|
const agentDef = await resolveAgentDef(sessionManager, sessionId);
|
|
81
|
-
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-
|
|
81
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-R6LPK6OS.js");
|
|
82
82
|
const tools = getToolRegistryForAgent2(agentDef).definitions;
|
|
83
83
|
const toolFingerprint = getToolFingerprint(tools);
|
|
84
84
|
return computeDynamicContextHash(instructionContent, skills, toolFingerprint);
|
|
@@ -383,4 +383,4 @@ export {
|
|
|
383
383
|
runAgentTurn,
|
|
384
384
|
injectWorkflowKickoffIfNeeded
|
|
385
385
|
};
|
|
386
|
-
//# sourceMappingURL=chunk-
|
|
386
|
+
//# sourceMappingURL=chunk-73N5CJH3.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
injectWorkflowKickoffIfNeeded,
|
|
8
8
|
runAgentTurn,
|
|
9
9
|
runChatTurn
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-73N5CJH3.js";
|
|
11
11
|
import {
|
|
12
12
|
checkAborted,
|
|
13
13
|
deleteItemFromDir,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
loadAllAgentsDefault,
|
|
20
20
|
saveItemToDir,
|
|
21
21
|
spawnShellProcess
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-WD75RSGR.js";
|
|
23
23
|
import {
|
|
24
24
|
TurnMetrics,
|
|
25
25
|
createMessageStartEvent
|
|
@@ -2092,4 +2092,4 @@ export {
|
|
|
2092
2092
|
signalMcpReady,
|
|
2093
2093
|
createWebSocketServer
|
|
2094
2094
|
};
|
|
2095
|
-
//# sourceMappingURL=chunk-
|
|
2095
|
+
//# sourceMappingURL=chunk-HZNY77HZ.js.map
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
tokenFromPassword,
|
|
22
22
|
verifyPassword,
|
|
23
23
|
workflowExists
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-HZNY77HZ.js";
|
|
25
25
|
import {
|
|
26
26
|
agentExists,
|
|
27
27
|
createToolRegistry,
|
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
setSkillEnabled,
|
|
67
67
|
skillExists,
|
|
68
68
|
updateOwnedSkill
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-WD75RSGR.js";
|
|
70
70
|
import {
|
|
71
71
|
ALWAYS_ALLOWED,
|
|
72
72
|
ALWAYS_ALLOWED_FOR_SUBAGENTS,
|
|
@@ -4076,7 +4076,7 @@ import { Router as Router8 } from "express";
|
|
|
4076
4076
|
import { spawn as spawn2 } from "child_process";
|
|
4077
4077
|
|
|
4078
4078
|
// src/constants.ts
|
|
4079
|
-
var VERSION = "2.0.
|
|
4079
|
+
var VERSION = "2.0.64";
|
|
4080
4080
|
|
|
4081
4081
|
// src/server/routes/auto-update.ts
|
|
4082
4082
|
var updateInProgress = false;
|
|
@@ -4516,7 +4516,7 @@ async function createServerHandle(config3) {
|
|
|
4516
4516
|
setMcpTools(mcpTools);
|
|
4517
4517
|
logger.info("MCP tools registered", { count: mcpTools.length });
|
|
4518
4518
|
}
|
|
4519
|
-
const { signalMcpReady } = await import("./server-
|
|
4519
|
+
const { signalMcpReady } = await import("./server-Z2A5YZM6.js");
|
|
4520
4520
|
signalMcpReady();
|
|
4521
4521
|
});
|
|
4522
4522
|
const app = express();
|
|
@@ -4709,7 +4709,7 @@ async function createServerHandle(config3) {
|
|
|
4709
4709
|
app.get("/api/sessions/:id", async (req, res) => {
|
|
4710
4710
|
const { getEventStore: getEventStore2 } = await import("./events-52XADT6Y.js");
|
|
4711
4711
|
const { buildMessagesFromStoredEvents } = await import("./folding-2BGFLV5J.js");
|
|
4712
|
-
const { getPendingQuestionsForSession } = await import("./tools-
|
|
4712
|
+
const { getPendingQuestionsForSession } = await import("./tools-R6LPK6OS.js");
|
|
4713
4713
|
const session = sessionManager.getSession(req.params.id);
|
|
4714
4714
|
if (!session) {
|
|
4715
4715
|
return res.status(404).json({ error: "Session not found" });
|
|
@@ -4728,8 +4728,8 @@ async function createServerHandle(config3) {
|
|
|
4728
4728
|
if (!session) {
|
|
4729
4729
|
return res.status(404).json({ error: "Session not found" });
|
|
4730
4730
|
}
|
|
4731
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
4732
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
4731
|
+
const { stopSessionExecution } = await import("./chat-handler-LI4R4Z2E.js");
|
|
4732
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-R6LPK6OS.js");
|
|
4733
4733
|
sessionManager.clearMessageQueue(sessionId);
|
|
4734
4734
|
stopSessionExecution(sessionId, sessionManager);
|
|
4735
4735
|
abortSession(sessionId);
|
|
@@ -4883,7 +4883,7 @@ async function createServerHandle(config3) {
|
|
|
4883
4883
|
if (!callId || approved === void 0) {
|
|
4884
4884
|
return res.status(400).json({ error: "callId and approved are required" });
|
|
4885
4885
|
}
|
|
4886
|
-
const { providePathConfirmation } = await import("./tools-
|
|
4886
|
+
const { providePathConfirmation } = await import("./tools-R6LPK6OS.js");
|
|
4887
4887
|
const result = providePathConfirmation(callId, approved, alwaysAllow);
|
|
4888
4888
|
if (!result.found) {
|
|
4889
4889
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
@@ -4891,7 +4891,7 @@ async function createServerHandle(config3) {
|
|
|
4891
4891
|
const { getEventStore: getEventStore2 } = await import("./events-52XADT6Y.js");
|
|
4892
4892
|
const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-2BGFLV5J.js");
|
|
4893
4893
|
const { createSessionStateMessage } = await import("./protocol-CTNE3ANP.js");
|
|
4894
|
-
const { getPendingQuestionsForSession } = await import("./tools-
|
|
4894
|
+
const { getPendingQuestionsForSession } = await import("./tools-R6LPK6OS.js");
|
|
4895
4895
|
const eventStore = getEventStore2();
|
|
4896
4896
|
const events = eventStore.getEvents(sessionId);
|
|
4897
4897
|
const messages = buildMessagesFromStoredEvents(events);
|
|
@@ -4912,7 +4912,7 @@ async function createServerHandle(config3) {
|
|
|
4912
4912
|
if (!skip && typeof answer !== "string") {
|
|
4913
4913
|
return res.status(400).json({ error: "answer is required when not skipping" });
|
|
4914
4914
|
}
|
|
4915
|
-
const { provideAnswer } = await import("./tools-
|
|
4915
|
+
const { provideAnswer } = await import("./tools-R6LPK6OS.js");
|
|
4916
4916
|
const found = provideAnswer(callId, answer ?? "", skip ?? false);
|
|
4917
4917
|
if (!found) {
|
|
4918
4918
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -4972,7 +4972,7 @@ async function createServerHandle(config3) {
|
|
|
4972
4972
|
backend: activeProvider?.backend ?? llmClient.getBackend(),
|
|
4973
4973
|
model: llmClient.getModel()
|
|
4974
4974
|
};
|
|
4975
|
-
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-
|
|
4975
|
+
const { runAgentTurn, TurnMetrics } = await import("./orchestrator-PFN7C5JI.js");
|
|
4976
4976
|
runAgentTurn(
|
|
4977
4977
|
{
|
|
4978
4978
|
sessionManager,
|
|
@@ -5010,8 +5010,8 @@ async function createServerHandle(config3) {
|
|
|
5010
5010
|
if (!session) {
|
|
5011
5011
|
return res.status(404).json({ error: "Session not found" });
|
|
5012
5012
|
}
|
|
5013
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
5014
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
5013
|
+
const { stopSessionExecution } = await import("./chat-handler-LI4R4Z2E.js");
|
|
5014
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-R6LPK6OS.js");
|
|
5015
5015
|
const queuedMessages = sessionManager.getQueueState(sessionId);
|
|
5016
5016
|
sessionManager.clearMessageQueue(sessionId);
|
|
5017
5017
|
stopSessionExecution(sessionId, sessionManager);
|
|
@@ -5612,7 +5612,7 @@ async function createServerHandle(config3) {
|
|
|
5612
5612
|
});
|
|
5613
5613
|
async function rebuildMcpTools() {
|
|
5614
5614
|
const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-MOGEI6TP.js");
|
|
5615
|
-
const { setMcpTools: setMcpTools2 } = await import("./tools-
|
|
5615
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-R6LPK6OS.js");
|
|
5616
5616
|
const mcpTools = createMcpTools2(mcpManager);
|
|
5617
5617
|
setMcpTools2(mcpTools);
|
|
5618
5618
|
}
|
|
@@ -5932,7 +5932,7 @@ async function createServerHandle(config3) {
|
|
|
5932
5932
|
const state = sessionManager.getContextState(sessionId);
|
|
5933
5933
|
wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
|
|
5934
5934
|
});
|
|
5935
|
-
const { QueueProcessor } = await import("./processor-
|
|
5935
|
+
const { QueueProcessor } = await import("./processor-AYYXP5NS.js");
|
|
5936
5936
|
const queueProcessor = new QueueProcessor({
|
|
5937
5937
|
sessionManager,
|
|
5938
5938
|
providerManager,
|
|
@@ -6013,4 +6013,4 @@ export {
|
|
|
6013
6013
|
createServerHandle,
|
|
6014
6014
|
createServer
|
|
6015
6015
|
};
|
|
6016
|
-
//# sourceMappingURL=chunk-
|
|
6016
|
+
//# sourceMappingURL=chunk-JFQSQO2N.js.map
|
|
@@ -208,7 +208,7 @@ async function runCli(options) {
|
|
|
208
208
|
if (!configExists) {
|
|
209
209
|
await runNetworkSetup(mode);
|
|
210
210
|
}
|
|
211
|
-
const { runServe } = await import("./serve-
|
|
211
|
+
const { runServe } = await import("./serve-54KALE6R.js");
|
|
212
212
|
const serveOptions = { mode };
|
|
213
213
|
if (values.port) serveOptions.port = parseInt(values.port);
|
|
214
214
|
if (values["no-browser"] === true) serveOptions.openBrowser = false;
|
|
@@ -220,4 +220,4 @@ async function runCli(options) {
|
|
|
220
220
|
export {
|
|
221
221
|
runCli
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=chunk-
|
|
223
|
+
//# sourceMappingURL=chunk-O3G6X5CT.js.map
|
|
@@ -380,7 +380,21 @@ function extractGitNoVerify(command) {
|
|
|
380
380
|
}
|
|
381
381
|
return false;
|
|
382
382
|
}
|
|
383
|
-
async function requestPathAccess(paths, workdir, sessionId, callId, tool, onEvent, dangerLevel, command) {
|
|
383
|
+
async function requestPathAccess(paths, workdir, sessionId, callId, tool, onEvent, dangerLevel, command, isSubAgent) {
|
|
384
|
+
if (isSubAgent) {
|
|
385
|
+
const result2 = await checkPathsAccess(paths, workdir, sessionId);
|
|
386
|
+
if (!result2.needsConfirmation) return;
|
|
387
|
+
if (dangerLevel === "dangerous") {
|
|
388
|
+
const allPaths2 = [.../* @__PURE__ */ new Set([...result2.deniedPaths, ...result2.sensitivePaths])];
|
|
389
|
+
addAllowedPaths(sessionId, allPaths2);
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
const allPaths = [.../* @__PURE__ */ new Set([...result2.deniedPaths, ...result2.sensitivePaths])];
|
|
393
|
+
const hasDenied2 = result2.deniedPaths.length > 0;
|
|
394
|
+
const hasSensitive2 = result2.sensitivePaths.length > 0;
|
|
395
|
+
const reason2 = hasDenied2 && hasSensitive2 ? "both" : hasDenied2 ? "outside_workdir" : "sensitive_file";
|
|
396
|
+
throw new PathAccessDeniedError(allPaths, tool, reason2);
|
|
397
|
+
}
|
|
384
398
|
const emitPendingEvent = (confirmationPaths, confirmationReason) => {
|
|
385
399
|
try {
|
|
386
400
|
const eventStore = getEventStore();
|
|
@@ -553,7 +567,8 @@ function createTool(name, definition, handler2) {
|
|
|
553
567
|
name,
|
|
554
568
|
context.onEvent,
|
|
555
569
|
context.dangerLevel,
|
|
556
|
-
command
|
|
570
|
+
command,
|
|
571
|
+
context.isSubAgent
|
|
557
572
|
);
|
|
558
573
|
}
|
|
559
574
|
},
|
|
@@ -2579,6 +2594,9 @@ async function executeTools(assistantMsgId, toolCalls, ctx, append) {
|
|
|
2579
2594
|
if (ctx.dangerLevel) {
|
|
2580
2595
|
toolContext.dangerLevel = ctx.dangerLevel;
|
|
2581
2596
|
}
|
|
2597
|
+
if (ctx.isSubAgent) {
|
|
2598
|
+
toolContext.isSubAgent = true;
|
|
2599
|
+
}
|
|
2582
2600
|
const startTime = Date.now();
|
|
2583
2601
|
let toolResult;
|
|
2584
2602
|
try {
|
|
@@ -2957,6 +2975,9 @@ ${COMPACTION_PROMPT}`,
|
|
|
2957
2975
|
if (session.dangerLevel) {
|
|
2958
2976
|
batchContext.dangerLevel = session.dangerLevel;
|
|
2959
2977
|
}
|
|
2978
|
+
if (config.subAgentMetadata) {
|
|
2979
|
+
batchContext.isSubAgent = true;
|
|
2980
|
+
}
|
|
2960
2981
|
batchContext.agentTimeout = getRuntimeConfig().agent.toolTimeout;
|
|
2961
2982
|
const batchResult = await executeTools(assistantMsgId, result.toolCalls, batchContext, append);
|
|
2962
2983
|
if (batchResult.stepDoneCalled) {
|
|
@@ -3766,7 +3787,7 @@ var callSubAgentTool = {
|
|
|
3766
3787
|
};
|
|
3767
3788
|
}
|
|
3768
3789
|
try {
|
|
3769
|
-
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-
|
|
3790
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-R6LPK6OS.js");
|
|
3770
3791
|
const toolRegistry = getToolRegistryForAgent2(agentDef);
|
|
3771
3792
|
const turnMetrics = new TurnMetrics();
|
|
3772
3793
|
const result = await executeSubAgent({
|
|
@@ -4688,7 +4709,7 @@ var mcpConfigTool = createTool(
|
|
|
4688
4709
|
mcpNotifyChanged?.(sessionId);
|
|
4689
4710
|
}
|
|
4690
4711
|
async function rebuildTools() {
|
|
4691
|
-
const { setMcpTools: setMcpTools2 } = await import("./tools-
|
|
4712
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-R6LPK6OS.js");
|
|
4692
4713
|
const mcpTools = createMcpTools(mcpManagerForTools);
|
|
4693
4714
|
setMcpTools2(mcpTools);
|
|
4694
4715
|
}
|
|
@@ -5259,103 +5280,114 @@ function createRegistryFromTools(tools, allowedTools, toolPermissions, agentId,
|
|
|
5259
5280
|
for (const tool of tools) {
|
|
5260
5281
|
toolMap.set(tool.name, tool);
|
|
5261
5282
|
}
|
|
5283
|
+
async function trySubAgentAlias(name, args, context) {
|
|
5284
|
+
if (!toolMap.has("call_sub_agent")) {
|
|
5285
|
+
return null;
|
|
5286
|
+
}
|
|
5287
|
+
try {
|
|
5288
|
+
const agents = await loadAllAgentsDefault();
|
|
5289
|
+
const agentDef = findAgentById(name, agents);
|
|
5290
|
+
if (!agentDef?.metadata.subagent) {
|
|
5291
|
+
return null;
|
|
5292
|
+
}
|
|
5293
|
+
const prompt = extractSubAgentPrompt(args);
|
|
5294
|
+
logger.info("Sub-agent alias transformation", {
|
|
5295
|
+
from: name,
|
|
5296
|
+
to: "call_sub_agent",
|
|
5297
|
+
subAgentType: name
|
|
5298
|
+
});
|
|
5299
|
+
return callSubAgentTool.execute({ subAgentType: name, prompt }, context);
|
|
5300
|
+
} catch (err) {
|
|
5301
|
+
logger.warn("Sub-agent alias resolution failed", {
|
|
5302
|
+
tool: name,
|
|
5303
|
+
error: err instanceof Error ? err.message : String(err)
|
|
5304
|
+
});
|
|
5305
|
+
return null;
|
|
5306
|
+
}
|
|
5307
|
+
}
|
|
5262
5308
|
return {
|
|
5263
5309
|
tools,
|
|
5264
5310
|
definitions: tools.map((t) => t.definition),
|
|
5265
5311
|
async execute(name, args, context) {
|
|
5266
5312
|
const tool = toolMap.get(name);
|
|
5267
|
-
if (
|
|
5268
|
-
|
|
5269
|
-
|
|
5270
|
-
|
|
5271
|
-
|
|
5272
|
-
|
|
5273
|
-
|
|
5274
|
-
logger.warn("Sub-agent alias redirect", { from: name, to: "call_sub_agent", subAgentType: name });
|
|
5275
|
-
return callSubAgentTool.execute({ subAgentType: name, prompt }, context);
|
|
5276
|
-
}
|
|
5277
|
-
} catch (err) {
|
|
5278
|
-
logger.warn("Sub-agent alias resolution failed", {
|
|
5313
|
+
if (tool) {
|
|
5314
|
+
const isMcpTool = !getBuiltInToolNames().has(name);
|
|
5315
|
+
const hasRestrictions = allowedTools !== void 0;
|
|
5316
|
+
if (!isMcpTool && hasRestrictions) {
|
|
5317
|
+
const effectiveTools = computeEffectiveTools(allowedTools, isSubAgent ? "sub-agent" : "agent");
|
|
5318
|
+
if (!effectiveTools.has(name)) {
|
|
5319
|
+
logger.debug("Permission denied: tool not in allowed list", {
|
|
5279
5320
|
tool: name,
|
|
5280
|
-
|
|
5321
|
+
allowedTools
|
|
5281
5322
|
});
|
|
5323
|
+
return {
|
|
5324
|
+
success: false,
|
|
5325
|
+
error: createPermissionErrorMessage(name, allowedTools, agentId, isSubAgent),
|
|
5326
|
+
durationMs: 0,
|
|
5327
|
+
truncated: false
|
|
5328
|
+
};
|
|
5282
5329
|
}
|
|
5283
5330
|
}
|
|
5284
|
-
|
|
5285
|
-
|
|
5286
|
-
|
|
5287
|
-
|
|
5288
|
-
|
|
5331
|
+
if (toolPermissions) {
|
|
5332
|
+
const action = args["action"];
|
|
5333
|
+
if (action) {
|
|
5334
|
+
const actionError = validateToolAction(name, action, toolPermissions);
|
|
5335
|
+
if (actionError) {
|
|
5336
|
+
logger.debug("Permission denied: action not allowed", {
|
|
5337
|
+
tool: name,
|
|
5338
|
+
action,
|
|
5339
|
+
toolPermissions
|
|
5340
|
+
});
|
|
5341
|
+
return {
|
|
5342
|
+
success: false,
|
|
5343
|
+
error: actionError,
|
|
5344
|
+
durationMs: 0,
|
|
5345
|
+
truncated: false
|
|
5346
|
+
};
|
|
5347
|
+
}
|
|
5348
|
+
}
|
|
5349
|
+
}
|
|
5350
|
+
const permittedActionsArray = {};
|
|
5351
|
+
for (const [key, value] of Object.entries(toolPermissions || {})) {
|
|
5352
|
+
permittedActionsArray[key] = [...value];
|
|
5353
|
+
}
|
|
5354
|
+
const contextWithPerms = {
|
|
5355
|
+
...context,
|
|
5356
|
+
permittedActions: Object.keys(permittedActionsArray).length > 0 ? permittedActionsArray : void 0
|
|
5289
5357
|
};
|
|
5290
|
-
|
|
5291
|
-
|
|
5292
|
-
|
|
5293
|
-
|
|
5294
|
-
const effectiveTools = computeEffectiveTools(allowedTools, isSubAgent ? "sub-agent" : "agent");
|
|
5295
|
-
if (!effectiveTools.has(name)) {
|
|
5296
|
-
logger.debug("Permission denied: tool not in allowed list", {
|
|
5358
|
+
logger.debug("Executing tool", { tool: name, args });
|
|
5359
|
+
try {
|
|
5360
|
+
const result = await tool.execute(args, contextWithPerms);
|
|
5361
|
+
logger.debug("Tool completed", {
|
|
5297
5362
|
tool: name,
|
|
5298
|
-
|
|
5363
|
+
success: result.success,
|
|
5364
|
+
durationMs: result.durationMs
|
|
5299
5365
|
});
|
|
5366
|
+
return result;
|
|
5367
|
+
} catch (error) {
|
|
5368
|
+
if (error instanceof AskUserInterrupt) {
|
|
5369
|
+
throw error;
|
|
5370
|
+
}
|
|
5371
|
+
if (error instanceof PathAccessDeniedError) {
|
|
5372
|
+
throw error;
|
|
5373
|
+
}
|
|
5374
|
+
logger.error("Tool execution error", { tool: name, error });
|
|
5300
5375
|
return {
|
|
5301
5376
|
success: false,
|
|
5302
|
-
error:
|
|
5377
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
5303
5378
|
durationMs: 0,
|
|
5304
5379
|
truncated: false
|
|
5305
5380
|
};
|
|
5306
5381
|
}
|
|
5307
5382
|
}
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
action,
|
|
5316
|
-
toolPermissions
|
|
5317
|
-
});
|
|
5318
|
-
return {
|
|
5319
|
-
success: false,
|
|
5320
|
-
error: actionError,
|
|
5321
|
-
durationMs: 0,
|
|
5322
|
-
truncated: false
|
|
5323
|
-
};
|
|
5324
|
-
}
|
|
5325
|
-
}
|
|
5326
|
-
}
|
|
5327
|
-
const permittedActionsArray = {};
|
|
5328
|
-
for (const [key, value] of Object.entries(toolPermissions || {})) {
|
|
5329
|
-
permittedActionsArray[key] = [...value];
|
|
5330
|
-
}
|
|
5331
|
-
const contextWithPerms = {
|
|
5332
|
-
...context,
|
|
5333
|
-
permittedActions: Object.keys(permittedActionsArray).length > 0 ? permittedActionsArray : void 0
|
|
5383
|
+
const aliasResult = await trySubAgentAlias(name, args, context);
|
|
5384
|
+
if (aliasResult) return aliasResult;
|
|
5385
|
+
return {
|
|
5386
|
+
success: false,
|
|
5387
|
+
error: `Unknown tool: ${name}. Available tools: ${tools.map((t) => t.name).join(", ")}`,
|
|
5388
|
+
durationMs: 0,
|
|
5389
|
+
truncated: false
|
|
5334
5390
|
};
|
|
5335
|
-
logger.debug("Executing tool", { tool: name, args });
|
|
5336
|
-
try {
|
|
5337
|
-
const result = await tool.execute(args, contextWithPerms);
|
|
5338
|
-
logger.debug("Tool completed", {
|
|
5339
|
-
tool: name,
|
|
5340
|
-
success: result.success,
|
|
5341
|
-
durationMs: result.durationMs
|
|
5342
|
-
});
|
|
5343
|
-
return result;
|
|
5344
|
-
} catch (error) {
|
|
5345
|
-
if (error instanceof AskUserInterrupt) {
|
|
5346
|
-
throw error;
|
|
5347
|
-
}
|
|
5348
|
-
if (error instanceof PathAccessDeniedError) {
|
|
5349
|
-
throw error;
|
|
5350
|
-
}
|
|
5351
|
-
logger.error("Tool execution error", { tool: name, error });
|
|
5352
|
-
return {
|
|
5353
|
-
success: false,
|
|
5354
|
-
error: error instanceof Error ? error.message : "Unknown error",
|
|
5355
|
-
durationMs: 0,
|
|
5356
|
-
truncated: false
|
|
5357
|
-
};
|
|
5358
|
-
}
|
|
5359
5391
|
}
|
|
5360
5392
|
};
|
|
5361
5393
|
}
|
|
@@ -5492,4 +5524,4 @@ export {
|
|
|
5492
5524
|
getToolRegistryForAgent,
|
|
5493
5525
|
createToolRegistry
|
|
5494
5526
|
};
|
|
5495
|
-
//# sourceMappingURL=chunk-
|
|
5527
|
+
//# sourceMappingURL=chunk-WD75RSGR.js.map
|
package/dist/cli/dev.js
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
injectWorkflowKickoffIfNeeded,
|
|
3
3
|
runAgentTurn,
|
|
4
4
|
runChatTurn
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-73N5CJH3.js";
|
|
6
|
+
import "./chunk-WD75RSGR.js";
|
|
7
7
|
import {
|
|
8
8
|
TurnMetrics,
|
|
9
9
|
createChatDoneEvent,
|
|
@@ -43,4 +43,4 @@ export {
|
|
|
43
43
|
runAgentTurn,
|
|
44
44
|
runChatTurn
|
|
45
45
|
};
|
|
46
|
-
//# sourceMappingURL=orchestrator-
|
|
46
|
+
//# sourceMappingURL=orchestrator-PFN7C5JI.js.map
|
package/dist/package.json
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
finalizeTurnCompletion,
|
|
4
4
|
generateSessionNameForSession
|
|
5
5
|
} from "./chunk-QJ5FH5DP.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-WD75RSGR.js";
|
|
7
7
|
import "./chunk-X5YCWKNS.js";
|
|
8
8
|
import "./chunk-LBGHZLLH.js";
|
|
9
9
|
import "./chunk-BGTEIA2S.js";
|
|
@@ -175,7 +175,7 @@ var QueueProcessor = class {
|
|
|
175
175
|
backend: provider?.backend ?? llmClient.getBackend(),
|
|
176
176
|
model: llmClient.getModel()
|
|
177
177
|
};
|
|
178
|
-
const { runChatTurn } = await import("./orchestrator-
|
|
178
|
+
const { runChatTurn } = await import("./orchestrator-PFN7C5JI.js");
|
|
179
179
|
const runChatTurnParams = buildRunChatTurnParams({
|
|
180
180
|
sessionManager,
|
|
181
181
|
sessionId,
|
|
@@ -223,4 +223,4 @@ var QueueProcessor = class {
|
|
|
223
223
|
export {
|
|
224
224
|
QueueProcessor
|
|
225
225
|
};
|
|
226
|
-
//# sourceMappingURL=processor-
|
|
226
|
+
//# sourceMappingURL=processor-AYYXP5NS.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VERSION,
|
|
3
3
|
createServer
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-JFQSQO2N.js";
|
|
5
|
+
import "./chunk-HZNY77HZ.js";
|
|
6
6
|
import "./chunk-OESYKZCM.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-73N5CJH3.js";
|
|
8
|
+
import "./chunk-WD75RSGR.js";
|
|
9
9
|
import "./chunk-X5YCWKNS.js";
|
|
10
10
|
import "./chunk-LBGHZLLH.js";
|
|
11
11
|
import "./chunk-BGTEIA2S.js";
|
|
@@ -204,4 +204,4 @@ async function runServe(options) {
|
|
|
204
204
|
export {
|
|
205
205
|
runServe
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=serve-
|
|
207
|
+
//# sourceMappingURL=serve-54KALE6R.js.map
|
package/dist/server/index.d.ts
CHANGED
|
@@ -542,6 +542,7 @@ interface ToolContext {
|
|
|
542
542
|
sessionId: string;
|
|
543
543
|
sessionManager: SessionManager;
|
|
544
544
|
dangerLevel?: DangerLevel$1;
|
|
545
|
+
isSubAgent?: boolean;
|
|
545
546
|
signal?: AbortSignal | undefined;
|
|
546
547
|
onProgress?: ((message: string) => void) | undefined;
|
|
547
548
|
onEvent?: ((event: ServerMessage) => void) | undefined;
|
package/dist/server/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer,
|
|
3
3
|
createServerHandle
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-JFQSQO2N.js";
|
|
5
|
+
import "../chunk-HZNY77HZ.js";
|
|
6
6
|
import "../chunk-OESYKZCM.js";
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-73N5CJH3.js";
|
|
8
|
+
import "../chunk-WD75RSGR.js";
|
|
9
9
|
import "../chunk-X5YCWKNS.js";
|
|
10
10
|
import "../chunk-LBGHZLLH.js";
|
|
11
11
|
import "../chunk-BGTEIA2S.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createWebSocketServer,
|
|
3
3
|
signalMcpReady
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-HZNY77HZ.js";
|
|
5
5
|
import "./chunk-OESYKZCM.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-73N5CJH3.js";
|
|
7
|
+
import "./chunk-WD75RSGR.js";
|
|
8
8
|
import "./chunk-X5YCWKNS.js";
|
|
9
9
|
import "./chunk-LBGHZLLH.js";
|
|
10
10
|
import "./chunk-BGTEIA2S.js";
|
|
@@ -31,4 +31,4 @@ export {
|
|
|
31
31
|
createWebSocketServer,
|
|
32
32
|
signalMcpReady
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=server-
|
|
34
|
+
//# sourceMappingURL=server-Z2A5YZM6.js.map
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
setMcpTools,
|
|
13
13
|
stepDoneTool,
|
|
14
14
|
validateToolAction
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WD75RSGR.js";
|
|
16
16
|
import "./chunk-X5YCWKNS.js";
|
|
17
17
|
import "./chunk-LBGHZLLH.js";
|
|
18
18
|
import "./chunk-BGTEIA2S.js";
|
|
@@ -58,4 +58,4 @@ export {
|
|
|
58
58
|
stepDoneTool,
|
|
59
59
|
validateToolAction
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=tools-
|
|
61
|
+
//# sourceMappingURL=tools-R6LPK6OS.js.map
|
|
@@ -284,7 +284,7 @@ XID_Start XIDS`.split(/\s/).map(e=>[bd(e),e])),ZP=new Map([["s",mn(383)],[mn(383
|
|
|
284
284
|
`)[0],y=x==null?void 0:x.match(/^(\d+)\|/),w=y?parseInt(y[1],10):1;return o.jsx("div",{className:`rounded overflow-hidden border border-border ${a?"":"max-h-[45vh]"} overflow-y-auto`,children:o.jsx(Ga,{code:m,language:c,variant:"block",showLineNumbers:!0,startLine:w})})}),Z6={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"}},X0=L.memo(function({diagnostics:t}){if(t.length===0)return null;const n=t.filter(l=>l.severity==="error"),s=t.filter(l=>l.severity==="warning"),a=t.filter(l=>l.severity==="info"||l.severity==="hint");return o.jsxs("div",{className:"rounded border border-border overflow-hidden mt-2",children:[o.jsxs("div",{className:"flex items-center gap-3 px-2 py-1.5 bg-bg-tertiary border-b border-border",children:[o.jsx("span",{className:"text-xs font-medium text-text-secondary",children:"LSP Diagnostics"}),n.length>0&&o.jsxs("span",{className:"text-xs text-accent-error font-medium",children:[n.length," error",n.length!==1?"s":""]}),s.length>0&&o.jsxs("span",{className:"text-xs text-accent-warning font-medium",children:[s.length," warning",s.length!==1?"s":""]}),a.length>0&&o.jsxs("span",{className:"text-xs text-text-muted",children:[a.length," info"]})]}),o.jsx("div",{className:"max-h-48 overflow-y-auto",children:t.map((l,u)=>{const c=Z6[l.severity];return o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${c.bg} border-b border-border last:border-b-0`,children:[o.jsx("span",{className:`${c.color} text-xs flex-shrink-0 w-4 text-center`,children:c.icon}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("span",{className:"text-[10px] text-text-muted font-mono",children:["Ln ",l.range.start.line+1,":",l.range.start.character+1]}),l.code&&o.jsxs("span",{className:"text-[10px] text-text-muted font-mono",children:["[",l.code,"]"]})]}),o.jsx("div",{className:"text-xs text-text-primary break-words",children:l.message})]})]},u)})})]})}),eB=L.memo(function({command:t,timeout:n,startedAt:s,streamingOutput:a,status:l,result:u,error:c,durationMs:d}){const f=L.useRef(null),[p,m]=L.useState(0);L.useEffect(()=>{f.current&&l==="pending"&&(f.current.scrollTop=f.current.scrollHeight)},[a,l]),L.useEffect(()=>{if(l!=="pending"||!s)return;const C=setInterval(()=>{m(Date.now()-s)},100);return()=>clearInterval(C)},[l,s]);const x=n/1e3,y=l==="pending"?p/1e3:(d??0)/1e3,w=l==="pending"?(a==null?void 0:a.map(C=>C.content).join(""))??"":u??"";return o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex items-center justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-2 text-xs flex-1 min-w-0",children:[o.jsx("span",{className:"text-text-muted flex-shrink-0",children:"$"}),o.jsx("code",{className:"text-text-primary break-all",children:t})]}),o.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted flex-shrink-0",children:[l==="pending"&&o.jsx("span",{className:"animate-pulse text-accent-warning",children:"running"}),l==="interrupted"&&o.jsx("span",{className:"text-red-400",children:"interrupted"}),o.jsxs("span",{className:l==="pending"?"text-text-secondary":"text-text-muted",children:[y.toFixed(1),"s / ",x,"s"]})]})]}),l==="pending"&&o.jsx("div",{className:"h-1 bg-bg-tertiary rounded overflow-hidden",children:o.jsx("div",{className:"h-full bg-accent-warning transition-all duration-100",style:{width:`${Math.min(100,p/n*100)}%`}})}),(w||l==="pending")&&o.jsx("pre",{ref:f,className:`text-xs bg-bg-primary p-2 rounded max-h-64 overflow-y-auto ${l==="pending"?"border border-accent-warning/30":""}`,style:{overflowX:"hidden",whiteSpace:"normal"},children:l==="pending"&&a?a.map((C,v)=>o.jsx("span",{className:C.stream==="stderr"?"text-accent-warning":"",children:Nu(C.content)},v)):Nu(w)}),l==="error"&&c&&o.jsx("div",{className:"text-xs text-accent-error bg-accent-error/10 p-2 rounded",children:c}),l!=="pending"&&d!==void 0&&o.jsxs("div",{className:"text-[10px] text-text-muted",children:["Completed in ",(d/1e3).toFixed(2),"s"]})]})}),rl=L.memo(function({className:t=""}){return o.jsx("div",{className:`text-[10px] text-accent-warning ${t}`,children:"Output truncated"})}),tB=L.memo(function({result:t,action:n}){let s;try{s=JSON.parse(t)}catch{return console.warn("DevServerView: failed to parse result JSON",t.slice(0,200)),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto max-h-[60vh] break-words",children:t})}return n==="logs"?nB(s):rB(s)});function nB(e){if(!e.logs)return o.jsx("div",{className:"text-xs text-text-muted italic",children:"No log output"});const t=e.logs.split(`
|
|
285
285
|
`);return o.jsxs("div",{className:"space-y-2",children:[o.jsx("div",{className:"text-xs font-mono whitespace-pre-wrap bg-bg-primary p-2 rounded max-h-[60vh] overflow-y-auto break-words",children:t.map((n,s)=>{const a=n.startsWith("[stderr] ");return o.jsx("div",{className:a?"text-accent-warning":"",children:a?n.slice(9):n},s)})}),e.hasMore&&o.jsxs("div",{className:"text-[10px] text-text-muted",children:["Showing ",e.limit," of ",e.total," lines"]})]})}function rB(e){const t=String(e.state??""),n=String(e.url??""),s=e.error?String(e.error):void 0,a=t==="running"?"text-accent-success":t==="stopped"?"text-text-muted":t==="error"?"text-accent-error":"text-text-muted";return o.jsxs("div",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-text-muted",children:"State:"}),o.jsx("span",{className:`font-medium ${a}`,children:t})]}),n&&n!=="undefined"&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-text-muted",children:"URL:"}),o.jsx("a",{href:n,className:"text-accent-primary hover:underline",target:"_blank",rel:"noopener noreferrer",children:n})]}),s&&o.jsx("div",{className:"text-accent-error bg-accent-error/10 p-2 rounded",children:s})]})}const sB=L.memo(function({result:t,action:n}){let s;try{s=JSON.parse(t)}catch{return console.warn("BackgroundProcessView: failed to parse result JSON",t.slice(0,200)),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto max-h-[60vh] break-words",children:t})}return n==="logs"?iB(s):n==="list"?aB(s):n==="status"?oB(s):n==="start"||n==="stop"?lB(s):o.jsxs("div",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"text-accent-warning",children:["Unknown action: ",n]}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto max-h-[60vh] break-words",children:t})]})});function iB(e){const t=e.lines,n=e.hasMore,s=e.totalLines;return!t||t.length===0?o.jsx("div",{className:"text-xs text-text-muted italic",children:"No log output"}):o.jsxs("div",{className:"space-y-2",children:[o.jsx("div",{className:"text-xs font-mono whitespace-pre-wrap bg-bg-primary p-2 rounded max-h-[60vh] overflow-y-auto break-words",children:t.map((a,l)=>o.jsx("div",{className:a.stream==="stderr"?"text-accent-warning":"",children:a.content},l))}),n&&s!=null&&o.jsxs("div",{className:"text-[10px] text-text-muted",children:["Showing ",t.length," of ",s," lines"]})]})}function aB(e){const t=e.processes,n=e.currentCount,s=e.maxPerSession;return!t||t.length===0?o.jsx("div",{className:"text-xs text-text-muted italic",children:"No background processes"}):o.jsxs("div",{className:"space-y-2",children:[t.map(a=>o.jsx(YC,{process:a},a.id)),n!=null&&s!=null&&o.jsxs("div",{className:"text-[10px] text-text-muted",children:[n," of ",s," slots used"]})]})}function oB(e){const t=e.process,n=e.uptime;return t?o.jsxs("div",{className:"space-y-2",children:[o.jsx(YC,{process:t}),n!=null&&o.jsxs("div",{className:"text-[10px] text-text-muted",children:["Uptime: ",cB(n)]})]}):o.jsx("div",{className:"text-xs text-text-muted italic",children:"Process not found"})}function lB(e){const t=e.processId,n=e.name,s=e.pid,a=e.status,l=a==="running"?"text-accent-success":"text-text-muted";return o.jsxs("div",{className:"space-y-2 text-xs",children:[n&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-text-muted",children:"Name:"}),o.jsx("span",{className:"font-medium",children:n})]}),t&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-text-muted",children:"ID:"}),o.jsx("span",{className:"font-mono",children:t})]}),s!=null&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-text-muted",children:"PID:"}),o.jsx("span",{className:"font-mono",children:s})]}),a&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-text-muted",children:"Status:"}),o.jsx("span",{className:`font-medium ${l}`,children:a})]})]})}function YC({process:e}){const t=e.status==="running"?"text-accent-success":(e.status==="exited","text-text-muted");return o.jsxs("div",{className:"border border-border rounded p-2 space-y-1 text-xs",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("span",{className:"font-medium",children:e.name}),o.jsx("span",{className:`${t}`,children:e.status})]}),e.pid!=null&&o.jsxs("div",{className:"text-text-muted",children:["PID: ",o.jsx("span",{className:"font-mono",children:e.pid})]}),e.command&&o.jsx("div",{className:"text-text-muted font-mono truncate",children:e.command})]})}function cB(e){const t=Math.floor(e/1e3),n=Math.floor(t/60),s=Math.floor(n/60);return s>0?`${s}h ${n%60}m`:n>0?`${n}m ${t%60}s`:`${t}s`}function uB(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 dB({confirmation:e}){const t=Ie(m=>m.confirmPath),n=Ie(m=>m.currentSession),s=Ie(m=>m.switchDangerLevel),{title:a,description:l}=uB(e.reason),u=e.reason==="sensitive_file"||e.reason==="both",c=u?"border-red-500/50":"border-amber-500/50",d=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 o.jsxs("div",{className:`border ${c} ${d} rounded p-3 my-2`,children:[o.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[o.jsx(zm,{}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:`text-sm font-medium ${u?"text-red-400":"text-amber-400"}`,children:a}),o.jsx("div",{className:"text-xs text-text-muted",children:l})]})]}),o.jsxs("div",{className:"text-xs text-text-muted mb-2",children:[o.jsx("span",{className:"font-medium",children:e.tool})," wants to access:"]}),o.jsx("div",{className:"bg-bg-primary rounded p-2 mb-3 max-h-24 overflow-y-auto",children:o.jsx("ul",{className:"space-y-0.5",children:e.paths.map((m,x)=>o.jsx("li",{className:`text-xs font-mono ${u?"text-red-300":"text-amber-300"} break-all`,children:m},x))})}),o.jsxs("div",{className:"flex gap-2",children:[o.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"}),o.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"}),o.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 hB(e,t){if(e==="read_file"){const s=String(t.path??""),a=t.offset,l=t.limit,u=[];return a!==void 0&&a!==1&&u.push(`offset=${a}`),l!==void 0&&u.push(`limit=${l}`),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}if(e==="call_sub_agent")return String(t.subAgentType??"");if(e==="load_skill")return String(t.skillId??"");if(e==="web_fetch")return String(t.url??"");if(e==="web_search"){const s=String(t.query??"");return s.length>60?s.slice(0,57)+"...":s}if(e==="dev_server")return String(t.action??"");if(e==="background_process"){const s=String(t.action??""),a=t.name?String(t.name):"";return a?`${s}: ${a}`:s}if(e==="mcp_config")return String(t.action??"");if(e==="trace_code")return String(t.symbol??"");const n=JSON.stringify(t);return n.length>50?n.slice(0,50)+"...":n}function Q0(e,t,n){var a;const s=hB(e,t);if(e==="read_file"&&n){const l=n.format,u=n.pageCount;if(l==="pdf"&&u!=null)return`${s} (PDF, ${u}p)`;if(l==="image")return`${s} (image)`}if(e==="web_fetch"&&n){const l=n.contentType;if(l){const u=((a=l.split(";")[0])==null?void 0:a.trim())??"";if(u&&u!=="text/html")return`${s} (${u})`}}return s}function fB(e){return JSON.stringify(e,null,2)}const mB={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}},pB=L.memo(function({tool:t,args:n,status:s,variant:a="compact",forceCompact:l,result:u,error:c,durationMs:d,diagnostics:f,editContext:p,startedAt:m,streamingOutput:x,metadata:y,truncated:w,callId:C}){var A;const v=!l,[S,b]=L.useState(v),_=mB[s],E=en(R=>R.settings[Be.DISPLAY_SHOW_OPEN_IN_EDITOR])==="true",j=t==="edit_file"?(A=p==null?void 0:p.regions[0])==null?void 0:A.startLine:t==="read_file"?(()=>{const R=u==null?void 0:u.split(`
|
|
286
286
|
`)[0],P=R==null?void 0:R.match(/^(\d+): /);return P?parseInt(P[1],10):void 0})():void 0,T=Ie(R=>R.pendingPathConfirmations),D=s==="pending"&&C?T.find(R=>R.callId===C)??null:null;return a==="compact"?o.jsxs("div",{className:"flex items-center gap-1.5 text-xs bg-secondary rounded px-2 py-1.5",children:[o.jsx(qC,{tool:t}),o.jsx("span",{className:"text-accent-primary font-medium",children:t}),o.jsx("span",{className:"text-text-muted truncate flex-1",children:Q0(t,n,y)}),o.jsx("span",{className:`${_.color} ${_.animate?"animate-pulse":""}`,children:s==="pending"?"...":"done"})]}):o.jsxs("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0",children:[o.jsxs("button",{className:"w-full flex items-center gap-1.5 p-2 bg-secondary hover:bg-secondary/80 text-left",onClick:()=>b(!S),children:[o.jsx("span",{className:`${_.color} ${_.animate?"animate-pulse":""}`,children:_.icon}),o.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),o.jsx("span",{className:"text-text-muted text-xs flex-1 truncate",children:Q0(t,n,y)}),o.jsx("span",{className:"text-text-muted text-xs",children:S?"▼":"▶"})]}),D&&o.jsx(dB,{confirmation:D}),S&&o.jsxs("div",{className:"p-2 bg-primary border-t border-border space-y-2 min-w-0",children:[t==="run_command"&&o.jsx(eB,{command:String(n.command??""),timeout:n.timeout??12e4,startedAt:m,streamingOutput:x,status:s,result:u,error:c,durationMs:d}),t==="edit_file"&&s==="success"&&o.jsxs(o.Fragment,{children:[p&&p.regions.length>0?o.jsx(K6,{regions:p.regions,filePath:String(n.path??"")}):o.jsx(W6,{oldString:String(n.old_string??""),newString:String(n.new_string??""),filePath:String(n.path??"")}),f&&f.length>0&&o.jsx(X0,{diagnostics:f})]}),t==="write_file"&&s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(q6,{content:String(n.content??""),filePath:String(n.path??"")}),f&&f.length>0&&o.jsx(X0,{diagnostics:f})]}),t==="read_file"&&s==="success"&&o.jsx(J6,{result:u,metadata:y,filePath:String(n.path??""),heightExpanded:S}),t==="return_value"&&(()=>{const R=(x==null?void 0:x.map(W=>W.content).join(""))??"",P=s==="pending"&&R?R:String(n.content??"");return o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-accent-primary font-medium mb-1 uppercase tracking-wide",children:"Sub-Agent Summary"}),o.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none",children:o.jsx(Vn,{content:P})})]})})(),t==="call_sub_agent"&&o.jsxs("div",{children:[o.jsxs("div",{className:"text-[10px] text-accent-primary font-medium mb-1 uppercase tracking-wide",children:[String(n.subAgentType??"Sub-Agent")," Prompt"]}),o.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none max-h-[60vh] overflow-y-auto",children:o.jsx(Vn,{content:String(n.prompt??"")})})]}),t==="web_search"&&s==="success"&&o.jsxs("div",{children:[o.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none max-h-[60vh] overflow-y-auto",children:o.jsx(Vn,{content:u??""})}),w&&o.jsx(rl,{className:"mt-1"})]}),t==="load_skill"&&s==="success"&&o.jsxs("div",{children:[o.jsxs("div",{className:"text-[10px] text-accent-primary font-medium mb-1 uppercase tracking-wide",children:["Skill: ",String(n.skillId??"")]}),o.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none max-h-[60vh] overflow-y-auto",children:o.jsx(Vn,{content:u??""})}),w&&o.jsx(rl,{className:"mt-1"})]}),t==="web_fetch"&&s==="success"&&o.jsxs("div",{className:"space-y-2",children:[!!(y!=null&&y.url)&&o.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted",children:[o.jsx("span",{children:"Source:"}),o.jsx("a",{href:String(y.url),className:"text-accent-primary hover:underline truncate",target:"_blank",rel:"noopener noreferrer",children:String(y.url)}),!!(y!=null&&y.contentType)&&o.jsxs("span",{className:"text-text-muted flex-shrink-0",children:["(",String(y.contentType),")"]}),(y==null?void 0:y.pageCount)!=null&&o.jsxs("span",{className:"text-text-muted flex-shrink-0",children:["· ",String(y.pageCount)," pages"]})]}),o.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none max-h-[60vh] overflow-y-auto",children:o.jsx(Vn,{content:u??""})}),w&&o.jsx(rl,{})]}),t==="trace_code"&&s==="success"&&o.jsx("div",{children:o.jsx("div",{className:"text-xs font-mono whitespace-pre-wrap bg-bg-primary p-2 rounded max-h-[60vh] overflow-y-auto break-words",children:u??""})}),t==="dev_server"&&s==="success"&&u&&o.jsx(tB,{result:u,action:String(n.action??"")}),t==="background_process"&&s==="success"&&u&&o.jsx(sB,{result:u,action:String(n.action??"")}),t==="mcp_config"&&s==="success"&&o.jsxs("div",{children:[o.jsx("div",{className:"text-xs prose prose-invert prose-sm max-w-none max-h-[60vh] overflow-y-auto",children:o.jsx(Vn,{content:u??""})}),w&&o.jsx(rl,{className:"mt-1"})]}),t==="step_done"&&null,t!=="edit_file"&&t!=="write_file"&&t!=="run_command"&&t!=="read_file"&&t!=="return_value"&&t!=="call_sub_agent"&&t!=="web_search"&&t!=="load_skill"&&t!=="web_fetch"&&t!=="trace_code"&&t!=="dev_server"&&t!=="background_process"&&t!=="mcp_config"&&t!=="step_done"&&o.jsxs(o.Fragment,{children:[Object.keys(n).length>0&&o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-text-muted mb-0.5",children:"Arguments:"}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto break-words",children:fB(n)})]}),s==="success"&&u!==void 0&&o.jsxs("div",{children:[o.jsxs("div",{className:"text-[10px] text-text-muted mb-0.5",children:["Result",d!==void 0&&` (${d}ms)`,":"]}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded overflow-x-auto max-h-[60vh] break-words",children:u||"No output"}),w&&o.jsx(rl,{className:"mt-1"})]})]}),s==="success"&&(t==="edit_file"||t==="write_file"||t==="read_file")&&d!==void 0&&o.jsxs("div",{className:"text-[10px] text-text-muted flex items-center gap-2",children:[o.jsxs("span",{children:["Completed in ",d,"ms"]}),E&&(t==="read_file"||t==="write_file"||t==="edit_file")&&String((y==null?void 0:y.path)??n.path??"")&&o.jsx("a",{href:`vscode://file/${String((y==null?void 0:y.path)??n.path)}${j?`:${j}`:""}`,className:"text-accent-primary hover:underline ml-auto",children:"Open in VSCode"})]}),s==="error"&&c&&t!=="run_command"&&o.jsxs("div",{children:[o.jsx("div",{className:"text-[10px] text-accent-error mb-0.5",children:"Error:"}),o.jsx("pre",{className:"text-xs bg-bg-primary p-1.5 rounded text-accent-error break-words",children:c})]})]})]})}),gB={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"},xB={criteria:"criteria",review_findings:"review findings",todos:"tasks"};function yB(e,t){const n=gB[e];if(!n)return`Preparing ${e}`;if(e==="session_metadata"&&t)try{const a=JSON.parse(t).key;if(a){const l=xB[a]??a;return`${n} ${l}`}}catch{}return n}function _B(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 bB=L.memo(function({name:t,arguments:n}){let a=yB(t,n)+"...";if(t==="run_command"&&n){const l=_B(n);l&&(a=l)}return o.jsx("div",{className:"border border-border rounded overflow-hidden my-1 min-w-0 animate-pulse",children:o.jsxs("div",{className:"flex items-center gap-1.5 p-2 bg-bg-tertiary",children:[o.jsx("span",{className:"text-accent-warning animate-pulse",children:"..."}),o.jsx(qC,{tool:t}),o.jsx("span",{className:"font-mono text-accent-primary text-sm",children:t}),t==="run_command"&&n?o.jsx("code",{className:"text-text-muted text-xs flex-1 truncate",children:a}):o.jsx("span",{className:"text-text-muted text-xs flex-1",children:a})]})})}),vB={pending:{icon:"○",color:"text-text-muted"},in_progress:{icon:"●",color:"text-accent-warning",animate:!0},completed:{icon:"✓",color:"text-accent-success"}},SB=L.memo(function({todos:t}){return Array.isArray(t)?t.length===0?o.jsx("div",{className:"text-xs text-text-muted italic my-1",children:"No tasks"}):o.jsxs("div",{className:"my-1 rounded border border-border bg-bg-tertiary overflow-hidden",children:[o.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-bg-secondary",children:o.jsx("span",{className:"text-xs font-medium text-text-muted",children:"Tasks"})}),o.jsx("div",{children:t.map((n,s)=>{const a=vB[n.status];return o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${s>0?"border-t border-border":""}`,children:[o.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)??"○"}),o.jsx("span",{className:`text-sm leading-tight ${n.status==="completed"?"text-text-muted":"text-text-primary"}`,children:n.content})]},s)})})]}):o.jsx("div",{className:"text-xs text-accent-warning italic my-1",children:"⚠️ Invalid todos data"})});function wB({toolCall:e}){var E;const t=Ie(j=>j.pendingQuestions),n=Ie(j=>j.answerQuestion),[s,a]=L.useState(""),l=L.useRef(null),u=L.useRef(null),c=t.find(j=>j.callId===e.id),d=e.arguments.question??(c==null?void 0:c.question)??"",f=e.arguments.type??(c==null?void 0:c.type)??"text",p=e.arguments.options??(c==null?void 0:c.options)??void 0,m=e.result!==void 0,x=c!==void 0&&!m,y=((E=e.result)==null?void 0:E.output)??"",w=y==="[user skipped]";L.useEffect(()=>{x&&l.current&&l.current.focus()},[x]),L.useEffect(()=>{x&&u.current&&u.current.scrollIntoView({behavior:"smooth",block:"nearest"})},[x]);const C=L.useCallback(()=>{c&&n(c.callId,s)},[c,s,n]),v=L.useCallback(()=>{c&&n(c.callId,"",!0)},[c,n]),S=L.useCallback(j=>{j.key==="Enter"&&!j.shiftKey&&(j.preventDefault(),C()),j.key==="Escape"&&!j.shiftKey&&(j.preventDefault(),v())},[C,v]),b=L.useCallback(j=>{c&&n(c.callId,j)},[c,n]),_="px-3 py-1.5 text-xs font-medium rounded transition-colors";return o.jsxs("div",{ref:u,className:"my-1",children:[o.jsx("div",{className:"text-sm text-text-primary",children:d}),x&&o.jsx("div",{className:"mt-2 border border-border rounded overflow-hidden",children:o.jsx("div",{className:"p-3 bg-primary space-y-2",children:f==="confirm"?o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>b("yes"),className:`${_} flex-1 bg-accent-success/20 hover:bg-accent-success/30 text-accent-success border border-accent-success/30`,children:"Yes"}),o.jsx("button",{onClick:()=>b("no"),className:`${_} flex-1 bg-accent-error/20 hover:bg-accent-error/30 text-accent-error border border-accent-error/30`,children:"No"}),o.jsx("button",{onClick:v,className:`${_} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"})]}):f==="choice"&&p&&p.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"flex flex-col gap-1.5",children:p.map(j=>o.jsx("button",{onClick:()=>b(j),className:`${_} text-left w-full bg-bg-tertiary hover:bg-accent-primary/20 text-text-primary border border-border hover:border-accent-primary/50`,children:j},j))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx("textarea",{ref:l,value:s,onChange:j=>a(j.target.value),onKeyDown:S,placeholder:"Or type your own answer... (Enter to submit)",className:"flex-1 min-h-[36px] max-h-[80px] px-2 py-1.5 bg-bg-tertiary border border-border rounded text-xs text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 resize-y",rows:1}),o.jsx("button",{onClick:C,disabled:!s.trim(),className:`${_} bg-accent-primary/25 hover:bg-accent-primary/40 text-text-primary disabled:opacity-50 disabled:cursor-not-allowed`,children:"Send"}),o.jsx("button",{onClick:v,className:`${_} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"})]})]}):o.jsxs(o.Fragment,{children:[o.jsx("textarea",{ref:l,value:s,onChange:j=>a(j.target.value),onKeyDown:S,placeholder:"Type your answer here... (Enter to submit, Shift+Enter for new line)",className:"w-full min-h-[80px] 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}),o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsx("button",{onClick:v,className:`${_} bg-bg-tertiary hover:bg-bg-tertiary/80 text-text-secondary border border-border`,children:"Skip"}),o.jsx("button",{onClick:C,disabled:!s.trim(),className:`${_} bg-accent-primary/25 hover:bg-accent-primary/40 text-text-primary disabled:opacity-50 disabled:cursor-not-allowed`,children:"Send Answer"})]})]})})}),m&&o.jsx("div",{className:"mt-1 flex items-center gap-2",children:o.jsx("span",{className:`text-xs ${w?"text-amber-400":"text-accent-success"}`,children:w?"Skipped":`Answered: ${y}`})})]})}const J0={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"}},CB=L.memo(function({toolCalls:t,criteria:n}){if(t.length===0)return null;const s=new Map((n==null?void 0:n.map(d=>[d.id,d]))??[]),a=t.find(d=>{var f,p;return d.arguments.action==="get"&&((f=d.result)==null?void 0:f.success)&&((p=d.result)==null?void 0:p.output)}),l=t.some(d=>d.name==="session_metadata"),u={criteria:"Acceptance Criteria",review_findings:"Review Findings",todos:"Tasks"},c=(()=>{if(!l)return"Acceptance Criteria";const d=new Set(t.map(f=>f.arguments.key).filter(Boolean));if(d.size===1){const f=d.values().next().value;return f?u[f]??f:"Session Data"}return"Session Data"})();return o.jsxs("div",{className:"my-1 rounded border border-border bg-secondary overflow-hidden",children:[o.jsx("div",{className:"px-2 py-1.5 border-b border-border bg-secondary",children:o.jsx("span",{className:"text-xs font-medium text-text-muted",children:c})}),o.jsx("div",{className:"bg-primary",children:a?(()=>{const d=a.result.output;if(d==="No criteria defined yet.")return o.jsxs("div",{className:"flex items-start gap-2 px-2 py-1.5",children:[o.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),o.jsx("div",{className:"flex-1 min-w-0 text-text-muted text-sm",children:"No criteria defined yet."})]});try{return JSON.parse(d).map((p,m)=>o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${m>0?"border-t border-border":""}`,children:[o.jsx("span",{className:"text-text-muted text-sm leading-tight flex-shrink-0",children:"○"}),o.jsx("div",{className:"flex-1 min-w-0",children:o.jsx(Vn,{content:`[${p.id}] ${p.description}`})})]},p.id??m))}catch{return t.map((f,p)=>o.jsx(Z0,{tc:f,index:p,criteriaMap:s},f.id??p))}})():t.map((d,f)=>o.jsx(Z0,{tc:d,index:f,criteriaMap:s},d.id??f))})]})});function Z0({tc:e,index:t,criteriaMap:n}){const s=e.arguments.action,a=e.arguments,l=e.name==="session_metadata",u=s==="remove",c=a.id,d=a.description,f=c?n.get(c):void 0,p=d??(f==null?void 0:f.description)??(u&&c?`[${c}]`:"Criterion updated"),m=a.reason,x=s==="fail";return o.jsxs("div",{className:`flex items-start gap-2 px-2 py-1.5 ${t>0?"border-t border-border":""}`,children:[l?o.jsx(nd,{status:a.status,className:"text-sm leading-tight flex-shrink-0"}):(()=>{const y=s&&J0[s]?J0[s]:{icon:"○",color:"text-text-muted"};return o.jsx("span",{className:`${y.color} text-sm leading-tight flex-shrink-0`,children:y.icon})})(),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:u?"line-through text-text-muted":"",children:o.jsx(Vn,{content:p})}),m&&o.jsxs("div",{className:`mt-1 text-sm ${x?"text-accent-error":"text-text-muted"}`,children:[o.jsx("span",{className:"text-text-muted",children:"└ "}),'"',m,'"']})]})]})}function kB(e){return e==="criterion"||e==="session_metadata"}function EB(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"&&kB(a.toolCall.name)?n.push(a.toolCall):(s(),t.push(a));return s(),t}function jB(e,t){if(e.segments&&e.segments.length>0)return NB(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 NB(e,t,n,s,a){const l=[],u=new Map(t.map(c=>[c.id,c]));for(const c of e)switch(c.type){case"text":l.push({type:"text",content:c.content});break;case"thinking":c.content&&c.content.trim().length>0&&l.push({type:"thinking",content:c.content});break;case"tool_call":{const d=u.get(c.toolCallId);d&&l.push({type:"tool_call",toolCall:d});break}}for(const c of n)l.push({type:"preparing_tool_call",preparing:c});return a&&s&&l.push({type:"stats",stats:s}),l}const yg=L.memo(function({message:t,showStats:n=!0,showThinking:s=!0,showVerboseToolOutput:a=!0}){const l=Ie(x=>{var y,w;return(w=(y=x.currentSession)==null?void 0:y.metadataEntries)==null?void 0:w.criteria}),u=wt(x=>x.defaults),c=wt(x=>x.userItems),d=[...u,...c],f=jB(t,n),p=s?f:f.filter(x=>x.type!=="thinking"),m=EB(p);return m.length===0?null:o.jsx("div",{className:"feed-item",children:o.jsxs("div",{className:"min-w-0",children:[m.map((x,y)=>{var w;switch(x.type){case"thinking":return o.jsx(V6,{content:x.content},y);case"text":return o.jsx("div",{className:"prose prose-sm prose-invert max-w-none",children:o.jsx(Vn,{content:x.content})},y);case"preparing_tool_call":return o.jsx(bB,{name:x.preparing.name,arguments:x.preparing.arguments},`preparing-${x.preparing.index}`);case"tool_call":{const C=x.toolCall,v=C.result;if(C.name==="ask_user")return o.jsx(wB,{toolCall:C},y);if(C.name==="todo_write"){const _=C.arguments.todos,E=Array.isArray(_)?_:[];return o.jsx(SB,{todos:E},y)}const S=(w=v==null?void 0:v.output)==null?void 0:w.includes("[interrupted by user]"),b=v?S?"interrupted":v.success?"success":"error":"pending";return o.jsx(pB,{tool:C.name,args:C.arguments,status:b,variant:"expandable",forceCompact:!a,result:v==null?void 0:v.output,error:v==null?void 0:v.error,durationMs:v==null?void 0:v.durationMs,diagnostics:v==null?void 0:v.diagnostics,editContext:v==null?void 0:v.editContext,startedAt:C.startedAt,streamingOutput:C.streamingOutput,metadata:v==null?void 0:v.metadata,truncated:(v==null?void 0:v.truncated)??!1,callId:C.id},y)}case"criteria_group":return o.jsx(CB,{toolCalls:x.toolCalls,criteria:l},y);case"stats":{const C=x.stats;if(!C||"error"in C)return null;const v=C.model.split("/").pop()??C.model,S=yl(d,C.mode),b=E=>E>=1e3?`${(E/1e3).toFixed(1)}k`:E.toString(),_=E=>E>=1e3?`${(E/1e3).toFixed(1)}k`:E.toFixed(1);return o.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted mt-3",children:[o.jsx("span",{className:"flex-1 h-px bg-border"}),o.jsx("span",{className:"text-text-secondary",children:v}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsx("span",{style:{color:S},children:C.mode}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[C.totalTime.toFixed(1),"s"]}),C.toolTime>0&&o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[C.toolTime.toFixed(1),"s tools"]})]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[b(C.prefillTokens)," @ ",_(C.prefillSpeed)," pp"]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsxs("span",{children:[b(C.generationTokens)," @ ",_(C.generationSpeed)," tg"]}),o.jsx("span",{className:"text-text-muted",children:"·"}),o.jsx("button",{type:"button",className:"text-text-muted hover:text-text-secondary transition-colors",title:"View detailed stats",onClick:()=>{const E=new CustomEvent("open-turn-stats",{detail:{stats:C}});window.dispatchEvent(E)},children:o.jsx(DS,{className:"w-3 h-3"})}),o.jsx("span",{className:"flex-1 h-px bg-border"})]},y)}}}),t.partial&&o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-accent-warning mt-1",children:[o.jsx(zm,{}),o.jsx("span",{children:"Aborted"})]}),t.completeReason==="truncated"&&o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] text-amber-400/80 mt-1",children:[o.jsx(zm,{}),o.jsx("span",{children:"Response was truncated — the model ran out of output tokens."})]})]})})});function Gu(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 TB(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 AB(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}const LB=L.memo(function({data:t}){var u;const n=Rt(c=>c.defaults),s=Rt(c=>c.userItems),l=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#8b949e";return o.jsxs("div",{"data-testid":"task-completed-card",className:"feed-item rounded p-3 border",style:{borderColor:Gu(l,.3),backgroundColor:Gu(l,.08)},children:[o.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[o.jsx(nN,{color:l}),o.jsx("span",{className:"text-sm font-medium",style:{color:l},children:t.workflowName??"Task Completed"})]}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-5 gap-2",children:[o.jsx(sl,{label:"Iterations",value:String(t.iterations)}),o.jsx(sl,{label:"Total time",value:TB(t.totalTimeSeconds)}),o.jsx(sl,{label:"Tool calls",value:String(t.totalToolCalls)}),o.jsx(sl,{label:"Tokens",value:AB(t.totalTokensGenerated)}),o.jsx(sl,{label:"Speed",value:t.avgGenerationSpeed>0?`${t.avgGenerationSpeed} tok/s`:"-"})]})]})});function sl({label:e,value:t}){return o.jsxs("div",{className:"bg-bg-primary/50 rounded px-2 py-1",children:[o.jsx("div",{className:"text-sm text-text-muted",children:e}),o.jsx("div",{className:"text-sm text-text-primary font-medium",children:t})]})}const DB=L.memo(function({data:t}){var u;const n=Rt(c=>c.defaults),s=Rt(c=>c.userItems),l=((u=[...n,...s].find(c=>c.id===t.workflowId))==null?void 0:u.color)??t.workflowColor??"#6b7280";return o.jsxs("div",{className:"feed-item flex items-center gap-2 px-3 py-2 rounded border",style:{borderColor:Gu(l,.3),backgroundColor:Gu(l,.08)},children:[o.jsx(Jj,{className:"w-3 h-3 shrink-0",color:l}),o.jsx("span",{className:"text-sm font-medium",style:{color:l},children:t.workflowName}),o.jsx("span",{className:"text-text-muted text-sm",children:"started"})]})});function RB({attachments:e,messageId:t}){const[n,s]=L.useState(null),a=Ie(p=>p.visionFallbackByMessage),l=Ie(p=>p.messages),u=L.useMemo(()=>{const p=l.findIndex(m=>m.id===t);if(p===-1)return null;for(let m=p+1;m<l.length;m++){const x=l[m];if(x&&x.role==="assistant")return x.id}return null},[l,t]),c=p=>{s(p)},d=()=>{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:o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mt-3 flex flex-wrap gap-3",children:e.map(p=>{const m=f(p.id);return o.jsxs("div",{className:"relative inline-block",children:[o.jsxs("button",{onClick:()=>c(p.data),className:"group relative inline-block",title:(m==null?void 0:m.type)==="done"&&m.description||p.description||p.filename,disabled:(m==null?void 0:m.type)==="start",children:[o.jsx("img",{src:p.data,alt:(m==null?void 0:m.type)==="done"&&m.description||p.description||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"&&o.jsx("div",{className:"absolute inset-0 bg-black/60 flex items-center justify-center rounded-lg",children:o.jsx("span",{className:"text-xs text-text-primary animate-pulse",children:"Describing image..."})})]}),(m==null?void 0:m.type)==="done"&&m.description&&o.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&&o.jsx(KC,{src:n,alt:"Attached image",isOpen:!0,onClose:d})]})}function OB({content:e,align:t="right",messageId:n,sessionId:s}){const[a,l]=L.useState(!1),[u,c]=L.useState(!1),[d,f]=L.useState("left"),p=L.useRef(null),m=L.useRef(null),x=Ie(S=>S.loadSession),y=t==="right",w=()=>{if(!m.current)return"left";const S=m.current.getBoundingClientRect(),b=window.innerWidth-S.right,_=S.left,E=160,j=b>=E,T=_>=E;return T&&j||T?"left":j?"right":_>=b?"left":"right"};L.useEffect(()=>{const S=b=>{p.current&&!p.current.contains(b.target)&&l(!1)};return a&&document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[a]);const C=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),l(!1),window.setTimeout(()=>c(!1),1500)}catch(S){console.error("Failed to copy:",S)}},v=async()=>{!s||!n||(l(!1),await z2(s,n),x(s))};return o.jsx(o.Fragment,{children:o.jsxs("div",{className:`flex items-start gap-1.5 ${y?"":"order-first"}`,children:[u&&o.jsx(Wr,{className:"w-4 h-4 text-accent-success"}),o.jsxs("div",{ref:p,className:"relative",children:[o.jsx("button",{ref:m,onClick:()=>{a||f(w()),l(!a)},className:"p-1 rounded hover:bg-bg-tertiary text-text-muted hover:text-text-primary",title:"Message options",children:o.jsx(jp,{})}),a&&o.jsxs("div",{className:`absolute top-full mt-1 bg-bg-secondary border border-border rounded shadow-xl z-50 py-1 min-w-36 ${d==="right"?"left-0":"right-0"}`,children:[o.jsxs("button",{onClick:C,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:[o.jsx(Ep,{className:"w-4 h-4"}),"Copy"]}),s&&n&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t border-border my-1"}),o.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:[o.jsx(Np,{className:"w-4 h-4"}),"Replay"]})]})]})]})]})})}function IB({message:e}){const[t,n]=L.useState(!1);if(e.messageKind!=="auto-prompt")return null;const s=e.metadata,a=(s==null?void 0:s.color)??"#6b7280",l=(s==null?void 0:s.name)??"Agent",u=(s==null?void 0:s.type)??"agent",d={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 o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-[10px] text-text-muted font-mono mt-3 mb-4",children:[o.jsx("span",{className:"flex-1 h-px bg-border"}),o.jsx("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${f?"":"cursor-pointer"}`,style:{backgroundColor:a},onClick:()=>!f&&n(!0)}),o.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",style:{color:a},onClick:()=>!f&&n(!0),children:l}),o.jsx("span",{children:"·"}),o.jsx("span",{className:f?"":"cursor-pointer hover:text-text-secondary transition-colors",onClick:()=>!f&&n(!0),children:d}),o.jsx("span",{className:"flex-1 h-px bg-border"})]}),f&&o.jsx("div",{className:"flex justify-center feed-item mb-4",children:o.jsx("div",{className:"max-w-[75%] rounded p-3 bg-bg-tertiary/50 text-text-secondary text-sm overflow-x-auto",style:{borderLeft:`3px solid ${a}`},children:o.jsx("pre",{className:"whitespace-pre-wrap break-words font-mono text-xs",children:e.content})})}),o.jsx(Mt,{isOpen:t,onClose:()=>n(!1),title:`${l} Prompt`,size:"lg",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"w-3 h-3 rounded-full",style:{backgroundColor:a}}),o.jsx("span",{className:"text-sm text-text-primary font-medium",children:l}),o.jsxs("span",{className:"text-xs text-text-muted",children:["(",u,")"]})]}),o.jsx("div",{className:"h-full min-h-96",children:o.jsx("pre",{className:"text-sm text-text-secondary whitespace-pre-wrap break-words bg-bg-tertiary rounded p-4 h-full min-h-96 overflow-auto font-mono",children:e.content})})]})})]})}function MB({message:e,messageId:t,sessionId:n}){const s=e.messageKind==="auto-prompt",a=e.messageKind==="command",l=e.isSystemGenerated;return o.jsxs("div",{className:"flex justify-end items-start gap-1.5 feed-item",children:[!l&&o.jsx(OB,{content:e.content,align:"right",messageId:t,sessionId:n}),o.jsxs("div",{className:`max-w-[75%] rounded p-2 ${l?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:[l&&o.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"}),o.jsx("div",{className:`whitespace-pre-wrap break-words text-sm ${l?`${a?"text-teal-200":s?"text-slate-200":"text-amber-200 italic"}`:""}`,children:e.content}),e.attachments&&e.attachments.length>0&&o.jsx(RB,{attachments:e.attachments,messageId:e.id})]})]})}const XC=L.memo(function({message:t,isLastAssistantMessage:n=!1,messageId:s,sessionId:a}){const l=t.role==="user",u=t.role==="assistant",c=t.role==="system",d=t.role==="tool";if(u)return o.jsx(yg,{message:t,showStats:n});if(c&&t.isCompacted)return o.jsxs("div",{className:"feed-item bg-bg-tertiary/50 border border-border rounded p-2",children:[o.jsx("div",{className:"text-text-muted text-xs mb-0.5",children:"[Compacted]"}),o.jsx("div",{className:"text-text-secondary text-xs whitespace-pre-wrap",children:t.content.replace(`[COMPACTED HISTORY]
|
|
287
|
-
`,"")})]});if(d)return o.jsxs("div",{className:"feed-item bg-bg-tertiary/30 border-l-2 border-accent-primary rounded-r p-2",children:[o.jsxs("div",{className:"text-accent-primary text-xs mb-0.5",children:["Tool: ",t.toolName]}),o.jsxs("pre",{className:"text-text-secondary text-xs whitespace-pre-wrap break-words 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 o.jsx(DB,{data:f})}catch{}if(t.messageKind==="task-completed")try{const f=JSON.parse(t.content);return o.jsx(LB,{data:f})}catch{}return t.messageKind==="context-reset"?o.jsxs("div",{className:"flex items-center gap-4 mb-6 text-text-muted text-xs uppercase tracking-wide",children:[o.jsx("div",{className:"flex-1 border-t border-border"}),o.jsx("span",{children:t.content}),o.jsx("div",{className:"flex-1 border-t border-border"})]}):t.messageKind==="auto-prompt"&&t.isSystemGenerated?o.jsx(IB,{message:t}):t.messageKind==="correction"&&t.isSystemGenerated?o.jsx("div",{className:"flex justify-end feed-item",children:o.jsxs("div",{className:"max-w-[75%] rounded p-2 bg-amber-500/10 border border-amber-500/30",children:[o.jsx("span",{className:"text-[10px] block mb-0.5 text-amber-400",children:"System"}),o.jsx("div",{className:"whitespace-pre-wrap break-words text-sm text-amber-200 italic",children:t.content})]})}):l?o.jsx(MB,{message:t,messageId:s,sessionId:a}):o.jsx("div",{className:"flex justify-start feed-item",children:o.jsx("div",{className:"max-w-[75%] rounded p-2 bg-bg-tertiary text-text-primary",children:o.jsx(Vn,{content:t.content})})})}),PB={verifier:"Verification",code_reviewer:"Code Review",test_generator:"Test Generation",debugger:"Debug"};function BB(e){return{backgroundColor:`${e}20`,color:e,borderColor:`${e}4d`}}function eS(e,t){return t||e>85?"text-accent-error":e>60?"text-accent-warning":"text-text-muted"}function $B({contextState:e}){const{currentTokens:t,maxTokens:n,compactionCount:s,dangerZone:a}=e,l=Math.round(t/n*100);return o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px]",children:[o.jsxs("span",{className:eS(l,a),children:[Eu(t),"/",Eu(n)]}),o.jsxs("span",{className:eS(l,a),children:["(",l,"%)"]}),o.jsx(m1,{percent:l,dangerZone:a,size:"sm"}),a&&o.jsx("span",{className:"text-accent-error animate-pulse",children:"Low!"}),s>0&&o.jsxs("span",{className:"text-text-muted bg-bg-tertiary px-1 rounded",children:[s,"x"]})]})}const zB=L.memo(function({messages:t,subAgentType:n,subAgentId:s,isStreaming:a}){const l=L.useRef(null),u=L.useRef(null),[c,d]=L.useState(!1),f=wt(D=>D.defaults),p=wt(D=>D.userItems),m=[...f,...p],x=Ie(D=>D.subAgentContextStates[s]),{showThinking:y,showVerboseToolOutput:w}=$i(),{isAutoScrollActive:C,setAutoScroll:v}=rd(u,null);L.useEffect(()=>{a||v(!0)},[a]);const S=L.useCallback(()=>{const D=!c;d(D),D&&setTimeout(()=>{var A;(A=l.current)==null||A.scrollIntoView({block:"start",behavior:"smooth"})},220)},[c]),b=m.find(D=>D.id===n),_=(b==null?void 0:b.name)??PB[n]??n,E=yl(m,n),j=BB(E),T=t.filter(D=>D.role!=="tool");return o.jsxs("div",{ref:l,className:"feed-item border border-border rounded overflow-hidden bg-secondary",children:[o.jsxs("div",{className:"w-full flex items-center justify-between px-2 py-1 border-b relative",style:j,children:[o.jsx("span",{className:"text-xs font-medium",children:_}),o.jsx("div",{className:"absolute left-1/2 -translate-x-1/2",children:x&&o.jsx($B,{contextState:x})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{type:"button",className:"text-sm text-text-muted hover:text-text-primary flex items-center gap-1.5",onClick:()=>v(!C),children:[o.jsx("span",{className:`w-1 h-1 rounded-full ${C?"bg-accent-success":"border border-text-muted"}`}),"live"]}),o.jsxs("button",{type:"button",className:"text-[10px] px-1.5 py-0.5 rounded bg-bg-tertiary",onClick:S,children:[c?"▼":"▶"," Expand"]})]})]}),o.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"?o.jsx(yg,{message:D,showStats:!0,showThinking:y,showVerboseToolOutput:w},D.id):o.jsx(XC,{message:D,isLastAssistantMessage:!1},D.id))})]})});function pu(e){var t;return e.type==="context-divider"?`ctx-${e.windowSequence}`:e.type==="subagent"?((t=e.messages[0])==null?void 0:t.id)??e.subAgentId:e.message.id}const QC=L.memo(function({displayItems:t,highlightedMessageId:n=null,sessionId:s,showThinking:a=!0,showVerboseToolOutput:l=!0,showStats:u=!0,showAgentDefinitions:c=!0,showWorkflowBars:d=!0}){return o.jsx(o.Fragment,{children:t.map((f,p)=>{if(f.type==="context-divider")return o.jsxs("div",{"data-item-index":p,className:"flex items-center gap-2 feed-item px-2 md:px-4",children:[o.jsx("div",{className:"flex-1 border-t border-border"}),o.jsx("span",{className:"text-[10px] text-text-muted font-medium px-2",children:"Earlier context summarized"}),o.jsx("div",{className:"flex-1 border-t border-border"})]},pu(f));if(f.type==="subagent"){const w=f.messages.some(C=>C.isStreaming);return o.jsx("div",{"data-item-index":p,className:"px-2 md:px-4",children:o.jsx(zB,{messages:f.messages,subAgentType:f.subAgentType,subAgentId:f.subAgentId,isStreaming:w})},pu(f))}const m=f.message;if(m.role==="assistant")return o.jsx("div",{"data-item-index":p,className:"px-2 md:px-4",children:o.jsx(yg,{message:m,showStats:u,showThinking:a,showVerboseToolOutput:l})},pu(f));const x=!c&&m.messageKind==="auto-prompt",y=!d&&(m.messageKind==="workflow-started"||m.messageKind==="task-completed");return x||y?null:o.jsx("div",{"data-item-index":p,className:"px-2 md:px-4",children:o.jsx("div",{"data-message-id":m.id,className:n===m.id?"rounded animate-highlight-fade":void 0,children:o.jsx(XC,{message:m,messageId:m.id,sessionId:s??void 0,isLastAssistantMessage:!1})})},pu(f))})})});function JC(e,t,n=!0){L.useEffect(()=>{if(!n)return;const s=a=>{var l;(l=e.current)!=null&&l.contains(a.target)||t()};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[e,t,n])}const HB=[],UB=L.memo(function({displayItems:t,scrollContainerRef:n,highlightedMessageId:s,onLaunchWorkflow:a,hiddenCount:l=0}){const u=Ie(U=>{var V,z;return((z=(V=U.currentSession)==null?void 0:V.metadataEntries)==null?void 0:z.criteria)??HB}),c=Ie(U=>{var V;return(V=U.currentSession)==null?void 0:V.id}),d=Ie(U=>{var V;return(V=U.currentSession)==null?void 0:V.mode}),f=Ie(U=>{var V;return(V=U.currentSession)==null?void 0:V.phase}),p=Ie(U=>U.error),m=Ie(U=>U.clearError),x=Xu(),{showThinking:y,showVerboseToolOutput:w,showStats:C,showAgentDefinitions:v,showWorkflowBars:S}=$i(),b=Rt(U=>U.defaults),_=Rt(U=>U.userItems),E=[...b,..._],j=d==="planner",T=u.length>0,D=f==="done",A=t.some(U=>U.type==="message"&&U.message.role==="assistant"),R=j&&T&&!x&&A&&!D,P=Ie(U=>{var V;return(V=U.currentSession)==null?void 0:V.projectId}),[W,G]=L.useState(!1),I=()=>{if(!P||!c)return;G(!1),window.open(`/p/${P}/s/${c}/readonly`,"_blank")||G(!0)};return o.jsxs("div",{ref:n,"data-testid":"chat-scroll-container",className:"flex-1 min-w-0 overflow-y-auto relative bg-primary",children:[o.jsxs("div",{className:"pt-4",children:[l>0&&o.jsxs("div",{className:"px-2 md:px-4 pb-2 space-y-1",children:[o.jsxs("button",{onClick:I,className:"w-full text-sm text-text-muted hover:text-text-primary bg-bg-tertiary/50 hover:bg-bg-tertiary border border-border rounded px-3 py-2 transition-colors text-center",children:[l," older item",l!==1?"s":""," hidden — View full history"]}),W&&o.jsxs("p",{className:"text-xs text-text-muted text-center",children:["Popup blocked."," ",o.jsx("a",{href:P&&c?`/p/${P}/s/${c}/readonly`:"#",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-text-primary",children:"Open manually"})]})]}),o.jsx(QC,{displayItems:t,highlightedMessageId:s,sessionId:c,showThinking:y,showVerboseToolOutput:w,showStats:C,showAgentDefinitions:v,showWorkflowBars:S})]}),o.jsxs("div",{className:"px-2 md:px-4 pb-4",children:[p&&o.jsx("div",{className:"feed-item bg-red-500/10 border border-red-500/50 rounded p-2",children:o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-red-400 text-sm font-medium",children:p.code}),o.jsx("div",{className:"text-red-300 text-xs mt-0.5",children:p.message})]}),o.jsx(Ll,{onClick:m,className:"text-red-400 hover:text-red-300 p-0.5",size:"sm"})]})}),R&&o.jsx("div",{className:"flex justify-center gap-2 feed-item flex-wrap",children:E.map(U=>{const V=U.color??"#3b82f6",z=parseInt(V.slice(1,3),16),Z=parseInt(V.slice(3,5),16),J=parseInt(V.slice(5,7),16),H=`rgba(${z},${Z},${J},0.12)`,O=`rgba(${z},${Z},${J},0.22)`,$=`rgba(${z},${Z},${J},0.25)`;return o.jsx(FB,{workflowName:U.name,color:V,bg:H,bgHover:O,border:$,subGroups:U.subGroups,onLaunch:q=>a(U.id,q)},U.id)})})]})]})});function FB({workflowName:e,color:t,bg:n,bgHover:s,border:a,subGroups:l,onLaunch:u}){const[c,d]=L.useState(!1),f=L.useRef(null);return JC(f,()=>d(!1),c),o.jsxs("div",{className:"relative flex",children:[o.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]}),l&&l.length>0&&o.jsxs("div",{ref:f,className:"relative",children:[o.jsx("button",{onClick:()=>d(!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&&o.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:[o.jsx("button",{onClick:()=>{u(),d(!1)},className:"w-full text-left px-3 py-2 text-sm text-text-primary hover:bg-bg-tertiary transition-colors",children:"Full workflow"}),o.jsx("div",{className:"border-t border-border/50"}),l.map(p=>o.jsx("button",{onClick:()=>{u(p),d(!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 VB(){const e=Ie(s=>s.connectionStatus),t=Ie(s=>s.reconnect);if(e==="connected")return null;const n=e==="reconnecting";return o.jsxs("div",{className:`
|
|
287
|
+
`,"")})]});if(d)return o.jsxs("div",{className:"feed-item bg-bg-tertiary/30 border-l-2 border-accent-primary rounded-r p-2",children:[o.jsxs("div",{className:"text-accent-primary text-xs mb-0.5",children:["Tool: ",t.toolName]}),o.jsxs("pre",{className:"text-text-secondary text-xs whitespace-pre-wrap break-words 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 o.jsx(DB,{data:f})}catch{}if(t.messageKind==="task-completed")try{const f=JSON.parse(t.content);return o.jsx(LB,{data:f})}catch{}return t.messageKind==="context-reset"?o.jsxs("div",{className:"flex items-center gap-4 mb-6 text-text-muted text-xs uppercase tracking-wide",children:[o.jsx("div",{className:"flex-1 border-t border-border"}),o.jsx("span",{children:t.content}),o.jsx("div",{className:"flex-1 border-t border-border"})]}):t.messageKind==="auto-prompt"&&t.isSystemGenerated?o.jsx(IB,{message:t}):t.messageKind==="correction"&&t.isSystemGenerated?o.jsx("div",{className:"flex justify-end feed-item",children:o.jsxs("div",{className:"max-w-[75%] rounded p-2 bg-amber-500/10 border border-amber-500/30",children:[o.jsx("span",{className:"text-[10px] block mb-0.5 text-amber-400",children:"System"}),o.jsx("div",{className:"whitespace-pre-wrap break-words text-sm text-amber-200 italic",children:t.content})]})}):l?o.jsx(MB,{message:t,messageId:s,sessionId:a}):o.jsx("div",{className:"flex justify-start feed-item",children:o.jsx("div",{className:"max-w-[75%] rounded p-2 bg-bg-tertiary text-text-primary",children:o.jsx(Vn,{content:t.content})})})}),PB={verifier:"Verification",code_reviewer:"Code Review",test_generator:"Test Generation",debugger:"Debug"};function BB(e){return{backgroundColor:`${e}20`,color:e,borderColor:`${e}4d`}}function eS(e,t){return t||e>85?"text-accent-error":e>60?"text-accent-warning":"text-text-muted"}function $B({contextState:e}){const{currentTokens:t,maxTokens:n,compactionCount:s,dangerZone:a}=e,l=Math.round(t/n*100);return o.jsxs("div",{className:"flex items-center gap-1.5 text-[10px]",children:[o.jsxs("span",{className:eS(l,a),children:[Eu(t),"/",Eu(n)]}),o.jsxs("span",{className:eS(l,a),children:["(",l,"%)"]}),o.jsx(m1,{percent:l,dangerZone:a,size:"sm"}),a&&o.jsx("span",{className:"text-accent-error animate-pulse",children:"Low!"}),s>0&&o.jsxs("span",{className:"text-text-muted bg-bg-tertiary px-1 rounded",children:[s,"x"]})]})}const zB=L.memo(function({messages:t,subAgentType:n,subAgentId:s,isStreaming:a}){const l=L.useRef(null),u=L.useRef(null),[c,d]=L.useState(!1),f=wt(D=>D.defaults),p=wt(D=>D.userItems),m=[...f,...p],x=Ie(D=>D.subAgentContextStates[s]),{showThinking:y,showVerboseToolOutput:w}=$i(),{isAutoScrollActive:C,setAutoScroll:v}=rd(u,null),S=L.useCallback(()=>{const D=!c;d(D),D&&setTimeout(()=>{var A;(A=l.current)==null||A.scrollIntoView({block:"start",behavior:"smooth"})},220)},[c]),b=m.find(D=>D.id===n),_=(b==null?void 0:b.name)??PB[n]??n,E=yl(m,n),j=BB(E),T=t.filter(D=>D.role!=="tool");return o.jsxs("div",{ref:l,className:"feed-item border border-border rounded overflow-hidden bg-secondary",children:[o.jsxs("div",{className:"w-full flex items-center justify-between px-2 py-1 border-b relative",style:j,children:[o.jsx("span",{className:"text-xs font-medium",children:_}),o.jsx("div",{className:"absolute left-1/2 -translate-x-1/2",children:x&&o.jsx($B,{contextState:x})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{type:"button",className:"text-sm text-text-muted hover:text-text-primary flex items-center gap-1.5",onClick:()=>v(!C),children:[o.jsx("span",{className:`w-1 h-1 rounded-full ${C?"bg-accent-success":"border border-text-muted"}`}),"live"]}),o.jsxs("button",{type:"button",className:"text-[10px] px-1.5 py-0.5 rounded bg-bg-tertiary",onClick:S,children:[c?"▼":"▶"," Expand"]})]})]}),o.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"?o.jsx(yg,{message:D,showStats:!0,showThinking:y,showVerboseToolOutput:w},D.id):o.jsx(XC,{message:D,isLastAssistantMessage:!1},D.id))})]})});function pu(e){var t;return e.type==="context-divider"?`ctx-${e.windowSequence}`:e.type==="subagent"?((t=e.messages[0])==null?void 0:t.id)??e.subAgentId:e.message.id}const QC=L.memo(function({displayItems:t,highlightedMessageId:n=null,sessionId:s,showThinking:a=!0,showVerboseToolOutput:l=!0,showStats:u=!0,showAgentDefinitions:c=!0,showWorkflowBars:d=!0}){return o.jsx(o.Fragment,{children:t.map((f,p)=>{if(f.type==="context-divider")return o.jsxs("div",{"data-item-index":p,className:"flex items-center gap-2 feed-item px-2 md:px-4",children:[o.jsx("div",{className:"flex-1 border-t border-border"}),o.jsx("span",{className:"text-[10px] text-text-muted font-medium px-2",children:"Earlier context summarized"}),o.jsx("div",{className:"flex-1 border-t border-border"})]},pu(f));if(f.type==="subagent"){const w=f.messages.some(C=>C.isStreaming);return o.jsx("div",{"data-item-index":p,className:"px-2 md:px-4",children:o.jsx(zB,{messages:f.messages,subAgentType:f.subAgentType,subAgentId:f.subAgentId,isStreaming:w})},pu(f))}const m=f.message;if(m.role==="assistant")return o.jsx("div",{"data-item-index":p,className:"px-2 md:px-4",children:o.jsx(yg,{message:m,showStats:u,showThinking:a,showVerboseToolOutput:l})},pu(f));const x=!c&&m.messageKind==="auto-prompt",y=!d&&(m.messageKind==="workflow-started"||m.messageKind==="task-completed");return x||y?null:o.jsx("div",{"data-item-index":p,className:"px-2 md:px-4",children:o.jsx("div",{"data-message-id":m.id,className:n===m.id?"rounded animate-highlight-fade":void 0,children:o.jsx(XC,{message:m,messageId:m.id,sessionId:s??void 0,isLastAssistantMessage:!1})})},pu(f))})})});function JC(e,t,n=!0){L.useEffect(()=>{if(!n)return;const s=a=>{var l;(l=e.current)!=null&&l.contains(a.target)||t()};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[e,t,n])}const HB=[],UB=L.memo(function({displayItems:t,scrollContainerRef:n,highlightedMessageId:s,onLaunchWorkflow:a,hiddenCount:l=0}){const u=Ie(U=>{var V,z;return((z=(V=U.currentSession)==null?void 0:V.metadataEntries)==null?void 0:z.criteria)??HB}),c=Ie(U=>{var V;return(V=U.currentSession)==null?void 0:V.id}),d=Ie(U=>{var V;return(V=U.currentSession)==null?void 0:V.mode}),f=Ie(U=>{var V;return(V=U.currentSession)==null?void 0:V.phase}),p=Ie(U=>U.error),m=Ie(U=>U.clearError),x=Xu(),{showThinking:y,showVerboseToolOutput:w,showStats:C,showAgentDefinitions:v,showWorkflowBars:S}=$i(),b=Rt(U=>U.defaults),_=Rt(U=>U.userItems),E=[...b,..._],j=d==="planner",T=u.length>0,D=f==="done",A=t.some(U=>U.type==="message"&&U.message.role==="assistant"),R=j&&T&&!x&&A&&!D,P=Ie(U=>{var V;return(V=U.currentSession)==null?void 0:V.projectId}),[W,G]=L.useState(!1),I=()=>{if(!P||!c)return;G(!1),window.open(`/p/${P}/s/${c}/readonly`,"_blank")||G(!0)};return o.jsxs("div",{ref:n,"data-testid":"chat-scroll-container",className:"flex-1 min-w-0 overflow-y-auto relative bg-primary",children:[o.jsxs("div",{className:"pt-4",children:[l>0&&o.jsxs("div",{className:"px-2 md:px-4 pb-2 space-y-1",children:[o.jsxs("button",{onClick:I,className:"w-full text-sm text-text-muted hover:text-text-primary bg-bg-tertiary/50 hover:bg-bg-tertiary border border-border rounded px-3 py-2 transition-colors text-center",children:[l," older item",l!==1?"s":""," hidden — View full history"]}),W&&o.jsxs("p",{className:"text-xs text-text-muted text-center",children:["Popup blocked."," ",o.jsx("a",{href:P&&c?`/p/${P}/s/${c}/readonly`:"#",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-text-primary",children:"Open manually"})]})]}),o.jsx(QC,{displayItems:t,highlightedMessageId:s,sessionId:c,showThinking:y,showVerboseToolOutput:w,showStats:C,showAgentDefinitions:v,showWorkflowBars:S})]}),o.jsxs("div",{className:"px-2 md:px-4 pb-4",children:[p&&o.jsx("div",{className:"feed-item bg-red-500/10 border border-red-500/50 rounded p-2",children:o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-red-400 text-sm font-medium",children:p.code}),o.jsx("div",{className:"text-red-300 text-xs mt-0.5",children:p.message})]}),o.jsx(Ll,{onClick:m,className:"text-red-400 hover:text-red-300 p-0.5",size:"sm"})]})}),R&&o.jsx("div",{className:"flex justify-center gap-2 feed-item flex-wrap",children:E.map(U=>{const V=U.color??"#3b82f6",z=parseInt(V.slice(1,3),16),Z=parseInt(V.slice(3,5),16),J=parseInt(V.slice(5,7),16),H=`rgba(${z},${Z},${J},0.12)`,O=`rgba(${z},${Z},${J},0.22)`,$=`rgba(${z},${Z},${J},0.25)`;return o.jsx(FB,{workflowName:U.name,color:V,bg:H,bgHover:O,border:$,subGroups:U.subGroups,onLaunch:q=>a(U.id,q)},U.id)})})]})]})});function FB({workflowName:e,color:t,bg:n,bgHover:s,border:a,subGroups:l,onLaunch:u}){const[c,d]=L.useState(!1),f=L.useRef(null);return JC(f,()=>d(!1),c),o.jsxs("div",{className:"relative flex",children:[o.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]}),l&&l.length>0&&o.jsxs("div",{ref:f,className:"relative",children:[o.jsx("button",{onClick:()=>d(!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&&o.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:[o.jsx("button",{onClick:()=>{u(),d(!1)},className:"w-full text-left px-3 py-2 text-sm text-text-primary hover:bg-bg-tertiary transition-colors",children:"Full workflow"}),o.jsx("div",{className:"border-t border-border/50"}),l.map(p=>o.jsx("button",{onClick:()=>{u(p),d(!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 VB(){const e=Ie(s=>s.connectionStatus),t=Ie(s=>s.reconnect);if(e==="connected")return null;const n=e==="reconnecting";return o.jsxs("div",{className:`
|
|
288
288
|
flex items-center justify-between px-4 py-2
|
|
289
289
|
text-sm font-medium
|
|
290
290
|
${n?"bg-amber-500/15 border-b border-amber-500/30 text-amber-300":"bg-red-500/15 border-b border-red-500/30 text-red-300"}
|
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-CkE65FP4.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-DvPmgi8F.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:"fdd5010753955c03521e8e6cb79f4072"},{url:"__inspect__.js",revision:"616419159f6250026c61434e238ddec5"},{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-bSaZSLjg.js",revision:null},{url:"assets/index-DvPmgi8F.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")))});
|
|
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:"a9465d4092a517e2dfbfab70e1e2bc7f"},{url:"__inspect__.js",revision:"616419159f6250026c61434e238ddec5"},{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-DvPmgi8F.css",revision:null},{url:"assets/index-CkE65FP4.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")))});
|