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

62 lines
2.3 KiB
JavaScript
Raw Normal View History

// Page AI product facade — Pi Lab only.
// Hermes / OpenCode / ACP drawer 已物理删除;本模块仅保留 tree 需要的入口桥接。
2026-06-01 09:29:12 +08:00
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;
2026-06-25 21:08:17 +08:00
}
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);
2026-06-01 09:29:12 +08:00
}
function installPageAiDelegates() {
// no-opHermes/OpenCode drawer 事件委托已退役;Pi Lab 自有 runtime 处理交互。
2026-06-01 09:29:12 +08:00
}
2026-06-26 20:01:02 +08:00
var api = {
installPageAiDelegates: installPageAiDelegates,
openPageAiDrawer: openPageAiDrawer,
closePageAiDrawer: closePageAiDrawer,
isPageAiDrawerOpen: isPageAiDrawerOpen,
updatePageAiTriggerState: updatePageAiTriggerState
};
2026-06-26 20:01:02 +08:00
window.__mnoteSidebarPageAiRuntime = api;
return api;
}