({ rich }: { rich: boolean })
| 84 | "The file-issue agent run and its error reply both failed", |
| 85 | ); |
| 86 | } |
| 87 | |
| 88 | reportRecoverableError(error, { |
| 89 | operation: "file_issue_modal_run_agent", |
| 90 | recovery: "posted_user_facing_error", |
| 91 | }); |
| 92 | }) |
| 93 | .catch((error) => { |
| 94 | // This is the terminal observer for the intentionally detached promise. |
| 95 | reportRecoverableError(error, { |
| 96 | operation: "file_issue_modal_run_agent", |
| 97 | recovery: "terminal_failure", |
| 98 | }); |
| 99 | }); |
| 100 | }; |
| 101 | |
| 102 | /** |
| 103 | * The form. `rich` controls whether the structured controls (selects/radio) are |
| 104 | * present; pass `false` when a future text-only modal surface needs it. |
| 105 | */ |
| 106 | export function FileIssueModal({ |
| 107 | rich, |
| 108 | sourcePlatform, |
| 109 | }: { |
| 110 | rich: boolean; |
| 111 | sourcePlatform: string; |
| 112 | }): ModalView { |
| 113 | return ( |
| 114 | <Modal |
| 115 | callbackId={FILE_ISSUE_CALLBACK} |
| 116 | title="File an issue" |
| 117 | submitLabel="File" |
| 118 | privateMetadata={sourcePlatform} |
| 119 | > |
| 120 | <TextInput |
| 121 | id="title" |
| 122 | label="Title" |
| 123 | placeholder="Short summary of the issue" |
| 124 | /> |
| 125 | <TextInput |
no outgoing calls
no test coverage detected