()
| 693 | }, |
| 694 | |
| 695 | async listInstalledApps(): Promise<InstalledApp[]> { |
| 696 | // `ComputerUseInstalledApp` is `{bundleId, displayName, path}`. |
| 697 | // `InstalledApp` adds optional `iconDataUrl` — left unpopulated; |
| 698 | // the approval dialog fetches lazily via getAppIcon() below. |
| 699 | return drainRunLoop(() => cu.apps.listInstalled()) |
| 700 | }, |
| 701 | |
| 702 | async getAppIcon(path: string): Promise<string | undefined> { |
| 703 | return cu.apps.iconDataUrl(path) ?? undefined |
nothing calls this directly
no test coverage detected