Skip to content

Commit

Permalink
Merge pull request #408 from ReactiveBayes/gemini-chat
Browse files Browse the repository at this point in the history
Add RxInfer-Assistant to documentation
  • Loading branch information
bvdmitri authored Jan 21, 2025
2 parents cb1c614 + 41f66c0 commit 0a006a7
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 7 deletions.
16 changes: 9 additions & 7 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,14 @@ makedocs(;
canonical = "https://reactivebayes.github.io/RxInfer.jl",
edit_link = "main",
warn_outdated = true,
assets = String["assets/theme.css", "assets/header.css", "assets/header.js"],
assets = [
"assets/theme.css",
"assets/header.css",
"assets/header.js",
asset("https://www.gstatic.com/dialogflow-console/fast/df-messenger/prod/v1/themes/df-messenger-default.css"),
asset("https://www.gstatic.com/dialogflow-console/fast/df-messenger/prod/v1/df-messenger.js"),
"assets/chat.js"
],
description = "Julia package for automated Bayesian inference on a factor graph with reactive message passing",
footer = "Created in [BIASlab](https://biaslab.github.io/), maintained by [ReactiveBayes](https://github.com/ReactiveBayes), powered by [Documenter.jl](https://github.com/JuliaDocs/Documenter.jl) and the [Julia Programming Language](https://julialang.org/)."
),
Expand All @@ -37,12 +44,7 @@ makedocs(;
"Inference customization" => ["Defining a custom node and rules" => "manuals/customization/custom-node.md", "Inference results postprocessing" => "manuals/customization/postprocess.md"],
"Debugging" => "manuals/debugging.md",
"Migration from v2 to v3" => "manuals/migration-guide-v2-v3.md",
"Sharp bits of RxInfer" => [
"Overview" => "manuals/sharpbits/overview.md",
"Rule Not Found Error" => "manuals/sharpbits/rule-not-found.md",
"Stack Overflow in Message Computations" => "manuals/sharpbits/stack-overflow-inference.md",
"Using `=` instead of `:=` for deterministic nodes" => "manuals/sharpbits/usage-colon-equality.md"
]
"Sharp bits of RxInfer" => ["Overview" => "manuals/sharpbits/overview.md", "Rule Not Found Error" => "manuals/sharpbits/rule-not-found.md", "Stack Overflow in Message Computations" => "manuals/sharpbits/stack-overflow-inference.md", "Using `=` instead of `:=` for deterministic nodes" => "manuals/sharpbits/usage-colon-equality.md"]
],
"Library" => [
"Model construction" => "library/model-construction.md",
Expand Down
92 changes: 92 additions & 0 deletions docs/src/assets/chat.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
// In docs/src/assets/chat-widget.js
document.addEventListener('DOMContentLoaded', function() {
const messenger = document.createElement('df-messenger');
messenger.setAttribute('project-id', 'synthetic-shape-442012-s9');
messenger.setAttribute('agent-id', '94fb46c1-e089-404f-8e0f-4478927e5755');
messenger.setAttribute('language-code', 'en');
messenger.setAttribute('max-query-length', '-1');

const chatBubble = document.createElement('df-messenger-chat-bubble');
chatBubble.setAttribute('chat-title', 'RxInfer Documentation Chatbot');
chatBubble.setAttribute('chat-subtitle', `
Ask questions about RxInfer Documentation
`);
chatBubble.setAttribute('chat-title-icon', 'https://reactivebayes.github.io/RxInfer.jl/stable/assets/ld-rxinfer.png');
messenger.appendChild(chatBubble);

document.body.appendChild(messenger);

const desiredWidth = 720;

// Function to update chat window width
const updateChatWidth = () => {
const maxWidth = desiredWidth;
const padding = 32; // 16px padding on each side
const availableWidth = Math.min(window.innerWidth - padding, maxWidth);

style.textContent = `
df-messenger {
z-index: 999;
position: fixed;
bottom: 16px;
right: 16px;
--df-messenger-font-family: 'PT Mono', system-ui, -apple-system, sans-serif;
--df-messenger-primary-color: rgb(22, 87, 152);
--df-messenger-focus-color: rgb(22, 87, 152);
--df-messenger-chat-window-width: ${availableWidth}px;
--df-messenger-chat-window-offset: 64px;
--df-messenger-titlebar-icon-width: 64px;
--df-messenger-titlebar-icon-height: 64px;
--df-messenger-titlebar-icon-padding: 0 24px 0 0;
}
`;
};

// Add styles using documented properties
const style = document.createElement('style');
updateChatWidth(); // Initial width setting
document.head.appendChild(style);

// Update width on window resize
window.addEventListener('resize', updateChatWidth);

// Wait for custom element to be defined
customElements.whenDefined('df-messenger').then(() => {
setTimeout(() => {
const chatWrapper = chatBubble.shadowRoot?.querySelector('.chat-wrapper');
console.log(chatWrapper);
if (chatWrapper) {
const footer = document.createElement('div');
const updateFooterWidth = () => {
const maxWidth = desiredWidth;
const padding = 32;
const availableWidth = Math.min(window.innerWidth - padding, maxWidth);
footer.style.cssText = `
font-size: 11px;
color: #6B7280;
background: #ffffff;
width: ${availableWidth + 2}px;
border-radius: 0 0 4px 4px;
`;
};

updateFooterWidth(); // Initial footer width
window.addEventListener('resize', updateFooterWidth);

const footerText = document.createElement('div');
footerText.style.cssText = `
padding: 8px 16px;
line-height: 1.4;
`;
footerText.innerHTML = `
Responses are automatically generated and may not be accurate.
Please <a href="https://github.com/ReactiveBayes/RxInfer.jl/issues" target="_blank" style="color: rgb(22, 87, 152); text-decoration: none;">open an issue</a> if you find any inaccuracies.
Powered by Gemini.
Sponsored by <a href="https://lazydynamics.com" target="_blank" style="color: rgb(22, 87, 152); text-decoration: none;">Lazy Dynamics</a>.
`;
footer.appendChild(footerText);
chatWrapper.appendChild(footer);
}
}, 10);
});
});
Binary file added docs/src/assets/ld-rxinfer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 0a006a7

Please sign in to comment.