clawdex-mobile 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -131,7 +131,6 @@ const RUN_WATCHDOG_MS = 60_000;
|
|
|
131
131
|
const LIKELY_RUNNING_RECENT_UPDATE_MS = 30_000;
|
|
132
132
|
const ACTIVE_CHAT_SYNC_INTERVAL_MS = 2_000;
|
|
133
133
|
const IDLE_CHAT_SYNC_INTERVAL_MS = 2_500;
|
|
134
|
-
const THREAD_RESUME_RETRY_MS = 1_500;
|
|
135
134
|
const CHAT_MODEL_PREFERENCES_FILE = 'chat-model-preferences.json';
|
|
136
135
|
const CHAT_MODEL_PREFERENCES_VERSION = 1;
|
|
137
136
|
const INLINE_OPTION_LINE_PATTERN =
|
|
@@ -451,7 +450,6 @@ export const MainScreen = forwardRef<MainScreenHandle, MainScreenProps>(
|
|
|
451
450
|
const externalStatusFullSyncNextAllowedAtRef = useRef(0);
|
|
452
451
|
const threadRuntimeSnapshotsRef = useRef<Record<string, ThreadRuntimeSnapshot>>({});
|
|
453
452
|
const threadReasoningBuffersRef = useRef<Record<string, string>>({});
|
|
454
|
-
const threadResumeLastAttemptAtRef = useRef<Record<string, number>>({});
|
|
455
453
|
const chatModelPreferencesRef = useRef<Record<string, ChatModelPreference>>({});
|
|
456
454
|
const [chatModelPreferencesLoaded, setChatModelPreferencesLoaded] = useState(false);
|
|
457
455
|
const preferredStartCwd = normalizeWorkspacePath(defaultStartCwd);
|
|
@@ -612,29 +610,6 @@ export const MainScreen = forwardRef<MainScreenHandle, MainScreenProps>(
|
|
|
612
610
|
externalStatusFullSyncQueuedThreadRef.current = null;
|
|
613
611
|
}, []);
|
|
614
612
|
|
|
615
|
-
const ensureThreadResumeSubscription = useCallback(
|
|
616
|
-
(threadId: string, options?: { force?: boolean }) => {
|
|
617
|
-
const normalizedThreadId = threadId.trim();
|
|
618
|
-
if (!normalizedThreadId) {
|
|
619
|
-
return;
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
const now = Date.now();
|
|
623
|
-
const lastAttemptAt = threadResumeLastAttemptAtRef.current[normalizedThreadId] ?? 0;
|
|
624
|
-
if (!options?.force && now - lastAttemptAt < THREAD_RESUME_RETRY_MS) {
|
|
625
|
-
return;
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
threadResumeLastAttemptAtRef.current[normalizedThreadId] = now;
|
|
629
|
-
api
|
|
630
|
-
.resumeThread(normalizedThreadId, {
|
|
631
|
-
approvalPolicy: activeApprovalPolicy,
|
|
632
|
-
})
|
|
633
|
-
.catch(() => {});
|
|
634
|
-
},
|
|
635
|
-
[activeApprovalPolicy, api]
|
|
636
|
-
);
|
|
637
|
-
|
|
638
613
|
const drainExternalStatusFullSyncQueue = useCallback(() => {
|
|
639
614
|
if (externalStatusFullSyncInFlightRef.current) {
|
|
640
615
|
return;
|
|
@@ -4084,10 +4059,6 @@ export const MainScreen = forwardRef<MainScreenHandle, MainScreenProps>(
|
|
|
4084
4059
|
const threadId =
|
|
4085
4060
|
readString(params?.threadId) ?? readString(params?.thread_id);
|
|
4086
4061
|
if (threadId && threadId === currentId) {
|
|
4087
|
-
// External clients (CLI/TUI) may start turns without pushing full live
|
|
4088
|
-
// notifications through this app-server process. Force a lightweight
|
|
4089
|
-
// resume attempt to attach to fresh stream state early.
|
|
4090
|
-
ensureThreadResumeSubscription(threadId, { force: true });
|
|
4091
4062
|
api
|
|
4092
4063
|
.getChatSummary(threadId)
|
|
4093
4064
|
.then((summary) => {
|
|
@@ -4107,7 +4078,6 @@ export const MainScreen = forwardRef<MainScreenHandle, MainScreenProps>(
|
|
|
4107
4078
|
});
|
|
4108
4079
|
|
|
4109
4080
|
if (isChatSummaryLikelyRunning(summary)) {
|
|
4110
|
-
ensureThreadResumeSubscription(threadId);
|
|
4111
4081
|
bumpRunWatchdog();
|
|
4112
4082
|
setActivity((prev) =>
|
|
4113
4083
|
prev.tone === 'running'
|
|
@@ -4176,7 +4146,6 @@ export const MainScreen = forwardRef<MainScreenHandle, MainScreenProps>(
|
|
|
4176
4146
|
clearRunWatchdog,
|
|
4177
4147
|
refreshPendingApprovalsForThread,
|
|
4178
4148
|
scheduleExternalStatusFullSync,
|
|
4179
|
-
ensureThreadResumeSubscription,
|
|
4180
4149
|
registerTurnStarted,
|
|
4181
4150
|
pushActiveCommand,
|
|
4182
4151
|
upsertThreadRuntimeSnapshot,
|
|
@@ -4214,12 +4183,6 @@ export const MainScreen = forwardRef<MainScreenHandle, MainScreenProps>(
|
|
|
4214
4183
|
const shouldRunFromWatchdog = runWatchdogUntilRef.current > Date.now();
|
|
4215
4184
|
const shouldShowRunning = shouldRunFromChat || shouldRunFromWatchdog;
|
|
4216
4185
|
|
|
4217
|
-
// Keep a light resume heartbeat even while idle so externally-started
|
|
4218
|
-
// turns are discovered quickly and can stream status/tool updates.
|
|
4219
|
-
ensureThreadResumeSubscription(selectedChatId, {
|
|
4220
|
-
force: shouldRunFromChat,
|
|
4221
|
-
});
|
|
4222
|
-
|
|
4223
4186
|
if (shouldShowRunning && !hasPendingApproval && !hasPendingUserInput) {
|
|
4224
4187
|
setActivity((prev) => {
|
|
4225
4188
|
// Only guard against watchdog-only bumps overriding a fresh
|
|
@@ -4304,7 +4267,6 @@ export const MainScreen = forwardRef<MainScreenHandle, MainScreenProps>(
|
|
|
4304
4267
|
pendingUserInputRequest?.id,
|
|
4305
4268
|
bumpRunWatchdog,
|
|
4306
4269
|
clearRunWatchdog,
|
|
4307
|
-
ensureThreadResumeSubscription,
|
|
4308
4270
|
]);
|
|
4309
4271
|
|
|
4310
4272
|
const handleResolveApproval = useCallback(
|