feat(FN-2976): detect and display external Tailscale funnel tunnels in remo
Merges external Tailscale funnel detection (FN-2976) — adds types, detection logic, status inclusion, kill flow, and a dedicated UI panel for funnel processes started outside Fusion — alongside custom AI providers API routes and a new settings UI section (FN-2965). Fusion-Task-Id: FN-2976
This commit is contained in:
@@ -473,6 +473,10 @@ export interface RemoteStatus {
|
||||
lastError: string | null;
|
||||
lastErrorCode?: string | null;
|
||||
cloudflaredAvailable?: boolean | null;
|
||||
externalTunnel?: {
|
||||
provider: "tailscale" | "cloudflare";
|
||||
url: string | null;
|
||||
} | null;
|
||||
restore?: {
|
||||
outcome: "applied" | "skipped" | "failed";
|
||||
reason: string;
|
||||
@@ -525,6 +529,12 @@ export function stopRemoteTunnel(projectId?: string): Promise<{ state: "stopped"
|
||||
});
|
||||
}
|
||||
|
||||
export function killExternalTunnel(projectId?: string): Promise<{ ok: boolean }> {
|
||||
return api<{ ok: boolean }>(withProjectId("/remote/tunnel/kill-external", projectId), {
|
||||
method: "POST",
|
||||
});
|
||||
}
|
||||
|
||||
export function regenerateRemotePersistentToken(projectId?: string): Promise<{ token: string; maskedToken: string }> {
|
||||
return api<{ token: string; maskedToken: string }>(withProjectId("/remote/token/persistent/regenerate", projectId), {
|
||||
method: "POST",
|
||||
|
||||
Reference in New Issue
Block a user