summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components/session-turn.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-29 09:07:31 -0600
committerAdam <[email protected]>2025-12-29 09:07:36 -0600
commita687d7c15f2c47bbe505df651cd0b7bab9561bdb (patch)
tree5d77dcd14b297b60f6753a64e183895692b1c24c /packages/ui/src/components/session-turn.tsx
parent0c6da69f39490f96e03759dc0b638718662abe70 (diff)
downloadopencode-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.tsx22
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(() => {