mirror of
http://10.0.2.1:3031/sauer/claude-code.git
synced 2026-06-30 16:56:58 +10:00
167 lines
15 KiB
TypeScript
167 lines
15 KiB
TypeScript
|
|
import { c as _c } from "react/compiler-runtime";
|
||
|
|
import React, { useEffect } from 'react';
|
||
|
|
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 { type TeleportSource, useTeleportResume } from '../hooks/useTeleportResume.js';
|
||
|
|
import { Box, Text } from '../ink.js';
|
||
|
|
import { useKeybinding } from '../keybindings/useKeybinding.js';
|
||
|
|
import { ResumeTask } from './ResumeTask.js';
|
||
|
|
import { Spinner } from './Spinner.js';
|
||
|
|
interface TeleportResumeWrapperProps {
|
||
|
|
onComplete: (result: TeleportRemoteResponse) => void;
|
||
|
|
onCancel: () => void;
|
||
|
|
onError?: (error: string, formattedMessage?: string) => void;
|
||
|
|
isEmbedded?: boolean;
|
||
|
|
source: TeleportSource;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Wrapper component that manages the full teleport resume flow,
|
||
|
|
* including session selection, loading state, and error handling
|
||
|
|
*/
|
||
|
|
export function TeleportResumeWrapper(t0) {
|
||
|
|
const $ = _c(25);
|
||
|
|
const {
|
||
|
|
onComplete,
|
||
|
|
onCancel,
|
||
|
|
onError,
|
||
|
|
isEmbedded: t1,
|
||
|
|
source
|
||
|
|
} = t0;
|
||
|
|
const isEmbedded = t1 === undefined ? false : t1;
|
||
|
|
const {
|
||
|
|
resumeSession,
|
||
|
|
isResuming,
|
||
|
|
error,
|
||
|
|
selectedSession
|
||
|
|
} = useTeleportResume(source);
|
||
|
|
let t2;
|
||
|
|
let t3;
|
||
|
|
if ($[0] !== source) {
|
||
|
|
t2 = () => {
|
||
|
|
logEvent("tengu_teleport_started", {
|
||
|
|
source: source as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS
|
||
|
|
});
|
||
|
|
};
|
||
|
|
t3 = [source];
|
||
|
|
$[0] = source;
|
||
|
|
$[1] = t2;
|
||
|
|
$[2] = t3;
|
||
|
|
} else {
|
||
|
|
t2 = $[1];
|
||
|
|
t3 = $[2];
|
||
|
|
}
|
||
|
|
useEffect(t2, t3);
|
||
|
|
let t4;
|
||
|
|
if ($[3] !== error || $[4] !== onComplete || $[5] !== onError || $[6] !== resumeSession) {
|
||
|
|
t4 = async session => {
|
||
|
|
const result = await resumeSession(session);
|
||
|
|
if (result) {
|
||
|
|
onComplete(result);
|
||
|
|
} else {
|
||
|
|
if (error) {
|
||
|
|
if (onError) {
|
||
|
|
onError(error.message, error.formattedMessage);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
$[3] = error;
|
||
|
|
$[4] = onComplete;
|
||
|
|
$[5] = onError;
|
||
|
|
$[6] = resumeSession;
|
||
|
|
$[7] = t4;
|
||
|
|
} else {
|
||
|
|
t4 = $[7];
|
||
|
|
}
|
||
|
|
const handleSelect = t4;
|
||
|
|
let t5;
|
||
|
|
if ($[8] !== onCancel) {
|
||
|
|
t5 = () => {
|
||
|
|
logEvent("tengu_teleport_cancelled", {});
|
||
|
|
onCancel();
|
||
|
|
};
|
||
|
|
$[8] = onCancel;
|
||
|
|
$[9] = t5;
|
||
|
|
} else {
|
||
|
|
t5 = $[9];
|
||
|
|
}
|
||
|
|
const handleCancel = t5;
|
||
|
|
const t6 = !!error && !onError;
|
||
|
|
let t7;
|
||
|
|
if ($[10] !== t6) {
|
||
|
|
t7 = {
|
||
|
|
context: "Global",
|
||
|
|
isActive: t6
|
||
|
|
};
|
||
|
|
$[10] = t6;
|
||
|
|
$[11] = t7;
|
||
|
|
} else {
|
||
|
|
t7 = $[11];
|
||
|
|
}
|
||
|
|
useKeybinding("app:interrupt", handleCancel, t7);
|
||
|
|
if (isResuming && selectedSession) {
|
||
|
|
let t8;
|
||
|
|
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t8 = <Box flexDirection="row"><Spinner /><Text bold={true}>Resuming session…</Text></Box>;
|
||
|
|
$[12] = t8;
|
||
|
|
} else {
|
||
|
|
t8 = $[12];
|
||
|
|
}
|
||
|
|
let t9;
|
||
|
|
if ($[13] !== selectedSession.title) {
|
||
|
|
t9 = <Box flexDirection="column" padding={1}>{t8}<Text dimColor={true}>Loading "{selectedSession.title}"…</Text></Box>;
|
||
|
|
$[13] = selectedSession.title;
|
||
|
|
$[14] = t9;
|
||
|
|
} else {
|
||
|
|
t9 = $[14];
|
||
|
|
}
|
||
|
|
return t9;
|
||
|
|
}
|
||
|
|
if (error && !onError) {
|
||
|
|
let t8;
|
||
|
|
if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t8 = <Text bold={true} color="error">Failed to resume session</Text>;
|
||
|
|
$[15] = t8;
|
||
|
|
} else {
|
||
|
|
t8 = $[15];
|
||
|
|
}
|
||
|
|
let t9;
|
||
|
|
if ($[16] !== error.message) {
|
||
|
|
t9 = <Text dimColor={true}>{error.message}</Text>;
|
||
|
|
$[16] = error.message;
|
||
|
|
$[17] = t9;
|
||
|
|
} else {
|
||
|
|
t9 = $[17];
|
||
|
|
}
|
||
|
|
let t10;
|
||
|
|
if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t10 = <Box marginTop={1}><Text dimColor={true}>Press <Text bold={true}>Esc</Text> to cancel</Text></Box>;
|
||
|
|
$[18] = t10;
|
||
|
|
} else {
|
||
|
|
t10 = $[18];
|
||
|
|
}
|
||
|
|
let t11;
|
||
|
|
if ($[19] !== t9) {
|
||
|
|
t11 = <Box flexDirection="column" padding={1}>{t8}{t9}{t10}</Box>;
|
||
|
|
$[19] = t9;
|
||
|
|
$[20] = t11;
|
||
|
|
} else {
|
||
|
|
t11 = $[20];
|
||
|
|
}
|
||
|
|
return t11;
|
||
|
|
}
|
||
|
|
let t8;
|
||
|
|
if ($[21] !== handleCancel || $[22] !== handleSelect || $[23] !== isEmbedded) {
|
||
|
|
t8 = <ResumeTask onSelect={handleSelect} onCancel={handleCancel} isEmbedded={isEmbedded} />;
|
||
|
|
$[21] = handleCancel;
|
||
|
|
$[22] = handleSelect;
|
||
|
|
$[23] = isEmbedded;
|
||
|
|
$[24] = t8;
|
||
|
|
} else {
|
||
|
|
t8 = $[24];
|
||
|
|
}
|
||
|
|
return t8;
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsIkFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMiLCJsb2dFdmVudCIsIlRlbGVwb3J0UmVtb3RlUmVzcG9uc2UiLCJDb2RlU2Vzc2lvbiIsIlRlbGVwb3J0U291cmNlIiwidXNlVGVsZXBvcnRSZXN1bWUiLCJCb3giLCJUZXh0IiwidXNlS2V5YmluZGluZyIsIlJlc3VtZVRhc2siLCJTcGlubmVyIiwiVGVsZXBvcnRSZXN1bWVXcmFwcGVyUHJvcHMiLCJvbkNvbXBsZXRlIiwicmVzdWx0Iiwib25DYW5jZWwiLCJvbkVycm9yIiwiZXJyb3IiLCJmb3JtYXR0ZWRNZXNzYWdlIiwiaXNFbWJlZGRlZCIsInNvdXJjZSIsIlRlbGVwb3J0UmVzdW1lV3JhcHBlciIsInQwIiwiJCIsIl9jIiwidDEiLCJ1bmRlZmluZWQiLCJyZXN1bWVTZXNzaW9uIiwiaXNSZXN1bWluZyIsInNlbGVjdGVkU2Vzc2lvbiIsInQyIiwidDMiLCJ0NCIsInNlc3Npb24iLCJtZXNzYWdlIiwiaGFuZGxlU2VsZWN0IiwidDUiLCJoYW5kbGVDYW5jZWwiLCJ0NiIsInQ3IiwiY29udGV4dCIsImlzQWN0aXZlIiwidDgiLCJTeW1ib2wiLCJmb3IiLCJ0OSIsInRpdGxlIiwidDEwIiwidDExIl0sInNvdXJjZXMiOlsiVGVsZXBvcnRSZXN1bWVXcmFwcGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICB0eXBlIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gIGxvZ0V2ZW50LFxufSBmcm9tICdzcmMvc2VydmljZXMvYW5hbHl0aWNzL2luZGV4LmpzJ1xuaW1wb3J0IHR5cGUgeyBUZWxlcG9ydFJlbW90ZVJlc3BvbnNlIH0gZnJvbSAnc3JjL3V0aWxzL2NvbnZlcnNhdGlvblJlY292ZXJ5LmpzJ1xuaW1wb3J0IHR5cGUgeyBDb2RlU2Vzc2lvbiB9IGZyb20gJ3NyYy91dGlscy90ZWxlcG9ydC9hcGkuanMnXG5pbXBvcnQge1xuICB0eXBlIFRlbGVwb3J0U291cmNlLFxuICB1c2VUZWxlcG9ydFJlc3VtZSxcbn0gZnJvbSAnLi4vaG9va3MvdXNlVGVsZXBvcnRSZXN1bWUuanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi9pbmsuanMnXG5pbXBvcnQgeyB1c2VLZXliaW5kaW5nIH0gZnJvbSAnLi4va2V5YmluZGluZ3MvdXNlS2V5YmluZGluZy5qcydcbmltcG9ydCB7IFJlc3VtZVRhc2sgfSBmcm9tICcuL1Jlc3VtZVRhc2suanMnXG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi9TcGlubmVyLmpzJ1xuXG5pbnRlcmZhY2UgVGVsZXBvcnRSZXN1bWVXcmFwcGVyUHJvcHMge1xuICBvbkNvbXBsZXRlOiAocmVzdWx0OiBUZWxlcG9ydFJlbW90ZVJlc3BvbnNlKSA9PiB2b2lkXG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkXG4gIG9uRXJyb3I/OiAoZXJyb3I6IHN0cmluZywgZm9ybWF0dGVkTWVzc2FnZT86IHN0cmluZykgPT4gdm9pZFxuICBpc0VtYmVkZGVkPzogYm9vbGVhblxuICBzb3VyY2U6IFRlbGVwb3J0U291cmNlXG59XG5cbi8qKlxuICogV3JhcHBlciBjb21wb25lbnQgdGhhdCBtYW5hZ2VzIHRoZSBmdWxsIHRlbGVwb3J0IHJlc3VtZSBmbG93LFxuICogaW5jbHVkaW5nIHNlc3Npb24gc2VsZWN0aW9uLCBsb2FkaW5nIHN0YXRlLCBhbmQgZXJyb3IgaGFuZGxpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRlbGVwb3J0UmVzdW1lV3JhcHBlcih7XG4gIG9uQ29tcGxldGUsXG4gIG9uQ2FuY2VsLFxuICBvbkVycm9yLFxuICBpc0VtYmVkZGVkID0gZmFsc2UsXG4gIHNvdXJjZSxcbn06IFRlbGVwb3J0UmVzdW1lV3JhcHBlclByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgeyByZXN1bWVTZXNzaW9uLCBpc1Jlc3VtaW5nLCBlcnJvciwgc2VsZWN0ZWRTZXNzaW9uIH0gPVxuICAgIHVzZVRlbGVwb3J0UmVzdW1lKHNvdXJjZSlcblxuICAvLyBMb2cgd2hlbiB0ZWxlcG9ydCBmbG93IHN0YXJ0cyAoZm9yIGZ1bm5lbCB0cmFja2luZylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2dFdmVudCgndGVuZ3VfdGVsZXBvcnRfc3RhcnRlZCcsIHtcbiAgICAgIHNvdXJjZTpcbiAgICAgICAgc291cmNlIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgfSlcbiAgfSwgW3NvdXJjZV0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gYXN5bmMgKHNlc3Npb246IENvZGVTZXNzaW9uKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzdW1lU2Vzc2lvbihzZXNzaW9uKVxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIG9uQ29tcGxldGUocmVzdWx0KVxuICAgIH0gZWxzZSBpZiAoZXJyb3IpIHtcbiAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXJyb3IgaGFuZGxlciBwcm92aWRlZCwgdXNlIGl0XG4gICAgICBpZiAob25FcnJvcikge1xuICAgICAgICBvbkVycm9yKGVycm9yLm1lc3NhZ2UsIGVycm9yLmZvcm1hdHRlZE1lc3NhZ2UpXG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UgdGhlIGVycm9yIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBVSVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBsb2dFdmVudCgndGVuZ3VfdGVsZXBvcnRfY2FuY2VsbGVkJywge30pXG4gICAgb25DYW5jZWwoKVxuICB9XG5cbiAgLy8gQWxsb3cgRXNjIHRvIGRpc21pc3MgdGhlIGVycm9yIHN0YXRlXG4gIHVzZUtleWJpbmRpbmcoJ2FwcDppbnRlcnJ1cHQnLCBoYW5kbGVDYW5jZWwsIHtcbiAgICBjb250ZXh0OiAnR2xvYmFsJyxcbiAgICBpc0FjdGl2ZTogISFlcnJvciAmJiAhb25FcnJvcixcbiAgfSlcblxuICAvLyBTaG93IGxvYWRpbmcgc3Bpbm5lciB3aGVuIHJlc3VtaW5nXG4gIGlmIChpc1Jlc3VtaW5nICYmIHNlbGVjdGVkU2Vzc2lvbikge1xuICAgIHJldHVybiAoXG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBwYWRkaW5nPXsxfT5cbiAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwicm93XCI+XG4gICAgICAgICAgPFNwaW5uZXIgLz5cbiA
|