mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 14:25:51 +00:00
85 lines
2.6 KiB
TypeScript
85 lines
2.6 KiB
TypeScript
import { c as _c } from "react/compiler-runtime";
|
|
import { useCallback, useState } from 'react';
|
|
import { setTeleportedSessionInfo } from 'src/bootstrap/state.js';
|
|
import { type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, logEvent } from 'src/services/analytics/index.js';
|
|
import type { TeleportRemoteResponse } from 'src/utils/conversationRecovery.js';
|
|
import type { CodeSession } from 'src/utils/teleport/api.js';
|
|
import { errorMessage, TeleportOperationError } from '../utils/errors.js';
|
|
import { teleportResumeCodeSession } from '../utils/teleport.js';
|
|
export type TeleportResumeError = {
|
|
message: string;
|
|
formattedMessage?: string;
|
|
isOperationError: boolean;
|
|
};
|
|
export type TeleportSource = 'cliArg' | 'localCommand';
|
|
export function useTeleportResume(source) {
|
|
const $ = _c(8);
|
|
const [isResuming, setIsResuming] = useState(false);
|
|
const [error, setError] = useState(null);
|
|
const [selectedSession, setSelectedSession] = useState(null);
|
|
let t0;
|
|
if ($[0] !== source) {
|
|
t0 = async session => {
|
|
setIsResuming(true);
|
|
setError(null);
|
|
setSelectedSession(session);
|
|
logEvent("tengu_teleport_resume_session", {
|
|
source: source as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
session_id: session.id as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS
|
|
});
|
|
;
|
|
try {
|
|
const result = await teleportResumeCodeSession(session.id);
|
|
setTeleportedSessionInfo({
|
|
sessionId: session.id
|
|
});
|
|
setIsResuming(false);
|
|
return result;
|
|
} catch (t1) {
|
|
const err = t1;
|
|
const teleportError = {
|
|
message: err instanceof TeleportOperationError ? err.message : errorMessage(err),
|
|
formattedMessage: err instanceof TeleportOperationError ? err.formattedMessage : undefined,
|
|
isOperationError: err instanceof TeleportOperationError
|
|
};
|
|
setError(teleportError);
|
|
setIsResuming(false);
|
|
return null;
|
|
}
|
|
};
|
|
$[0] = source;
|
|
$[1] = t0;
|
|
} else {
|
|
t0 = $[1];
|
|
}
|
|
const resumeSession = t0;
|
|
let t1;
|
|
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
t1 = () => {
|
|
setError(null);
|
|
};
|
|
$[2] = t1;
|
|
} else {
|
|
t1 = $[2];
|
|
}
|
|
const clearError = t1;
|
|
let t2;
|
|
if ($[3] !== error || $[4] !== isResuming || $[5] !== resumeSession || $[6] !== selectedSession) {
|
|
t2 = {
|
|
resumeSession,
|
|
isResuming,
|
|
error,
|
|
selectedSession,
|
|
clearError
|
|
};
|
|
$[3] = error;
|
|
$[4] = isResuming;
|
|
$[5] = resumeSession;
|
|
$[6] = selectedSession;
|
|
$[7] = t2;
|
|
} else {
|
|
t2 = $[7];
|
|
}
|
|
return t2;
|
|
}
|