diff options
| author | Dax <[email protected]> | 2026-01-01 17:54:11 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-01 17:54:11 -0500 |
| commit | 351ddeed914d237138fc6f3f8b3d65d2e559357a (patch) | |
| tree | a3009b5b42e80b50095835152e334596f843f3cb /packages/ui/src/components/session-turn.tsx | |
| parent | dccb8875ad0e114242fce3dabc7f7e31c1bac29b (diff) | |
| download | opencode-351ddeed914d237138fc6f3f8b3d65d2e559357a.tar.gz opencode-351ddeed914d237138fc6f3f8b3d65d2e559357a.zip | |
Permission rework (#6319)
Co-authored-by: Github Action <[email protected]>
Co-authored-by: Adam <[email protected]>
Diffstat (limited to 'packages/ui/src/components/session-turn.tsx')
| -rw-r--r-- | packages/ui/src/components/session-turn.tsx | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx index 0ef1f135c..8285b9822 100644 --- a/packages/ui/src/components/session-turn.tsx +++ b/packages/ui/src/components/session-turn.tsx @@ -2,7 +2,7 @@ import { AssistantMessage, Message as MessageType, Part as PartType, - type Permission, + type PermissionRequest, TextPart, ToolPart, } from "@opencode-ai/sdk/v2/client" @@ -132,7 +132,7 @@ export function SessionTurn( const emptyMessages: MessageType[] = [] const emptyParts: PartType[] = [] const emptyAssistant: AssistantMessage[] = [] - const emptyPermissions: Permission[] = [] + const emptyPermissions: PermissionRequest[] = [] const emptyPermissionParts: { part: ToolPart; message: AssistantMessage }[] = [] const idle = { type: "idle" as const } @@ -235,16 +235,18 @@ export function SessionTurn( if (props.stepsExpanded) return emptyPermissionParts const next = nextPermission() - if (!next) return emptyPermissionParts - - for (const message of assistantMessages()) { - const parts = data.store.part[message.id] ?? emptyParts - for (const part of parts) { - if (part?.type !== "tool") continue - const tool = part as ToolPart - if (tool.callID === next.callID) return [{ part: tool, message }] - } + if (!next || !next.tool) return emptyPermissionParts + + const message = assistantMessages().findLast((m) => m.id === next.tool!.messageID) + if (!message) return emptyPermissionParts + + const parts = data.store.part[message.id] ?? emptyParts + for (const part of parts) { + if (part?.type !== "tool") continue + const tool = part as ToolPart + if (tool.callID === next.tool?.callID) return [{ part: tool, message }] } + return emptyPermissionParts }) |
