-
- Provide tokens with elevated permissions for webhook management. These are used once
- and never saved.
-
- {/* PM-provider-specific fields */}
- {state.provider === 'trello' ? (
- <>
-
-
- setOneTimeTrelloApiKey(e.target.value)}
- placeholder="One-time API key"
- type="password"
- className="h-8 text-sm"
- />
-
-
-
- setOneTimeTrelloToken(e.target.value)}
- placeholder="One-time token"
- type="password"
- className="h-8 text-sm"
- />
-
- >
- ) : (
- <>
-
-
- setOneTimeJiraEmail(e.target.value)}
- placeholder="user@example.com"
- className="h-8 text-sm"
- />
-
-
-
- setOneTimeJiraApiToken(e.target.value)}
- placeholder="One-time API token"
- type="password"
- className="h-8 text-sm"
- />
-
- >
- )}
+ {/* curl instructions for manual webhook creation */}
+
+
+
+
+ Manual webhook creation (if the button above doesn't work)
+
+
+
+ Use the following curl command to create the {providerName} webhook manually with your own
+ credentials:
+
+
+
+
- )}
+
+ {curlCommand}
+
+
- {/* Summary */}
-
-
- Provider
- {state.provider === 'trello' ? 'Trello' : 'JIRA'}
-
- {state.verificationResult && (
-
- Identity
- {state.verificationResult.display}
-
- )}
-
-
- {state.provider === 'trello' ? 'Board' : 'Project'}
-
-
- {state.provider === 'trello'
- ? state.trelloBoards.find((b) => b.id === state.trelloBoardId)?.name ||
- state.trelloBoardId
- : state.jiraProjects.find((p) => p.key === state.jiraProjectKey)?.name ||
- state.jiraProjectKey}
-
-
-
-
- {state.provider === 'trello' ? 'Lists mapped' : 'Statuses mapped'}
-
-
- {state.provider === 'trello'
- ? Object.keys(state.trelloListMappings).filter((k) => state.trelloListMappings[k])
- .length
- : Object.keys(state.jiraStatusMappings).filter((k) => state.jiraStatusMappings[k])
- .length}
-
-
-
-
-
- Trigger configuration is managed separately in the Agents tab.
-
-
-
-
-
{
- setId(e.target.value);
- setIdManual(true);
- }}
- placeholder="my-project"
- pattern="^[a-z0-9-]+$"
- required
- />
-
- Lowercase letters, numbers, and hyphens only.
-
-
-
-
-
setRepo(e.target.value)}
- placeholder="owner/repo"
- />
-
Leave empty for email-only projects.
-
-
-
- setBaseBranch(e.target.value)}
- placeholder="main"
- />
-
@@ -329,6 +355,52 @@ export function ProjectGeneralForm({ project }: { project: Project }) {
+ {/* Danger Zone */}
+
+
+ Danger Zone
+
+
+
+
+
Delete this project
+
+ Permanently delete this project and all its integrations, credentials, and agent
+ configs. This action cannot be undone.
+
+
+
+
+
+
+
+
+
+
+ Delete Project
+
+ This will permanently delete {project.name} and all its
+ integrations, credential overrides, and agent configs. This action cannot be undone.
+
+
+
+ Cancel
+ deleteMutation.mutate()}
+ className="bg-destructive text-white hover:bg-destructive/90"
+ >
+ {deleteMutation.isPending ? 'Deleting...' : 'Delete'}
+
+
+
+
+
{/* API Keys */}