@prestyj/cli 5.7.0 → 5.8.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.
- package/README.md +2 -2
- package/dist/app-sidecar.js +243 -54
- package/dist/app-sidecar.js.map +1 -1
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +5 -2
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/shared.d.ts.map +1 -1
- package/dist/cli/shared.js +2 -0
- package/dist/cli/shared.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -3
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +7 -0
- package/dist/config.test.js.map +1 -1
- package/dist/core/agent-session-compaction.test.js +521 -10
- package/dist/core/agent-session-compaction.test.js.map +1 -1
- package/dist/core/agent-session-memory-tail.test.js +1 -1
- package/dist/core/agent-session-memory-tail.test.js.map +1 -1
- package/dist/core/agent-session-queue.test.js +1 -1
- package/dist/core/agent-session-queue.test.js.map +1 -1
- package/dist/core/agent-session-review-coverage.test.js +26 -0
- package/dist/core/agent-session-review-coverage.test.js.map +1 -1
- package/dist/core/agent-session-tool-result-policy.test.d.ts +2 -0
- package/dist/core/agent-session-tool-result-policy.test.d.ts.map +1 -0
- package/dist/core/agent-session-tool-result-policy.test.js +25 -0
- package/dist/core/agent-session-tool-result-policy.test.js.map +1 -0
- package/dist/core/agent-session.d.ts +40 -8
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +285 -87
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-providers.d.ts.map +1 -1
- package/dist/core/auth-providers.js +15 -8
- package/dist/core/auth-providers.js.map +1 -1
- package/dist/core/compaction/active-context.d.ts +17 -0
- package/dist/core/compaction/active-context.d.ts.map +1 -0
- package/dist/core/compaction/active-context.js +20 -0
- package/dist/core/compaction/active-context.js.map +1 -0
- package/dist/core/compaction/active-context.test.d.ts +2 -0
- package/dist/core/compaction/active-context.test.d.ts.map +1 -0
- package/dist/core/compaction/active-context.test.js +36 -0
- package/dist/core/compaction/active-context.test.js.map +1 -0
- package/dist/core/compaction/compactor.d.ts +19 -18
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +64 -42
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +122 -65
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/token-estimator.d.ts +25 -1
- package/dist/core/compaction/token-estimator.d.ts.map +1 -1
- package/dist/core/compaction/token-estimator.js +86 -1
- package/dist/core/compaction/token-estimator.js.map +1 -1
- package/dist/core/compaction/token-estimator.test.js +147 -1
- package/dist/core/compaction/token-estimator.test.js.map +1 -1
- package/dist/core/compaction/tool-result-pruner.d.ts +37 -0
- package/dist/core/compaction/tool-result-pruner.d.ts.map +1 -0
- package/dist/core/compaction/tool-result-pruner.js +103 -0
- package/dist/core/compaction/tool-result-pruner.js.map +1 -0
- package/dist/core/compaction/tool-result-pruner.test.d.ts +2 -0
- package/dist/core/compaction/tool-result-pruner.test.d.ts.map +1 -0
- package/dist/core/compaction/tool-result-pruner.test.js +148 -0
- package/dist/core/compaction/tool-result-pruner.test.js.map +1 -0
- package/dist/core/ideal-review.d.ts +6 -0
- package/dist/core/ideal-review.d.ts.map +1 -1
- package/dist/core/ideal-review.js +14 -0
- package/dist/core/ideal-review.js.map +1 -1
- package/dist/core/ideal-review.test.js +10 -1
- package/dist/core/ideal-review.test.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/project-discovery.d.ts +6 -9
- package/dist/core/project-discovery.d.ts.map +1 -1
- package/dist/core/project-discovery.js +35 -28
- package/dist/core/project-discovery.js.map +1 -1
- package/dist/core/project-discovery.test.js +148 -0
- package/dist/core/project-discovery.test.js.map +1 -1
- package/dist/core/resolve-start.test.js +1 -0
- package/dist/core/resolve-start.test.js.map +1 -1
- package/dist/core/session-compaction.d.ts +3 -0
- package/dist/core/session-compaction.d.ts.map +1 -1
- package/dist/core/session-compaction.js +14 -1
- package/dist/core/session-compaction.js.map +1 -1
- package/dist/core/session-compaction.test.js +5 -0
- package/dist/core/session-compaction.test.js.map +1 -1
- package/dist/core/session-manager.d.ts +8 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +7 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-manager.test.js +17 -0
- package/dist/core/session-manager.test.js.map +1 -1
- package/dist/core/session-preview.d.ts +11 -0
- package/dist/core/session-preview.d.ts.map +1 -0
- package/dist/core/session-preview.js +50 -0
- package/dist/core/session-preview.js.map +1 -0
- package/dist/core/settings-manager.d.ts +1 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +3 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/subagent-manager.d.ts +2 -4
- package/dist/core/subagent-manager.d.ts.map +1 -1
- package/dist/core/subagent-manager.js +4 -0
- package/dist/core/subagent-manager.js.map +1 -1
- package/dist/core/subagent-manager.test.js +13 -3
- package/dist/core/subagent-manager.test.js.map +1 -1
- package/dist/tools/bash.d.ts +9 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +28 -18
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/bash.test.d.ts +2 -0
- package/dist/tools/bash.test.d.ts.map +1 -0
- package/dist/tools/bash.test.js +56 -0
- package/dist/tools/bash.test.js.map +1 -0
- package/dist/tools/overflow.d.ts +12 -2
- package/dist/tools/overflow.d.ts.map +1 -1
- package/dist/tools/overflow.js +49 -4
- package/dist/tools/overflow.js.map +1 -1
- package/dist/tools/overflow.test.d.ts +2 -0
- package/dist/tools/overflow.test.d.ts.map +1 -0
- package/dist/tools/overflow.test.js +62 -0
- package/dist/tools/overflow.test.js.map +1 -0
- package/dist/tools/subagent-shared.d.ts +8 -0
- package/dist/tools/subagent-shared.d.ts.map +1 -1
- package/dist/tools/subagent-shared.js.map +1 -1
- package/dist/tools/subagent.d.ts +3 -8
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +10 -8
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/subagent.test.js +17 -1
- package/dist/tools/subagent.test.js.map +1 -1
- package/dist/ui/App.d.ts +0 -2
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +6 -82
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/ModelSelector.d.ts.map +1 -1
- package/dist/ui/components/ModelSelector.js +1 -0
- package/dist/ui/components/ModelSelector.js.map +1 -1
- package/dist/ui/components/SubAgentPanel.d.ts +2 -0
- package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
- package/dist/ui/components/SubAgentPanel.js +4 -2
- package/dist/ui/components/SubAgentPanel.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts +2 -4
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +7 -3
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.test.js +31 -0
- package/dist/ui/hooks/useAgentLoop.test.js.map +1 -1
- package/dist/ui/hooks/useContextCompaction.d.ts +5 -8
- package/dist/ui/hooks/useContextCompaction.d.ts.map +1 -1
- package/dist/ui/hooks/useContextCompaction.js +77 -16
- package/dist/ui/hooks/useContextCompaction.js.map +1 -1
- package/dist/ui/hooks/useContextCompaction.test.d.ts +2 -0
- package/dist/ui/hooks/useContextCompaction.test.d.ts.map +1 -0
- package/dist/ui/hooks/useContextCompaction.test.js +135 -0
- package/dist/ui/hooks/useContextCompaction.test.js.map +1 -0
- package/dist/ui/hooks/useSessionPersistence.d.ts.map +1 -1
- package/dist/ui/hooks/useSessionPersistence.js +3 -0
- package/dist/ui/hooks/useSessionPersistence.js.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.d.ts +3 -3
- package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.js +5 -9
- package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
- package/dist/ui/login.d.ts.map +1 -1
- package/dist/ui/login.js +7 -2
- package/dist/ui/login.js.map +1 -1
- package/dist/ui/render.d.ts +0 -2
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +0 -4
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/render.test.js +10 -1
- package/dist/ui/render.test.js.map +1 -1
- package/dist/ui/terminal-history.js +6 -2
- package/dist/ui/terminal-history.js.map +1 -1
- package/dist/ui/terminal-history.test.js +2 -2
- package/dist/ui/terminal-history.test.js.map +1 -1
- package/dist/ui/tui-history-parity.test.js +8 -1
- package/dist/ui/tui-history-parity.test.js.map +1 -1
- package/dist/utils/git.d.ts +2 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +12 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/git.test.d.ts +2 -0
- package/dist/utils/git.test.d.ts.map +1 -0
- package/dist/utils/git.test.js +36 -0
- package/dist/utils/git.test.js.map +1 -0
- package/package.json +4 -4
- package/dist/utils/session-title.d.ts +0 -19
- package/dist/utils/session-title.d.ts.map +0 -1
- package/dist/utils/session-title.js +0 -82
- package/dist/utils/session-title.js.map +0 -1
package/dist/ui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;AAEhG,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,6BAA6B,CAAC;AAcrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/App.js
CHANGED
|
@@ -28,7 +28,6 @@ import { getAuthStorageKeys, getModel, getVideoByteLimit } from "../core/model-r
|
|
|
28
28
|
import { SessionManager } from "../core/session-manager.js";
|
|
29
29
|
import { log } from "../core/logger.js";
|
|
30
30
|
import { getPendingUpdate, startPeriodicUpdateCheck, stopPeriodicUpdateCheck, } from "../core/auto-update.js";
|
|
31
|
-
import { generateSessionTitle } from "../utils/session-title.js";
|
|
32
31
|
import { SettingsManager } from "../core/settings-manager.js";
|
|
33
32
|
import { PROMPT_COMMANDS, getPromptCommand } from "../core/prompt-commands.js";
|
|
34
33
|
import { isFirstTimeSetup, markSetupAudited, getAnnouncedLanguages, markLanguagesAnnounced, } from "../core/setup-history.js";
|
|
@@ -235,22 +234,14 @@ export function App(props) {
|
|
|
235
234
|
// measured further down; 0 means "not measured yet" and disables the
|
|
236
235
|
// oversized-item flush below.
|
|
237
236
|
const liveLayoutRef = useRef({ columns, liveAreaRows: 0 });
|
|
238
|
-
// Hoisted before terminal title hook so it can reference them
|
|
239
237
|
const [lastUserMessage, setLastUserMessage] = useState("");
|
|
240
238
|
// Bumped on every prompt submit; the fullscreen transcript scroll controller
|
|
241
239
|
// watches this to snap back to the bottom so the newest output is visible.
|
|
242
240
|
const [scrollResetToken, setScrollResetToken] = useState(0);
|
|
243
241
|
const [exitPending, setExitPending] = useState(false);
|
|
244
242
|
const [quittingSummary, setQuittingSummary] = useState(null);
|
|
245
|
-
//
|
|
246
|
-
// (hoisted here so the hook is always called in the same order)
|
|
243
|
+
// Native terminal title keeps the active project visible outside the app frame.
|
|
247
244
|
const [titleRunning, setTitleRunning] = useState(false);
|
|
248
|
-
const [sessionTitle, setSessionTitle] = useState(() => props.sessionStore?.sessionTitle);
|
|
249
|
-
const sessionTitleGeneratedRef = useRef(props.sessionStore?.sessionTitleGenerated ?? false);
|
|
250
|
-
useTerminalTitle({
|
|
251
|
-
isRunning: titleRunning,
|
|
252
|
-
sessionTitle,
|
|
253
|
-
});
|
|
254
245
|
// Completed transcript rows are kept as durable session data but are no longer
|
|
255
246
|
// rendered through Ink history. They are serialized once into real terminal
|
|
256
247
|
// scrollback via terminalHistoryPrinter, while Ink owns only live rows and
|
|
@@ -354,6 +345,7 @@ export function App(props) {
|
|
|
354
345
|
// Suppress "done" status when a plan overlay is about to open
|
|
355
346
|
const planOverlayPendingRef = useRef(false);
|
|
356
347
|
const [gitBranch, setGitBranch] = useState(null);
|
|
348
|
+
useTerminalTitle({ isRunning: titleRunning, cwd: displayedCwd, gitBranch });
|
|
357
349
|
const [currentModel, setCurrentModel] = useState(props.model);
|
|
358
350
|
const currentModelRef = useRef(props.model);
|
|
359
351
|
const [currentProvider, setCurrentProvider] = useState(props.provider);
|
|
@@ -403,10 +395,6 @@ export function App(props) {
|
|
|
403
395
|
const idealReviewEnabledRef = useRef(idealReviewEnabled);
|
|
404
396
|
const [autoApprovePlansEnabled, setAutoApprovePlansEnabled] = useState(props.sessionStore?.autoApprovePlans ?? props.autoApprovePlans ?? true);
|
|
405
397
|
const autoApprovePlansEnabledRef = useRef(autoApprovePlansEnabled);
|
|
406
|
-
/** Last actual API-reported input token count (from turn_end). */
|
|
407
|
-
const lastActualTokensRef = useRef(0);
|
|
408
|
-
/** Timestamp (ms) when lastActualTokensRef was last updated by turn_end. */
|
|
409
|
-
const lastActualTokensTimestampRef = useRef(0);
|
|
410
398
|
/**
|
|
411
399
|
* Languages whose style packs are currently injected into the system prompt.
|
|
412
400
|
* Grown by `maybeInjectLanguagePacks` after `write`/`bash` tool results when
|
|
@@ -570,10 +558,6 @@ export function App(props) {
|
|
|
570
558
|
if (sessionStore)
|
|
571
559
|
sessionStore.planSteps = planSteps;
|
|
572
560
|
}, [planSteps, sessionStore]);
|
|
573
|
-
useEffect(() => {
|
|
574
|
-
if (sessionStore)
|
|
575
|
-
sessionStore.sessionTitle = sessionTitle;
|
|
576
|
-
}, [sessionTitle, sessionStore]);
|
|
577
561
|
useEffect(() => {
|
|
578
562
|
if (sessionStore)
|
|
579
563
|
sessionStore.overlay = overlay;
|
|
@@ -840,10 +824,9 @@ export function App(props) {
|
|
|
840
824
|
});
|
|
841
825
|
}
|
|
842
826
|
}, [props.settingsFile]);
|
|
843
|
-
const { compactionAbortRef, compactConversation, transformContext } = useContextCompaction({
|
|
827
|
+
const { compactionAbortRef, compactConversation, transformContext, recordProviderUsage } = useContextCompaction({
|
|
844
828
|
currentModel,
|
|
845
829
|
currentProvider,
|
|
846
|
-
maxTokens: props.maxTokens,
|
|
847
830
|
authStorage: props.authStorage,
|
|
848
831
|
contextWindowOptions,
|
|
849
832
|
activeApiKey,
|
|
@@ -855,8 +838,6 @@ export function App(props) {
|
|
|
855
838
|
approvedPlanPathRef,
|
|
856
839
|
settingsRef,
|
|
857
840
|
messagesRef,
|
|
858
|
-
lastActualTokensRef,
|
|
859
|
-
lastActualTokensTimestampRef,
|
|
860
841
|
persistCompactedSession,
|
|
861
842
|
});
|
|
862
843
|
// ── Background task bar state (external store) ──────────
|
|
@@ -968,56 +949,7 @@ export function App(props) {
|
|
|
968
949
|
// Rebuild system prompt to remove the completed plan from context
|
|
969
950
|
void replaceSystemPrompt({ clearApprovedPlan: true });
|
|
970
951
|
}
|
|
971
|
-
|
|
972
|
-
if (!sessionTitleGeneratedRef.current) {
|
|
973
|
-
sessionTitleGeneratedRef.current = true;
|
|
974
|
-
const msgs = messagesRef.current;
|
|
975
|
-
// Find the first user message and first assistant text
|
|
976
|
-
const userMsg = msgs.find((m) => m.role === "user");
|
|
977
|
-
const assistantMsg = msgs.find((m) => m.role === "assistant");
|
|
978
|
-
const userText = typeof userMsg?.content === "string"
|
|
979
|
-
? userMsg.content
|
|
980
|
-
: Array.isArray(userMsg?.content)
|
|
981
|
-
? userMsg.content
|
|
982
|
-
.filter((c) => c.type === "text")
|
|
983
|
-
.map((c) => c.text)
|
|
984
|
-
.join(" ")
|
|
985
|
-
: "";
|
|
986
|
-
const assistantText = typeof assistantMsg?.content === "string"
|
|
987
|
-
? assistantMsg.content
|
|
988
|
-
: Array.isArray(assistantMsg?.content)
|
|
989
|
-
? assistantMsg.content
|
|
990
|
-
.filter((c) => c.type === "text")
|
|
991
|
-
.map((c) => c.text)
|
|
992
|
-
.join(" ")
|
|
993
|
-
: "";
|
|
994
|
-
if (userText) {
|
|
995
|
-
generateSessionTitle({
|
|
996
|
-
provider: currentProvider,
|
|
997
|
-
userMessage: userText,
|
|
998
|
-
assistantPreview: assistantText.slice(0, 200),
|
|
999
|
-
apiKey: activeApiKey,
|
|
1000
|
-
baseUrl: activeBaseUrl,
|
|
1001
|
-
accountId: activeAccountId,
|
|
1002
|
-
resolveCredentials,
|
|
1003
|
-
}).then((title) => {
|
|
1004
|
-
setSessionTitle(title);
|
|
1005
|
-
log("INFO", "title", `Session title generated: ${title}`);
|
|
1006
|
-
}, () => {
|
|
1007
|
-
// Best-effort — silently ignore failures
|
|
1008
|
-
});
|
|
1009
|
-
}
|
|
1010
|
-
}
|
|
1011
|
-
}, [
|
|
1012
|
-
persistNewMessages,
|
|
1013
|
-
props.cwd,
|
|
1014
|
-
props.skills,
|
|
1015
|
-
currentProvider,
|
|
1016
|
-
activeApiKey,
|
|
1017
|
-
activeAccountId,
|
|
1018
|
-
activeBaseUrl,
|
|
1019
|
-
resolveCredentials,
|
|
1020
|
-
]),
|
|
952
|
+
}, [persistNewMessages, props.cwd, props.skills]),
|
|
1021
953
|
onTurnText: useCallback((text, thinking, thinkingMs) => {
|
|
1022
954
|
const hadStreamedAssistantFlush = streamedAssistantFlushRef.current.flushedChars > 0;
|
|
1023
955
|
const unflushedAssistantText = text.slice(streamedAssistantFlushRef.current.flushedChars);
|
|
@@ -1498,6 +1430,7 @@ export function App(props) {
|
|
|
1498
1430
|
});
|
|
1499
1431
|
}, [queueFlush]),
|
|
1500
1432
|
onTurnEnd: useCallback((turn, stopReason, usage, timing) => {
|
|
1433
|
+
recordProviderUsage(usage, messagesRef.current);
|
|
1501
1434
|
recordTurnEnd(sessionStatsRef.current, usage);
|
|
1502
1435
|
const metric = {
|
|
1503
1436
|
version: 1,
|
|
@@ -1529,13 +1462,6 @@ export function App(props) {
|
|
|
1529
1462
|
providerDurationMs: String(timing.providerDurationMs),
|
|
1530
1463
|
...(timing.ttftMs != null && { ttftMs: String(timing.ttftMs) }),
|
|
1531
1464
|
});
|
|
1532
|
-
// Track actual token count for compaction decisions.
|
|
1533
|
-
// Anthropic has separate input/output limits — only count input.
|
|
1534
|
-
// All other providers share the context window — count both.
|
|
1535
|
-
const inputContext = usage.inputTokens + (usage.cacheRead ?? 0) + (usage.cacheWrite ?? 0);
|
|
1536
|
-
lastActualTokensRef.current =
|
|
1537
|
-
currentProvider === "anthropic" ? inputContext : inputContext + usage.outputTokens;
|
|
1538
|
-
lastActualTokensTimestampRef.current = Date.now();
|
|
1539
1465
|
// For tool-only turns (no text), flush completed items to finalized
|
|
1540
1466
|
// history so liveItems doesn't grow unbounded across consecutive turns.
|
|
1541
1467
|
setLiveItems((prev) => {
|
|
@@ -1545,7 +1471,7 @@ export function App(props) {
|
|
|
1545
1471
|
}
|
|
1546
1472
|
return remaining;
|
|
1547
1473
|
});
|
|
1548
|
-
}, [currentModel, currentProvider, queueFlush, sessionStore]),
|
|
1474
|
+
}, [currentModel, currentProvider, queueFlush, recordProviderUsage, sessionStore]),
|
|
1549
1475
|
onDone: useCallback((durationMs, toolsUsed, runStats) => {
|
|
1550
1476
|
log("INFO", "agent", `Agent done`, {
|
|
1551
1477
|
duration: `${durationMs}ms`,
|
|
@@ -2284,8 +2210,6 @@ export function App(props) {
|
|
|
2284
2210
|
persistedIndexRef.current = messagesRef.current.length;
|
|
2285
2211
|
})();
|
|
2286
2212
|
agentLoop.reset();
|
|
2287
|
-
setSessionTitle(undefined);
|
|
2288
|
-
sessionTitleGeneratedRef.current = false;
|
|
2289
2213
|
setLiveItems([{ kind: "info", text: "Session cleared.", id: getId() }]);
|
|
2290
2214
|
},
|
|
2291
2215
|
openThemeSelector: () => setOverlay("theme"),
|