diff options
| author | Adam <[email protected]> | 2025-12-29 09:07:31 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-29 09:07:36 -0600 |
| commit | a687d7c15f2c47bbe505df651cd0b7bab9561bdb (patch) | |
| tree | 5d77dcd14b297b60f6753a64e183895692b1c24c /packages/ui/src/components/session-turn.tsx | |
| parent | 0c6da69f39490f96e03759dc0b638718662abe70 (diff) | |
| download | opencode-a687d7c15f2c47bbe505df651cd0b7bab9561bdb.tar.gz opencode-a687d7c15f2c47bbe505df651cd0b7bab9561bdb.zip | |
fix(desktop): one permission at a time
Diffstat (limited to 'packages/ui/src/components/session-turn.tsx')
| -rw-r--r-- | packages/ui/src/components/session-turn.tsx | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx index e1a392bf0..a3ac5b0b4 100644 --- a/packages/ui/src/components/session-turn.tsx +++ b/packages/ui/src/components/session-turn.tsx @@ -195,25 +195,33 @@ export function SessionTurn( const permissions = createMemo(() => data.store.permission?.[props.sessionID] ?? []) const permissionCount = createMemo(() => permissions().length) + const nextPermission = createMemo(() => { + const items = permissions() + return items.reduce( + (result, perm) => { + if (!result) return perm + if (perm.id < result.id) return perm + return result + }, + undefined as ReturnType<typeof permissions>[number] | undefined, + ) + }) const permissionParts = createMemo(() => { if (props.stepsExpanded) return [] as { part: ToolPart; message: AssistantMessage }[] - const items = permissions() - if (!items.length) return [] as { part: ToolPart; message: AssistantMessage }[] - - const ids = new Set(items.map((perm) => perm.callID)) - const result: { part: ToolPart; message: AssistantMessage }[] = [] + const next = nextPermission() + if (!next) return [] as { part: ToolPart; message: AssistantMessage }[] for (const message of assistantMessages()) { const parts = data.store.part[message.id] ?? [] for (const part of parts) { if (part?.type !== "tool") continue const tool = part as ToolPart - if (ids.has(tool.callID)) result.push({ part: tool, message }) + if (tool.callID === next.callID) return [{ part: tool, message }] } } - return result + return [] as { part: ToolPart; message: AssistantMessage }[] }) const shellModePart = createMemo(() => { |
