feat(page-ai): align ACP session runtime
This commit is contained in:
@@ -255,6 +255,7 @@ export function createSidebarPageAiSessionRuntime(context) {
|
||||
if (!event || typeof event !== 'object') return null;
|
||||
var eventType = String(event.eventType || event.event_type || event.event || '').trim();
|
||||
var payload = event.payload && typeof event.payload === 'object' ? event.payload : event;
|
||||
if (payload && (payload.source === 'adapter_replay' || payload.replay === true)) return null;
|
||||
if (eventType === 'message.delta') {
|
||||
var delta = String(payload.delta || payload.text || payload.output_text || '');
|
||||
return delta ? { role: 'assistant', content: delta } : null;
|
||||
@@ -410,6 +411,30 @@ export function createSidebarPageAiSessionRuntime(context) {
|
||||
return pageUiState.pageAiSessionSearchResults;
|
||||
}
|
||||
|
||||
async function pageAiExportBackendSession(sessionId) {
|
||||
sessionId = String(sessionId || pageUiState.pageAiActiveSessionId || '').trim();
|
||||
if (!sessionId) return null;
|
||||
var response = await fetch('/api/hermes/client/sessions/' + encodeURIComponent(sessionId) + '/export?' + pageAiBackendSessionQuery({ limit: 200 }), {
|
||||
headers: { 'accept': 'application/json' }
|
||||
});
|
||||
var payload = await response.json().catch(function(){ return null; });
|
||||
if (!response.ok || !payload || payload.ok !== true) {
|
||||
throw new Error(pageAiErrorMessage(payload, 'session_export_failed_' + response.status));
|
||||
}
|
||||
var exported = payload.export && typeof payload.export === 'object' ? payload.export : {};
|
||||
var session = pageAiFindSessionById(sessionId) || pageAiCurrentSession();
|
||||
if (session) {
|
||||
session.exportedAt = Date.now();
|
||||
session.exportMarkdown = String(exported.markdown || '');
|
||||
session.updatedAt = Date.now();
|
||||
}
|
||||
doc.documentElement.setAttribute('data-mnote-page-ai-session-exported', sessionId);
|
||||
pageAiPersistSessions();
|
||||
renderPageAiConversation();
|
||||
renderPageAiControls();
|
||||
return payload;
|
||||
}
|
||||
|
||||
function pageAiPersistSessions() {
|
||||
doc.documentElement.setAttribute('data-mnote-page-ai-session-owner', 'hermes');
|
||||
doc.documentElement.setAttribute('data-mnote-page-ai-session-key', pageAiStorageKey());
|
||||
@@ -621,8 +646,15 @@ export function createSidebarPageAiSessionRuntime(context) {
|
||||
if (!response.ok || !payload || payload.ok !== true) {
|
||||
throw new Error(pageAiErrorMessage(payload, 'session_rename_failed_' + response.status));
|
||||
}
|
||||
session.title = String((payload.result && payload.result.title) || title);
|
||||
session.updatedAt = Date.now();
|
||||
var nextTitle = String((payload.result && payload.result.title) || title);
|
||||
[pageUiState.pageAiSessions, pageUiState.pageAiSessionSearchResults].forEach(function(list) {
|
||||
pageAiNormalizeArray(list).forEach(function(item) {
|
||||
if (String(item && item.id || '').trim() === sessionId) {
|
||||
item.title = nextTitle;
|
||||
item.updatedAt = Date.now();
|
||||
}
|
||||
});
|
||||
});
|
||||
pageAiPersistSessions();
|
||||
renderPageAiConversation();
|
||||
renderPageAiControls();
|
||||
@@ -784,6 +816,7 @@ export function createSidebarPageAiSessionRuntime(context) {
|
||||
pageAiSetActiveSession,
|
||||
pageAiStartNewSession,
|
||||
pageAiRenameBackendSession,
|
||||
pageAiExportBackendSession,
|
||||
pageAiDeleteBackendSession,
|
||||
pageAiDeleteSelectedBackendSessions,
|
||||
pageAiResumeBackendSession,
|
||||
|
||||
Reference in New Issue
Block a user