raif 1.2.1.pre → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +29 -935
- data/app/assets/builds/raif_admin.css +5 -1
- data/app/assets/images/raif-logo-white.svg +8 -0
- data/app/assets/stylesheets/raif_admin.scss +4 -0
- data/app/models/raif/conversation.rb +4 -0
- data/app/models/raif/conversation_entry.rb +0 -1
- data/app/models/raif/llms/open_router.rb +44 -3
- data/app/views/layouts/raif/admin.html.erb +3 -1
- data/lib/generators/raif/install/templates/initializer.rb +3 -3
- data/lib/generators/raif/model_tool/model_tool_generator.rb +3 -0
- data/lib/generators/raif/model_tool/templates/model_tool.rb.tt +2 -0
- data/lib/generators/raif/model_tool/templates/model_tool_invocation_partial.html.erb.tt +10 -0
- data/lib/raif/configuration.rb +4 -4
- data/lib/raif/engine.rb +2 -1
- data/lib/raif/version.rb +1 -1
- metadata +3 -1
@@ -57,6 +57,9 @@ body.raif-admin {
|
|
57
57
|
font-size: 0.9375rem;
|
58
58
|
}
|
59
59
|
|
60
|
+
.raif-admin .navbar-brand-logo {
|
61
|
+
width: 100px;
|
62
|
+
}
|
60
63
|
.raif-admin h1,
|
61
64
|
.raif-admin h2,
|
62
65
|
.raif-admin h3,
|
@@ -89,6 +92,7 @@ body.raif-admin {
|
|
89
92
|
box-shadow: inset -1px 0 0 #e2e8f0;
|
90
93
|
background-color: white !important;
|
91
94
|
padding-top: 1rem;
|
95
|
+
height: 100vh;
|
92
96
|
}
|
93
97
|
.raif-admin .sidebar .nav-link {
|
94
98
|
color: #525f7f;
|
@@ -263,4 +267,4 @@ body.raif-admin {
|
|
263
267
|
}
|
264
268
|
}
|
265
269
|
|
266
|
-
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJhaWZfYWRtaW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UseUJBQXlCO0FBQzNCOztBQUVBO0VBQ0Usa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLDhCQUE4QjtBQUNoQztBQUNBO0VBQ0UseUJBQXlCO0FBQzNCO0FBQ0E7RUFDRSx1Q0FBdUM7QUFDekM7QUFDQTtFQUNFLG9DQUFvQztBQUN0QztBQUNBO0VBQ0Usa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQix5Q0FBeUM7RUFDekMsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxjQUFjO0VBQ2QsaUdBQWlHO0VBQ2pHLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsZ0JBQWdCO0VBQ2hCLFlBQVk7RUFDWixVQUFVO0VBQ1YsY0FBYztBQUNoQjtBQUNBO0VBQ0UsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQix5QkFBeUI7RUFDekIscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsZ0dBQWdHO0VBQ2hHLGNBQWM7RUFDZCx5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLG9CQUFvQjtBQUN0Qjs7QUFFQTs7Ozs7O0VBTUUsY0FBYztFQUNkLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0UsY0FBYztFQUNkLHFCQUFxQjtFQUNyQix5QkFBeUI7QUFDM0I7QUFDQTtFQUNFLHdEQUF3RDtBQUMxRDtBQUNBO0VBQ0UsNkNBQTZDO0VBQzdDLHVCQUF1QjtBQUN6QjtBQUNBO0VBQ0UseUdBQXlHO0FBQzNHO0FBQ0E7RUFDRSxnQkFBZ0I7RUFDaEIscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxrQ0FBa0M7RUFDbEMsa0NBQWtDO0VBQ2xDLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UsY0FBYztFQUNkLGtCQUFrQjtFQUNsQix1QkFBdUI7RUFDdkIsdUJBQXVCO0FBQ3pCO0FBQ0E7RUFDRSx5QkFBeUI7QUFDM0I7QUFDQTtFQUNFLHlDQUF5QztFQUN6QyxjQUFjO0VBQ2QsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxtQkFBbUI7RUFDbkIsb0JBQW9CO0FBQ3RCO0FBQ0E7RUFDRSxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLDJFQUEyRTtFQUMzRSxxQkFBcUI7RUFDckIsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSx1QkFBdUI7RUFDdkIsZ0NBQWdDO0VBQ2hDLHFCQUFxQjtBQUN2QjtBQUNBO0VBQ0UsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0UseUJBQXlCO0FBQzNCO0FBQ0E7RUFDRSxnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGdCQUFnQjtFQUNoQixjQUFjO0VBQ2QsZ0JBQWdCO0VBQ2hCLHFCQUFxQjtFQUNyQixvQkFBb0I7RUFDcEIseUJBQXlCO0VBQ3pCLHFCQUFxQjtBQUN2QjtBQUNBO0VBQ0UscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsMENBQTBDO0FBQzVDO0FBQ0E7RUFDRSxrQkFBa0I7RUFDbEIsMkVBQTJFO0VBQzNFLHVCQUF1QjtFQUN2QixnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGdCQUFnQjtFQUNoQixxQkFBcUI7RUFDckIsaUJBQWlCO0VBQ2pCLG9CQUFvQjtBQUN0QjtBQUNBO0VBQ0Usb0NBQW9DO0FBQ3RDO0FBQ0E7RUFDRSxvQ0FBb0M7QUFDdEM7QUFDQTtFQUNFLG9DQUFvQztFQUNwQyx1QkFBdUI7QUFDekI7QUFDQTtFQUNFLG9DQUFvQztBQUN0QztBQUNBO0VBQ0UsZ0JBQWdCO0VBQ2hCLG9CQUFvQjtFQUNwQixrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLDJFQUEyRTtBQUM3RTtBQUNBO0VBQ0UsY0FBYztFQUNkLHFCQUFxQjtBQUN2QjtBQUNBO0VBQ0UseUJBQXlCO0VBQ3pCLGNBQWM7RUFDZCxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxxQkFBcUI7RUFDckIsYUFBYTtBQUNmO0FBQ0E7RUFDRSwyQkFBMkI7RUFDM0IsNEJBQTRCO0FBQzlCO0FBQ0E7RUFDRSw4QkFBOEI7RUFDOUIsK0JBQStCO0FBQ2pDO0FBQ0E7RUFDRSxjQUFjO0VBQ2QscUJBQXFCO0VBQ3JCLHVCQUF1QjtBQUN6QjtBQUNBO0VBQ0UseUJBQXlCO0VBQ3pCLHFCQUFxQjtFQUNyQixjQUFjO0FBQ2hCO0FBQ0E7RUFDRSx5QkFBeUI7RUFDekIscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLDJFQUEyRTtBQUM3RTtBQUNBO0VBQ0UseUNBQXlDO0VBQ3pDLGNBQWM7QUFDaEI7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0U7SUFDRSxnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLGNBQWM7RUFDaEI7RUFDQTtJQUNFLFNBQVM7SUFDVCxnQkFBZ0I7RUFDbEI7RUFDQTtJQUNFLGlCQUFpQjtFQUNuQjtBQUNGIiwiZmlsZSI6InJhaWZfYWRtaW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNvbnZlcnNhdGlvbi1jYXJkIC5jYXJkLWJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2U6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2UudXNlciB7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzNiODJmNjtcbn1cbi5jb252ZXJzYXRpb24taGlzdG9yeSAubWVzc2FnZS51c2VyIC5tZXNzYWdlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmOWZmO1xufVxuLmNvbnZlcnNhdGlvbi1oaXN0b3J5IC5tZXNzYWdlLmFzc2lzdGFudCB7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgcmdiKDI1LCAxMzUsIDg0KTtcbn1cbi5jb252ZXJzYXRpb24taGlzdG9yeSAubWVzc2FnZS5hc3Npc3RhbnQgLm1lc3NhZ2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzIsIDI1NSwgMjQ0KTtcbn1cbi5jb252ZXJzYXRpb24taGlzdG9yeSAubWVzc2FnZSAubWVzc2FnZS1jb250ZW50IHtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICMxZTNhOGE7XG59XG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2UgLm1lc3NhZ2UtY29udGVudCBjb2RlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2UgLm1lc3NhZ2UtY29udGVudDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5jb252ZXJzYXRpb24taGlzdG9yeSAubWVzc2FnZSAubWVzc2FnZS1jb250ZW50IC5tZXNzYWdlLWxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbn1cblxuYm9keS5yYWlmLWFkbWluIHtcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjNTI1ZjdmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmYWZjO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBmb250LXNpemU6IDAuOTM3NXJlbTtcbn1cblxuLnJhaWYtYWRtaW4gaDEsXG4ucmFpZi1hZG1pbiBoMixcbi5yYWlmLWFkbWluIGgzLFxuLnJhaWYtYWRtaW4gaDQsXG4ucmFpZi1hZG1pbiBoNSxcbi5yYWlmLWFkbWluIGg2IHtcbiAgY29sb3I6ICMxZTNhOGE7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG4ucmFpZi1hZG1pbiBhIHtcbiAgY29sb3I6ICMzYjgyZjY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cbi5yYWlmLWFkbWluIGE6aG92ZXIge1xuICBjb2xvcjogcmdiKDExLjE1MTIxOTUxMjIsIDk5LjEyMTk1MTIxOTUsIDI0Mi44NDg3ODA0ODc4KTtcbn1cbi5yYWlmLWFkbWluIC5uYXZiYXIge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDUwLCA1MCwgOTMsIDAuMSk7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xufVxuLnJhaWYtYWRtaW4gLm5hdmJhci5uYXZiYXItZGFyayB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxZTNhOGEsIHJnYigyMC44OTI4NTcxNDI5LCA0MC4zOTI4NTcxNDI5LCA5Ni4xMDcxNDI4NTcxKSkgIWltcG9ydGFudDtcbn1cbi5yYWlmLWFkbWluIC5uYXZiYXIgLm5hdmJhci1icmFuZCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbn1cbi5yYWlmLWFkbWluIC5zaWRlYmFyIHtcbiAgYm94LXNoYWRvdzogaW5zZXQgLTFweCAwIDAgI2UyZThmMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgcGFkZGluZy10b3A6IDFyZW07XG59XG4ucmFpZi1hZG1pbiAuc2lkZWJhciAubmF2LWxpbmsge1xuICBjb2xvcjogIzUyNWY3ZjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBtYXJnaW46IDAuMjVyZW0gMC43NXJlbTtcbiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG59XG4ucmFpZi1hZG1pbiAuc2lkZWJhciAubmF2LWxpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmOWZmO1xufVxuLnJhaWYtYWRtaW4gLnNpZGViYXIgLm5hdi1saW5rLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xuICBjb2xvcjogIzNiODJmNjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cbi5yYWlmLWFkbWluIG1haW4ge1xuICBwYWRkaW5nLXRvcDogMS41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogM3JlbTtcbn1cbi5yYWlmLWFkbWluIC5jYXJkIHtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDUwLCA1MCwgOTMsIDAuMTEpLCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnJhaWYtYWRtaW4gLmNhcmQgLmNhcmQtaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTJlOGYwO1xuICBwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG59XG4ucmFpZi1hZG1pbiAuY2FyZCAuY2FyZC1oZWFkZXIgaDUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG4ucmFpZi1hZG1pbiAuY2FyZCAuY2FyZC1ib2R5IHtcbiAgcGFkZGluZzogMS4yNXJlbTtcbn1cbi5yYWlmLWFkbWluIC5jYXJkLmNvbnZlcnNhdGlvbi1jYXJkIC5jYXJkLWJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuLnJhaWYtYWRtaW4gLnRhYmxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5yYWlmLWFkbWluIC50YWJsZSB0aCB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjMWUzYThhO1xuICBib3JkZXItdG9wOiBub25lO1xuICBwYWRkaW5nOiAxcmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG59XG4ucmFpZi1hZG1pbiAudGFibGUgdGQge1xuICBwYWRkaW5nOiAxcmVtIDAuNzVyZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJvcmRlci1jb2xvcjogI2UyZThmMDtcbn1cbi5yYWlmLWFkbWluIC50YWJsZS50YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGY5ZmY7XG59XG4ucmFpZi1hZG1pbiAudGFibGUudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDAsIDI0OSwgMjU1LCAwLjUpO1xufVxuLnJhaWYtYWRtaW4gLnRhYmxlLXJlc3BvbnNpdmUge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDUwLCA1MCwgOTMsIDAuMTEpLCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ucmFpZi1hZG1pbiAuYmFkZ2Uge1xuICBmb250LXdlaWdodDogNTAwO1xuICBwYWRkaW5nOiAwLjRlbSAwLjY1ZW07XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBib3JkZXItcmFkaXVzOiA1MHJlbTtcbn1cbi5yYWlmLWFkbWluIC5iYWRnZS5iZy1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzBlYTVlOSAhaW1wb3J0YW50O1xufVxuLnJhaWYtYWRtaW4gLmJhZGdlLmJnLWRhbmdlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjQ0NDQgIWltcG9ydGFudDtcbn1cbi5yYWlmLWFkbWluIC5iYWRnZS5iZy13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1OWUwYiAhaW1wb3J0YW50O1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cbi5yYWlmLWFkbWluIC5iYWRnZS5iZy1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODg5OGFhICFpbXBvcnRhbnQ7XG59XG4ucmFpZi1hZG1pbiAuYnRuIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoNTAsIDUwLCA5MywgMC4xMSksIDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuLnJhaWYtYWRtaW4gLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICBjb2xvcjogIzUyNWY3ZjtcbiAgYm9yZGVyLWNvbG9yOiAjZTJlOGYwO1xufVxuLnJhaWYtYWRtaW4gLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmOWZmO1xuICBjb2xvcjogIzFlM2E4YTtcbiAgYm9yZGVyLWNvbG9yOiAjZTJlOGYwO1xufVxuLnJhaWYtYWRtaW4gcHJlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjlmZjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBwYWRkaW5nOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzFlM2E4YTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UyZThmMDtcbn1cbi5yYWlmLWFkbWluIC5wcmUtd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cbi5yYWlmLWFkbWluIC5saXN0LWdyb3VwLWl0ZW0ge1xuICBib3JkZXItY29sb3I6ICNlMmU4ZjA7XG4gIHBhZGRpbmc6IDFyZW07XG59XG4ucmFpZi1hZG1pbiAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLnJhaWYtYWRtaW4gLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLnJhaWYtYWRtaW4gLnBhZ2luYXRpb24gLnBhZ2UtbGluayB7XG4gIGNvbG9yOiAjNTI1ZjdmO1xuICBib3JkZXItY29sb3I6ICNlMmU4ZjA7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xufVxuLnJhaWYtYWRtaW4gLnBhZ2luYXRpb24gLnBhZ2UtbGluazpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGY5ZmY7XG4gIGJvcmRlci1jb2xvcjogI2UyZThmMDtcbiAgY29sb3I6ICMxZTNhOGE7XG59XG4ucmFpZi1hZG1pbiAucGFnaW5hdGlvbiAucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNiODJmNjtcbiAgYm9yZGVyLWNvbG9yOiAjM2I4MmY2O1xufVxuLnJhaWYtYWRtaW4gLnJvdy5tYi0zIC5jb2wtbWQtMyBzdHJvbmcge1xuICBjb2xvcjogIzFlM2E4YTtcbn1cbi5yYWlmLWFkbWluIC5hbGVydCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSg1MCwgNTAsIDkzLCAwLjExKSwgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG59XG4ucmFpZi1hZG1pbiAuYWxlcnQuYWxlcnQtaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xuICBjb2xvcjogIzNiODJmNjtcbn1cbi5yYWlmLWFkbWluIC50ZXh0LW11dGVkIHtcbiAgY29sb3I6ICM4ODk4YWEgIWltcG9ydGFudDtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAucmFpZi1hZG1pbiAuc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgcGFkZGluZy10b3A6IDA7XG4gIH1cbiAgLnJhaWYtYWRtaW4gLnNpZGViYXIgLm5hdi1saW5rIHtcbiAgICBtYXJnaW46IDA7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxuICAucmFpZi1hZG1pbiBtYWluIHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgfVxufVxuIl19 */
|
270
|
+
/*# sourceMappingURL=data:application/json;base64,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QUNBO0VBQ0UseUJBQXlCO0VBQ3pCLGNBQWM7RUFDZCxxQkFBcUI7QUFDdkI7QUFDQTtFQUNFLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxxQkFBcUI7RUFDckIsYUFBYTtBQUNmO0FBQ0E7RUFDRSwyQkFBMkI7RUFDM0IsNEJBQTRCO0FBQzlCO0FBQ0E7RUFDRSw4QkFBOEI7RUFDOUIsK0JBQStCO0FBQ2pDO0FBQ0E7RUFDRSxjQUFjO0VBQ2QscUJBQXFCO0VBQ3JCLHVCQUF1QjtBQUN6QjtBQUNBO0VBQ0UseUJBQXlCO0VBQ3pCLHFCQUFxQjtFQUNyQixjQUFjO0FBQ2hCO0FBQ0E7RUFDRSx5QkFBeUI7RUFDekIscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLDJFQUEyRTtBQUM3RTtBQUNBO0VBQ0UseUNBQXlDO0VBQ3pDLGNBQWM7QUFDaEI7QUFDQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0U7SUFDRSxnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLGNBQWM7RUFDaEI7RUFDQTtJQUNFLFNBQVM7SUFDVCxnQkFBZ0I7RUFDbEI7RUFDQTtJQUNFLGlCQUFpQjtFQUNuQjtBQUNGIiwiZmlsZSI6InJhaWZfYWRtaW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNvbnZlcnNhdGlvbi1jYXJkIC5jYXJkLWJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2U6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2UudXNlciB7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzNiODJmNjtcbn1cbi5jb252ZXJzYXRpb24taGlzdG9yeSAubWVzc2FnZS51c2VyIC5tZXNzYWdlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmOWZmO1xufVxuLmNvbnZlcnNhdGlvbi1oaXN0b3J5IC5tZXNzYWdlLmFzc2lzdGFudCB7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgcmdiKDI1LCAxMzUsIDg0KTtcbn1cbi5jb252ZXJzYXRpb24taGlzdG9yeSAubWVzc2FnZS5hc3Npc3RhbnQgLm1lc3NhZ2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzIsIDI1NSwgMjQ0KTtcbn1cbi5jb252ZXJzYXRpb24taGlzdG9yeSAubWVzc2FnZSAubWVzc2FnZS1jb250ZW50IHtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICMxZTNhOGE7XG59XG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2UgLm1lc3NhZ2UtY29udGVudCBjb2RlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uY29udmVyc2F0aW9uLWhpc3RvcnkgLm1lc3NhZ2UgLm1lc3NhZ2UtY29udGVudDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5jb252ZXJzYXRpb24taGlzdG9yeSAubWVzc2FnZSAubWVzc2FnZS1jb250ZW50IC5tZXNzYWdlLWxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbn1cblxuYm9keS5yYWlmLWFkbWluIHtcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjNTI1ZjdmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmYWZjO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBmb250LXNpemU6IDAuOTM3NXJlbTtcbn1cblxuLnJhaWYtYWRtaW4gLm5hdmJhci1icmFuZC1sb2dvIHtcbiAgd2lkdGg6IDEwMHB4O1xufVxuLnJhaWYtYWRtaW4gaDEsXG4ucmFpZi1hZG1pbiBoMixcbi5yYWlmLWFkbWluIGgzLFxuLnJhaWYtYWRtaW4gaDQsXG4ucmFpZi1hZG1pbiBoNSxcbi5yYWlmLWFkbWluIGg2IHtcbiAgY29sb3I6ICMxZTNhOGE7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG4ucmFpZi1hZG1pbiBhIHtcbiAgY29sb3I6ICMzYjgyZjY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cbi5yYWlmLWFkbWluIGE6aG92ZXIge1xuICBjb2xvcjogcmdiKDExLjE1MTIxOTUxMjIsIDk5LjEyMTk1MTIxOTUsIDI0Mi44NDg3ODA0ODc4KTtcbn1cbi5yYWlmLWFkbWluIC5uYXZiYXIge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDUwLCA1MCwgOTMsIDAuMSk7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xufVxuLnJhaWYtYWRtaW4gLm5hdmJhci5uYXZiYXItZGFyayB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxZTNhOGEsIHJnYigyMC44OTI4NTcxNDI5LCA0MC4zOTI4NTcxNDI5LCA5Ni4xMDcxNDI4NTcxKSkgIWltcG9ydGFudDtcbn1cbi5yYWlmLWFkbWluIC5uYXZiYXIgLm5hdmJhci1icmFuZCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbn1cbi5yYWlmLWFkbWluIC5zaWRlYmFyIHtcbiAgYm94LXNoYWRvdzogaW5zZXQgLTFweCAwIDAgI2UyZThmMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIGhlaWdodDogMTAwdmg7XG59XG4ucmFpZi1hZG1pbiAuc2lkZWJhciAubmF2LWxpbmsge1xuICBjb2xvcjogIzUyNWY3ZjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBtYXJnaW46IDAuMjVyZW0gMC43NXJlbTtcbiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG59XG4ucmFpZi1hZG1pbiAuc2lkZWJhciAubmF2LWxpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmOWZmO1xufVxuLnJhaWYtYWRtaW4gLnNpZGViYXIgLm5hdi1saW5rLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xuICBjb2xvcjogIzNiODJmNjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cbi5yYWlmLWFkbWluIG1haW4ge1xuICBwYWRkaW5nLXRvcDogMS41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogM3JlbTtcbn1cbi5yYWlmLWFkbWluIC5jYXJkIHtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDUwLCA1MCwgOTMsIDAuMTEpLCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnJhaWYtYWRtaW4gLmNhcmQgLmNhcmQtaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTJlOGYwO1xuICBwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG59XG4ucmFpZi1hZG1pbiAuY2FyZCAuY2FyZC1oZWFkZXIgaDUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG4ucmFpZi1hZG1pbiAuY2FyZCAuY2FyZC1ib2R5IHtcbiAgcGFkZGluZzogMS4yNXJlbTtcbn1cbi5yYWlmLWFkbWluIC5jYXJkLmNvbnZlcnNhdGlvbi1jYXJkIC5jYXJkLWJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuLnJhaWYtYWRtaW4gLnRhYmxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5yYWlmLWFkbWluIC50YWJsZSB0aCB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjMWUzYThhO1xuICBib3JkZXItdG9wOiBub25lO1xuICBwYWRkaW5nOiAxcmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG59XG4ucmFpZi1hZG1pbiAudGFibGUgdGQge1xuICBwYWRkaW5nOiAxcmVtIDAuNzVyZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJvcmRlci1jb2xvcjogI2UyZThmMDtcbn1cbi5yYWlmLWFkbWluIC50YWJsZS50YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGY5ZmY7XG59XG4ucmFpZi1hZG1pbiAudGFibGUudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDAsIDI0OSwgMjU1LCAwLjUpO1xufVxuLnJhaWYtYWRtaW4gLnRhYmxlLXJlc3BvbnNpdmUge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDUwLCA1MCwgOTMsIDAuMTEpLCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ucmFpZi1hZG1pbiAuYmFkZ2Uge1xuICBmb250LXdlaWdodDogNTAwO1xuICBwYWRkaW5nOiAwLjRlbSAwLjY1ZW07XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBib3JkZXItcmFkaXVzOiA1MHJlbTtcbn1cbi5yYWlmLWFkbWluIC5iYWRnZS5iZy1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzBlYTVlOSAhaW1wb3J0YW50O1xufVxuLnJhaWYtYWRtaW4gLmJhZGdlLmJnLWRhbmdlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZjQ0NDQgIWltcG9ydGFudDtcbn1cbi5yYWlmLWFkbWluIC5iYWRnZS5iZy13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1OWUwYiAhaW1wb3J0YW50O1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cbi5yYWlmLWFkbWluIC5iYWRnZS5iZy1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODg5OGFhICFpbXBvcnRhbnQ7XG59XG4ucmFpZi1hZG1pbiAuYnRuIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoNTAsIDUwLCA5MywgMC4xMSksIDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuLnJhaWYtYWRtaW4gLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICBjb2xvcjogIzUyNWY3ZjtcbiAgYm9yZGVyLWNvbG9yOiAjZTJlOGYwO1xufVxuLnJhaWYtYWRtaW4gLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmOWZmO1xuICBjb2xvcjogIzFlM2E4YTtcbiAgYm9yZGVyLWNvbG9yOiAjZTJlOGYwO1xufVxuLnJhaWYtYWRtaW4gcHJlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjlmZjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBwYWRkaW5nOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzFlM2E4YTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UyZThmMDtcbn1cbi5yYWlmLWFkbWluIC5wcmUtd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cbi5yYWlmLWFkbWluIC5saXN0LWdyb3VwLWl0ZW0ge1xuICBib3JkZXItY29sb3I6ICNlMmU4ZjA7XG4gIHBhZGRpbmc6IDFyZW07XG59XG4ucmFpZi1hZG1pbiAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLnJhaWYtYWRtaW4gLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLnJhaWYtYWRtaW4gLnBhZ2luYXRpb24gLnBhZ2UtbGluayB7XG4gIGNvbG9yOiAjNTI1ZjdmO1xuICBib3JkZXItY29sb3I6ICNlMmU4ZjA7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xufVxuLnJhaWYtYWRtaW4gLnBhZ2luYXRpb24gLnBhZ2UtbGluazpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGY5ZmY7XG4gIGJvcmRlci1jb2xvcjogI2UyZThmMDtcbiAgY29sb3I6ICMxZTNhOGE7XG59XG4ucmFpZi1hZG1pbiAucGFnaW5hdGlvbiAucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNiODJmNjtcbiAgYm9yZGVyLWNvbG9yOiAjM2I4MmY2O1xufVxuLnJhaWYtYWRtaW4gLnJvdy5tYi0zIC5jb2wtbWQtMyBzdHJvbmcge1xuICBjb2xvcjogIzFlM2E4YTtcbn1cbi5yYWlmLWFkbWluIC5hbGVydCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSg1MCwgNTAsIDkzLCAwLjExKSwgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG59XG4ucmFpZi1hZG1pbiAuYWxlcnQuYWxlcnQtaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xuICBjb2xvcjogIzNiODJmNjtcbn1cbi5yYWlmLWFkbWluIC50ZXh0LW11dGVkIHtcbiAgY29sb3I6ICM4ODk4YWEgIWltcG9ydGFudDtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAucmFpZi1hZG1pbiAuc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgcGFkZGluZy10b3A6IDA7XG4gIH1cbiAgLnJhaWYtYWRtaW4gLnNpZGViYXIgLm5hdi1saW5rIHtcbiAgICBtYXJnaW46IDA7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxuICAucmFpZi1hZG1pbiBtYWluIHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgfVxufVxuIl19 */
|
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3187.5" height="1328.6164850518683" viewBox="0 -93.75 3187.5 1328.6164850518683">
|
3
|
+
|
4
|
+
<g transform="scale(9.375) translate(10, 10)">
|
5
|
+
<defs id="SvgjsDefs4139"/><g id="SvgjsG4140" featureKey="5TMTKC-0" transform="matrix(-0.5092531442642212,0,0,0.5092531442642212,79.9527359008789,-10.000000953674316)" fill="#fff"><defs xmlns="http://www.w3.org/2000/svg"/><g xmlns="http://www.w3.org/2000/svg"><path d="M7 122c-8,20 -10,46 -2,81 1,-27 4,-54 2,-81z" style="fill: #3b82f6;"/><path d="M56 70c-10,5 -19,12 -27,19 3,40 -9,73 -18,110 4,-7 8,-15 12,-22 16,-32 33,-63 33,-107z" style="fill: #3b82f6;"/><path d="M114 36c-7,5 -14,9 -21,13 -6,60 -37,89 -68,134 40,-51 80,-74 89,-147z" style="fill: #3b82f6;"/><path d="M157 60c-2,-21 -6,-42 -12,-60 -5,88 -40,112 -97,166 44,-34 84,-51 109,-106z" style="fill: #3b82f6;"/><path d="M150 150c3,-11 6,-23 7,-36 -39,39 -94,49 -135,85 41,-25 86,-28 128,-49z" style="fill: #3b82f6;"/><path d="M105 208c10,-5 18,-13 26,-21 -38,5 -73,5 -110,19 29,-4 55,-1 84,2z" style="fill: #3b82f6;"/><path d="M9 213c25,6 46,8 64,5 -12,-5 -53,-10 -64,-5z" style="fill: #3b82f6;"/></g></g><g id="SvgjsG4141" featureKey="7UBp9i-0" transform="matrix(6.225240707397461,0,0,6.225240707397461,92.90322369982673,-21.50368198162188)" fill="#fff"><path d="M4.14 10.58 l0 2.92 l2.8 0 c0.92 0 1.46 -0.54 1.46 -1.46 s-0.54 -1.46 -1.46 -1.46 l-2.8 0 z M8.68 15.48 c0.56 0.76 1.12 1.52 1.7 2.26 c0.56 0.74 1.12 1.5 1.68 2.26 l-3.66 0 c-0.72 -0.96 -1.42 -1.92 -2.12 -2.88 c-0.7 -0.94 -1.42 -1.9 -2.14 -2.86 l0 5.74 l-3 0 l0 -12.24 l5.8 0 c2.28 0 4.22 1.74 4.22 4.04 c0 1.62 -1 3.04 -2.48 3.68 z M20.2 15 c-0.08 -1.46 -0.74 -2.32 -2.26 -2.32 c-0.42 0 -0.78 0.06 -1.08 0.18 c-0.92 0.42 -1.26 1.2 -1.26 2.16 c0 0.32 0.04 0.62 0.14 0.88 c0.3 1.04 1.2 1.42 2.2 1.42 c1.52 0 2.26 -0.82 2.26 -2.32 z M24 20 l-3 0 c-0.2 -0.5 -0.38 -1 -0.5 -1.52 c-0.68 1.12 -1.72 1.62 -3 1.62 c-2.86 0 -4.9 -2.4 -4.9 -5.14 c0 -3.16 2.36 -5.06 5.34 -5.06 c3.18 0 5.18 2.04 5.26 5.1 c0.02 0.26 0.02 0.56 0.02 0.92 c0 1.4 0.22 2.8 0.78 4.08 z M25.099999999999998 10 l3 0 l0 10 l-3 0 l0 -10 z M26.599999999999998 9.06 c-1.02 0 -1.74 -0.72 -1.74 -1.74 c0 -1.04 0.72 -1.72 1.74 -1.72 c1.04 0 1.72 0.68 1.72 1.72 c0 1.06 -0.66 1.74 -1.72 1.74 z M35.6 10.34 l0 2.78 l-2.46 0 l0 6.88 l-3 0 l0 -9.98 c0 -3.32 2.44 -5.12 5.52 -5.12 c0.1 0 0.24 0 0.38 0.02 s0.3 0.06 0.44 0.08 l0 2.9 c-0.1 -0.02 -0.22 -0.04 -0.36 -0.06 s-0.26 -0.04 -0.36 -0.04 c-0.5 0 -0.9 0.06 -1.24 0.16 c-0.56 0.2 -1.06 0.58 -1.24 1.18 c-0.1 0.26 -0.14 0.56 -0.14 0.86 l0 0.34 l2.46 0 z"/></g>
|
6
|
+
</g>
|
7
|
+
</svg>
|
8
|
+
|
@@ -25,6 +25,9 @@ body.raif-admin {
|
|
25
25
|
}
|
26
26
|
|
27
27
|
.raif-admin {
|
28
|
+
.navbar-brand-logo {
|
29
|
+
width: 100px;
|
30
|
+
}
|
28
31
|
|
29
32
|
h1,
|
30
33
|
h2,
|
@@ -65,6 +68,7 @@ body.raif-admin {
|
|
65
68
|
box-shadow: inset -1px 0 0 $border-color;
|
66
69
|
background-color: white !important;
|
67
70
|
padding-top: 1rem;
|
71
|
+
height: 100vh;
|
68
72
|
|
69
73
|
.nav-link {
|
70
74
|
color: $text-color;
|
@@ -47,6 +47,8 @@ class Raif::Conversation < Raif::ApplicationRecord
|
|
47
47
|
)
|
48
48
|
rescue StandardError => e
|
49
49
|
Rails.logger.error("Error processing conversation entry ##{entry.id}. #{e.message}")
|
50
|
+
Rails.logger.error(e.backtrace.join("\n"))
|
51
|
+
|
50
52
|
entry.failed!
|
51
53
|
|
52
54
|
if defined?(Airbrake)
|
@@ -56,6 +58,8 @@ class Raif::Conversation < Raif::ApplicationRecord
|
|
56
58
|
|
57
59
|
Airbrake.notify(notice)
|
58
60
|
end
|
61
|
+
|
62
|
+
entry
|
59
63
|
end
|
60
64
|
|
61
65
|
def process_model_response_message(message:, entry:)
|
@@ -17,7 +17,6 @@ class Raif::ConversationEntry < Raif::ApplicationRecord
|
|
17
17
|
|
18
18
|
delegate :available_model_tools, to: :raif_conversation
|
19
19
|
delegate :system_prompt, :llm_model_key, :citations, to: :raif_model_completion, allow_nil: true
|
20
|
-
delegate :json_response_schema, to: :class
|
21
20
|
|
22
21
|
accepts_nested_attributes_for :raif_user_tool_invocation
|
23
22
|
|
@@ -38,9 +38,16 @@ private
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def update_model_completion(model_completion, response_json)
|
41
|
+
raw_response = if model_completion.response_format_json?
|
42
|
+
extract_json_response(response_json)
|
43
|
+
else
|
44
|
+
extract_text_response(response_json)
|
45
|
+
end
|
46
|
+
|
41
47
|
model_completion.update!(
|
48
|
+
response_id: response_json["id"],
|
42
49
|
response_tool_calls: extract_response_tool_calls(response_json),
|
43
|
-
raw_response:
|
50
|
+
raw_response: raw_response,
|
44
51
|
response_array: response_json["choices"],
|
45
52
|
completion_tokens: response_json.dig("usage", "completion_tokens"),
|
46
53
|
prompt_tokens: response_json.dig("usage", "prompt_tokens"),
|
@@ -63,6 +70,20 @@ private
|
|
63
70
|
|
64
71
|
if supports_native_tool_use?
|
65
72
|
tools = build_tools_parameter(model_completion)
|
73
|
+
|
74
|
+
if model_completion.json_response_schema.present?
|
75
|
+
validate_json_schema!(model_completion.json_response_schema)
|
76
|
+
|
77
|
+
tools << {
|
78
|
+
type: "function",
|
79
|
+
function: {
|
80
|
+
name: "json_response",
|
81
|
+
description: "Generate a structured JSON response based on the provided schema.",
|
82
|
+
parameters: model_completion.json_response_schema
|
83
|
+
}
|
84
|
+
}
|
85
|
+
end
|
86
|
+
|
66
87
|
params[:tools] = tools unless tools.blank?
|
67
88
|
end
|
68
89
|
|
@@ -80,10 +101,30 @@ private
|
|
80
101
|
params
|
81
102
|
end
|
82
103
|
|
104
|
+
def extract_text_response(resp)
|
105
|
+
resp&.dig("choices", 0, "message", "content")
|
106
|
+
end
|
107
|
+
|
108
|
+
def extract_json_response(resp)
|
109
|
+
tool_calls = resp.dig("choices", 0, "message", "tool_calls")
|
110
|
+
return extract_text_response(resp) if tool_calls.blank?
|
111
|
+
|
112
|
+
tool_response = tool_calls.find do |tool_call|
|
113
|
+
tool_call["function"]["name"] == "json_response"
|
114
|
+
end
|
115
|
+
|
116
|
+
if tool_response&.dig("function", "arguments")
|
117
|
+
tool_response["function"]["arguments"]
|
118
|
+
else
|
119
|
+
extract_text_response(resp)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
83
123
|
def extract_response_tool_calls(resp)
|
84
|
-
|
124
|
+
tool_calls = resp.dig("choices", 0, "message", "tool_calls")
|
125
|
+
return if tool_calls.blank?
|
85
126
|
|
86
|
-
|
127
|
+
tool_calls.map do |tool_call|
|
87
128
|
{
|
88
129
|
"name" => tool_call["function"]["name"],
|
89
130
|
"arguments" => JSON.parse(tool_call["function"]["arguments"])
|
@@ -15,7 +15,9 @@
|
|
15
15
|
<body class="raif-admin">
|
16
16
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
|
17
17
|
<div class="container-fluid">
|
18
|
-
<a class="navbar-brand fw-bold" href="<%= raif.admin_tasks_path %>"
|
18
|
+
<a class="navbar-brand fw-bold" href="<%= raif.admin_tasks_path %>">
|
19
|
+
<%= image_tag "raif-logo-white.svg", class: "navbar-brand-logo" %>
|
20
|
+
</a>
|
19
21
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
|
20
22
|
<span class="navbar-toggler-icon"></span>
|
21
23
|
</button>
|
@@ -28,11 +28,11 @@ Raif.configure do |config|
|
|
28
28
|
# Whether Titan embedding models are enabled. Defaults to false
|
29
29
|
# config.bedrock_embedding_models_enabled = false
|
30
30
|
|
31
|
-
# Your OpenRouter API key. Defaults to ENV["
|
32
|
-
# config.open_router_api_key = ENV["
|
31
|
+
# Your OpenRouter API key. Defaults to ENV["OPEN_ROUTER_API_KEY"]
|
32
|
+
# config.open_router_api_key = ENV["OPEN_ROUTER_API_KEY"]
|
33
33
|
|
34
34
|
# Whether OpenRouter models are enabled.
|
35
|
-
# config.open_router_models_enabled = ENV["
|
35
|
+
# config.open_router_models_enabled = ENV["OPEN_ROUTER_API_KEY"].present?
|
36
36
|
|
37
37
|
# The app name to include in OpenRouter API requests headers. Optional.
|
38
38
|
# config.open_router_app_name = "My App"
|
@@ -9,6 +9,9 @@ module Raif
|
|
9
9
|
|
10
10
|
def create_model_tool_file
|
11
11
|
template "model_tool.rb.tt", File.join("app/models/raif/model_tools", "#{file_name}.rb")
|
12
|
+
|
13
|
+
# Generate the view partial for the tool invocation
|
14
|
+
template "model_tool_invocation_partial.html.erb.tt", File.join("app/views/raif/model_tool_invocations", "_#{file_name}.html.erb")
|
12
15
|
end
|
13
16
|
|
14
17
|
def success_message
|
@@ -14,6 +14,8 @@ class Raif::ModelTools::<%= class_name %> < Raif::ModelTool
|
|
14
14
|
# the arguments it provides will be validated against this schema using JSON::Validator from the json-schema gem.
|
15
15
|
#
|
16
16
|
# All attributes will be required and additionalProperties will be set to false.
|
17
|
+
#
|
18
|
+
# See https://docs.raif.ai/learn_more/json_schemas for more information about defining JSON schemas.
|
17
19
|
tool_arguments_schema do
|
18
20
|
# string :title, description: "The title of the operation", minLength: 3
|
19
21
|
#
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%#
|
2
|
+
This partial is used to render a model tool invocation to the user in the conversation interface.
|
3
|
+
If you don't want the tool invocation to be displayed to the user, you can override the `renderable?` method in your model tool class to return false
|
4
|
+
%>
|
5
|
+
|
6
|
+
<div class="raif-model-tool-invocation">
|
7
|
+
<h5><%%= <%= file_name %>.tool_type.demodulize.titleize %> Result</h5>
|
8
|
+
<pre><%%= JSON.pretty_generate(<%= file_name %>.result || {}) %></pre>
|
9
|
+
<p>Edit this file in <code><%%= __FILE__ %></code> to customize the display of the tool invocation.</p>
|
10
|
+
</div>
|
data/lib/raif/configuration.rb
CHANGED
@@ -69,8 +69,8 @@ module Raif
|
|
69
69
|
@open_ai_api_key = ENV["OPENAI_API_KEY"]
|
70
70
|
@open_ai_embedding_models_enabled = ENV["OPENAI_API_KEY"].present?
|
71
71
|
@open_ai_models_enabled = ENV["OPENAI_API_KEY"].present?
|
72
|
-
@open_router_api_key = ENV["OPENROUTER_API_KEY"]
|
73
|
-
@open_router_models_enabled =
|
72
|
+
@open_router_api_key = ENV["OPEN_ROUTER_API_KEY"].presence || ENV["OPENROUTER_API_KEY"]
|
73
|
+
@open_router_models_enabled = @open_router_api_key.present?
|
74
74
|
@open_router_app_name = nil
|
75
75
|
@open_router_site_url = nil
|
76
76
|
@streaming_update_chunk_size_threshold = 25
|
@@ -82,7 +82,7 @@ module Raif
|
|
82
82
|
puts <<~EOS
|
83
83
|
|
84
84
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
85
|
-
No LLMs are enabled in Raif. Make sure you have an API key configured for at least one LLM provider. You can do this by setting an API key in your environment variables or in config/initializers/raif.rb (e.g. ENV["OPENAI_API_KEY"], ENV["ANTHROPIC_API_KEY"], ENV["
|
85
|
+
No LLMs are enabled in Raif. Make sure you have an API key configured for at least one LLM provider. You can do this by setting an API key in your environment variables or in config/initializers/raif.rb (e.g. ENV["OPENAI_API_KEY"], ENV["ANTHROPIC_API_KEY"], ENV["OPEN_ROUTER_API_KEY"]).
|
86
86
|
|
87
87
|
See the README for more information: https://github.com/CultivateLabs/raif#setup
|
88
88
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
@@ -133,7 +133,7 @@ module Raif
|
|
133
133
|
|
134
134
|
if open_router_models_enabled && open_router_api_key.blank?
|
135
135
|
raise Raif::Errors::InvalidConfigError,
|
136
|
-
"Raif.config.open_router_api_key is required when Raif.config.open_router_models_enabled is true. Set it via Raif.config.open_router_api_key or ENV['
|
136
|
+
"Raif.config.open_router_api_key is required when Raif.config.open_router_models_enabled is true. Set it via Raif.config.open_router_api_key or ENV['OPEN_ROUTER_API_KEY']" # rubocop:disable Layout/LineLength
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
data/lib/raif/engine.rb
CHANGED
data/lib/raif/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raif
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Roesch
|
@@ -152,6 +152,7 @@ files:
|
|
152
152
|
- app/assets/builds/raif.css
|
153
153
|
- app/assets/builds/raif_admin.css
|
154
154
|
- app/assets/config/raif_manifest.js
|
155
|
+
- app/assets/images/raif-logo-white.svg
|
155
156
|
- app/assets/javascript/raif.js
|
156
157
|
- app/assets/javascript/raif/controllers/conversations_controller.js
|
157
158
|
- app/assets/javascript/raif/stream_actions/raif_scroll_to_bottom.js
|
@@ -286,6 +287,7 @@ files:
|
|
286
287
|
- lib/generators/raif/install/templates/initializer.rb
|
287
288
|
- lib/generators/raif/model_tool/model_tool_generator.rb
|
288
289
|
- lib/generators/raif/model_tool/templates/model_tool.rb.tt
|
290
|
+
- lib/generators/raif/model_tool/templates/model_tool_invocation_partial.html.erb.tt
|
289
291
|
- lib/generators/raif/task/task_generator.rb
|
290
292
|
- lib/generators/raif/task/templates/application_task.rb.tt
|
291
293
|
- lib/generators/raif/task/templates/task.rb.tt
|