@circuitwall/jarela 0.8.0 → 0.8.1

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.
Files changed (98) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page.js +1 -537
  15. package/.next/standalone/.next/server/app/_not-found/page.js.map +1 -1
  16. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.html +23 -2
  19. package/.next/standalone/.next/server/app/_not-found.rsc +47 -18
  20. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +47 -18
  21. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +36 -7
  23. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/standalone/.next/server/app/index.html +23 -2
  27. package/.next/standalone/.next/server/app/index.rsc +46 -17
  28. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  29. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +46 -17
  30. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  31. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +36 -7
  32. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  33. package/.next/standalone/.next/server/app/page.js +79690 -79580
  34. package/.next/standalone/.next/server/app/page.js.map +1 -1
  35. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  38. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/setup.html +1 -1
  41. package/.next/standalone/.next/server/app/setup.rsc +48 -19
  42. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +48 -19
  43. package/.next/standalone/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  44. package/.next/standalone/.next/server/app/setup.segments/_index.segment.rsc +36 -7
  45. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  46. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
  47. package/.next/standalone/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  48. package/.next/standalone/.next/server/app-paths-manifest.json +1 -1
  49. package/.next/standalone/.next/server/chunks/4045.js +611 -0
  50. package/.next/standalone/.next/server/chunks/4045.js.map +1 -0
  51. package/.next/standalone/.next/server/chunks/5432.js +5 -2
  52. package/.next/standalone/.next/server/chunks/5432.js.map +1 -1
  53. package/.next/standalone/.next/server/chunks/{5745.js → 6765.js} +9 -551
  54. package/.next/standalone/.next/server/chunks/6765.js.map +1 -0
  55. package/.next/standalone/.next/server/chunks/7885.js +5 -2
  56. package/.next/standalone/.next/server/chunks/7885.js.map +1 -1
  57. package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
  58. package/.next/standalone/.next/server/pages/404.html +23 -2
  59. package/.next/standalone/.next/server/pages/500.html +1 -1
  60. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  61. package/.next/standalone/.next/static/chunks/{3741-81560b0aef166f49.js → 3741-b70e2d1a48a087d6.js} +16 -9
  62. package/.next/standalone/.next/static/chunks/3741-b70e2d1a48a087d6.js.map +1 -0
  63. package/.next/standalone/.next/static/chunks/app/{layout-31009df0f341ccf5.js → layout-84c6f211a7a1ca36.js} +38 -5
  64. package/.next/standalone/.next/static/chunks/app/layout-84c6f211a7a1ca36.js.map +1 -0
  65. package/.next/standalone/.next/static/chunks/app/{page-108f526cb6e48b7b.js → page-31e4d0ad258be21a.js} +258 -122
  66. package/.next/standalone/.next/static/chunks/app/page-31e4d0ad258be21a.js.map +1 -0
  67. package/.next/standalone/.next/static/css/af02b3acc7d8f08d.css +5 -0
  68. package/.next/standalone/.next/static/css/af02b3acc7d8f08d.css.map +1 -0
  69. package/.next/standalone/package.json +1 -1
  70. package/.next/standalone/public/manifest.json +2 -2
  71. package/CHANGELOG.md +24 -0
  72. package/api/types.ts +3 -1
  73. package/app/layout.tsx +30 -1
  74. package/components/agents/AgentEditor.tsx +5 -5
  75. package/components/layout/AppShell.tsx +36 -18
  76. package/components/layout/MenuPanel.tsx +7 -7
  77. package/components/models/ModelEditor.tsx +3 -3
  78. package/components/profile/ProfileEditor.tsx +9 -9
  79. package/components/profile/ProfilePanel.tsx +3 -3
  80. package/components/setup/OnboardingWizard.tsx +4 -4
  81. package/components/ui/HeaderActivity.tsx +24 -0
  82. package/contexts/AppContext.tsx +12 -4
  83. package/contexts/ThemeContext.tsx +30 -1
  84. package/hooks/useSSE.ts +42 -5
  85. package/lib/agents/base.ts +3 -1
  86. package/lib/agents/run-thread.ts +6 -3
  87. package/lib/ui/loading.ts +59 -0
  88. package/package.json +1 -1
  89. package/public/manifest.json +2 -2
  90. package/.next/standalone/.next/server/chunks/5745.js.map +0 -1
  91. package/.next/standalone/.next/static/chunks/3741-81560b0aef166f49.js.map +0 -1
  92. package/.next/standalone/.next/static/chunks/app/layout-31009df0f341ccf5.js.map +0 -1
  93. package/.next/standalone/.next/static/chunks/app/page-108f526cb6e48b7b.js.map +0 -1
  94. package/.next/standalone/.next/static/css/a23baa1c79db0435.css +0 -5
  95. package/.next/standalone/.next/static/css/a23baa1c79db0435.css.map +0 -1
  96. package/components/ui/TopProgressBar.tsx +0 -32
  97. /package/.next/standalone/.next/static/{0ImXz-nn9QbojXpTvB3i0 → yk5tOLkAUA4hfQKDjGbzK}/_buildManifest.js +0 -0
  98. /package/.next/standalone/.next/static/{0ImXz-nn9QbojXpTvB3i0 → yk5tOLkAUA4hfQKDjGbzK}/_ssgManifest.js +0 -0
@@ -1,11 +1,11 @@
1
- exports.id = 5745;
2
- exports.ids = [5745];
1
+ "use strict";
2
+ exports.id = 6765;
3
+ exports.ids = [6765];
3
4
  exports.modules = {
4
5
 
5
6
  /***/ 12698:
6
7
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7
8
 
8
- "use strict";
9
9
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10
10
  /* harmony export */ AU: () => (/* binding */ submitRun),
11
11
  /* harmony export */ FH: () => (/* binding */ api),
@@ -705,188 +705,11 @@ const api = {
705
705
  }
706
706
 
707
707
 
708
- /***/ }),
709
-
710
- /***/ 13236:
711
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
712
-
713
- "use strict";
714
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
715
- /* harmony export */ ServiceWorkerRegistration: () => (/* binding */ ServiceWorkerRegistration)
716
- /* harmony export */ });
717
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77943);
718
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__);
719
- // This file is generated by the Webpack next-flight-loader.
720
-
721
- const ServiceWorkerRegistration = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
722
- function() { throw new Error("Attempted to call ServiceWorkerRegistration() from the server but ServiceWorkerRegistration is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); },
723
- "/home/runner/work/jarela/jarela/components/ui/ServiceWorkerRegistration.tsx",
724
- "ServiceWorkerRegistration",
725
- );
726
-
727
- /***/ }),
728
-
729
- /***/ 25933:
730
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
731
-
732
- "use strict";
733
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
734
- /* harmony export */ AppProvider: () => (/* binding */ AppProvider)
735
- /* harmony export */ });
736
- /* unused harmony export useAppContext */
737
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77943);
738
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__);
739
- // This file is generated by the Webpack next-flight-loader.
740
-
741
- const AppProvider = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
742
- function() { throw new Error("Attempted to call AppProvider() from the server but AppProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); },
743
- "/home/runner/work/jarela/jarela/contexts/AppContext.tsx",
744
- "AppProvider",
745
- );const useAppContext = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
746
- function() { throw new Error("Attempted to call useAppContext() from the server but useAppContext is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); },
747
- "/home/runner/work/jarela/jarela/contexts/AppContext.tsx",
748
- "useAppContext",
749
- );
750
-
751
- /***/ }),
752
-
753
- /***/ 28383:
754
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
755
-
756
- "use strict";
757
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
758
- /* harmony export */ ThemeProvider: () => (/* binding */ ThemeProvider)
759
- /* harmony export */ });
760
- /* unused harmony export useTheme */
761
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77943);
762
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__);
763
- // This file is generated by the Webpack next-flight-loader.
764
-
765
- const ThemeProvider = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
766
- function() { throw new Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); },
767
- "/home/runner/work/jarela/jarela/contexts/ThemeContext.tsx",
768
- "ThemeProvider",
769
- );const useTheme = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
770
- function() { throw new Error("Attempted to call useTheme() from the server but useTheme is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); },
771
- "/home/runner/work/jarela/jarela/contexts/ThemeContext.tsx",
772
- "useTheme",
773
- );
774
-
775
- /***/ }),
776
-
777
- /***/ 32056:
778
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
779
-
780
- "use strict";
781
- __webpack_require__.r(__webpack_exports__);
782
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
783
- /* harmony export */ "default": () => (/* binding */ RootLayout),
784
- /* harmony export */ metadata: () => (/* binding */ metadata),
785
- /* harmony export */ viewport: () => (/* binding */ viewport)
786
- /* harmony export */ });
787
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5735);
788
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
789
- /* harmony import */ var _contexts_AppContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25933);
790
- /* harmony import */ var _contexts_ThemeContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28383);
791
- /* harmony import */ var _components_ui_ServiceWorkerRegistration__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13236);
792
- /* harmony import */ var _lib_env_app_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(48954);
793
- /* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82704);
794
- /* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_globals_css__WEBPACK_IMPORTED_MODULE_4__);
795
-
796
-
797
-
798
-
799
-
800
-
801
- const metadata = {
802
- title: (0,_lib_env_app_config__WEBPACK_IMPORTED_MODULE_5__/* .getAppName */ .fj)(),
803
- description: (0,_lib_env_app_config__WEBPACK_IMPORTED_MODULE_5__/* .getAppDescription */ .Sy)(),
804
- manifest: "/manifest.json",
805
- icons: {
806
- icon: [
807
- {
808
- url: "/favicon.ico",
809
- sizes: "any"
810
- },
811
- {
812
- url: "/icon-192.png",
813
- type: "image/png",
814
- sizes: "192x192"
815
- },
816
- {
817
- url: "/icon-512.png",
818
- type: "image/png",
819
- sizes: "512x512"
820
- }
821
- ],
822
- apple: [
823
- {
824
- url: "/apple-touch-icon.png",
825
- sizes: "180x180"
826
- }
827
- ]
828
- }
829
- };
830
- // Next 15+ requires themeColor (and color-scheme, viewport, etc.) to live in
831
- // the viewport export, not metadata. The /_not-found warning came from Next
832
- // inheriting this same layout — moving it here fixes both routes at once.
833
- const viewport = {
834
- themeColor: "#2563eb",
835
- width: "device-width",
836
- initialScale: 1,
837
- maximumScale: 1,
838
- viewportFit: "cover"
839
- };
840
- // Pre-paint script: reads the persisted theme and sets `data-theme` on
841
- // <html> before the first paint, so light-mode users don't flash dark on
842
- // every page load. Inlined via dangerouslySetInnerHTML — the canonical
843
- // App Router pattern. (Earlier attempt routed this through next/script,
844
- // but under Next 16 + React 19.2 that import resolves to a Promise in
845
- // some module-resolution paths, tripping "Element type is invalid".)
846
- // Falls back to "system", which then defers to prefers-color-scheme.
847
- const themeBootstrap = `(() => {
848
- try {
849
- var t = localStorage.getItem("jarela-theme");
850
- if (t !== "light" && t !== "dark" && t !== "system") t = "system";
851
- document.documentElement.setAttribute("data-theme", t);
852
- } catch (e) {
853
- document.documentElement.setAttribute("data-theme", "system");
854
- }
855
- })();`;
856
- function RootLayout({ children }) {
857
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("html", {
858
- lang: "en",
859
- "data-theme": "system",
860
- suppressHydrationWarning: true,
861
- children: [
862
- /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("head", {
863
- children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("script", {
864
- dangerouslySetInnerHTML: {
865
- __html: themeBootstrap
866
- }
867
- })
868
- }),
869
- /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("body", {
870
- children: [
871
- /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_contexts_ThemeContext__WEBPACK_IMPORTED_MODULE_2__.ThemeProvider, {
872
- children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_contexts_AppContext__WEBPACK_IMPORTED_MODULE_1__.AppProvider, {
873
- children: children
874
- })
875
- }),
876
- /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui_ServiceWorkerRegistration__WEBPACK_IMPORTED_MODULE_3__.ServiceWorkerRegistration, {})
877
- ]
878
- })
879
- ]
880
- });
881
- }
882
-
883
-
884
708
  /***/ }),
885
709
 
886
710
  /***/ 34974:
887
711
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
888
712
 
889
- "use strict";
890
713
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
891
714
  /* harmony export */ s: () => (/* binding */ computeFeatureReadiness)
892
715
  /* harmony export */ });
@@ -919,197 +742,11 @@ function computeFeatureReadiness({ models, integrations, selectedProvider, selec
919
742
  }
920
743
 
921
744
 
922
- /***/ }),
923
-
924
- /***/ 35419:
925
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
926
-
927
- "use strict";
928
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
929
- /* harmony export */ AppProvider: () => (/* binding */ AppProvider),
930
- /* harmony export */ U: () => (/* binding */ useAppContext)
931
- /* harmony export */ });
932
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(48249);
933
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
934
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67484);
935
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
936
- /* __next_internal_client_entry_do_not_use__ AppProvider,useAppContext auto */
937
-
938
- const EXPERIENCE_MODE_KEY = "jarela.experience.mode";
939
- function reducer(state, action) {
940
- switch(action.type){
941
- case "SELECT_THREAD":
942
- return {
943
- ...state,
944
- activeThreadId: action.threadId,
945
- activeAgentId: action.agentId,
946
- activeTab: "chat"
947
- };
948
- case "NEW_CHAT":
949
- return {
950
- ...state,
951
- activeThreadId: null,
952
- activeAgentId: null,
953
- activeTab: "chat"
954
- };
955
- case "SET_AGENT":
956
- return {
957
- ...state,
958
- activeAgentId: action.agentId
959
- };
960
- case "SET_TAB":
961
- return {
962
- ...state,
963
- activeTab: action.tab
964
- };
965
- case "SET_EXPERIENCE_MODE":
966
- return {
967
- ...state,
968
- experienceMode: action.mode
969
- };
970
- case "SET_SELECTION":
971
- {
972
- const next = {
973
- ...state.selectedItem
974
- };
975
- if (action.itemId == null) delete next[action.tab];
976
- else next[action.tab] = action.itemId;
977
- return {
978
- ...state,
979
- selectedItem: next
980
- };
981
- }
982
- }
983
- }
984
- const AppContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null);
985
- function AppProvider({ children }) {
986
- const [state, dispatch] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useReducer)(reducer, {
987
- activeThreadId: null,
988
- activeAgentId: null,
989
- activeTab: "chat",
990
- experienceMode: "normal",
991
- selectedItem: {}
992
- });
993
- process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
994
- try {
995
- const stored = window.localStorage.getItem(EXPERIENCE_MODE_KEY);
996
- if (stored === "normal" || stored === "advanced") {
997
- dispatch({
998
- type: "SET_EXPERIENCE_MODE",
999
- mode: stored
1000
- });
1001
- }
1002
- } catch {
1003
- // ignore storage failures
1004
- }
1005
- }, []);
1006
- process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
1007
- try {
1008
- window.localStorage.setItem(EXPERIENCE_MODE_KEY, state.experienceMode);
1009
- } catch {
1010
- // ignore storage failures
1011
- }
1012
- }, [
1013
- state.experienceMode
1014
- ]);
1015
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(AppContext.Provider, {
1016
- value: {
1017
- state,
1018
- dispatch
1019
- },
1020
- children: children
1021
- });
1022
- }
1023
- function useAppContext() {
1024
- const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AppContext);
1025
- if (!ctx) throw new Error("useAppContext must be used within AppProvider");
1026
- return ctx;
1027
- }
1028
-
1029
-
1030
- /***/ }),
1031
-
1032
- /***/ 38305:
1033
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1034
-
1035
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 13236));
1036
- ;
1037
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 25933));
1038
- ;
1039
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 28383));
1040
-
1041
-
1042
- /***/ }),
1043
-
1044
- /***/ 41005:
1045
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1046
-
1047
- "use strict";
1048
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1049
- /* harmony export */ D: () => (/* binding */ useTheme),
1050
- /* harmony export */ ThemeProvider: () => (/* binding */ ThemeProvider)
1051
- /* harmony export */ });
1052
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(48249);
1053
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
1054
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67484);
1055
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
1056
- /* __next_internal_client_entry_do_not_use__ ThemeProvider,useTheme auto */
1057
-
1058
- const STORAGE_KEY = "jarela-theme";
1059
- function isTheme(v) {
1060
- return v === "light" || v === "dark" || v === "system";
1061
- }
1062
- function readStored() {
1063
- if (true) return "system";
1064
- try {
1065
- const v = window.localStorage.getItem(STORAGE_KEY);
1066
- return isTheme(v) ? v : "system";
1067
- } catch {
1068
- return "system";
1069
- }
1070
- }
1071
- function apply(theme) {
1072
- if (typeof document === "undefined") return;
1073
- document.documentElement.setAttribute("data-theme", theme);
1074
- }
1075
- const ThemeContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null);
1076
- function ThemeProvider({ children }) {
1077
- // Initial state stays "system" on the server to match the pre-paint script,
1078
- // which writes data-theme before React hydrates. The effect below syncs the
1079
- // React state to whatever the script (or localStorage) decided.
1080
- const [theme, setThemeState] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)("system");
1081
- process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
1082
- setThemeState(readStored());
1083
- }, []);
1084
- const setTheme = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((t)=>{
1085
- setThemeState(t);
1086
- apply(t);
1087
- try {
1088
- window.localStorage.setItem(STORAGE_KEY, t);
1089
- } catch {
1090
- /* ignore quota / private-mode errors */ }
1091
- }, []);
1092
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ThemeContext.Provider, {
1093
- value: {
1094
- theme,
1095
- setTheme
1096
- },
1097
- children: children
1098
- });
1099
- }
1100
- function useTheme() {
1101
- const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ThemeContext);
1102
- if (!ctx) throw new Error("useTheme must be used within ThemeProvider");
1103
- return ctx;
1104
- }
1105
-
1106
-
1107
745
  /***/ }),
1108
746
 
1109
747
  /***/ 46069:
1110
748
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1111
749
 
1112
- "use strict";
1113
750
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1114
751
  /* harmony export */ Q5: () => (/* binding */ modelSupportsImages),
1115
752
  /* harmony export */ _8: () => (/* binding */ modelCapabilities),
@@ -1313,56 +950,11 @@ function matchesAny(map, provider, modelId) {
1313
950
  }
1314
951
 
1315
952
 
1316
- /***/ }),
1317
-
1318
- /***/ 48954:
1319
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1320
-
1321
- "use strict";
1322
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1323
- /* harmony export */ SN: () => (/* binding */ getAppIssueUrl),
1324
- /* harmony export */ Sy: () => (/* binding */ getAppDescription),
1325
- /* harmony export */ fj: () => (/* binding */ getAppName)
1326
- /* harmony export */ });
1327
- // Branding knobs sourced from NEXT_PUBLIC_* env vars so forks can rebrand
1328
- // the app without patching source. NEXT_PUBLIC_* is the right
1329
- // channel here because Next.js inlines these at build time, which lets
1330
- // client components read them directly (no React Context, no server
1331
- // round-trip). Server-only modules read the same keys at runtime.
1332
- //
1333
- // Keep this module client-safe — no Node-only imports, no DB/FS access.
1334
- const DEFAULT_APP_NAME = "Jarela";
1335
- const DEFAULT_APP_DESCRIPTION = "Jarela — local chat interface for LangGraph agents";
1336
- const DEFAULT_ISSUE_URL = "https://github.com/CircuitWall/jarela/issues/new";
1337
- function getAppName() {
1338
- return process.env.NEXT_PUBLIC_APP_NAME?.trim() || DEFAULT_APP_NAME;
1339
- }
1340
- function getAppDescription() {
1341
- return process.env.NEXT_PUBLIC_APP_DESCRIPTION?.trim() || DEFAULT_APP_DESCRIPTION;
1342
- }
1343
- function getAppIssueUrl() {
1344
- return process.env.NEXT_PUBLIC_APP_ISSUE_URL?.trim() || DEFAULT_ISSUE_URL;
1345
- }
1346
-
1347
-
1348
- /***/ }),
1349
-
1350
- /***/ 51457:
1351
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1352
-
1353
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 86486));
1354
- ;
1355
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 35419));
1356
- ;
1357
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 41005));
1358
-
1359
-
1360
953
  /***/ }),
1361
954
 
1362
955
  /***/ 56695:
1363
956
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1364
957
 
1365
- "use strict";
1366
958
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1367
959
  /* harmony export */ s: () => (/* binding */ ModelFeatureGuide)
1368
960
  /* harmony export */ });
@@ -1514,7 +1106,6 @@ function ModelFeatureGuide({ provider, modelId, models = [], integrations = [],
1514
1106
  /***/ 56982:
1515
1107
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1516
1108
 
1517
- "use strict";
1518
1109
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1519
1110
  /* harmony export */ b: () => (/* binding */ CapBadges)
1520
1111
  /* harmony export */ });
@@ -1596,113 +1187,11 @@ function CapBadges({ caps, provider, modelId, size = "xs" }) {
1596
1187
  }
1597
1188
 
1598
1189
 
1599
- /***/ }),
1600
-
1601
- /***/ 61992:
1602
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1603
-
1604
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 81921, 23));
1605
- ;
1606
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 60440, 23));
1607
- ;
1608
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 84342, 23));
1609
- ;
1610
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 82265, 23));
1611
- ;
1612
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 35421, 23));
1613
- ;
1614
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 61335, 23));
1615
- ;
1616
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 70664, 23));
1617
- ;
1618
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 74661));
1619
-
1620
-
1621
- /***/ }),
1622
-
1623
- /***/ 80132:
1624
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1625
-
1626
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 81921, 23));
1627
-
1628
-
1629
- /***/ }),
1630
-
1631
- /***/ 82704:
1632
- /***/ (() => {
1633
-
1634
-
1635
-
1636
- /***/ }),
1637
-
1638
- /***/ 86364:
1639
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1640
-
1641
- "use strict";
1642
- __webpack_require__.r(__webpack_exports__);
1643
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1644
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1645
- /* harmony export */ });
1646
- /* harmony import */ var next_dist_lib_metadata_get_metadata_route__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(88868);
1647
- /* harmony import */ var next_dist_lib_metadata_get_metadata_route__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_metadata_get_metadata_route__WEBPACK_IMPORTED_MODULE_0__);
1648
-
1649
-
1650
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (async (props) => {
1651
- const imageData = {"type":"image/svg+xml","sizes":"any"}
1652
- const imageUrl = (0,next_dist_lib_metadata_get_metadata_route__WEBPACK_IMPORTED_MODULE_0__.fillMetadataSegment)(".", await props.params, "icon.svg", true)
1653
-
1654
- return [{
1655
- ...imageData,
1656
- url: imageUrl + "?44694c2d5379230a",
1657
- }]
1658
- });
1659
-
1660
- /***/ }),
1661
-
1662
- /***/ 86486:
1663
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1664
-
1665
- "use strict";
1666
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1667
- /* harmony export */ ServiceWorkerRegistration: () => (/* binding */ ServiceWorkerRegistration)
1668
- /* harmony export */ });
1669
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67484);
1670
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1671
- /* __next_internal_client_entry_do_not_use__ ServiceWorkerRegistration auto */
1672
- /**
1673
- * Registers the Serwist-generated service worker. Replaces the auto-injected
1674
- * registration script that next-pwa used to emit. Only runs in production
1675
- * (the SW is disabled in dev by withSerwist).
1676
- */ function ServiceWorkerRegistration() {
1677
- process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
1678
- if (true) return;
1679
- if (!("serviceWorker" in navigator)) return;
1680
- if (false) {}
1681
- // Defer to idle so we don't compete with the first paint.
1682
- const register = ()=>{
1683
- navigator.serviceWorker.register("/sw.js", {
1684
- scope: "/"
1685
- }).catch((err)=>{
1686
- // Swallow — SW failures should never break the app.
1687
- console.warn("[sw] registration failed:", err);
1688
- });
1689
- };
1690
- if ("requestIdleCallback" in window) {
1691
- window.requestIdleCallback(register);
1692
- } else {
1693
- setTimeout(register, 1000);
1694
- }
1695
- }, []);
1696
- return null;
1697
- }
1698
-
1699
-
1700
1190
  /***/ }),
1701
1191
 
1702
1192
  /***/ 95984:
1703
1193
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1704
1194
 
1705
- "use strict";
1706
1195
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1707
1196
  /* harmony export */ SN: () => (/* binding */ getAppIssueUrl),
1708
1197
  /* harmony export */ fj: () => (/* binding */ getAppName)
@@ -1734,7 +1223,6 @@ function getAppIssueUrl() {
1734
1223
  /***/ 96765:
1735
1224
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1736
1225
 
1737
- "use strict";
1738
1226
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1739
1227
  /* harmony export */ OnboardingWizard: () => (/* binding */ OnboardingWizard)
1740
1228
  /* harmony export */ });
@@ -2120,7 +1608,7 @@ function OnboardingWizard({ context }) {
2120
1608
  children: [
2121
1609
  /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
2122
1610
  className: "text-[11px] font-semibold uppercase tracking-[0.2em] text-fg-faint",
2123
- children: fullScreen ? "First launch setup" : state.experienceMode === "normal" ? "Guided setup" : "Profile"
1611
+ children: fullScreen ? "First launch setup" : state.experienceMode === "essential" ? "Guided setup" : "Profile"
2124
1612
  }),
2125
1613
  /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h1", {
2126
1614
  className: "mt-1 text-2xl font-semibold tracking-tight",
@@ -2133,8 +1621,8 @@ function OnboardingWizard({ context }) {
2133
1621
  /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
2134
1622
  className: "mt-4 flex flex-col sm:flex-row gap-2 max-w-xl",
2135
1623
  children: [
2136
- "normal",
2137
- "advanced"
1624
+ "essential",
1625
+ "full"
2138
1626
  ].map((mode)=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", {
2139
1627
  type: "button",
2140
1628
  onClick: ()=>dispatch({
@@ -2146,11 +1634,11 @@ function OnboardingWizard({ context }) {
2146
1634
  children: [
2147
1635
  /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
2148
1636
  className: "text-sm font-medium capitalize",
2149
- children: mode === "normal" ? "Guided" : "Full controls"
1637
+ children: mode === "essential" ? "Guided" : "Full controls"
2150
1638
  }),
2151
1639
  /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
2152
1640
  className: "mt-0.5 text-[11px] text-fg-faint leading-snug",
2153
- children: mode === "normal" ? "Curated panels and a simpler model editor." : "Every panel, context tuning, and engine-room toggles."
1641
+ children: mode === "essential" ? "Curated panels and a simpler model editor." : "Every panel, context tuning, and engine-room toggles."
2154
1642
  })
2155
1643
  ]
2156
1644
  }, mode))
@@ -2693,38 +2181,8 @@ function OnboardingWizard({ context }) {
2693
2181
  }
2694
2182
 
2695
2183
 
2696
- /***/ }),
2697
-
2698
- /***/ 98440:
2699
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2700
-
2701
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 95547, 23));
2702
- ;
2703
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 15098, 23));
2704
- ;
2705
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 47644, 23));
2706
- ;
2707
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 33859, 23));
2708
- ;
2709
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 98099, 23));
2710
- ;
2711
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 16237, 23));
2712
- ;
2713
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 98562, 23));
2714
- ;
2715
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 36675, 23));
2716
-
2717
-
2718
- /***/ }),
2719
-
2720
- /***/ 98692:
2721
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2722
-
2723
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 95547, 23));
2724
-
2725
-
2726
2184
  /***/ })
2727
2185
 
2728
2186
  };
2729
2187
  ;
2730
- //# sourceMappingURL=5745.js.map
2188
+ //# sourceMappingURL=6765.js.map