summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components/session-turn.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-27 05:16:39 -0600
committerAdam <[email protected]>2025-12-27 14:43:42 -0600
commit21eba5f987482b4e2e75ab1c564815bd7b0613f4 (patch)
tree2d8cad03e54baa29d83e1e835a7ef2e64d3897e4 /packages/ui/src/components/session-turn.tsx
parentc523ca412747d66e0236865a4fa2481f7d50f64e (diff)
downloadopencode-21eba5f987482b4e2e75ab1c564815bd7b0613f4.tar.gz
opencode-21eba5f987482b4e2e75ab1c564815bd7b0613f4.zip
feat(desktop): permissions
Diffstat (limited to 'packages/ui/src/components/session-turn.tsx')
-rw-r--r--packages/ui/src/components/session-turn.tsx23
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx
index a0368b0d4..ce4845a71 100644
--- a/packages/ui/src/components/session-turn.tsx
+++ b/packages/ui/src/components/session-turn.tsx
@@ -151,6 +151,22 @@ export function SessionTurn(
return false
})
+ const permissionParts = createMemo(() => {
+ const result: { part: ToolPart; message: AssistantMessage }[] = []
+ const permissions = data.store.permission?.[props.sessionID] ?? []
+ if (!permissions.length) return result
+
+ for (const m of assistantMessages()) {
+ const msgParts = data.store.part[m.id] ?? []
+ for (const p of msgParts) {
+ if (p?.type === "tool" && permissions.some((perm) => perm.callID === (p as ToolPart).callID)) {
+ result.push({ part: p as ToolPart, message: m })
+ }
+ }
+ }
+ return result
+ })
+
const shellModePart = createMemo(() => {
const p = parts()
if (!p.every((part) => part?.type === "text" && part?.synthetic)) return
@@ -469,6 +485,13 @@ export function SessionTurn(
</Show>
</div>
</Show>
+ <Show when={!props.stepsExpanded && permissionParts().length > 0}>
+ <div data-slot="session-turn-permission-parts">
+ <For each={permissionParts()}>
+ {({ part, message }) => <Part part={part} message={message} />}
+ </For>
+ </div>
+ </Show>
{/* Summary */}
<Show when={showSummarySection()}>
<div data-slot="session-turn-summary-section">