Buckets:
GHHG10/CodeServer / opencode /packages /app /src /pages /session /composer /session-permission-dock.tsx
| import { For, Show } from "solid-js" | |
| import type { PermissionRequest } from "@opencode-ai/sdk/v2" | |
| import { Button } from "@opencode-ai/ui/button" | |
| import { DockPrompt } from "@opencode-ai/ui/dock-prompt" | |
| import { Icon } from "@opencode-ai/ui/icon" | |
| import { useLanguage } from "@/context/language" | |
| export function SessionPermissionDock(props: { | |
| request: PermissionRequest | |
| responding: boolean | |
| onDecide: (response: "once" | "always" | "reject") => void | |
| }) { | |
| const language = useLanguage() | |
| const toolDescription = () => { | |
| const key = `settings.permissions.tool.${props.request.permission}.description` | |
| const value = language.t(key as Parameters<typeof language.t>[0]) | |
| if (value === key) return "" | |
| return value | |
| } | |
| return ( | |
| <DockPrompt | |
| kind="permission" | |
| header={ | |
| <div data-slot="permission-row" data-variant="header"> | |
| <span data-slot="permission-icon"> | |
| <Icon name="warning" size="normal" /> | |
| </span> | |
| <div data-slot="permission-header-title">{language.t("notification.permission.title")}</div> | |
| </div> | |
| } | |
| footer={ | |
| <> | |
| <div /> | |
| <div data-slot="permission-footer-actions"> | |
| <Button variant="ghost" size="normal" onClick={() => props.onDecide("reject")} disabled={props.responding}> | |
| {language.t("ui.permission.deny")} | |
| </Button> | |
| <Button | |
| variant="secondary" | |
| size="normal" | |
| onClick={() => props.onDecide("always")} | |
| disabled={props.responding} | |
| > | |
| {language.t("ui.permission.allowAlways")} | |
| </Button> | |
| <Button variant="primary" size="normal" onClick={() => props.onDecide("once")} disabled={props.responding}> | |
| {language.t("ui.permission.allowOnce")} | |
| </Button> | |
| </div> | |
| </> | |
| } | |
| > | |
| <Show when={toolDescription()}> | |
| <div data-slot="permission-row"> | |
| <span data-slot="permission-spacer" aria-hidden="true" /> | |
| <div data-slot="permission-hint">{toolDescription()}</div> | |
| </div> | |
| </Show> | |
| <Show when={props.request.patterns.length > 0}> | |
| <div data-slot="permission-row"> | |
| <span data-slot="permission-spacer" aria-hidden="true" /> | |
| <div data-slot="permission-patterns"> | |
| <For each={props.request.patterns}> | |
| {(pattern) => <code class="text-12-regular text-text-base break-all">{pattern}</code>} | |
| </For> | |
| </div> | |
| </div> | |
| </Show> | |
| </DockPrompt> | |
| ) | |
| } | |
Xet Storage Details
- Size:
- 2.6 kB
- Xet hash:
- 5d4c27a2584feb5d043f51b5f7e6ab21ffae7fb25df36aafdd41628b946e85e9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.