Files
mnote/rust/crates/mnote-web/browser/sidebar-page-ai-runtime.js
T

62 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Page AI product facade — Pi Lab only.
// Hermes / OpenCode / ACP drawer 已物理删除;本模块仅保留 tree 需要的入口桥接。
export function createSidebarPageAiRuntime(context) {
const { pageUiState } = context || {};
function updatePageAiTriggerState() {
var trigger = document.querySelector('[data-testid="wolai-floating-ai"]');
if (!(trigger instanceof HTMLElement)) return;
var open = !!(pageUiState && pageUiState.pageAiOpen);
trigger.setAttribute('data-state', open ? 'open' : 'closed');
trigger.setAttribute('aria-expanded', open ? 'true' : 'false');
}
function openPageAiDrawer() {
// 产品唯一入口:Pi Lab。旧 Hermes/OpenCode/Board drawer 不再打开。
if (typeof window.createSidebarPageAiPiLabRuntime !== 'function') {
console.warn('[page-ai] Pi Lab runtime not loaded');
if (window.mnote && typeof window.mnote.toast === 'function') {
window.mnote.toast('Page AI 运行时未加载', { kind: 'warning' });
}
return;
}
try {
window.createSidebarPageAiPiLabRuntime({});
} catch (err) {
console.error('[page-ai] Pi Lab runtime init failed', err);
if (window.mnote && typeof window.mnote.toast === 'function') {
window.mnote.toast('Page AI 启动失败', { kind: 'error' });
}
return;
}
window.postMessage({ source: 'mnote-sidebar', type: 'mnote:pi-lab-show' }, window.location.origin);
if (pageUiState) pageUiState.pageAiOpen = true;
updatePageAiTriggerState();
}
function closePageAiDrawer() {
window.postMessage({ source: 'mnote-sidebar', type: 'mnote:pi-lab-hide' }, window.location.origin);
if (pageUiState) pageUiState.pageAiOpen = false;
updatePageAiTriggerState();
}
function isPageAiDrawerOpen() {
return !!(pageUiState && pageUiState.pageAiOpen);
}
function installPageAiDelegates() {
// no-opHermes/OpenCode drawer 事件委托已退役;Pi Lab 自有 runtime 处理交互。
}
var api = {
installPageAiDelegates: installPageAiDelegates,
openPageAiDrawer: openPageAiDrawer,
closePageAiDrawer: closePageAiDrawer,
isPageAiDrawerOpen: isPageAiDrawerOpen,
updatePageAiTriggerState: updatePageAiTriggerState
};
window.__mnoteSidebarPageAiRuntime = api;
return api;
}