From ae40da1bbd63e76042e058f9b2e0327d2226944c Mon Sep 17 00:00:00 2001 From: meh Date: Sun, 2 Aug 2026 05:13:31 +0700 Subject: [PATCH 1/2] fix: make Prompt Syntax outcomes explicit --- .../src/features/project/ApprovalCard.tsx | 26 +++- .../src/features/project/MessageBody.test.tsx | 32 +++++ .../src/features/project/MessageBody.tsx | 56 ++++++++- .../src/features/project/TranscriptPane.tsx | 2 +- apps/gui/src/directives.rs | 85 ++++++++++++- apps/gui/src/projects.rs | 112 +++++++++++++++--- docs/ps-capability.yaml | 7 +- docs/task-manager.md | 29 +++-- 8 files changed, 310 insertions(+), 39 deletions(-) diff --git a/apps/gui/frontend/src/features/project/ApprovalCard.tsx b/apps/gui/frontend/src/features/project/ApprovalCard.tsx index 7e2f42b..4774234 100644 --- a/apps/gui/frontend/src/features/project/ApprovalCard.tsx +++ b/apps/gui/frontend/src/features/project/ApprovalCard.tsx @@ -17,6 +17,7 @@ import type { PendingApproval } from "~/types"; */ export function ApprovalCard(props: { projectId: string; approval: PendingApproval }): JSX.Element { const { actions } = useWorkspace(); + const isPermissionGrant = () => props.approval.tool.toLowerCase() === "permissions"; const answer = (allow: boolean, remember = false): void => { void actions @@ -32,6 +33,16 @@ export function ApprovalCard(props: { projectId: string; approval: PendingApprov for (const key of ["command", "file_path", "path", "url"]) { if (typeof record[key] === "string") return record[key] as string; } + const permissions = record.permissions; + if (permissions && typeof permissions === "object") { + const fileSystem = (permissions as Record).fileSystem; + if (fileSystem && typeof fileSystem === "object") { + const write = (fileSystem as Record).write; + if (Array.isArray(write) && write.every((path) => typeof path === "string")) { + return write.join(", "); + } + } + } } return null; }; @@ -73,7 +84,7 @@ export function ApprovalCard(props: { projectId: string; approval: PendingApprov onClick={() => answer(true)} class="rounded-lg bg-primary px-[13px] py-[5px] font-semibold text-[12px] text-primary-content transition-colors hover:bg-az-primary-hover" > - Allow once + {isPermissionGrant() ? "Allow for session" : "Allow once"}