From bc11ec76d03d3d22c6105b6fa3c6a6ada792264e Mon Sep 17 00:00:00 2001 From: "Peter.Morton" Date: Fri, 15 Aug 2025 10:22:14 -0500 Subject: [PATCH] Adding copilotUX example --- copilot-extension/README.md | 14 +++++++ copilot-extension/images/icon-128.png | Bin 0 -> 5809 bytes copilot-extension/images/icon-16.png | Bin 0 -> 533 bytes copilot-extension/images/icon-32.png | Bin 0 -> 961 bytes copilot-extension/images/icon-48.png | Bin 0 -> 1527 bytes copilot-extension/manifest.json | 35 ++++++++++++++++++ copilot-extension/service-worker.js | 4 ++ copilot-extension/src/pages/panel/panel.css | 6 +++ .../src/pages/side-panel/index.html | 17 +++++++++ 9 files changed, 76 insertions(+) create mode 100644 copilot-extension/README.md create mode 100644 copilot-extension/images/icon-128.png create mode 100644 copilot-extension/images/icon-16.png create mode 100644 copilot-extension/images/icon-32.png create mode 100644 copilot-extension/images/icon-48.png create mode 100644 copilot-extension/manifest.json create mode 100644 copilot-extension/service-worker.js create mode 100644 copilot-extension/src/pages/panel/panel.css create mode 100644 copilot-extension/src/pages/side-panel/index.html diff --git a/copilot-extension/README.md b/copilot-extension/README.md new file mode 100644 index 0000000..28886dd --- /dev/null +++ b/copilot-extension/README.md @@ -0,0 +1,14 @@ +# Chrome Browser Extension + +This is an example Chrome Browser Extension for adding CopilotUX as a side-panel extension. + +## Configuration + +1. Load the extension into Chrome. As this is in development, this extension needs to be loaded by using the 'Load unpacked' method. + +## Known Issues / Limitations + +1. We are using an iframe inside the extension - this should be done without using an iframe if doing for real. +1. You need to be logged in via SSO 1st in the main browser because verint auth refuses to run in an iframe. +1. The whole copilot resets each time you close and reopen the extension... which actually has the interesting side effect of giving us a quick way to reset the copilot between calls + diff --git a/copilot-extension/images/icon-128.png b/copilot-extension/images/icon-128.png new file mode 100644 index 0000000000000000000000000000000000000000..0aaa5888cefd178289b9bdea6fb174883eca9222 GIT binary patch literal 5809 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 Mk`}y5(KP6P0Ppji7ytkO literal 0 HcmV?d00001 diff --git a/copilot-extension/images/icon-16.png b/copilot-extension/images/icon-16.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f861363355e65c6433706da9ab8c973589d86c GIT binary patch literal 533 zcmV+w0_y#VP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf6951U69E94oEQKA00(qQO+^Rk2ObsEg8A(ZG9$I=5q`H1DJ*#eD+J^*q>R#=Vkj zj(KFrZ#;E$e20{N_h2hlB9ur;xrK>NQQ+?_#qss?bJLMv#qiGX96M*`C+~F3V zO9p(T(EUR?f9Id30VD;RVHyr-V-3%AJF4*1n&gWthbRkB(YJ2L&DpKPOe21b_J9e& zQw=^76}~m6m`(e~@V97hJ28-Tun|F0=-1$E#Y%`1DXDUq3KyTmovmx5e&{@DN^BRI;?CrqW$S`7RT X$aR&z5*~jw00000NkvXXu0mjf?AFth literal 0 HcmV?d00001 diff --git a/copilot-extension/images/icon-32.png b/copilot-extension/images/icon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..34262cda7b678b1833a72524b5afc5d199f2e978 GIT binary patch literal 961 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 literal 0 HcmV?d00001 diff --git a/copilot-extension/manifest.json b/copilot-extension/manifest.json new file mode 100644 index 0000000..e2c057a --- /dev/null +++ b/copilot-extension/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "Verint Copilot", + "description": "Verint Copilot Side-panel Extension", + "version": "1.0", + "manifest_version": 3, + "background": { + "service_worker": "service-worker.js" + }, + "side_panel": { + "default_path": "src/pages/side-panel/index.html" + }, + "permissions": ["sidePanel", "tabs"], + "content_security_policy": { + "extension_pages": "script-src 'self'; object-src 'self'" + }, + "icons": { + "16": "images/icon-16.png", + "32": "images/icon-32.png", + "48": "images/icon-48.png", + "128": "images/icon-128.png" + }, + "web_accessible_resources": [ + { + "matches": ["*://*/*"], + "resources": [ + "assets/js/*.js", + "assets/css/*.css", + "assets/svg/*.svg", + "assets/png/*.png", + "icon.svg", + "blob/*" + ] + } + ] +} diff --git a/copilot-extension/service-worker.js b/copilot-extension/service-worker.js new file mode 100644 index 0000000..dd3db75 --- /dev/null +++ b/copilot-extension/service-worker.js @@ -0,0 +1,4 @@ +// Allows users to open the side panel by clicking on the action toolbar icon +chrome.sidePanel + .setPanelBehavior({ openPanelOnActionClick: true }) + .catch((error) => console.error(error)); \ No newline at end of file diff --git a/copilot-extension/src/pages/panel/panel.css b/copilot-extension/src/pages/panel/panel.css new file mode 100644 index 0000000..42e135f --- /dev/null +++ b/copilot-extension/src/pages/panel/panel.css @@ -0,0 +1,6 @@ +body, html {width: 100%; height: 100%; margin: 0; padding: 0} +iframe{ + position:absolute; + width:100%; + height:100%; +} \ No newline at end of file diff --git a/copilot-extension/src/pages/side-panel/index.html b/copilot-extension/src/pages/side-panel/index.html new file mode 100644 index 0000000..6bf5a4d --- /dev/null +++ b/copilot-extension/src/pages/side-panel/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + \ No newline at end of file