feat(page-ai): align ACP session runtime
This commit is contained in:
@@ -494,6 +494,7 @@ export function createSidebarPageAiRuntime(context) {
|
||||
const pageAiSetActiveSession = (...args) => pageAiSessionRuntime.pageAiSetActiveSession(...args);
|
||||
const pageAiStartNewSession = (...args) => pageAiSessionRuntime.pageAiStartNewSession(...args);
|
||||
const pageAiRenameBackendSession = (...args) => pageAiSessionRuntime.pageAiRenameBackendSession(...args);
|
||||
const pageAiExportBackendSession = (...args) => pageAiSessionRuntime.pageAiExportBackendSession(...args);
|
||||
const pageAiDeleteBackendSession = (...args) => pageAiSessionRuntime.pageAiDeleteBackendSession(...args);
|
||||
const pageAiDeleteSelectedBackendSessions = (...args) => pageAiSessionRuntime.pageAiDeleteSelectedBackendSessions(...args);
|
||||
const pageAiResumeBackendSession = (...args) => pageAiSessionRuntime.pageAiResumeBackendSession(...args);
|
||||
@@ -1380,6 +1381,12 @@ export function createSidebarPageAiRuntime(context) {
|
||||
pageAiSetActiveSession(sessionId);
|
||||
}
|
||||
if (run) await pageAiResumeActiveRunJournal(run);
|
||||
if (!run && snapshot && snapshot.hostRunId) {
|
||||
pageAiStopStreamingAssistantMessage(snapshot.hostRunId);
|
||||
pageAiClearActiveRunSnapshot(snapshot.hostRunId);
|
||||
pageUiState.pageAiBusy = false;
|
||||
pageAiSetRunStatus('idle', snapshot.hostRunId);
|
||||
}
|
||||
return run;
|
||||
}
|
||||
|
||||
@@ -2475,6 +2482,21 @@ export function createSidebarPageAiRuntime(context) {
|
||||
void pageAiAppendKnowledgeRagFallbackCitations(id, promptText);
|
||||
}
|
||||
|
||||
function pageAiStopStreamingAssistantMessage(runId) {
|
||||
var id = String(runId || pageUiState.pageAiCurrentRunId || '');
|
||||
var changed = false;
|
||||
pageUiState.pageAiMessages.forEach(function(message) {
|
||||
if (message && message.role === 'assistant' && message.streaming === true && (!id || message.runId === id)) {
|
||||
message.streaming = false;
|
||||
changed = true;
|
||||
}
|
||||
});
|
||||
if (!changed) return;
|
||||
pageAiSyncCurrentSessionMessages();
|
||||
pageAiPersistSessions();
|
||||
renderPageAiConversation();
|
||||
}
|
||||
|
||||
function pageAiToolOutputText(value) {
|
||||
var parts = [];
|
||||
function visit(node) {
|
||||
@@ -2612,6 +2634,10 @@ export function createSidebarPageAiRuntime(context) {
|
||||
if (!event || typeof event !== 'object') return;
|
||||
var eventName = String(event.kind || event.eventType || event.event || '').trim();
|
||||
var payload = event.payload && typeof event.payload === 'object' ? event.payload : {};
|
||||
if (payload.source === 'adapter_replay' || payload.replay === true) {
|
||||
document.documentElement.setAttribute('data-mnote-page-ai-adapter-replay-seen', 'true');
|
||||
return;
|
||||
}
|
||||
var payloadText = pageAiJournalPayloadText(event);
|
||||
var prompt = pageAiLastUserPrompt();
|
||||
if (eventName === 'message.delta') {
|
||||
@@ -2624,6 +2650,7 @@ export function createSidebarPageAiRuntime(context) {
|
||||
pageAiSetRunStatus('failed', runId);
|
||||
} else if (eventName === 'run.aborted' || eventName === 'run.cancelled' || eventName === 'run.canceled') {
|
||||
pageUiState.pageAiStoppedRunIds[runId] = true;
|
||||
pageAiStopStreamingAssistantMessage(runId);
|
||||
pageAiSetRunStatus('aborted', runId);
|
||||
} else if (eventName === 'tool.started' || eventName === 'tool.completed' || eventName === 'tool.failed') {
|
||||
var toolItem = pageAiApplyToolEvent(eventName, payloadText, runId, runTraceId);
|
||||
@@ -2896,6 +2923,14 @@ export function createSidebarPageAiRuntime(context) {
|
||||
var autoCitations = [];
|
||||
await streamPageAiResponse(eventResponse, function(eventName, payloadText) {
|
||||
pageAiTrackStreamingRunEvent(runId, eventName, payloadText);
|
||||
var streamPayload = null;
|
||||
try {
|
||||
streamPayload = JSON.parse(payloadText || 'null');
|
||||
} catch (_) {}
|
||||
if (streamPayload && (streamPayload.source === 'adapter_replay' || streamPayload.replay === true)) {
|
||||
document.documentElement.setAttribute('data-mnote-page-ai-adapter-replay-seen', 'true');
|
||||
return;
|
||||
}
|
||||
if (eventName === 'message.delta') {
|
||||
if (pageUiState.pageAiStoppedRunIds[runId]) return;
|
||||
assistantText = pageAiAppendStreamingAssistantDelta(runId, pageAiDecodeDeltaText(payloadText));
|
||||
@@ -2995,6 +3030,7 @@ export function createSidebarPageAiRuntime(context) {
|
||||
}
|
||||
if (eventName === 'run.aborted' || eventName === 'run.cancelled' || eventName === 'run.canceled') {
|
||||
pageUiState.pageAiStoppedRunIds[runId] = true;
|
||||
pageAiStopStreamingAssistantMessage(runId);
|
||||
pageAiSetRunStatus('aborted', runId);
|
||||
}
|
||||
if (eventName === 'session.info.updated') {
|
||||
@@ -3294,6 +3330,15 @@ export function createSidebarPageAiRuntime(context) {
|
||||
});
|
||||
return true;
|
||||
}
|
||||
var pageAiSessionExport = closestAction(event.target, '[data-page-ai-session-export]');
|
||||
if (pageAiSessionExport) {
|
||||
event.preventDefault();
|
||||
void pageAiExportBackendSession(pageAiSessionExport.getAttribute('data-page-ai-session-export') || '').catch(function(error) {
|
||||
pageUiState.pageAiSessionError = error instanceof Error ? error.message : String(error);
|
||||
renderPageAiControls();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
var pageAiSessionDelete = closestAction(event.target, '[data-page-ai-session-delete]');
|
||||
if (pageAiSessionDelete) {
|
||||
event.preventDefault();
|
||||
@@ -3501,6 +3546,7 @@ export function createSidebarPageAiRuntime(context) {
|
||||
pageAiToggleTool: (...args) => pageAiToggleTool(...args),
|
||||
pageAiResumeBackendSession: (...args) => pageAiResumeBackendSession(...args),
|
||||
pageAiRenameBackendSession: (...args) => pageAiRenameBackendSession(...args),
|
||||
pageAiExportBackendSession: (...args) => pageAiExportBackendSession(...args),
|
||||
pageAiDeleteBackendSession: (...args) => pageAiDeleteBackendSession(...args),
|
||||
pageAiResolvePermission: (...args) => pageAiResolvePermission(...args),
|
||||
pageAiOpenLocation: (...args) => pageAiOpenLocation(...args),
|
||||
|
||||
Reference in New Issue
Block a user