mirror of
https://github.com/MoonshotAI/kimi-code.git
synced 2026-08-12 10:16:17 +00:00
* feat(vscode): migrate extension to Node SDK * fix(vscode): address CI failures * fix(vis): handle token count records * fix(vscode): keep chat toolbar and header readable at narrow widths * fix(vscode): map yolo to core yolo permission and honor the global yolo setting * docs(vscode): record Node SDK migration design * docs(vscode): split breaking changes out of the 0.6.0 changelog * fix(vscode): keep a resumed session's thinking effort instead of reapplying the default * fix(vscode): announce session status when a view attaches so the display matches it * fix(vscode): align webview thinking effort handling with the TUI
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
interface ForkTurnItem {
|
|
readonly type: string;
|
|
}
|
|
|
|
interface ForkTurnMessage {
|
|
readonly role: "user" | "assistant";
|
|
readonly forkable?: boolean;
|
|
readonly steps?: readonly {
|
|
readonly items: readonly ForkTurnItem[];
|
|
}[];
|
|
}
|
|
|
|
/** Return the core's zero-based user-visible turn index for an assistant bubble. */
|
|
export function getForkTurnIndex(
|
|
messages: readonly ForkTurnMessage[],
|
|
messageIndex: number,
|
|
): number | undefined {
|
|
const target = messages[messageIndex];
|
|
if (target?.role !== "assistant" || target.forkable === false) return undefined;
|
|
|
|
let visibleTurns = 0;
|
|
for (let index = 0; index <= messageIndex; index += 1) {
|
|
const message = messages[index];
|
|
if (message === undefined) continue;
|
|
if (message.role === "user" && message.forkable !== false) {
|
|
visibleTurns += 1;
|
|
continue;
|
|
}
|
|
if (message.role === "assistant") {
|
|
visibleTurns += countSteers(message);
|
|
}
|
|
}
|
|
return visibleTurns - 1;
|
|
}
|
|
|
|
function countSteers(message: ForkTurnMessage): number {
|
|
return (
|
|
message.steps?.reduce(
|
|
(count, step) => count + step.items.filter((item) => item.type === "steer").length,
|
|
0,
|
|
) ?? 0
|
|
);
|
|
}
|