@circuitwall/jarela 2.3.0 → 2.4.0

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 (208) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +4 -4
  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/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  13. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  14. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  15. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  18. package/.next/standalone/.next/server/app/api/v1/access/[identity]/route.js +7 -0
  19. package/.next/standalone/.next/server/app/api/v1/access/route.js +7 -0
  20. package/.next/standalone/.next/server/app/api/v1/agents/[id]/compact/route.js +7 -0
  21. package/.next/standalone/.next/server/app/api/v1/agents/[id]/display-filters/route.js +17 -5
  22. package/.next/standalone/.next/server/app/api/v1/agents/[id]/route.js +7 -0
  23. package/.next/standalone/.next/server/app/api/v1/agents/[id]/thread/route.js +17 -5
  24. package/.next/standalone/.next/server/app/api/v1/agents/route.js +7 -0
  25. package/.next/standalone/.next/server/app/api/v1/allowed-sites/[hostname]/route.js +7 -0
  26. package/.next/standalone/.next/server/app/api/v1/allowed-sites/route.js +7 -0
  27. package/.next/standalone/.next/server/app/api/v1/artifacts/lifecycle/route.js +7 -0
  28. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/chats/route.js +26 -32
  29. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/chats/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/ignores/[remote_jid]/route.js +18 -7
  31. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/ignores/route.js +18 -7
  32. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/lookup/route.js +26 -32
  33. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/lookup/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/pair/route.js +27 -33
  35. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/pair/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/route.js +26 -32
  37. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/routes/[route_id]/route.js +28 -12
  39. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/routes/route.js +28 -12
  40. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/status/route.js +26 -32
  41. package/.next/standalone/.next/server/app/api/v1/bridges/[id]/status/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/v1/bridges/kinds/route.js +9 -2
  43. package/.next/standalone/.next/server/app/api/v1/bridges/kinds/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/v1/bridges/route.js +19 -7
  45. package/.next/standalone/.next/server/app/api/v1/bridges/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/v1/dashboard/metrics/route.js +17 -5
  47. package/.next/standalone/.next/server/app/api/v1/dashboard/pricing/route.js +7 -0
  48. package/.next/standalone/.next/server/app/api/v1/documents/search/route.js +7 -0
  49. package/.next/standalone/.next/server/app/api/v1/documents/settings/route.js +7 -0
  50. package/.next/standalone/.next/server/app/api/v1/env-sync/allowlist/route.js +7 -0
  51. package/.next/standalone/.next/server/app/api/v1/env-sync/route.js +7 -0
  52. package/.next/standalone/.next/server/app/api/v1/events/route.js +26 -32
  53. package/.next/standalone/.next/server/app/api/v1/events/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/v1/extension/browser/activate/route.js +7 -0
  55. package/.next/standalone/.next/server/app/api/v1/extension/browser/foreground/route.js +7 -0
  56. package/.next/standalone/.next/server/app/api/v1/extension/browser/history/route.js +7 -0
  57. package/.next/standalone/.next/server/app/api/v1/extension/browser/poll/route.js +7 -0
  58. package/.next/standalone/.next/server/app/api/v1/extension/browser/progress/route.js +7 -0
  59. package/.next/standalone/.next/server/app/api/v1/extension/browser/result/route.js +7 -0
  60. package/.next/standalone/.next/server/app/api/v1/extension/browser/retry/route.js +7 -0
  61. package/.next/standalone/.next/server/app/api/v1/extension/browser/status/route.js +7 -0
  62. package/.next/standalone/.next/server/app/api/v1/extension/browser/tabs/route.js +7 -0
  63. package/.next/standalone/.next/server/app/api/v1/harnesses/[id]/route.js +7 -0
  64. package/.next/standalone/.next/server/app/api/v1/harnesses/default/route.js +7 -0
  65. package/.next/standalone/.next/server/app/api/v1/harnesses/route.js +7 -0
  66. package/.next/standalone/.next/server/app/api/v1/health/route.js +17 -5
  67. package/.next/standalone/.next/server/app/api/v1/integrations/[name]/route.js +7 -0
  68. package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/callback/route.js +7 -0
  69. package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/start/route.js +7 -0
  70. package/.next/standalone/.next/server/app/api/v1/integrations/gmail/oauth/status/route.js +7 -0
  71. package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/callback/route.js +7 -0
  72. package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/start/route.js +7 -0
  73. package/.next/standalone/.next/server/app/api/v1/integrations/outlook/oauth/status/route.js +7 -0
  74. package/.next/standalone/.next/server/app/api/v1/integrations/route.js +7 -0
  75. package/.next/standalone/.next/server/app/api/v1/lifecycle/adoption/route.js +17 -5
  76. package/.next/standalone/.next/server/app/api/v1/maps/embed/route.js +7 -0
  77. package/.next/standalone/.next/server/app/api/v1/mcp-servers/[name]/route.js +17 -5
  78. package/.next/standalone/.next/server/app/api/v1/mcp-servers/route.js +17 -5
  79. package/.next/standalone/.next/server/app/api/v1/memory/[namespace]/[key]/route.js +7 -0
  80. package/.next/standalone/.next/server/app/api/v1/memory/policy/route.js +7 -0
  81. package/.next/standalone/.next/server/app/api/v1/memory/route.js +7 -0
  82. package/.next/standalone/.next/server/app/api/v1/memory/search/route.js +7 -0
  83. package/.next/standalone/.next/server/app/api/v1/models/[name]/compact-threads/route.js +7 -0
  84. package/.next/standalone/.next/server/app/api/v1/models/[name]/route.js +7 -0
  85. package/.next/standalone/.next/server/app/api/v1/models/route.js +7 -0
  86. package/.next/standalone/.next/server/app/api/v1/pending-actions/[id]/approve/route.js +27 -12
  87. package/.next/standalone/.next/server/app/api/v1/profile/location/route.js +7 -0
  88. package/.next/standalone/.next/server/app/api/v1/profile/route.js +7 -0
  89. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/models/route.js +7 -0
  90. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/probe/route.js +7 -0
  91. package/.next/standalone/.next/server/app/api/v1/providers/github-copilot/auth/route.js +7 -0
  92. package/.next/standalone/.next/server/app/api/v1/providers/route.js +7 -0
  93. package/.next/standalone/.next/server/app/api/v1/proxy-config/route.js +7 -0
  94. package/.next/standalone/.next/server/app/api/v1/redaction/init/route.js +7 -0
  95. package/.next/standalone/.next/server/app/api/v1/redaction/route.js +7 -0
  96. package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/route.js +17 -5
  97. package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/route.js +7 -0
  98. package/.next/standalone/.next/server/app/api/v1/security/idle-timeout/route.js +7 -0
  99. package/.next/standalone/.next/server/app/api/v1/security/pin/route.js +7 -0
  100. package/.next/standalone/.next/server/app/api/v1/security/state/route.js +7 -0
  101. package/.next/standalone/.next/server/app/api/v1/security/unlock/route.js +7 -0
  102. package/.next/standalone/.next/server/app/api/v1/security/verify-pin/route.js +7 -0
  103. package/.next/standalone/.next/server/app/api/v1/skills/[id]/route.js +7 -0
  104. package/.next/standalone/.next/server/app/api/v1/skills/repos/[id]/route.js +7 -0
  105. package/.next/standalone/.next/server/app/api/v1/skills/repos/route.js +7 -0
  106. package/.next/standalone/.next/server/app/api/v1/skills/route.js +7 -0
  107. package/.next/standalone/.next/server/app/api/v1/tasks/[agent_id]/route.js +7 -0
  108. package/.next/standalone/.next/server/app/api/v1/tasks/route.js +7 -0
  109. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/activity/route.js +7 -0
  110. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/context-pin/route.js +12 -6
  111. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/route.js +7 -0
  112. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js +0 -1
  113. package/.next/standalone/.next/server/app/api/v1/threads/route.js +17 -5
  114. package/.next/standalone/.next/server/app/api/v1/update/apply/route.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/api/v1/voice/transcribe/route.js +17 -5
  116. package/.next/standalone/.next/server/app/api/v1/voice/tts/route.js +17 -5
  117. package/.next/standalone/.next/server/app/api/v1/watchers/[id]/route.js +17 -5
  118. package/.next/standalone/.next/server/app/page.js +322 -275
  119. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/setup/page.js +8 -0
  121. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app-paths-manifest.json +4 -4
  123. package/.next/standalone/.next/server/chunks/1388.js +106 -36
  124. package/.next/standalone/.next/server/chunks/2068.js +47 -10
  125. package/.next/standalone/.next/server/chunks/210.js +6 -6
  126. package/.next/standalone/.next/server/chunks/2447.js +10 -5
  127. package/.next/standalone/.next/server/chunks/2471.js +17 -17
  128. package/.next/standalone/.next/server/chunks/3042.js +10 -8
  129. package/.next/standalone/.next/server/chunks/{4540.js → 309.js} +104 -38
  130. package/.next/standalone/.next/server/chunks/{2350.js → 3272.js} +104 -37
  131. package/.next/standalone/.next/server/chunks/3399.js +525 -525
  132. package/.next/standalone/.next/server/chunks/3524.js +150 -67
  133. package/.next/standalone/.next/server/chunks/4189.js +1 -1
  134. package/.next/standalone/.next/server/chunks/4508.js +2 -2
  135. package/.next/standalone/.next/server/chunks/46.js +73 -28
  136. package/.next/standalone/.next/server/chunks/5908.js +63 -42
  137. package/.next/standalone/.next/server/chunks/6142.js +10 -2
  138. package/.next/standalone/.next/server/chunks/6649.js +1 -1
  139. package/.next/standalone/.next/server/chunks/8461.js +10 -8
  140. package/.next/standalone/.next/server/chunks/9032.js +5 -5
  141. package/.next/standalone/.next/server/chunks/9164.js +435 -176
  142. package/.next/standalone/.next/server/chunks/9304.js +51 -12
  143. package/.next/standalone/.next/server/chunks/{423.js → 9590.js} +66 -21
  144. package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
  145. package/.next/standalone/.next/server/middleware.js +71 -18
  146. package/.next/standalone/.next/server/pages/404.html +2 -2
  147. package/.next/standalone/.next/server/pages/500.html +1 -1
  148. package/.next/standalone/.next/server/preview-props.json +3 -3
  149. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  150. package/.next/standalone/.next/static/chunks/app/{page-213a623b37226452.js → page-04748847c6ff866f.js} +171 -132
  151. package/.next/standalone/.next/static/css/{312542a5725ba0d5.css → 2669e8744cc8c212.css} +2 -2
  152. package/.next/standalone/docs/adoption/changesets.json +49 -0
  153. package/.next/standalone/package.json +1 -1
  154. package/CHANGELOG.md +19 -0
  155. package/app/api/v1/threads/[thread_id]/run/route.ts +0 -1
  156. package/components/chat/MessageBubble.tsx +12 -0
  157. package/components/integrations/NetworkSection.tsx +2 -2
  158. package/lib/agents/citation-checker.test.ts +40 -2
  159. package/lib/agents/citation-checker.ts +56 -11
  160. package/lib/agents/context-boundary.ts +5 -6
  161. package/lib/agents/instruction-edits.test.ts +120 -0
  162. package/lib/agents/instruction-edits.ts +65 -42
  163. package/lib/agents/prepare/request.ts +0 -2
  164. package/lib/agents/prepare/system-prompt.test.ts +10 -0
  165. package/lib/agents/prepare/system-prompt.ts +8 -2
  166. package/lib/agents/proposals.test.ts +76 -0
  167. package/lib/agents/proposals.ts +13 -5
  168. package/lib/agents/run-thread.auto-boundary.test.ts +125 -5
  169. package/lib/agents/run-thread.ts +24 -9
  170. package/lib/agents/sqlite-checkpoint-saver.test.ts +91 -0
  171. package/lib/agents/warm-summary-background.ts +22 -2
  172. package/lib/agents/warm-topics.test.ts +155 -1
  173. package/lib/agents/warm-topics.ts +27 -7
  174. package/lib/bridges/dispatcher.ts +1 -0
  175. package/lib/bridges/message-role.test.ts +81 -0
  176. package/lib/bridges/message-role.ts +23 -10
  177. package/lib/bridges/types.ts +6 -0
  178. package/lib/bridges/whatsapp-link.test.ts +32 -0
  179. package/lib/bridges/whatsapp-link.ts +21 -0
  180. package/lib/bridges/whatsapp.inbound.test.ts +239 -0
  181. package/lib/bridges/whatsapp.sender.test.ts +80 -1
  182. package/lib/bridges/whatsapp.ts +76 -38
  183. package/lib/pricing/snapshot.test.ts +70 -0
  184. package/lib/pricing/snapshot.ts +10 -2
  185. package/lib/proxy/dispatcher.test.ts +119 -1
  186. package/lib/proxy/dispatcher.ts +22 -9
  187. package/lib/stores/agent-configs.ts +10 -5
  188. package/lib/stores/bridges.test.ts +81 -0
  189. package/lib/stores/bridges.ts +9 -8
  190. package/lib/stores/proxy-config.test.ts +120 -0
  191. package/lib/stores/proxy-config.ts +22 -4
  192. package/lib/stores/threads.ts +12 -8
  193. package/lib/tools/communications/calendar.test.ts +43 -2
  194. package/lib/tools/communications/calendar.ts +2 -0
  195. package/lib/tools/communications/gmail.test.ts +51 -1
  196. package/lib/tools/communications/gmail.ts +44 -2
  197. package/lib/tools/communications/outlook-calendar.ts +2 -0
  198. package/lib/tools/communications/outlook.test.ts +33 -2
  199. package/lib/tools/communications/outlook.ts +2 -0
  200. package/lib/tools/filesystem/edit-match.test.ts +133 -0
  201. package/lib/tools/filesystem/edit-match.ts +7 -2
  202. package/lib/tools/support/result-refs.test.ts +131 -0
  203. package/lib/tools/support/result-refs.ts +41 -9
  204. package/lib/utils/source-link.test.ts +51 -0
  205. package/lib/utils/source-link.ts +45 -0
  206. package/package.json +1 -1
  207. /package/.next/standalone/.next/static/{bMRK5y3ruT7c3WtBfCQOG → hwujW4hR1b-r3k5WdMxZO}/_buildManifest.js +0 -0
  208. /package/.next/standalone/.next/static/{bMRK5y3ruT7c3WtBfCQOG → hwujW4hR1b-r3k5WdMxZO}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"12283":{"*":{"id":"26751","name":"*","chunks":[],"async":false}},"20722":{"*":{"id":"86486","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"30737":{"*":{"id":"41005","name":"*","chunks":[],"async":false}},"43639":{"*":{"id":"35419","name":"*","chunks":[],"async":false}},"54986":{"*":{"id":"90801","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"94204":{"*":{"id":"65572","name":"*","chunks":[],"async":false}},"94569":{"*":{"id":"36856","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/ui/ConfirmHost.tsx":{"id":94204,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/ui/ServiceWorkerRegistration.tsx":{"id":20722,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/contexts/AppContext.tsx":{"id":43639,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/contexts/ThemeContext.tsx":{"id":30737,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/layout/AppShell.tsx":{"id":54986,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","7045","static/chunks/7045-8bc2f14e430ca661.js","1395","static/chunks/1395-e4a99912b8f83044.js","8974","static/chunks/app/page-213a623b37226452.js"],"async":false},"/home/runner/work/jarela/jarela/components/setup/UnlockScreen.tsx":{"id":12283,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","7045","static/chunks/7045-8bc2f14e430ca661.js","1395","static/chunks/1395-e4a99912b8f83044.js","8974","static/chunks/app/page-213a623b37226452.js"],"async":false},"/home/runner/work/jarela/jarela/components/setup/OnboardingWizard.tsx":{"id":94569,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/jarela/jarela/":[],"/home/runner/work/jarela/jarela/app/layout":[{"inlined":false,"path":"static/css/312542a5725ba0d5.css"}],"/home/runner/work/jarela/jarela/app/page":[{"inlined":false,"path":"static/css/61d4279c2300e146.css"}]},"rscModuleMapping":{"12283":{"*":{"id":"67181","name":"*","chunks":[],"async":false}},"20722":{"*":{"id":"13236","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"30737":{"*":{"id":"28383","name":"*","chunks":[],"async":false}},"43639":{"*":{"id":"25933","name":"*","chunks":[],"async":false}},"54986":{"*":{"id":"59255","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"94204":{"*":{"id":"43178","name":"*","chunks":[],"async":false}},"94569":{"*":{"id":"59275","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"11362":{"*":{"id":"60095","name":"*","chunks":[],"async":false}},"12283":{"*":{"id":"26751","name":"*","chunks":[],"async":false}},"20722":{"*":{"id":"86486","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"30737":{"*":{"id":"41005","name":"*","chunks":[],"async":false}},"43639":{"*":{"id":"35419","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"94204":{"*":{"id":"65572","name":"*","chunks":[],"async":false}},"94569":{"*":{"id":"36856","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/ui/ConfirmHost.tsx":{"id":94204,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/ui/ServiceWorkerRegistration.tsx":{"id":20722,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/contexts/AppContext.tsx":{"id":43639,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/contexts/ThemeContext.tsx":{"id":30737,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/layout/AppShell.tsx":{"id":11362,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","7045","static/chunks/7045-8bc2f14e430ca661.js","1395","static/chunks/1395-e4a99912b8f83044.js","8974","static/chunks/app/page-04748847c6ff866f.js"],"async":false},"/home/runner/work/jarela/jarela/components/setup/UnlockScreen.tsx":{"id":12283,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","7045","static/chunks/7045-8bc2f14e430ca661.js","1395","static/chunks/1395-e4a99912b8f83044.js","8974","static/chunks/app/page-04748847c6ff866f.js"],"async":false},"/home/runner/work/jarela/jarela/components/setup/OnboardingWizard.tsx":{"id":94569,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/jarela/jarela/":[],"/home/runner/work/jarela/jarela/app/layout":[{"inlined":false,"path":"static/css/2669e8744cc8c212.css"}],"/home/runner/work/jarela/jarela/app/page":[{"inlined":false,"path":"static/css/61d4279c2300e146.css"}]},"rscModuleMapping":{"11362":{"*":{"id":"59255","name":"*","chunks":[],"async":false}},"12283":{"*":{"id":"67181","name":"*","chunks":[],"async":false}},"20722":{"*":{"id":"13236","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"30737":{"*":{"id":"28383","name":"*","chunks":[],"async":false}},"43639":{"*":{"id":"25933","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"94204":{"*":{"id":"43178","name":"*","chunks":[],"async":false}},"94569":{"*":{"id":"59275","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
@@ -426,6 +426,14 @@ module.exports = require("node:path");
426
426
 
427
427
  /***/ }),
428
428
 
429
+ /***/ 77030:
430
+ /***/ ((module) => {
431
+
432
+ "use strict";
433
+ module.exports = require("node:net");
434
+
435
+ /***/ }),
436
+
429
437
  /***/ 77598:
430
438
  /***/ ((module) => {
431
439
 
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/setup/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"12283":{"*":{"id":"26751","name":"*","chunks":[],"async":false}},"20722":{"*":{"id":"86486","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"30737":{"*":{"id":"41005","name":"*","chunks":[],"async":false}},"43639":{"*":{"id":"35419","name":"*","chunks":[],"async":false}},"54986":{"*":{"id":"90801","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"94204":{"*":{"id":"65572","name":"*","chunks":[],"async":false}},"94569":{"*":{"id":"36856","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/ui/ConfirmHost.tsx":{"id":94204,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/ui/ServiceWorkerRegistration.tsx":{"id":20722,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/contexts/AppContext.tsx":{"id":43639,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/contexts/ThemeContext.tsx":{"id":30737,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/layout/AppShell.tsx":{"id":54986,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","7045","static/chunks/7045-8bc2f14e430ca661.js","1395","static/chunks/1395-e4a99912b8f83044.js","8974","static/chunks/app/page-213a623b37226452.js"],"async":false},"/home/runner/work/jarela/jarela/components/setup/UnlockScreen.tsx":{"id":12283,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","1395","static/chunks/1395-e4a99912b8f83044.js","620","static/chunks/app/setup/page-f047836a0a676d38.js"],"async":false},"/home/runner/work/jarela/jarela/components/setup/OnboardingWizard.tsx":{"id":94569,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","1395","static/chunks/1395-e4a99912b8f83044.js","620","static/chunks/app/setup/page-f047836a0a676d38.js"],"async":false}},"entryCSSFiles":{"/home/runner/work/jarela/jarela/":[],"/home/runner/work/jarela/jarela/app/layout":[{"inlined":false,"path":"static/css/312542a5725ba0d5.css"}],"/home/runner/work/jarela/jarela/app/page":[{"inlined":false,"path":"static/css/61d4279c2300e146.css"}],"/home/runner/work/jarela/jarela/app/setup/page":[]},"rscModuleMapping":{"12283":{"*":{"id":"67181","name":"*","chunks":[],"async":false}},"20722":{"*":{"id":"13236","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"30737":{"*":{"id":"28383","name":"*","chunks":[],"async":false}},"43639":{"*":{"id":"25933","name":"*","chunks":[],"async":false}},"54986":{"*":{"id":"59255","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"94204":{"*":{"id":"43178","name":"*","chunks":[],"async":false}},"94569":{"*":{"id":"59275","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/setup/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"11362":{"*":{"id":"60095","name":"*","chunks":[],"async":false}},"12283":{"*":{"id":"26751","name":"*","chunks":[],"async":false}},"20722":{"*":{"id":"86486","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"30737":{"*":{"id":"41005","name":"*","chunks":[],"async":false}},"43639":{"*":{"id":"35419","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"94204":{"*":{"id":"65572","name":"*","chunks":[],"async":false}},"94569":{"*":{"id":"36856","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/jarela/jarela/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/ui/ConfirmHost.tsx":{"id":94204,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/ui/ServiceWorkerRegistration.tsx":{"id":20722,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/contexts/AppContext.tsx":{"id":43639,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/contexts/ThemeContext.tsx":{"id":30737,"name":"*","chunks":["7177","static/chunks/app/layout-9bc0b10127cb7d42.js"],"async":false},"/home/runner/work/jarela/jarela/components/layout/AppShell.tsx":{"id":11362,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","7045","static/chunks/7045-8bc2f14e430ca661.js","1395","static/chunks/1395-e4a99912b8f83044.js","8974","static/chunks/app/page-04748847c6ff866f.js"],"async":false},"/home/runner/work/jarela/jarela/components/setup/UnlockScreen.tsx":{"id":12283,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","1395","static/chunks/1395-e4a99912b8f83044.js","620","static/chunks/app/setup/page-f047836a0a676d38.js"],"async":false},"/home/runner/work/jarela/jarela/components/setup/OnboardingWizard.tsx":{"id":94569,"name":"*","chunks":["8463","static/chunks/ede5dfc2-43619a76646f3f29.js","8095","static/chunks/8095-b2d16cff7999ab45.js","1395","static/chunks/1395-e4a99912b8f83044.js","620","static/chunks/app/setup/page-f047836a0a676d38.js"],"async":false}},"entryCSSFiles":{"/home/runner/work/jarela/jarela/":[],"/home/runner/work/jarela/jarela/app/layout":[{"inlined":false,"path":"static/css/2669e8744cc8c212.css"}],"/home/runner/work/jarela/jarela/app/page":[{"inlined":false,"path":"static/css/61d4279c2300e146.css"}],"/home/runner/work/jarela/jarela/app/setup/page":[]},"rscModuleMapping":{"11362":{"*":{"id":"59255","name":"*","chunks":[],"async":false}},"12283":{"*":{"id":"67181","name":"*","chunks":[],"async":false}},"20722":{"*":{"id":"13236","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"30737":{"*":{"id":"28383","name":"*","chunks":[],"async":false}},"43639":{"*":{"id":"25933","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"94204":{"*":{"id":"43178","name":"*","chunks":[],"async":false}},"94569":{"*":{"id":"59275","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
@@ -123,19 +123,19 @@
123
123
  "/api/v1/bridges/[id]/chats/route": "app/api/v1/bridges/[id]/chats/route.js",
124
124
  "/api/v1/bridges/[id]/lookup/route": "app/api/v1/bridges/[id]/lookup/route.js",
125
125
  "/api/v1/bridges/[id]/pair/route": "app/api/v1/bridges/[id]/pair/route.js",
126
- "/api/v1/bridges/[id]/route": "app/api/v1/bridges/[id]/route.js",
127
126
  "/api/v1/bridges/[id]/status/route": "app/api/v1/bridges/[id]/status/route.js",
128
- "/api/v1/dashboard/pricing-task/route": "app/api/v1/dashboard/pricing-task/route.js",
127
+ "/api/v1/bridges/[id]/route": "app/api/v1/bridges/[id]/route.js",
129
128
  "/api/v1/builtin-tools/route": "app/api/v1/builtin-tools/route.js",
129
+ "/api/v1/dashboard/pricing-task/route": "app/api/v1/dashboard/pricing-task/route.js",
130
130
  "/api/v1/events/route": "app/api/v1/events/route.js",
131
131
  "/api/v1/extensions/route": "app/api/v1/extensions/route.js",
132
- "/api/v1/extensions/tools/[name]/route": "app/api/v1/extensions/tools/[name]/route.js",
133
132
  "/api/v1/extensions/tools/[name]/config/route": "app/api/v1/extensions/tools/[name]/config/route.js",
133
+ "/api/v1/extensions/tools/[name]/route": "app/api/v1/extensions/tools/[name]/route.js",
134
134
  "/api/v1/extensions/tools/[name]/secrets/route": "app/api/v1/extensions/tools/[name]/secrets/route.js",
135
135
  "/api/v1/health/route": "app/api/v1/health/route.js",
136
136
  "/api/v1/lifecycle/adoption/route": "app/api/v1/lifecycle/adoption/route.js",
137
- "/api/v1/maps/embed/route": "app/api/v1/maps/embed/route.js",
138
137
  "/api/v1/logs/route": "app/api/v1/logs/route.js",
138
+ "/api/v1/maps/embed/route": "app/api/v1/maps/embed/route.js",
139
139
  "/api/v1/page-capture/route": "app/api/v1/page-capture/route.js",
140
140
  "/api/v1/proxy-config/route": "app/api/v1/proxy-config/route.js",
141
141
  "/api/v1/security/idle-timeout/route": "app/api/v1/security/idle-timeout/route.js",
@@ -3751,10 +3751,13 @@ function fuzzyUniqueRange(raw, oldString) {
3751
3751
  if (oldLines.some((line)=>line.length === 0)) return [];
3752
3752
  const rawLines = raw.split(/\r\n|\r|\n/);
3753
3753
  const rawLineStarts = [];
3754
+ const eol = /\r\n|\r|\n/g;
3754
3755
  let offset = 0;
3755
3756
  for (const line of rawLines){
3756
3757
  rawLineStarts.push(offset);
3757
- offset += line.length + 1;
3758
+ eol.lastIndex = offset + line.length;
3759
+ const brk = eol.exec(raw);
3760
+ offset = offset + line.length + (brk ? brk[0].length : 0);
3758
3761
  }
3759
3762
  const scores = [];
3760
3763
  for(let i = 0; i + oldLines.length <= rawLines.length; i++){
@@ -3811,7 +3814,9 @@ function findAllExact(haystack, needle) {
3811
3814
  function findWithTransforms(raw, oldString, fns) {
3812
3815
  const bufT = composeTransforms(raw, fns);
3813
3816
  const oldT = composeTransforms(oldString, fns);
3814
- if (oldT.text.length === 0) return [];
3817
+ // A needle that normalizes to bare whitespace would match an arbitrary
3818
+ // line break, so it can never identify an edit target.
3819
+ if (oldT.text.trim().length === 0) return [];
3815
3820
  const starts = findAllExact(bufT.text, oldT.text);
3816
3821
  return starts.map((s)=>({
3817
3822
  start: bufT.toOriginal[s],
@@ -8493,6 +8498,8 @@ const compactContextTool = (0,tools/* tool */.z6)(async (_input, config)=>{
8493
8498
  var default_packages = __webpack_require__(93375);
8494
8499
  // EXTERNAL MODULE: ./lib/tools/communications/gmail.ts
8495
8500
  var gmail = __webpack_require__(36282);
8501
+ // EXTERNAL MODULE: ./lib/utils/source-link.ts
8502
+ var source_link = __webpack_require__(12262);
8496
8503
  // EXTERNAL MODULE: ./lib/integrations/gmail-oauth.ts
8497
8504
  var gmail_oauth = __webpack_require__(87246);
8498
8505
  ;// ./lib/tools/communications/calendar.ts
@@ -8523,6 +8530,7 @@ var gmail_oauth = __webpack_require__(87246);
8523
8530
 
8524
8531
 
8525
8532
 
8533
+
8526
8534
  const CALENDAR_BASE = "https://www.googleapis.com/calendar/v3";
8527
8535
  const calendarFetch = (auth, path, init)=>(0,gmail_oauth/* googleFetch */.sI)(auth, "Calendar", CALENDAR_BASE, path, init);
8528
8536
  const RFC3339_DATETIME = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
@@ -8545,7 +8553,8 @@ function slimEvent(e) {
8545
8553
  response: a.responseStatus ?? null
8546
8554
  })),
8547
8555
  meet_link: e.hangoutLink ?? null,
8548
- html_link: e.htmlLink ?? null
8556
+ html_link: e.htmlLink ?? null,
8557
+ cite_as: (0,source_link/* citeAs */.w)(e.summary, e.htmlLink, "Calendar event")
8549
8558
  };
8550
8559
  }
8551
8560
  // ── Tools ───────────────────────────────────────────────────────────────────
@@ -8827,6 +8836,7 @@ var microsoft_oauth = __webpack_require__(89080);
8827
8836
 
8828
8837
 
8829
8838
 
8839
+
8830
8840
  function outlook_calendar_slimEvent(e) {
8831
8841
  return {
8832
8842
  id: e.id,
@@ -8845,7 +8855,8 @@ function outlook_calendar_slimEvent(e) {
8845
8855
  is_cancelled: e.isCancelled === true,
8846
8856
  show_as: e.showAs ?? null,
8847
8857
  teams_link: e.onlineMeeting?.joinUrl ?? null,
8848
- web_link: e.webLink ?? null
8858
+ web_link: e.webLink ?? null,
8859
+ cite_as: (0,source_link/* citeAs */.w)(e.subject, e.webLink, "Outlook event")
8849
8860
  };
8850
8861
  }
8851
8862
  // ── Tools ───────────────────────────────────────────────────────────────────
@@ -14614,12 +14625,11 @@ function cookiePathMatches(reqPath, cookiePath) {
14614
14625
 
14615
14626
  // Every caller of moveThreadContextBoundary represents a user-initiated
14616
14627
  // boundary change (drag the line, the manual /compact command, or the agent's
14617
- // compact_context tool acting on the user's say-so) — the
14618
- // auto-detector's own commit (lib/agents/warm-summary-background.ts
14619
- // commitBoundaryCompaction) calls setThreadContextPin directly instead, so
14620
- // it never re-arms this lock. Suppresses the hot-turn-limit compaction in
14621
- // lib/agents/run-thread.ts for the next N eligible turns so a manual
14622
- // choice doesn't get silently re-moved on the very next turn.
14628
+ // compact_context tool acting on the user's say-so). Suppresses the
14629
+ // hot-turn-limit compaction in lib/agents/run-thread.ts for the next N
14630
+ // eligible turns so a manual choice doesn't get silently re-moved on the very
14631
+ // next turn. The auto-detector arms a shorter cooldown of its own
14632
+ // (hotTurnCooldownUntil) so it doesn't re-run on every turn either.
14623
14633
  // Counted in messages (~2 per turn: one user + one assistant row) since
14624
14634
  // that's what's already on the thread row — no extra query or per-turn
14625
14635
  // write needed to check it.
@@ -17073,7 +17083,7 @@ __webpack_require__.d(__webpack_exports__, {
17073
17083
  IC: () => (/* binding */ withInterruptMarker)
17074
17084
  });
17075
17085
 
17076
- // UNUSED EXPORTS: INTERRUPT_MARKER, MAX_RATE_LIMIT_RETRY_AFTER_MS, appendHistoryMessage, buildFabricationNudge, buildRetryContextSummary, contentText, isHotContextNearBudget, looksLikeStall, rateLimitRetryDelayMs, retryTextOverlapRatio, shouldRetryTransientError, toolCallSignature, transientRetryDelayMs
17086
+ // UNUSED EXPORTS: INTERRUPT_MARKER, MAX_RATE_LIMIT_RETRY_AFTER_MS, appendHistoryMessage, buildFabricationNudge, buildRetryContextSummary, contentText, hotTurnCooldownUntil, isHotContextNearBudget, looksLikeStall, rateLimitRetryDelayMs, retryTextOverlapRatio, shouldRetryTransientError, toolCallSignature, transientRetryDelayMs
17077
17087
 
17078
17088
  // EXTERNAL MODULE: ./lib/agents/action-vocabulary.ts
17079
17089
  var action_vocabulary = __webpack_require__(95350);
@@ -20044,7 +20054,8 @@ function buildSharedToolCatalogContext() {
20044
20054
  "6. Read large results by reference. A tool result with truncated=true is only a preview; do not treat it as complete. Use result_ref.name with tool_result_get and offset/limit to read only the slice you need.",
20045
20055
  "7. Verify before reporting. A read-only result does not prove a new write. Claim a new write, send, schedule, delete, or configuration change only after the matching state-changing tool returns success in this turn. Trusted runtime system signals and their matching retrieved results can substantiate earlier named operations; attribute those outcomes to their receipts, never imply a new action or repeat completed work for proof.",
20046
20056
  "8. Stop and ask. Do not retry a tool denied for agent_not_allowed, category_disabled, dropin_tool_disabled, credentials_missing or integration_unconfigured. The first three are permission decisions and the last two mean the integration is not set up \u2014 propose a configuration change or tell the user what to configure.",
20047
- "9. Completion-reporting turns are read-only. permission_reason=signal_continuation_read_only forbids state-changing tools in this turn, including through invoke_tool. Do not bypass it with shell commands or treat an old user message as renewed permission; report the completed outcome and wait for a new user turn."
20057
+ "9. Completion-reporting turns are read-only. permission_reason=signal_continuation_read_only forbids state-changing tools in this turn, including through invoke_tool. Do not bypass it with shell commands or treat an old user message as renewed permission; report the completed outcome and wait for a new user turn.",
20058
+ "10. Link the source. When your reply refers to a specific email, calendar event, or chat that a tool result or bridge message gave you, link it: paste the item's cite_as value verbatim when present, otherwise use its web_link, html_link, or chat_link URL as a markdown link. Use only links you were given; never construct, guess, or edit one. If the item has no link, name it without one."
20048
20059
  ].join("\n");
20049
20060
  }
20050
20061
  function compareToolPermissionEntries(a, b) {
@@ -20124,9 +20135,14 @@ function buildDeliveryChannelContext(channel) {
20124
20135
  return [
20125
20136
  "--- Delivery channel ---",
20126
20137
  `This message reached you over ${platform}${named}, not the regular chat UI.`,
20127
- `You DO have access to ${platform} for this conversation: any reply you produce is sent back through that channel automatically. Do not tell the user the platform is unavailable; just answer the message.`
20128
- ].join("\n");
20138
+ `You DO have access to ${platform} for this conversation: any reply you produce is sent back through that channel automatically. Do not tell the user the platform is unavailable; just answer the message.`,
20139
+ PLAIN_TEXT_DELIVERY_KINDS.has(channel.kind) ? `${platform} does not render markdown links: write any link as the bare URL, even where a cite_as value is given.` : ""
20140
+ ].filter(Boolean).join("\n");
20129
20141
  }
20142
+ const PLAIN_TEXT_DELIVERY_KINDS = new Set([
20143
+ "whatsapp",
20144
+ "sms"
20145
+ ]);
20130
20146
  function buildUserContext() {
20131
20147
  const userProfile = (0,user_profile/* getUserProfile */.VM)();
20132
20148
  const parts = [];
@@ -20210,7 +20226,7 @@ function buildSourceLinkContext(agent, manifest) {
20210
20226
  "--- Citation format ---",
20211
20227
  intro,
20212
20228
  "PRIMARY (inline links): cite by writing a standard markdown link inline: `[short label](https://example.com/path)` or `[file name](/abs/path.ts)` or `[earlier reply](#msg-<id>)`. Wrap the cited PHRASE itself as the link text when natural — `Jade has [ice skating at 16:00](?thread=…&agent=…)` reads better than a trailing `[1]`.",
20213
- "When a tool result contains a `cite_as` field (delegate_to_agent does, and so do some integrations), paste that exact value somewhere in your reply — it's a pre-built markdown link to the source. Anything you summarize from a delegate or from a web/file tool result MUST carry at least one inline link back to where it came from; a summary with zero links reads as if you made the facts up.",
20229
+ "When a tool result contains a `cite_as` field (delegate_to_agent does, and so do the email and calendar tools), paste that exact value somewhere in your reply — it's a pre-built markdown link to the source. Anything you summarize from a delegate or from a web/file tool result MUST carry at least one inline link back to where it came from; a summary with zero links reads as if you made the facts up.",
20214
20230
  "For web_search / fetch_webpage results, the URL is right there in the tool output — use it: `[headline or short label](https://...)`. For file_read results, link the absolute path: `[filename.ext](/abs/path/filename.ext)`.",
20215
20231
  "FALLBACK (declared refs block): if a source is awkward to cite inline (e.g. you summarized 4 articles in one paragraph), you MAY end your reply with a fenced block exactly like this:",
20216
20232
  "```jarela-references",
@@ -20677,17 +20693,27 @@ const SOURCE_PRODUCING_TOOLS_RESULT = new Set([
20677
20693
  "fetch_webpage",
20678
20694
  "web_fetch"
20679
20695
  ]);
20680
- // Strip query/fragment for URLs and normalize backslashes for paths so a
20681
- // citation that drops `?utm=...` or uses forward slashes on Windows still
20682
- // matches the visited entry. Also fold `~/...` to the resolved home dir
20683
- // so `~/Downloads/x` and `C:\Users\andre\Downloads\x` de-dupe.
20696
+ const TRACKING_PARAM_RE = /^(?:utm(?:_.*)?|fbclid|gclid|dclid|msclkid|mc_cid|mc_eid|igshid|ref_src)$/i;
20697
+ // Drop tracking params and in-page anchors for URLs and normalize
20698
+ // backslashes for paths so a citation that adds `?utm_source=...` or uses
20699
+ // forward slashes on Windows still matches the visited entry. Identifying
20700
+ // query params (Outlook `?ItemID=`, `watch?v=`) and hash routes (Gmail
20701
+ // `#all/<id>`) are kept verbatim: they are case-sensitive and are the only
20702
+ // thing that distinguishes two message permalinks. Also fold `~/...` to the
20703
+ // resolved home dir so `~/Downloads/x` and `C:\Users\andre\Downloads\x` de-dupe.
20684
20704
  function normalizeSource(raw) {
20685
20705
  const trimmed = raw.trim();
20686
20706
  if (!trimmed) return "";
20687
20707
  if (/^https?:\/\//i.test(trimmed)) {
20688
20708
  try {
20689
20709
  const u = new URL(trimmed);
20690
- return `${u.protocol}//${u.host}${u.pathname}`.replace(/\/+$/, "").toLowerCase();
20710
+ const base = `${u.protocol}//${u.host}${u.pathname}`.replace(/\/+$/, "").toLowerCase();
20711
+ const params = [
20712
+ ...u.searchParams
20713
+ ].filter(([key])=>!TRACKING_PARAM_RE.test(key)).sort(([a], [b])=>a < b ? -1 : a > b ? 1 : 0);
20714
+ const query = params.length > 0 ? `?${new URLSearchParams(params).toString()}` : "";
20715
+ const hashRoute = u.hash.includes("/") ? u.hash : "";
20716
+ return base + query + hashRoute;
20691
20717
  } catch {
20692
20718
  return trimmed.toLowerCase();
20693
20719
  }
@@ -21036,15 +21062,8 @@ ${sent}`;
21036
21062
  */ function parseCitationVerdict(text) {
21037
21063
  if (!text) return null;
21038
21064
  const stripped = text.replace(/```(?:json)?\s*/gi, "").replace(/```/g, "").trim();
21039
- const m = /\{[^]*"claims"[^]*\}/.exec(stripped);
21040
- if (!m) return null;
21041
- let parsed;
21042
- try {
21043
- parsed = JSON.parse(m[0]);
21044
- } catch {
21045
- return null;
21046
- }
21047
- if (!parsed || typeof parsed !== "object") return null;
21065
+ const parsed = findClaimsObject(stripped);
21066
+ if (!parsed) return null;
21048
21067
  const claimsRaw = parsed.claims;
21049
21068
  if (!Array.isArray(claimsRaw)) return null;
21050
21069
  const claims = [];
@@ -21071,6 +21090,41 @@ ${sent}`;
21071
21090
  }
21072
21091
  return claims;
21073
21092
  }
21093
+ // Models often wrap the verdict in prose that itself contains braces, so a
21094
+ // single greedy `{...}` match can start or end in the wrong place. Try each
21095
+ // `{` as a start and parse the balanced object it opens (string-aware).
21096
+ function findClaimsObject(text) {
21097
+ for(let start = text.indexOf("{"); start !== -1; start = text.indexOf("{", start + 1)){
21098
+ const end = balancedObjectEnd(text, start);
21099
+ if (end === -1) continue;
21100
+ const candidate = text.slice(start, end + 1);
21101
+ if (!candidate.includes('"claims"')) continue;
21102
+ try {
21103
+ const parsed = JSON.parse(candidate);
21104
+ if (parsed && typeof parsed === "object" && "claims" in parsed) return parsed;
21105
+ } catch {}
21106
+ }
21107
+ return null;
21108
+ }
21109
+ function balancedObjectEnd(text, start) {
21110
+ let depth = 0;
21111
+ let inString = false;
21112
+ for(let i = start; i < text.length; i++){
21113
+ const ch = text[i];
21114
+ if (inString) {
21115
+ if (ch === "\\") i++;
21116
+ else if (ch === '"') inString = false;
21117
+ } else if (ch === '"') {
21118
+ inString = true;
21119
+ } else if (ch === "{") {
21120
+ depth++;
21121
+ } else if (ch === "}") {
21122
+ depth--;
21123
+ if (depth === 0) return i;
21124
+ }
21125
+ }
21126
+ return -1;
21127
+ }
21074
21128
  function collectStringsFromPayload(payload, out) {
21075
21129
  if (!payload) return;
21076
21130
  if (typeof payload === "string") {
@@ -21234,17 +21288,31 @@ function hotTurnBoundary(threadId, agentCfg, scope, bridgeKey) {
21234
21288
  const boundary = userMessages[userMessages.length - turnLimit];
21235
21289
  return boundary?.seq ?? null;
21236
21290
  }
21237
- async function maybeAutoCompactOversizedThread(agentId, threadId, messageCount, onCompacting, preserveNewestMessages = 0) {
21291
+ // The topic-aware boundary keeps the whole active topic hot, so user turns
21292
+ // since the pin usually still exceed the limit right after a commit. Without a
21293
+ // cooldown every following turn re-runs the topic LLM pass only to land on the
21294
+ // same pin. Skip the next half-limit turns (2 rows per turn) before re-checking.
21295
+ function hotTurnCooldownUntil(messageCount, hotTurnLimit) {
21296
+ const turnLimit = hotTurnLimit ?? types/* DEFAULT_HOT_TURN_LIMIT */.u_;
21297
+ const skipTurns = Math.max(1, Math.ceil(Math.max(1, turnLimit) / 2));
21298
+ return messageCount + skipTurns * 2 + 1;
21299
+ }
21300
+ async function maybeAutoCompactOversizedThread(agentId, threadId, onCompacting, preserveNewestMessages = 0) {
21238
21301
  const cap = (0,config/* getConfig */.z)().maxThreadMessages;
21239
21302
  const keepLast = (0,thread_compaction/* autoCompactionKeepLast */.E)(cap);
21240
21303
  const retainedMessages = keepLast + preserveNewestMessages;
21241
21304
  const triggerAt = cap + (cap - keepLast);
21242
- if (!Number.isFinite(cap) || cap <= 0 || messageCount < triggerAt) return;
21305
+ if (!Number.isFinite(cap) || cap <= 0) return;
21306
+ // Only foreground rows are ever pruned; counting bridge/watcher/scheduled
21307
+ // rows would re-trigger an LLM compaction on every turn of a busy bridge
21308
+ // agent without ever bringing the count back under the cap.
21309
+ const messageCount = (0,threads/* countForegroundThreadMessages */.Tb)(threadId);
21310
+ if (messageCount < triggerAt) return;
21243
21311
  try {
21244
21312
  // A pin that already keeps the hot tier within the retained range must not
21245
21313
  // be pulled back to the cutoff, nor re-summarised by an LLM on every turn.
21246
21314
  const pinSeq = (0,threads/* getThread */.fG)(threadId)?.hot_since_seq ?? null;
21247
- if (pinSeq !== null && (0,threads/* countThreadMessagesFromSeq */.fW)(threadId, pinSeq) <= retainedMessages) {
21315
+ if (pinSeq !== null && (0,threads/* countForegroundThreadMessages */.Tb)(threadId, pinSeq) <= retainedMessages) {
21248
21316
  (0,threads/* pruneThreadMessages */.vC)(threadId, retainedMessages, pinSeq);
21249
21317
  return;
21250
21318
  }
@@ -21283,7 +21351,6 @@ async function persistThreadRunUserMessage(req) {
21283
21351
  if (!trimmed && !req.attachments?.length) {
21284
21352
  throw new RunThreadError(400, "message required", "message_required");
21285
21353
  }
21286
- const messageCountBefore = thread.message_count;
21287
21354
  const autoBoundaryScope = req.context_profile?.history_scope ?? (req.user_category === "bridge" ? "bridge" : "foreground");
21288
21355
  const idleMsBefore = isAutoBoundaryEligibleCategory(req.user_category) ? conversationIdleMs(req.thread_id, autoBoundaryScope, req.history_bridge_key ?? undefined) : null;
21289
21356
  const spilledAttachments = req.attachments?.length ? await (0,spill/* spillAttachments */.fX)(req.attachments) : undefined;
@@ -21303,7 +21370,6 @@ async function persistThreadRunUserMessage(req) {
21303
21370
  });
21304
21371
  return {
21305
21372
  attachments: spilledAttachments,
21306
- messageCountBefore,
21307
21373
  idleMsBefore,
21308
21374
  userMessageId: userMessage.msg_id,
21309
21375
  storedContent: stored
@@ -21450,7 +21516,7 @@ function appendHistoryMessage(history, injected) {
21450
21516
  let toolPermissionMap = baseToolPermissionMap;
21451
21517
  let allowedTools = requestedAllowedTools;
21452
21518
  if (!req._skip_persist_message && isAutoBoundaryEligibleCategory(req.user_category) && !hasPendingQueuedUserMessage(req.thread_id)) {
21453
- await maybeAutoCompactOversizedThread(agentCfg.id, req.thread_id, req._message_count_before_user ?? thread.message_count, req._onCompacting, req._user_message_persisted ? 2 : 0);
21519
+ await maybeAutoCompactOversizedThread(agentCfg.id, req.thread_id, req._onCompacting, req._user_message_persisted ? 2 : 0);
21454
21520
  }
21455
21521
  // Persist the user turn (including any attachments) before the LLM stream
21456
21522
  // so reload-mid-stream still shows the prompt. The stall-retry path sets
@@ -21492,7 +21558,11 @@ function appendHistoryMessage(history, injected) {
21492
21558
  const locked = !!latestThread && latestThread.message_count < (latestThread.auto_boundary_locked_until_msg_count ?? 0);
21493
21559
  if (!locked) {
21494
21560
  const boundary = hotTurnBoundary(req.thread_id, agentCfg, autoBoundaryScope);
21495
- if (boundary !== null) (0,warm_summary_background/* kickBoundaryCompaction */.Wg)(req.thread_id, boundary);
21561
+ if (boundary !== null) {
21562
+ (0,warm_summary_background/* kickBoundaryCompaction */.Wg)(req.thread_id, boundary, {
21563
+ autoBoundaryLockedUntilMessageCount: hotTurnCooldownUntil(latestThread?.message_count ?? 0, agentCfg.hot_turn_limit)
21564
+ });
21565
+ }
21496
21566
  }
21497
21567
  }
21498
21568
  }
@@ -84,23 +84,27 @@ async function readToolResultRef(args) {
84
84
  }
85
85
  const offset = Math.max(0, Math.floor(args.offset ?? 0));
86
86
  const limit = Math.min(MAX_READ_BYTES, Math.max(1, Math.floor(args.limit ?? DEFAULT_PREVIEW_BYTES)));
87
- let buf;
88
87
  try {
89
88
  const file = await node_fs__WEBPACK_IMPORTED_MODULE_0__.promises.open(abs, "r");
90
89
  try {
91
90
  const stat = await file.stat();
92
- const readLength = Math.max(0, Math.min(limit, stat.size - offset));
93
- buf = Buffer.alloc(readLength);
94
- if (readLength > 0) await file.read(buf, 0, readLength, offset);
95
- const nextOffset = offset + readLength;
91
+ // Read a few bytes either side so the window can be moved onto UTF-8
92
+ // character boundaries; paging must never split a multi-byte character.
93
+ const windowStart = Math.min(Math.max(0, offset - 3), stat.size);
94
+ const windowLength = Math.max(0, Math.min(stat.size - windowStart, offset - windowStart + limit + 3));
95
+ const buf = Buffer.alloc(windowLength);
96
+ if (windowLength > 0) await file.read(buf, 0, windowLength, windowStart);
97
+ const { start, end } = utf8Window(buf, Math.min(offset, stat.size) - windowStart, limit);
98
+ const actualOffset = windowStart + start;
99
+ const nextOffset = windowStart + end;
96
100
  return {
97
101
  ok: true,
98
102
  status: "done",
99
103
  name: args.name,
100
- offset,
104
+ offset: actualOffset,
101
105
  limit,
102
106
  bytes: stat.size,
103
- result: buf.toString("utf8"),
107
+ result: buf.subarray(start, end).toString("utf8"),
104
108
  next_offset: nextOffset < stat.size ? nextOffset : null,
105
109
  done: nextOffset >= stat.size
106
110
  };
@@ -116,6 +120,26 @@ async function readToolResultRef(args) {
116
120
  };
117
121
  }
118
122
  }
123
+ const isUtf8Continuation = (byte)=>byte !== undefined && (byte & 0xc0) === 0x80;
124
+ // Moves `[start, start + limit)` inside `buf` onto character boundaries: the
125
+ // start backs up to its lead byte, and the end backs up so it does not cut a
126
+ // character — unless that character alone exceeds `limit`, in which case the
127
+ // whole character is returned so paging always makes progress.
128
+ function utf8Window(buf, start, limit) {
129
+ let s = Math.max(0, Math.min(start, buf.length));
130
+ while(s > 0 && isUtf8Continuation(buf[s]))s--;
131
+ let e = Math.min(buf.length, s + limit);
132
+ if (e < buf.length && isUtf8Continuation(buf[e])) {
133
+ let lead = e;
134
+ while(lead > s && isUtf8Continuation(buf[lead]))lead--;
135
+ if (lead > s) e = lead;
136
+ else while(e < buf.length && isUtf8Continuation(buf[e]))e++;
137
+ }
138
+ return {
139
+ start: s,
140
+ end: e
141
+ };
142
+ }
119
143
  function serializeToolResult(result) {
120
144
  if (typeof result === "string") return result;
121
145
  return JSON.stringify(result) ?? String(result);
@@ -133,10 +157,21 @@ function buildPreview(value, mimeType) {
133
157
  try {
134
158
  const parsed = JSON.parse(value);
135
159
  if (Array.isArray(parsed)) {
136
- const preview = parsed.slice(0, JSON_ARRAY_PREVIEW_ITEMS);
160
+ // Cap by bytes as well as items: a few huge rows must not smuggle the
161
+ // whole result back inline.
162
+ for(let n = Math.min(parsed.length, JSON_ARRAY_PREVIEW_ITEMS); n > 0; n--){
163
+ const preview = parsed.slice(0, n);
164
+ const bytes = Buffer.byteLength(JSON.stringify(preview));
165
+ if (bytes <= DEFAULT_PREVIEW_BYTES) return {
166
+ value: preview,
167
+ bytes,
168
+ total_count: parsed.length
169
+ };
170
+ }
171
+ const text = takeUtf8Prefix(value, DEFAULT_PREVIEW_BYTES);
137
172
  return {
138
- value: preview,
139
- bytes: Buffer.byteLength(JSON.stringify(preview)),
173
+ value: text,
174
+ bytes: Buffer.byteLength(text),
140
175
  total_count: parsed.length
141
176
  };
142
177
  }
@@ -159,6 +194,8 @@ function takeUtf8Prefix(value, maxBytes) {
159
194
  if (Buffer.byteLength(value.slice(0, mid)) <= maxBytes) lo = mid;
160
195
  else hi = mid - 1;
161
196
  }
197
+ const code = value.charCodeAt(lo - 1);
198
+ if (lo > 0 && code >= 0xd800 && code <= 0xdbff) lo--;
162
199
  return value.slice(0, lo);
163
200
  }
164
201
  function safeToolName(name) {
@@ -50,17 +50,17 @@ async function bootNode() {
50
50
  }
51
51
  const { registerShutdownHandlers } = await Promise.all(/* import() */[__webpack_require__.e(8067), __webpack_require__.e(9032)]).then(__webpack_require__.bind(__webpack_require__, 39032));
52
52
  registerShutdownHandlers();
53
- const { initTools } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(6703), __webpack_require__.e(3399), __webpack_require__.e(423), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(1433), __webpack_require__.e(9164), __webpack_require__.e(2207)]).then(__webpack_require__.bind(__webpack_require__, 22215));
53
+ const { initTools } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(6703), __webpack_require__.e(3399), __webpack_require__.e(9590), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(1433), __webpack_require__.e(9164), __webpack_require__.e(2207)]).then(__webpack_require__.bind(__webpack_require__, 22215));
54
54
  initTools();
55
- const { recoverAbandonedMessageDrafts } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(423), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(4588)]).then(__webpack_require__.bind(__webpack_require__, 48461));
55
+ const { recoverAbandonedMessageDrafts } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(9590), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(4588)]).then(__webpack_require__.bind(__webpack_require__, 48461));
56
56
  recoverAbandonedMessageDrafts();
57
- const { processMessageEmbeddingJobs } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(423), __webpack_require__.e(8067), __webpack_require__.e(7445)]).then(__webpack_require__.bind(__webpack_require__, 32313));
57
+ const { processMessageEmbeddingJobs } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(9590), __webpack_require__.e(8067), __webpack_require__.e(7445)]).then(__webpack_require__.bind(__webpack_require__, 32313));
58
58
  void processMessageEmbeddingJobs().catch((err)=>console.warn("[embeddings] startup message queue failed:", err));
59
- const triggers = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(6703), __webpack_require__.e(3399), __webpack_require__.e(423), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(1433), __webpack_require__.e(9164), __webpack_require__.e(2207)]).then(__webpack_require__.bind(__webpack_require__, 64439));
59
+ const triggers = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(6703), __webpack_require__.e(3399), __webpack_require__.e(9590), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(1433), __webpack_require__.e(9164), __webpack_require__.e(2207)]).then(__webpack_require__.bind(__webpack_require__, 64439));
60
60
  await triggers.startAllTriggerHandlers();
61
- const { startScheduler } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(6703), __webpack_require__.e(3399), __webpack_require__.e(423), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(1433), __webpack_require__.e(9164), __webpack_require__.e(2207)]).then(__webpack_require__.bind(__webpack_require__, 47285));
61
+ const { startScheduler } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(6703), __webpack_require__.e(3399), __webpack_require__.e(9590), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(1433), __webpack_require__.e(9164), __webpack_require__.e(2207)]).then(__webpack_require__.bind(__webpack_require__, 47285));
62
62
  startScheduler();
63
- const { startSystemSignalLifecycle } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(423), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(1433), __webpack_require__.e(9826)]).then(__webpack_require__.bind(__webpack_require__, 1433));
63
+ const { startSystemSignalLifecycle } = await Promise.all(/* import() */[__webpack_require__.e(8849), __webpack_require__.e(9590), __webpack_require__.e(8067), __webpack_require__.e(8461), __webpack_require__.e(1433), __webpack_require__.e(9826)]).then(__webpack_require__.bind(__webpack_require__, 1433));
64
64
  startSystemSignalLifecycle();
65
65
  warnIfExposedBind();
66
66
  }
@@ -331,12 +331,17 @@ function upsertAgentConfigTransaction(input) {
331
331
  const db = (0,_lib_db__WEBPACK_IMPORTED_MODULE_0__/* .getDb */ .Lf)();
332
332
  const existing = getAgentConfig(input.id);
333
333
  const created_at = existing?.created_at ?? t;
334
- const mbti = input.adaptive_mbti ?? toMbti(existing?.adaptive_mbti) ?? "INTJ";
334
+ const existingMbti = toMbti(existing?.adaptive_mbti);
335
+ const mbti = input.adaptive_mbti ?? existingMbti ?? "INTJ";
335
336
  const preset = _lib_agents_adaptive_persona_presets__WEBPACK_IMPORTED_MODULE_2__/* .MBTI_PRESETS */ .e[mbti];
336
- const strength = input.adaptive_persona_strength ?? preset.strength;
337
- const empathy = input.adaptive_empathy ?? preset.empathy;
338
- const expressiveness = input.adaptive_expressiveness ?? preset.expressiveness;
339
- const verbosity = input.adaptive_verbosity ?? preset.verbosity;
337
+ // Omitted sliders keep their tuned values; they only fall back to the
338
+ // preset when the type changes or the agent is new. Otherwise every
339
+ // partial update (approved proposals, tool edits) reset them.
340
+ const keepTuned = existing !== null && existing !== undefined && mbti === existingMbti;
341
+ const strength = input.adaptive_persona_strength ?? (keepTuned ? existing.adaptive_persona_strength : preset.strength);
342
+ const empathy = input.adaptive_empathy ?? (keepTuned ? existing.adaptive_empathy : preset.empathy);
343
+ const expressiveness = input.adaptive_expressiveness ?? (keepTuned ? existing.adaptive_expressiveness : preset.expressiveness);
344
+ const verbosity = input.adaptive_verbosity ?? (keepTuned ? existing.adaptive_verbosity : preset.verbosity);
340
345
  if (input.is_default) db.prepare("UPDATE agent_configs SET is_default=0").run();
341
346
  // harness_id: explicit `undefined` means "keep existing"; explicit `null`
342
347
  // means "use the global default". Empty string is normalised to null too,