summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components/session-turn.tsx
diff options
context:
space:
mode:
authorDax <[email protected]>2026-01-01 17:54:11 -0500
committerGitHub <[email protected]>2026-01-01 17:54:11 -0500
commit351ddeed914d237138fc6f3f8b3d65d2e559357a (patch)
treea3009b5b42e80b50095835152e334596f843f3cb /packages/ui/src/components/session-turn.tsx
parentdccb8875ad0e114242fce3dabc7f7e31c1bac29b (diff)
downloadopencode-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.tsx24
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
})