@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
@@ -28,25 +28,6 @@ module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.j
28
28
 
29
29
  /***/ }),
30
30
 
31
- /***/ 13236:
32
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
33
-
34
- "use strict";
35
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
36
- /* harmony export */ ServiceWorkerRegistration: () => (/* binding */ ServiceWorkerRegistration)
37
- /* harmony export */ });
38
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77943);
39
- /* 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__);
40
- // This file is generated by the Webpack next-flight-loader.
41
-
42
- const ServiceWorkerRegistration = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
43
- 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."); },
44
- "/home/runner/work/jarela/jarela/components/ui/ServiceWorkerRegistration.tsx",
45
- "ServiceWorkerRegistration",
46
- );
47
-
48
- /***/ }),
49
-
50
31
  /***/ 17891:
51
32
  /***/ ((module) => {
52
33
 
@@ -63,30 +44,6 @@ module.exports = require("next/dist/server/app-render/action-async-storage.exter
63
44
 
64
45
  /***/ }),
65
46
 
66
- /***/ 25933:
67
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
68
-
69
- "use strict";
70
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
71
- /* harmony export */ AppProvider: () => (/* binding */ AppProvider)
72
- /* harmony export */ });
73
- /* unused harmony export useAppContext */
74
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77943);
75
- /* 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__);
76
- // This file is generated by the Webpack next-flight-loader.
77
-
78
- const AppProvider = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
79
- 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."); },
80
- "/home/runner/work/jarela/jarela/contexts/AppContext.tsx",
81
- "AppProvider",
82
- );const useAppContext = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
83
- 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."); },
84
- "/home/runner/work/jarela/jarela/contexts/AppContext.tsx",
85
- "useAppContext",
86
- );
87
-
88
- /***/ }),
89
-
90
47
  /***/ 26713:
91
48
  /***/ ((module) => {
92
49
 
@@ -103,145 +60,12 @@ module.exports = require("util");
103
60
 
104
61
  /***/ }),
105
62
 
106
- /***/ 28383:
107
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
108
-
109
- "use strict";
110
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
111
- /* harmony export */ ThemeProvider: () => (/* binding */ ThemeProvider)
112
- /* harmony export */ });
113
- /* unused harmony export useTheme */
114
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77943);
115
- /* 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__);
116
- // This file is generated by the Webpack next-flight-loader.
117
-
118
- const ThemeProvider = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
119
- 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."); },
120
- "/home/runner/work/jarela/jarela/contexts/ThemeContext.tsx",
121
- "ThemeProvider",
122
- );const useTheme = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
123
- 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."); },
124
- "/home/runner/work/jarela/jarela/contexts/ThemeContext.tsx",
125
- "useTheme",
126
- );
127
-
128
- /***/ }),
129
-
130
63
  /***/ 29294:
131
64
  /***/ ((module) => {
132
65
 
133
66
  "use strict";
134
67
  module.exports = require("next/dist/server/app-render/work-async-storage.external.js");
135
68
 
136
- /***/ }),
137
-
138
- /***/ 32056:
139
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
140
-
141
- "use strict";
142
- __webpack_require__.r(__webpack_exports__);
143
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
144
- /* harmony export */ "default": () => (/* binding */ RootLayout),
145
- /* harmony export */ metadata: () => (/* binding */ metadata),
146
- /* harmony export */ viewport: () => (/* binding */ viewport)
147
- /* harmony export */ });
148
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5735);
149
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
150
- /* harmony import */ var _contexts_AppContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25933);
151
- /* harmony import */ var _contexts_ThemeContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28383);
152
- /* harmony import */ var _components_ui_ServiceWorkerRegistration__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13236);
153
- /* harmony import */ var _lib_env_app_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(48954);
154
- /* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82704);
155
- /* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_globals_css__WEBPACK_IMPORTED_MODULE_4__);
156
-
157
-
158
-
159
-
160
-
161
-
162
- const metadata = {
163
- title: (0,_lib_env_app_config__WEBPACK_IMPORTED_MODULE_5__/* .getAppName */ .fj)(),
164
- description: (0,_lib_env_app_config__WEBPACK_IMPORTED_MODULE_5__/* .getAppDescription */ .Sy)(),
165
- manifest: "/manifest.json",
166
- icons: {
167
- icon: [
168
- {
169
- url: "/favicon.ico",
170
- sizes: "any"
171
- },
172
- {
173
- url: "/icon-192.png",
174
- type: "image/png",
175
- sizes: "192x192"
176
- },
177
- {
178
- url: "/icon-512.png",
179
- type: "image/png",
180
- sizes: "512x512"
181
- }
182
- ],
183
- apple: [
184
- {
185
- url: "/apple-touch-icon.png",
186
- sizes: "180x180"
187
- }
188
- ]
189
- }
190
- };
191
- // Next 15+ requires themeColor (and color-scheme, viewport, etc.) to live in
192
- // the viewport export, not metadata. The /_not-found warning came from Next
193
- // inheriting this same layout — moving it here fixes both routes at once.
194
- const viewport = {
195
- themeColor: "#2563eb",
196
- width: "device-width",
197
- initialScale: 1,
198
- maximumScale: 1,
199
- viewportFit: "cover"
200
- };
201
- // Pre-paint script: reads the persisted theme and sets `data-theme` on
202
- // <html> before the first paint, so light-mode users don't flash dark on
203
- // every page load. Inlined via dangerouslySetInnerHTML — the canonical
204
- // App Router pattern. (Earlier attempt routed this through next/script,
205
- // but under Next 16 + React 19.2 that import resolves to a Promise in
206
- // some module-resolution paths, tripping "Element type is invalid".)
207
- // Falls back to "system", which then defers to prefers-color-scheme.
208
- const themeBootstrap = `(() => {
209
- try {
210
- var t = localStorage.getItem("jarela-theme");
211
- if (t !== "light" && t !== "dark" && t !== "system") t = "system";
212
- document.documentElement.setAttribute("data-theme", t);
213
- } catch (e) {
214
- document.documentElement.setAttribute("data-theme", "system");
215
- }
216
- })();`;
217
- function RootLayout({ children }) {
218
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("html", {
219
- lang: "en",
220
- "data-theme": "system",
221
- suppressHydrationWarning: true,
222
- children: [
223
- /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("head", {
224
- children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("script", {
225
- dangerouslySetInnerHTML: {
226
- __html: themeBootstrap
227
- }
228
- })
229
- }),
230
- /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("body", {
231
- children: [
232
- /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_contexts_ThemeContext__WEBPACK_IMPORTED_MODULE_2__.ThemeProvider, {
233
- children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_contexts_AppContext__WEBPACK_IMPORTED_MODULE_1__.AppProvider, {
234
- children: children
235
- })
236
- }),
237
- /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui_ServiceWorkerRegistration__WEBPACK_IMPORTED_MODULE_3__.ServiceWorkerRegistration, {})
238
- ]
239
- })
240
- ]
241
- });
242
- }
243
-
244
-
245
69
  /***/ }),
246
70
 
247
71
  /***/ 33873:
@@ -250,191 +74,6 @@ function RootLayout({ children }) {
250
74
  "use strict";
251
75
  module.exports = require("path");
252
76
 
253
- /***/ }),
254
-
255
- /***/ 35419:
256
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
257
-
258
- "use strict";
259
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
260
- /* harmony export */ AppProvider: () => (/* binding */ AppProvider),
261
- /* harmony export */ U: () => (/* binding */ useAppContext)
262
- /* harmony export */ });
263
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(48249);
264
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
265
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67484);
266
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
267
- /* __next_internal_client_entry_do_not_use__ AppProvider,useAppContext auto */
268
-
269
- const EXPERIENCE_MODE_KEY = "jarela.experience.mode";
270
- function reducer(state, action) {
271
- switch(action.type){
272
- case "SELECT_THREAD":
273
- return {
274
- ...state,
275
- activeThreadId: action.threadId,
276
- activeAgentId: action.agentId,
277
- activeTab: "chat"
278
- };
279
- case "NEW_CHAT":
280
- return {
281
- ...state,
282
- activeThreadId: null,
283
- activeAgentId: null,
284
- activeTab: "chat"
285
- };
286
- case "SET_AGENT":
287
- return {
288
- ...state,
289
- activeAgentId: action.agentId
290
- };
291
- case "SET_TAB":
292
- return {
293
- ...state,
294
- activeTab: action.tab
295
- };
296
- case "SET_EXPERIENCE_MODE":
297
- return {
298
- ...state,
299
- experienceMode: action.mode
300
- };
301
- case "SET_SELECTION":
302
- {
303
- const next = {
304
- ...state.selectedItem
305
- };
306
- if (action.itemId == null) delete next[action.tab];
307
- else next[action.tab] = action.itemId;
308
- return {
309
- ...state,
310
- selectedItem: next
311
- };
312
- }
313
- }
314
- }
315
- const AppContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null);
316
- function AppProvider({ children }) {
317
- const [state, dispatch] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useReducer)(reducer, {
318
- activeThreadId: null,
319
- activeAgentId: null,
320
- activeTab: "chat",
321
- experienceMode: "normal",
322
- selectedItem: {}
323
- });
324
- process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
325
- try {
326
- const stored = window.localStorage.getItem(EXPERIENCE_MODE_KEY);
327
- if (stored === "normal" || stored === "advanced") {
328
- dispatch({
329
- type: "SET_EXPERIENCE_MODE",
330
- mode: stored
331
- });
332
- }
333
- } catch {
334
- // ignore storage failures
335
- }
336
- }, []);
337
- process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
338
- try {
339
- window.localStorage.setItem(EXPERIENCE_MODE_KEY, state.experienceMode);
340
- } catch {
341
- // ignore storage failures
342
- }
343
- }, [
344
- state.experienceMode
345
- ]);
346
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(AppContext.Provider, {
347
- value: {
348
- state,
349
- dispatch
350
- },
351
- children: children
352
- });
353
- }
354
- function useAppContext() {
355
- const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AppContext);
356
- if (!ctx) throw new Error("useAppContext must be used within AppProvider");
357
- return ctx;
358
- }
359
-
360
-
361
- /***/ }),
362
-
363
- /***/ 38305:
364
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
365
-
366
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 13236));
367
- ;
368
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 25933));
369
- ;
370
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 28383));
371
-
372
-
373
- /***/ }),
374
-
375
- /***/ 41005:
376
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
377
-
378
- "use strict";
379
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
380
- /* harmony export */ D: () => (/* binding */ useTheme),
381
- /* harmony export */ ThemeProvider: () => (/* binding */ ThemeProvider)
382
- /* harmony export */ });
383
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(48249);
384
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
385
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67484);
386
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
387
- /* __next_internal_client_entry_do_not_use__ ThemeProvider,useTheme auto */
388
-
389
- const STORAGE_KEY = "jarela-theme";
390
- function isTheme(v) {
391
- return v === "light" || v === "dark" || v === "system";
392
- }
393
- function readStored() {
394
- if (true) return "system";
395
- try {
396
- const v = window.localStorage.getItem(STORAGE_KEY);
397
- return isTheme(v) ? v : "system";
398
- } catch {
399
- return "system";
400
- }
401
- }
402
- function apply(theme) {
403
- if (typeof document === "undefined") return;
404
- document.documentElement.setAttribute("data-theme", theme);
405
- }
406
- const ThemeContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null);
407
- function ThemeProvider({ children }) {
408
- // Initial state stays "system" on the server to match the pre-paint script,
409
- // which writes data-theme before React hydrates. The effect below syncs the
410
- // React state to whatever the script (or localStorage) decided.
411
- const [theme, setThemeState] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)("system");
412
- process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
413
- setThemeState(readStored());
414
- }, []);
415
- const setTheme = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((t)=>{
416
- setThemeState(t);
417
- apply(t);
418
- try {
419
- window.localStorage.setItem(STORAGE_KEY, t);
420
- } catch {
421
- /* ignore quota / private-mode errors */ }
422
- }, []);
423
- return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ThemeContext.Provider, {
424
- value: {
425
- theme,
426
- setTheme
427
- },
428
- children: children
429
- });
430
- }
431
- function useTheme() {
432
- const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ThemeContext);
433
- if (!ctx) throw new Error("useTheme must be used within ThemeProvider");
434
- return ctx;
435
- }
436
-
437
-
438
77
  /***/ }),
439
78
 
440
79
  /***/ 41025:
@@ -451,50 +90,6 @@ module.exports = require("next/dist/server/app-render/dynamic-access-async-stora
451
90
  "use strict";
452
91
  module.exports = require("next/dist/shared/lib/router/utils/interception-routes");
453
92
 
454
- /***/ }),
455
-
456
- /***/ 48954:
457
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
458
-
459
- "use strict";
460
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
461
- /* harmony export */ SN: () => (/* binding */ getAppIssueUrl),
462
- /* harmony export */ Sy: () => (/* binding */ getAppDescription),
463
- /* harmony export */ fj: () => (/* binding */ getAppName)
464
- /* harmony export */ });
465
- // Branding knobs sourced from NEXT_PUBLIC_* env vars so forks can rebrand
466
- // the app without patching source. NEXT_PUBLIC_* is the right
467
- // channel here because Next.js inlines these at build time, which lets
468
- // client components read them directly (no React Context, no server
469
- // round-trip). Server-only modules read the same keys at runtime.
470
- //
471
- // Keep this module client-safe — no Node-only imports, no DB/FS access.
472
- const DEFAULT_APP_NAME = "Jarela";
473
- const DEFAULT_APP_DESCRIPTION = "Jarela — local chat interface for LangGraph agents";
474
- const DEFAULT_ISSUE_URL = "https://github.com/CircuitWall/jarela/issues/new";
475
- function getAppName() {
476
- return process.env.NEXT_PUBLIC_APP_NAME?.trim() || DEFAULT_APP_NAME;
477
- }
478
- function getAppDescription() {
479
- return process.env.NEXT_PUBLIC_APP_DESCRIPTION?.trim() || DEFAULT_APP_DESCRIPTION;
480
- }
481
- function getAppIssueUrl() {
482
- return process.env.NEXT_PUBLIC_APP_ISSUE_URL?.trim() || DEFAULT_ISSUE_URL;
483
- }
484
-
485
-
486
- /***/ }),
487
-
488
- /***/ 51457:
489
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
490
-
491
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 86486));
492
- ;
493
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 35419));
494
- ;
495
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 41005));
496
-
497
-
498
93
  /***/ }),
499
94
 
500
95
  /***/ 59910:
@@ -1869,28 +1464,6 @@ async function handler(req, res, ctx) {
1869
1464
  //# sourceMappingURL=app-page.js.map
1870
1465
 
1871
1466
 
1872
- /***/ }),
1873
-
1874
- /***/ 61992:
1875
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1876
-
1877
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 81921, 23));
1878
- ;
1879
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 60440, 23));
1880
- ;
1881
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 84342, 23));
1882
- ;
1883
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 82265, 23));
1884
- ;
1885
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 35421, 23));
1886
- ;
1887
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 61335, 23));
1888
- ;
1889
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 70664, 23));
1890
- ;
1891
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 74661));
1892
-
1893
-
1894
1467
  /***/ }),
1895
1468
 
1896
1469
  /***/ 63033:
@@ -1922,45 +1495,6 @@ module.exports = require("next/dist/shared/lib/size-limit");
1922
1495
 
1923
1496
 
1924
1497
 
1925
- /***/ }),
1926
-
1927
- /***/ 80132:
1928
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1929
-
1930
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 81921, 23));
1931
-
1932
-
1933
- /***/ }),
1934
-
1935
- /***/ 82704:
1936
- /***/ (() => {
1937
-
1938
-
1939
-
1940
- /***/ }),
1941
-
1942
- /***/ 86364:
1943
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1944
-
1945
- "use strict";
1946
- __webpack_require__.r(__webpack_exports__);
1947
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1948
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1949
- /* harmony export */ });
1950
- /* harmony import */ var next_dist_lib_metadata_get_metadata_route__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(88868);
1951
- /* 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__);
1952
-
1953
-
1954
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (async (props) => {
1955
- const imageData = {"type":"image/svg+xml","sizes":"any"}
1956
- const imageUrl = (0,next_dist_lib_metadata_get_metadata_route__WEBPACK_IMPORTED_MODULE_0__.fillMetadataSegment)(".", await props.params, "icon.svg", true)
1957
-
1958
- return [{
1959
- ...imageData,
1960
- url: imageUrl + "?44694c2d5379230a",
1961
- }]
1962
- });
1963
-
1964
1498
  /***/ }),
1965
1499
 
1966
1500
  /***/ 86439:
@@ -1969,46 +1503,6 @@ __webpack_require__.r(__webpack_exports__);
1969
1503
  "use strict";
1970
1504
  module.exports = require("next/dist/shared/lib/no-fallback-error.external");
1971
1505
 
1972
- /***/ }),
1973
-
1974
- /***/ 86486:
1975
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1976
-
1977
- "use strict";
1978
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1979
- /* harmony export */ ServiceWorkerRegistration: () => (/* binding */ ServiceWorkerRegistration)
1980
- /* harmony export */ });
1981
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67484);
1982
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1983
- /* __next_internal_client_entry_do_not_use__ ServiceWorkerRegistration auto */
1984
- /**
1985
- * Registers the Serwist-generated service worker. Replaces the auto-injected
1986
- * registration script that next-pwa used to emit. Only runs in production
1987
- * (the SW is disabled in dev by withSerwist).
1988
- */ function ServiceWorkerRegistration() {
1989
- process.env.__NEXT_PRIVATE_MINIMIZE_MACRO_FALSE && (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
1990
- if (true) return;
1991
- if (!("serviceWorker" in navigator)) return;
1992
- if (false) {}
1993
- // Defer to idle so we don't compete with the first paint.
1994
- const register = ()=>{
1995
- navigator.serviceWorker.register("/sw.js", {
1996
- scope: "/"
1997
- }).catch((err)=>{
1998
- // Swallow — SW failures should never break the app.
1999
- console.warn("[sw] registration failed:", err);
2000
- });
2001
- };
2002
- if ("requestIdleCallback" in window) {
2003
- window.requestIdleCallback(register);
2004
- } else {
2005
- setTimeout(register, 1000);
2006
- }
2007
- }, []);
2008
- return null;
2009
- }
2010
-
2011
-
2012
1506
  /***/ }),
2013
1507
 
2014
1508
  /***/ 96487:
@@ -2016,36 +1510,6 @@ module.exports = require("next/dist/shared/lib/no-fallback-error.external");
2016
1510
 
2017
1511
 
2018
1512
 
2019
- /***/ }),
2020
-
2021
- /***/ 98440:
2022
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2023
-
2024
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 95547, 23));
2025
- ;
2026
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 15098, 23));
2027
- ;
2028
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 47644, 23));
2029
- ;
2030
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 33859, 23));
2031
- ;
2032
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 98099, 23));
2033
- ;
2034
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 16237, 23));
2035
- ;
2036
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 98562, 23));
2037
- ;
2038
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 36675, 23));
2039
-
2040
-
2041
- /***/ }),
2042
-
2043
- /***/ 98692:
2044
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2045
-
2046
- Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 95547, 23));
2047
-
2048
-
2049
1513
  /***/ })
2050
1514
 
2051
1515
  };
@@ -2055,7 +1519,7 @@ Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_
2055
1519
  var __webpack_require__ = require("../../webpack-runtime.js");
2056
1520
  __webpack_require__.C(exports);
2057
1521
  var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
2058
- var __webpack_exports__ = __webpack_require__.X(0, [4741,319,1918], () => (__webpack_exec__(59910)));
1522
+ var __webpack_exports__ = __webpack_require__.X(0, [4741,319,1918,4045], () => (__webpack_exec__(59910)));
2059
1523
  module.exports = __webpack_exports__;
2060
1524
 
2061
1525
  })();