@ulpi/cli 0.1.10 → 0.1.12

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 (199) hide show
  1. package/dist/{chunk-F32YQRFR.js → chunk-3YFN5ZOR.js} +1 -1
  2. package/dist/{ci-QBXWR3GW.js → ci-EXYAXQVI.js} +1 -1
  3. package/dist/{doctor-SRJIZM2T.js → doctor-2EHFGL6W.js} +1 -1
  4. package/dist/{history-UGYO7Z3U.js → history-MXKIYCX4.js} +1 -1
  5. package/dist/index.js +8 -8
  6. package/dist/portal/apps/portal/.next/BUILD_ID +1 -1
  7. package/dist/portal/apps/portal/.next/app-build-manifest.json +107 -107
  8. package/dist/portal/apps/portal/.next/app-path-routes-manifest.json +18 -18
  9. package/dist/portal/apps/portal/.next/build-manifest.json +2 -2
  10. package/dist/portal/apps/portal/.next/prerender-manifest.json +109 -109
  11. package/dist/portal/apps/portal/.next/server/app/(dashboard)/billing/page_client-reference-manifest.js +1 -1
  12. package/dist/portal/apps/portal/.next/server/app/(dashboard)/codemap/page_client-reference-manifest.js +1 -1
  13. package/dist/portal/apps/portal/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  14. package/dist/portal/apps/portal/.next/server/app/(dashboard)/history/[sha]/transcript/page_client-reference-manifest.js +1 -1
  15. package/dist/portal/apps/portal/.next/server/app/(dashboard)/history/page.js +1 -1
  16. package/dist/portal/apps/portal/.next/server/app/(dashboard)/history/page_client-reference-manifest.js +1 -1
  17. package/dist/portal/apps/portal/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -1
  18. package/dist/portal/apps/portal/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -1
  19. package/dist/portal/apps/portal/.next/server/app/(dashboard)/loop/page.js +1 -1
  20. package/dist/portal/apps/portal/.next/server/app/(dashboard)/loop/page_client-reference-manifest.js +1 -1
  21. package/dist/portal/apps/portal/.next/server/app/(dashboard)/mcps/[name]/page_client-reference-manifest.js +1 -1
  22. package/dist/portal/apps/portal/.next/server/app/(dashboard)/mcps/catalog/page_client-reference-manifest.js +1 -1
  23. package/dist/portal/apps/portal/.next/server/app/(dashboard)/mcps/page_client-reference-manifest.js +1 -1
  24. package/dist/portal/apps/portal/.next/server/app/(dashboard)/mcps/secrets/page_client-reference-manifest.js +1 -1
  25. package/dist/portal/apps/portal/.next/server/app/(dashboard)/mcps/submissions/page_client-reference-manifest.js +1 -1
  26. package/dist/portal/apps/portal/.next/server/app/(dashboard)/mcps/usage/page_client-reference-manifest.js +1 -1
  27. package/dist/portal/apps/portal/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
  28. package/dist/portal/apps/portal/.next/server/app/(dashboard)/memory/settings/page_client-reference-manifest.js +1 -1
  29. package/dist/portal/apps/portal/.next/server/app/(dashboard)/memory/timeline/page_client-reference-manifest.js +1 -1
  30. package/dist/portal/apps/portal/.next/server/app/(dashboard)/notifications/page_client-reference-manifest.js +1 -1
  31. package/dist/portal/apps/portal/.next/server/app/(dashboard)/parallel/page.js +1 -1
  32. package/dist/portal/apps/portal/.next/server/app/(dashboard)/parallel/page_client-reference-manifest.js +1 -1
  33. package/dist/portal/apps/portal/.next/server/app/(dashboard)/prd/page_client-reference-manifest.js +1 -1
  34. package/dist/portal/apps/portal/.next/server/app/(dashboard)/repos/[id]/guards/page_client-reference-manifest.js +1 -1
  35. package/dist/portal/apps/portal/.next/server/app/(dashboard)/repos/[id]/page_client-reference-manifest.js +1 -1
  36. package/dist/portal/apps/portal/.next/server/app/(dashboard)/repos/page_client-reference-manifest.js +1 -1
  37. package/dist/portal/apps/portal/.next/server/app/(dashboard)/review/config/page_client-reference-manifest.js +1 -1
  38. package/dist/portal/apps/portal/.next/server/app/(dashboard)/review/page_client-reference-manifest.js +1 -1
  39. package/dist/portal/apps/portal/.next/server/app/(dashboard)/review/plan/page_client-reference-manifest.js +1 -1
  40. package/dist/portal/apps/portal/.next/server/app/(dashboard)/review/queue/page_client-reference-manifest.js +1 -1
  41. package/dist/portal/apps/portal/.next/server/app/(dashboard)/rules/[id]/page_client-reference-manifest.js +1 -1
  42. package/dist/portal/apps/portal/.next/server/app/(dashboard)/rules/new/page_client-reference-manifest.js +1 -1
  43. package/dist/portal/apps/portal/.next/server/app/(dashboard)/rules/page_client-reference-manifest.js +1 -1
  44. package/dist/portal/apps/portal/.next/server/app/(dashboard)/rules/pipelines/page_client-reference-manifest.js +1 -1
  45. package/dist/portal/apps/portal/.next/server/app/(dashboard)/sessions/[sessionId]/page_client-reference-manifest.js +1 -1
  46. package/dist/portal/apps/portal/.next/server/app/(dashboard)/sessions/page.js +1 -1
  47. package/dist/portal/apps/portal/.next/server/app/(dashboard)/sessions/page_client-reference-manifest.js +1 -1
  48. package/dist/portal/apps/portal/.next/server/app/(dashboard)/settings/github/page_client-reference-manifest.js +1 -1
  49. package/dist/portal/apps/portal/.next/server/app/(dashboard)/settings/installations/page_client-reference-manifest.js +1 -1
  50. package/dist/portal/apps/portal/.next/server/app/(dashboard)/settings/keys/page_client-reference-manifest.js +1 -1
  51. package/dist/portal/apps/portal/.next/server/app/(dashboard)/settings/members/page_client-reference-manifest.js +1 -1
  52. package/dist/portal/apps/portal/.next/server/app/(dashboard)/settings/orgs/new/page_client-reference-manifest.js +1 -1
  53. package/dist/portal/apps/portal/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  54. package/dist/portal/apps/portal/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
  55. package/dist/portal/apps/portal/.next/server/app/(dashboard)/sprints/[batchId]/page_client-reference-manifest.js +1 -1
  56. package/dist/portal/apps/portal/.next/server/app/(dashboard)/sprints/page_client-reference-manifest.js +1 -1
  57. package/dist/portal/apps/portal/.next/server/app/(dashboard)/templates/page_client-reference-manifest.js +1 -1
  58. package/dist/portal/apps/portal/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  59. package/dist/portal/apps/portal/.next/server/app/_not-found.html +1 -1
  60. package/dist/portal/apps/portal/.next/server/app/_not-found.rsc +1 -1
  61. package/dist/portal/apps/portal/.next/server/app/auth/callback/page_client-reference-manifest.js +1 -1
  62. package/dist/portal/apps/portal/.next/server/app/auth/callback.html +1 -1
  63. package/dist/portal/apps/portal/.next/server/app/auth/callback.rsc +1 -1
  64. package/dist/portal/apps/portal/.next/server/app/billing.html +1 -1
  65. package/dist/portal/apps/portal/.next/server/app/billing.rsc +3 -3
  66. package/dist/portal/apps/portal/.next/server/app/codemap.html +1 -1
  67. package/dist/portal/apps/portal/.next/server/app/codemap.rsc +3 -3
  68. package/dist/portal/apps/portal/.next/server/app/dashboard.html +1 -1
  69. package/dist/portal/apps/portal/.next/server/app/dashboard.rsc +3 -3
  70. package/dist/portal/apps/portal/.next/server/app/history.html +1 -1
  71. package/dist/portal/apps/portal/.next/server/app/history.rsc +3 -3
  72. package/dist/portal/apps/portal/.next/server/app/jobs.html +1 -1
  73. package/dist/portal/apps/portal/.next/server/app/jobs.rsc +3 -3
  74. package/dist/portal/apps/portal/.next/server/app/loop.html +1 -1
  75. package/dist/portal/apps/portal/.next/server/app/loop.rsc +3 -3
  76. package/dist/portal/apps/portal/.next/server/app/mcps/catalog.html +1 -1
  77. package/dist/portal/apps/portal/.next/server/app/mcps/catalog.rsc +3 -3
  78. package/dist/portal/apps/portal/.next/server/app/mcps/secrets.html +1 -1
  79. package/dist/portal/apps/portal/.next/server/app/mcps/secrets.rsc +3 -3
  80. package/dist/portal/apps/portal/.next/server/app/mcps/submissions.html +1 -1
  81. package/dist/portal/apps/portal/.next/server/app/mcps/submissions.rsc +3 -3
  82. package/dist/portal/apps/portal/.next/server/app/mcps/usage.html +1 -1
  83. package/dist/portal/apps/portal/.next/server/app/mcps/usage.rsc +3 -3
  84. package/dist/portal/apps/portal/.next/server/app/mcps.html +1 -1
  85. package/dist/portal/apps/portal/.next/server/app/mcps.rsc +3 -3
  86. package/dist/portal/apps/portal/.next/server/app/memory/settings.html +1 -1
  87. package/dist/portal/apps/portal/.next/server/app/memory/settings.rsc +3 -3
  88. package/dist/portal/apps/portal/.next/server/app/memory/timeline.html +1 -1
  89. package/dist/portal/apps/portal/.next/server/app/memory/timeline.rsc +3 -3
  90. package/dist/portal/apps/portal/.next/server/app/memory.html +1 -1
  91. package/dist/portal/apps/portal/.next/server/app/memory.rsc +3 -3
  92. package/dist/portal/apps/portal/.next/server/app/notifications.html +1 -1
  93. package/dist/portal/apps/portal/.next/server/app/notifications.rsc +3 -3
  94. package/dist/portal/apps/portal/.next/server/app/parallel.html +1 -1
  95. package/dist/portal/apps/portal/.next/server/app/parallel.rsc +3 -3
  96. package/dist/portal/apps/portal/.next/server/app/prd.html +1 -1
  97. package/dist/portal/apps/portal/.next/server/app/prd.rsc +3 -3
  98. package/dist/portal/apps/portal/.next/server/app/repos.html +1 -1
  99. package/dist/portal/apps/portal/.next/server/app/repos.rsc +3 -3
  100. package/dist/portal/apps/portal/.next/server/app/review/config.html +1 -1
  101. package/dist/portal/apps/portal/.next/server/app/review/config.rsc +3 -3
  102. package/dist/portal/apps/portal/.next/server/app/review/plan.html +1 -1
  103. package/dist/portal/apps/portal/.next/server/app/review/plan.rsc +3 -3
  104. package/dist/portal/apps/portal/.next/server/app/review/queue.html +1 -1
  105. package/dist/portal/apps/portal/.next/server/app/review/queue.rsc +3 -3
  106. package/dist/portal/apps/portal/.next/server/app/review.html +1 -1
  107. package/dist/portal/apps/portal/.next/server/app/review.meta +2 -0
  108. package/dist/portal/apps/portal/.next/server/app/review.rsc +2 -2
  109. package/dist/portal/apps/portal/.next/server/app/rules/new.html +1 -1
  110. package/dist/portal/apps/portal/.next/server/app/rules/new.rsc +3 -3
  111. package/dist/portal/apps/portal/.next/server/app/rules/pipelines.html +1 -1
  112. package/dist/portal/apps/portal/.next/server/app/rules/pipelines.rsc +3 -3
  113. package/dist/portal/apps/portal/.next/server/app/rules.html +1 -1
  114. package/dist/portal/apps/portal/.next/server/app/rules.rsc +3 -3
  115. package/dist/portal/apps/portal/.next/server/app/sessions.html +1 -1
  116. package/dist/portal/apps/portal/.next/server/app/sessions.rsc +3 -3
  117. package/dist/portal/apps/portal/.next/server/app/settings/github.html +1 -1
  118. package/dist/portal/apps/portal/.next/server/app/settings/github.rsc +3 -3
  119. package/dist/portal/apps/portal/.next/server/app/settings/installations.html +1 -1
  120. package/dist/portal/apps/portal/.next/server/app/settings/installations.rsc +2 -2
  121. package/dist/portal/apps/portal/.next/server/app/settings/keys.html +1 -1
  122. package/dist/portal/apps/portal/.next/server/app/settings/keys.rsc +3 -3
  123. package/dist/portal/apps/portal/.next/server/app/settings/members.html +1 -1
  124. package/dist/portal/apps/portal/.next/server/app/settings/members.rsc +3 -3
  125. package/dist/portal/apps/portal/.next/server/app/settings/orgs/new.html +1 -1
  126. package/dist/portal/apps/portal/.next/server/app/settings/orgs/new.rsc +3 -3
  127. package/dist/portal/apps/portal/.next/server/app/settings.html +1 -1
  128. package/dist/portal/apps/portal/.next/server/app/settings.rsc +3 -3
  129. package/dist/portal/apps/portal/.next/server/app/skills.html +1 -1
  130. package/dist/portal/apps/portal/.next/server/app/skills.rsc +3 -3
  131. package/dist/portal/apps/portal/.next/server/app/sprints.html +1 -1
  132. package/dist/portal/apps/portal/.next/server/app/sprints.rsc +3 -3
  133. package/dist/portal/apps/portal/.next/server/app/templates.html +1 -1
  134. package/dist/portal/apps/portal/.next/server/app/templates.rsc +3 -3
  135. package/dist/portal/apps/portal/.next/server/app-paths-manifest.json +18 -18
  136. package/dist/portal/apps/portal/.next/server/chunks/1522.js +1 -1
  137. package/dist/portal/apps/portal/.next/server/next-font-manifest.js +1 -1
  138. package/dist/portal/apps/portal/.next/server/next-font-manifest.json +1 -1
  139. package/dist/portal/apps/portal/.next/server/pages/404.html +1 -1
  140. package/dist/portal/apps/portal/.next/server/pages/500.html +1 -1
  141. package/dist/portal/apps/portal/.next/server/pages-manifest.json +1 -1
  142. package/dist/portal/apps/portal/.next/static/chunks/380-71bdca6a9260da3e.js +1 -0
  143. package/dist/portal/apps/portal/.next/static/chunks/7525-85f4ca4276511230.js +1 -0
  144. package/dist/portal/apps/portal/.next/static/chunks/7889-a8be276e20a74863.js +1 -0
  145. package/dist/portal/apps/portal/.next/static/chunks/8744-29d969a2ddf40afe.js +1 -0
  146. package/dist/portal/apps/portal/.next/static/chunks/{8934-bb365eb647fb2d5a.js → 8934-9fbad2b348b6ada1.js} +1 -1
  147. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/codemap/page-e85b24075b2ae8e9.js +1 -0
  148. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/dashboard/page-701be25e4930fcb6.js +1 -0
  149. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/history/{page-264989cf873cd3de.js → page-0275ca43fdd64bf2.js} +1 -1
  150. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/layout-4232b69653c5fbbf.js +1 -0
  151. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/loop/page-c3f658ffb8d7397b.js +1 -0
  152. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/mcps/[name]/page-f5283ca4a2a1141b.js +1 -0
  153. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/mcps/catalog/page-9b228ecfe1982eba.js +1 -0
  154. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/mcps/page-d8028301dcd11348.js +1 -0
  155. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/memory/page-34fe9bf93ef853d0.js +1 -0
  156. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/memory/settings/page-5c9c471c9425d814.js +1 -0
  157. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/memory/timeline/page-590f707b60b9ba47.js +1 -0
  158. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/notifications/page-46a9b033af7430e6.js +1 -0
  159. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/parallel/{page-85690140ff82dd58.js → page-49a26690ced20482.js} +1 -1
  160. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/repos/page-155cd1007250e5da.js +1 -0
  161. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/review/config/page-5ffb558d24a57b2c.js +1 -0
  162. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/review/queue/page-9fe0df848d23c383.js +1 -0
  163. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/rules/page-e17685f3220da942.js +1 -0
  164. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/rules/pipelines/page-589f30a41f066568.js +1 -0
  165. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/sessions/page-4ff5d7490cc0d260.js +1 -0
  166. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/settings/page-045a30e0bd843279.js +1 -0
  167. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/skills/page-2bd816bd8e62dc04.js +1 -0
  168. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/templates/page-28a51e2788c5798d.js +1 -0
  169. package/dist/portal/package.json +1 -1
  170. package/dist/{start-DWZHVBUO.js → start-6SLTMLI4.js} +1 -1
  171. package/dist/{update-IBPDEBEK.js → update-563P3ZIS.js} +1 -1
  172. package/dist/{version-checker-XKFQNN3I.js → version-checker-JHHM4OTR.js} +1 -1
  173. package/package.json +6 -6
  174. package/dist/portal/apps/portal/.next/static/chunks/380-52bab5fc966d7cf9.js +0 -1
  175. package/dist/portal/apps/portal/.next/static/chunks/7525-d6350803a451284c.js +0 -1
  176. package/dist/portal/apps/portal/.next/static/chunks/7889-a3331988a8344d05.js +0 -1
  177. package/dist/portal/apps/portal/.next/static/chunks/8744-d545a53c9709467b.js +0 -1
  178. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/codemap/page-bf1ece66c1b05822.js +0 -1
  179. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/dashboard/page-936391d6b330f0cc.js +0 -1
  180. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/layout-05fc9732a636a609.js +0 -1
  181. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/loop/page-faeaacd95742c754.js +0 -1
  182. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/mcps/[name]/page-f24841b78e8c05c0.js +0 -1
  183. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/mcps/catalog/page-2ff0e6b6a5d76dac.js +0 -1
  184. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/mcps/page-2476b9c29c44c372.js +0 -1
  185. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/memory/page-79f977cd348c57ae.js +0 -1
  186. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/memory/settings/page-a3be96ef297c8e33.js +0 -1
  187. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/memory/timeline/page-30db4506366d09f4.js +0 -1
  188. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/notifications/page-df5f393a51d8e17b.js +0 -1
  189. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/repos/page-a0bcc68a119f63e1.js +0 -1
  190. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/review/config/page-770321f5a71a29a3.js +0 -1
  191. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/review/queue/page-33687733a5398264.js +0 -1
  192. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/rules/page-ac19551ab9f2128d.js +0 -1
  193. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/rules/pipelines/page-96ecfcce3a60ebb2.js +0 -1
  194. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/sessions/page-6b199747e9f587de.js +0 -1
  195. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/settings/page-ec4076cedf8df275.js +0 -1
  196. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/skills/page-81f63d5d894b0b03.js +0 -1
  197. package/dist/portal/apps/portal/.next/static/chunks/app/(dashboard)/templates/page-263e03b6690d36f5.js +0 -1
  198. /package/dist/portal/apps/portal/.next/static/{02AzZdYDA5HVAwITp37Ql → p-7mo3JdIgTzhlpqhShmK}/_buildManifest.js +0 -0
  199. /package/dist/portal/apps/portal/.next/static/{02AzZdYDA5HVAwITp37Ql → p-7mo3JdIgTzhlpqhShmK}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><!--02AzZdYDA5HVAwITp37Ql--><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/cf8a94d8f0136ff9.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/d8d33dd99ab06e3d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-474e7ba2d816be4a.js"/><script src="/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/_next/static/chunks/9743-95b86e1be6debaf2.js" async=""></script><script src="/_next/static/chunks/main-app-c430e897f4183333.js" async=""></script><script src="/_next/static/chunks/app/error-78a7677dcd24ca1b.js" async=""></script><script src="/_next/static/chunks/5935-a39f44cf0cbaf28b.js" async=""></script><script src="/_next/static/chunks/8934-bb365eb647fb2d5a.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-05fc9732a636a609.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/settings/page-ec4076cedf8df275.js" async=""></script><meta name="next-size-adjust" content=""/><title>ULPI — The Intelligence Layer for AI Coding Agents</title><meta name="description" content="Free intelligence and governance layer for AI coding agents. Semantic code search, agent memory, dependency graphs, guard rules, session history — zero infrastructure, everything stored in git."/><meta name="keywords" content="AI coding agent,Claude Code,guard rules,code review,plan review,CodeMap,semantic code search,agent memory,dependency graph,DepGraph,shadow branches,zero infrastructure,MCP tools,developer tools,ULPI"/><meta property="og:title" content="ULPI — The Intelligence Layer for AI Coding Agents"/><meta property="og:description" content="Free intelligence and governance layer for AI coding agents. Zero infrastructure — everything stored in git shadow branches."/><meta property="og:url" content="https://app.ulpi.io"/><meta property="og:site_name" content="ULPI"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="ULPI — The Intelligence Layer for AI Coding Agents"/><meta name="twitter:description" content="Free intelligence and governance layer for AI coding agents. Zero infrastructure — everything stored in git shadow branches."/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_3c557b font-sans bg-surface-950 text-gray-100 antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen items-center justify-center bg-surface-950"><div class="flex flex-col items-center gap-4"><div class="h-8 w-8 animate-spin rounded-full border-2 border-primary-500 border-t-transparent"></div><p class="text-sm text-gray-400">Loading...</p></div></div><script src="/_next/static/chunks/webpack-474e7ba2d816be4a.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8954,[],\"\"]\n3:I[7704,[\"8039\",\"static/chunks/app/error-78a7677dcd24ca1b.js\"],\"default\"]\n4:I[5640,[],\"\"]\n5:I[4033,[],\"ClientSegmentRoot\"]\n6:I[8535,[\"5935\",\"static/chunks/5935-a39f44cf0cbaf28b.js\",\"8934\",\"static/chunks/8934-bb365eb647fb2d5a.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-05fc9732a636a609.js\"],\"default\"]\n8:I[3339,[],\"ClientPageRoot\"]\n9:I[27,[\"5935\",\"static/chunks/5935-a39f44cf0cbaf28b.js\",\"8934\",\"static/chunks/8934-bb365eb647fb2d5a.js\",\"1670\",\"static/chunks/app/(dashboard)/settings/page-ec4076cedf8df275.js\"],\"default\"]\nc:I[2051,[],\"OutletBoundary\"]\ne:I[6658,[],\"AsyncMetadataOutlet\"]\n10:I[2051,[],\"ViewportBoundary\"]\n12:I[2051,[],\"MetadataBoundary\"]\n13:\"$Sreact.suspense\"\n15:I[7698,[],\"\"]\n:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/cf8a94d8f0136ff9.css\",\"style\"]\n:HL[\"/_next/static/css/d8d33dd99ab06e3d.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"02AzZdYDA5HVAwITp37Ql\",\"p\":\"\",\"c\":[\"\",\"settings\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"(dashboard)\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/cf8a94d8f0136ff9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d8d33dd99ab06e3d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_3c557b font-sans bg-surface-950 text-gray-100 antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$3\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[\"(dashboard)\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"slots\":{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"params\":{},\"promise\":\"$@7\"}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L8\",null,{\"Component\":\"$9\",\"searchParams\":{},\"params\":\"$0:f:0:1:2:children:1:props:children:1:props:params\",\"promises\":[\"$@a\",\"$@b\"]}],null,[\"$\",\"$Lc\",null,{\"children\":[\"$Ld\",[\"$\",\"$Le\",null,{\"promise\":\"$@f\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L12\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$13\",null,{\"fallback\":null,\"children\":\"$L14\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:\"$0:f:0:1:2:children:1:props:children:1:props:params\"\na:{}\nb:\"$0:f:0:1:2:children:1:props:children:1:props:params\"\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nd:null\n"])</script><script>self.__next_f.push([1,"f:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"ULPI — The Intelligence Layer for AI Coding Agents\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Free intelligence and governance layer for AI coding agents. Semantic code search, agent memory, dependency graphs, guard rules, session history — zero infrastructure, everything stored in git.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"AI coding agent,Claude Code,guard rules,code review,plan review,CodeMap,semantic code search,agent memory,dependency graph,DepGraph,shadow branches,zero infrastructure,MCP tools,developer tools,ULPI\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"ULPI — The Intelligence Layer for AI Coding Agents\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Free intelligence and governance layer for AI coding agents. Zero infrastructure — everything stored in git shadow branches.\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:url\",\"content\":\"https://app.ulpi.io\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:site_name\",\"content\":\"ULPI\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:title\",\"content\":\"ULPI — The Intelligence Layer for AI Coding Agents\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:description\",\"content\":\"Free intelligence and governance layer for AI coding agents. Zero infrastructure — everything stored in git shadow branches.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"14:\"$f:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--p_7mo3JdIgTzhlpqhShmK--><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/cf8a94d8f0136ff9.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/d8d33dd99ab06e3d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-474e7ba2d816be4a.js"/><script src="/_next/static/chunks/8e6518bb-ac69cad76942bec4.js" async=""></script><script src="/_next/static/chunks/9743-95b86e1be6debaf2.js" async=""></script><script src="/_next/static/chunks/main-app-c430e897f4183333.js" async=""></script><script src="/_next/static/chunks/app/error-78a7677dcd24ca1b.js" async=""></script><script src="/_next/static/chunks/5935-a39f44cf0cbaf28b.js" async=""></script><script src="/_next/static/chunks/8934-9fbad2b348b6ada1.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-4232b69653c5fbbf.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/settings/page-045a30e0bd843279.js" async=""></script><meta name="next-size-adjust" content=""/><title>ULPI — The Intelligence Layer for AI Coding Agents</title><meta name="description" content="Free intelligence and governance layer for AI coding agents. Semantic code search, agent memory, dependency graphs, guard rules, session history — zero infrastructure, everything stored in git."/><meta name="keywords" content="AI coding agent,Claude Code,guard rules,code review,plan review,CodeMap,semantic code search,agent memory,dependency graph,DepGraph,shadow branches,zero infrastructure,MCP tools,developer tools,ULPI"/><meta property="og:title" content="ULPI — The Intelligence Layer for AI Coding Agents"/><meta property="og:description" content="Free intelligence and governance layer for AI coding agents. Zero infrastructure — everything stored in git shadow branches."/><meta property="og:url" content="https://app.ulpi.io"/><meta property="og:site_name" content="ULPI"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="ULPI — The Intelligence Layer for AI Coding Agents"/><meta name="twitter:description" content="Free intelligence and governance layer for AI coding agents. Zero infrastructure — everything stored in git shadow branches."/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_3c557b font-sans bg-surface-950 text-gray-100 antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen bg-surface-950"><button class="fixed left-4 top-4 z-40 rounded-lg bg-surface-800 p-2 text-gray-400 shadow-lg lg:hidden"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button><aside class="fixed inset-y-0 left-0 z-50 w-60 border-r border-white/[0.06] bg-surface-900 transition-transform lg:hidden -translate-x-full"><button class="absolute right-3 top-3 rounded p-1 text-gray-500 hover:text-white"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"></path></svg></button><div class="flex h-full flex-col"><div class="relative border-b border-white/[0.06] px-3 py-3"><button class="flex w-full items-center gap-2.5 rounded-lg px-2 py-1.5 transition-colors hover:bg-white/[0.04]"><div class="flex h-6 w-6 shrink-0 items-center justify-center rounded bg-primary-500"><span class="text-[10px] font-bold text-white">U</span></div><span class="flex-1 truncate text-left text-sm font-medium text-gray-200">No repo</span><span class="rounded-full bg-primary-500/20 px-1.5 py-0.5 text-[9px] font-medium text-primary-400">Local</span></button></div><nav class="flex-1 overflow-y-auto px-3 pt-3 pb-2"><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Overview</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/dashboard"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25a2.25 2.25 0 0 1-2.25-2.25v-2.25Z"></path></svg></span><span class="flex-1">Dashboard</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">D</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Execution</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/prd"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v6m3-3H9m1.5-12H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"></path></svg></span><span class="flex-1">PRD</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">Q</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/loop"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182"></path></svg></span><span class="flex-1">Loop</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">L</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/parallel"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3 7.5L7.5 3m0 0L12 7.5M7.5 3v13.5m13.5-6L16.5 15m0 0L12 10.5m4.5 4.5V1.5"></path></svg></span><span class="flex-1">Parallel</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">A</kbd></span></a><div class="group flex items-center rounded-md text-sm opacity-50 pointer-events-none text-gray-500 gap-2.5 px-2 py-1.5"><span class="text-gray-600 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986V5.653Z"></path></svg></span><span class="flex-1">Jobs</span><span class="ml-auto rounded-full bg-primary-500/15 px-1.5 py-0.5 text-[9px] font-medium text-primary-400">Cloud</span></div><div class="group flex items-center rounded-md text-sm opacity-50 pointer-events-none text-gray-500 gap-2.5 px-2 py-1.5"><span class="text-gray-600 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z"></path></svg></span><span class="flex-1">Sprints</span><span class="ml-auto rounded-full bg-primary-500/15 px-1.5 py-0.5 text-[9px] font-medium text-primary-400">Cloud</span></div></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Governance</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/rules"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"></path></svg></span><span class="flex-1">Rules</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">R</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/templates"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"></path></svg></span><span class="flex-1">Templates</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">T</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/skills"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 0 0-2.455 2.456Z"></path></svg></span><span class="flex-1">Skills</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">K</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Intelligence</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/codemap"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"></path></svg></span><span class="flex-1">CodeMap</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">C</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/memory"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg></span><span class="flex-1">Memory</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">M</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/mcps"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.959.401v0a.656.656 0 0 0 .658-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z"></path></svg></span><span class="flex-1">MCP Tools</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">I</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Monitoring</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/sessions"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M6.75 7.5l3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg></span><span class="flex-1">Sessions</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">E</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/history"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path></svg></span><span class="flex-1">History</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">H</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Review</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/review"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z"></path></svg></span><span class="flex-1">Review Queue</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">V</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Repos</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/repos"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"></path></svg></span><span class="flex-1">Repos</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">P</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Settings</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 border-l-2 border-primary-500 bg-white/[0.04] pl-[6px] text-white" href="/settings"><span class="text-primary-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"></path><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></svg></span><span class="flex-1">Settings</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">S</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/notifications"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0"></path></svg></span><span class="flex-1">Notifications</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">N</kbd></span></a><div class="group flex items-center rounded-md text-sm opacity-50 pointer-events-none text-gray-500 gap-2.5 px-2 py-1.5"><span class="text-gray-600 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z"></path></svg></span><span class="flex-1">Billing</span><span class="ml-auto rounded-full bg-primary-500/15 px-1.5 py-0.5 text-[9px] font-medium text-primary-400">Cloud</span></div></div></div></nav><div class="hidden border-t border-white/[0.06] px-3 py-2 lg:block"><button class="flex w-full items-center justify-center rounded-md py-1 text-gray-600 transition-colors hover:bg-white/[0.03] hover:text-gray-400"><svg class="h-3.5 w-3.5 transition-transform " fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5 8.25 12l7.5-7.5"></path></svg></button></div></div></aside><aside class="hidden shrink-0 border-r border-white/[0.06] bg-surface-900 lg:block w-60 transition-all duration-200"><div class="flex h-full flex-col"><div class="relative border-b border-white/[0.06] px-3 py-3"><button class="flex w-full items-center gap-2.5 rounded-lg px-2 py-1.5 transition-colors hover:bg-white/[0.04]"><div class="flex h-6 w-6 shrink-0 items-center justify-center rounded bg-primary-500"><span class="text-[10px] font-bold text-white">U</span></div><span class="flex-1 truncate text-left text-sm font-medium text-gray-200">No repo</span><span class="rounded-full bg-primary-500/20 px-1.5 py-0.5 text-[9px] font-medium text-primary-400">Local</span></button></div><nav class="flex-1 overflow-y-auto px-3 pt-3 pb-2"><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Overview</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/dashboard"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25a2.25 2.25 0 0 1-2.25-2.25v-2.25Z"></path></svg></span><span class="flex-1">Dashboard</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">D</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Execution</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/prd"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v6m3-3H9m1.5-12H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"></path></svg></span><span class="flex-1">PRD</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">Q</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/loop"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182"></path></svg></span><span class="flex-1">Loop</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">L</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/parallel"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3 7.5L7.5 3m0 0L12 7.5M7.5 3v13.5m13.5-6L16.5 15m0 0L12 10.5m4.5 4.5V1.5"></path></svg></span><span class="flex-1">Parallel</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">A</kbd></span></a><div class="group flex items-center rounded-md text-sm opacity-50 pointer-events-none text-gray-500 gap-2.5 px-2 py-1.5"><span class="text-gray-600 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986V5.653Z"></path></svg></span><span class="flex-1">Jobs</span><span class="ml-auto rounded-full bg-primary-500/15 px-1.5 py-0.5 text-[9px] font-medium text-primary-400">Cloud</span></div><div class="group flex items-center rounded-md text-sm opacity-50 pointer-events-none text-gray-500 gap-2.5 px-2 py-1.5"><span class="text-gray-600 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z"></path></svg></span><span class="flex-1">Sprints</span><span class="ml-auto rounded-full bg-primary-500/15 px-1.5 py-0.5 text-[9px] font-medium text-primary-400">Cloud</span></div></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Governance</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/rules"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"></path></svg></span><span class="flex-1">Rules</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">R</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/templates"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"></path></svg></span><span class="flex-1">Templates</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">T</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/skills"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 0 0-2.455 2.456Z"></path></svg></span><span class="flex-1">Skills</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">K</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Intelligence</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/codemap"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"></path></svg></span><span class="flex-1">CodeMap</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">C</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/memory"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg></span><span class="flex-1">Memory</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">M</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/mcps"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.959.401v0a.656.656 0 0 0 .658-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z"></path></svg></span><span class="flex-1">MCP Tools</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">I</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Monitoring</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/sessions"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M6.75 7.5l3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg></span><span class="flex-1">Sessions</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">E</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/history"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path></svg></span><span class="flex-1">History</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">H</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Review</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/review"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z"></path></svg></span><span class="flex-1">Review Queue</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">V</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Repos</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/repos"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"></path></svg></span><span class="flex-1">Repos</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">P</kbd></span></a></div></div><div class="mt-4 first:mt-0"><p class="mb-1.5 px-2 text-[10px] font-medium uppercase tracking-widest text-gray-600">Settings</p><div class="space-y-0.5"><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 border-l-2 border-primary-500 bg-white/[0.04] pl-[6px] text-white" href="/settings"><span class="text-primary-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"></path><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></svg></span><span class="flex-1">Settings</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">S</kbd></span></a><a class="group flex items-center rounded-md text-sm transition-colors gap-2.5 px-2 py-1.5 text-gray-400 hover:bg-white/[0.03] hover:text-gray-200" href="/notifications"><span class="text-gray-500 group-hover:text-gray-400 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0"></path></svg></span><span class="flex-1">Notifications</span><span class="flex items-center gap-0.5"><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">⌘</kbd><kbd class="inline-flex h-4 min-w-[16px] items-center justify-center rounded border border-white/[0.06] bg-surface-800 px-1 text-[9px] font-medium text-gray-600 group-hover:text-gray-500">N</kbd></span></a><div class="group flex items-center rounded-md text-sm opacity-50 pointer-events-none text-gray-500 gap-2.5 px-2 py-1.5"><span class="text-gray-600 "><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z"></path></svg></span><span class="flex-1">Billing</span><span class="ml-auto rounded-full bg-primary-500/15 px-1.5 py-0.5 text-[9px] font-medium text-primary-400">Cloud</span></div></div></div></nav><div class="hidden border-t border-white/[0.06] px-3 py-2 lg:block"><button class="flex w-full items-center justify-center rounded-md py-1 text-gray-600 transition-colors hover:bg-white/[0.03] hover:text-gray-400"><svg class="h-3.5 w-3.5 transition-transform " fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5 8.25 12l7.5-7.5"></path></svg></button></div></div></aside><main class="flex-1 overflow-y-auto"><div class="px-4 py-4 lg:px-6"><div><div class="sticky top-0 z-10 -mx-6 -mt-6 mb-6 bg-surface-950/80 px-6 pb-4 pt-6 backdrop-blur-sm border-b border-white/[0.04]"><h1 class="text-xl font-semibold text-white">Settings</h1><p class="mt-0.5 text-sm text-gray-400">Configure ULPI preferences</p></div><div class="flex gap-8"><nav class="hidden lg:block sticky top-24 self-start space-y-0.5 w-48 shrink-0"><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors bg-primary-500/10 text-primary-400 font-medium">General</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">API Keys</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">AI &amp; Embeddings</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">Agent</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">Loop Engine</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">History</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">CodeMap</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">Memory</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">Sandbox</button><button class="block w-full text-left rounded-lg px-3 py-1.5 text-xs transition-colors text-gray-500 hover:text-gray-300 hover:bg-surface-800">Remote</button></nav><div class="flex-1 min-w-0 space-y-8"><section id="general"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">General</h2><p class="text-xs text-gray-500">Version and identity</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><div class="flex items-center justify-between"><div><p class="text-sm text-gray-400">Version:<!-- --> <span class="font-mono font-medium text-white">...</span></p></div></div><div class="border-t border-white/[0.04] pt-4"><div class="mb-2"><p class="text-sm font-medium text-white">Username</p><p class="text-xs text-gray-500 mt-0.5">Used for per-user branch naming. Leave empty to auto-detect.</p></div><div class="flex items-center gap-3"><input type="text" placeholder="e.g. your-github-username" class="flex-1 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-2 text-sm text-white placeholder-gray-600 outline-none focus:border-primary-500/50 disabled:opacity-50" value=""/></div></div></div></section><section id="api-keys"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">API Keys</h2><p class="text-xs text-gray-500">Manage provider API keys</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><p class="text-xs text-gray-600">Loading API keys...</p><p class="text-[10px] text-gray-600 mt-3">Keys are stored in ~/.ulpi/settings.json. Environment variables (OPENAI_API_KEY, ANTHROPIC_API_KEY) are used as fallback.</p></div></section><section id="embeddings"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">AI &amp; Embeddings</h2><p class="text-xs text-gray-500">Embedding provider configuration</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><p class="text-xs text-gray-600">Loading embedding configuration...</p></div></section><section id="agent"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Zm.75-12h9v9h-9v-9Z"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">Agent</h2><p class="text-xs text-gray-500">Default agent provider and model</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><div class="flex items-center justify-between"><div><p class="text-sm text-white">Provider</p><p class="text-xs text-gray-500">AI agent provider for loop execution</p></div><select class="rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white outline-none focus:border-primary-500/50"><option value="claude" selected="">Claude Code</option><option value="gemini">Gemini CLI</option><option value="opencode">OpenCode</option><option value="codex">Codex</option><option value="kiro">Kiro</option><option value="factory-droid">Factory Droid</option></select></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Model</p><p class="text-xs text-gray-500">Model to use for task execution</p></div><select class="rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white outline-none focus:border-primary-500/50"><option value="claude-sonnet-4-6" selected="">Sonnet 4.6</option><option value="claude-opus-4-6">Opus 4.6</option><option value="claude-haiku-4-5-20251001">Haiku 4.5</option><option value="claude-opus-4-5-20251101">Opus 4.5</option><option value="claude-sonnet-4-5-20250929">Sonnet 4.5</option></select></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Max Tokens</p><p class="text-xs text-gray-500">Maximum output tokens per request</p></div><input type="number" min="1000" max="200000" step="1000" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="16000"/></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Temperature</p><p class="text-xs text-gray-500">Sampling temperature (0-100, divided by 100)</p></div><input type="number" min="0" max="100" step="5" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="0"/></div></div></section><section id="loop"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">Loop Engine</h2><p class="text-xs text-gray-500">Execution loop defaults</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><div class="flex items-center justify-between"><div><p class="text-sm text-white">Max Retries</p><p class="text-xs text-gray-500">Retries per task on failure</p></div><input type="number" min="0" max="20" step="1" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="3"/></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Retry Delay (ms)</p><p class="text-xs text-gray-500">Wait between retries</p></div><input type="number" min="0" max="60000" step="500" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="1000"/></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Timeout (ms)</p><p class="text-xs text-gray-500">Max time per task execution</p></div><input type="number" min="10000" max="3600000" step="10000" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="300000"/></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Max Iterations</p><p class="text-xs text-gray-500">Maximum loop iterations per run</p></div><input type="number" min="1" max="500" step="1" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="50"/></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Error Strategy</p><p class="text-xs text-gray-500">How to handle task failures</p></div><select class="rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white outline-none focus:border-primary-500/50"><option value="retry" selected="">Retry</option><option value="skip">Skip</option><option value="abort">Abort</option></select></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Auto-commit</p><p class="text-xs text-gray-500">Automatically commit after each task</p></div><button type="button" role="switch" aria-checked="false" class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors bg-surface-700"><span class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm transition-transform translate-x-0"></span></button></div></div></section><section id="history"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">History</h2><p class="text-xs text-gray-500">Shadow branch session recording</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><div class="flex items-center justify-between"><div><p class="text-sm text-gray-400">Status:<!-- --> <span class="font-medium text-gray-600">Not initialized</span></p></div><button class="rounded-lg bg-primary-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50">Initialize</button></div></div></section><section id="codemap"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5M9 11.25v1.5M12 9v3.75m3-6v6"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">CodeMap</h2><p class="text-xs text-gray-500">Semantic code search and indexing</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><div class="flex items-center justify-between"><div><p class="text-sm text-white">Auto-index</p><p class="text-xs text-gray-500">Automatically index files on change</p></div><button type="button" role="switch" aria-checked="true" class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors bg-primary-500"><span class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm transition-transform translate-x-4"></span></button></div><div><p class="text-sm text-white">Exclude patterns</p><p class="text-xs text-gray-500 mb-2">Glob patterns to exclude from indexing (gitignore-style)</p><div class="flex flex-wrap gap-1.5 mb-2"></div><input type="text" placeholder="Type and press Enter..." class="w-full rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white placeholder-gray-600 outline-none focus:border-primary-500/50" value=""/></div></div></section><section id="memory"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">Memory</h2><p class="text-xs text-gray-500">Agent memory capture and retrieval</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><div class="border-t border-white/[0.04] pt-4"></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Enabled</p><p class="text-xs text-gray-500">Enable memory capture and retrieval</p></div><button type="button" role="switch" aria-checked="true" class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors bg-primary-500"><span class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm transition-transform translate-x-4"></span></button></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Auto-classify</p><p class="text-xs text-gray-500">Automatically classify new sessions to discover memories</p></div><button type="button" role="switch" aria-checked="true" class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors bg-primary-500"><span class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm transition-transform translate-x-4"></span></button></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Capture Mode</p><p class="text-xs text-gray-500">How memories are captured</p></div><select class="rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white outline-none focus:border-primary-500/50"><option value="auto" selected="">Auto</option><option value="manual">Manual</option><option value="off">Off</option></select></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Surface on start</p><p class="text-xs text-gray-500">Show relevant memories at session start</p></div><button type="button" role="switch" aria-checked="true" class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors bg-primary-500"><span class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm transition-transform translate-x-4"></span></button></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Surface limit</p><p class="text-xs text-gray-500">Max memories to surface per session</p></div><input type="number" min="1" max="50" step="1" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="5"/></div><div class="border-t border-white/[0.04] pt-4"><p class="text-xs font-medium text-gray-400 mb-3">Retention</p><div class="space-y-4"><div class="flex items-center justify-between"><div><p class="text-sm text-white">Max memories</p><p class="text-xs text-gray-500">Maximum number of memories to keep</p></div><input type="number" min="10" max="100000" step="100" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="1000"/></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Max age (days)</p><p class="text-xs text-gray-500">Auto-delete memories older than this</p></div><input type="number" min="7" max="3650" step="30" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="365"/></div></div></div><div><p class="text-sm text-white">Redact patterns</p><p class="text-xs text-gray-500 mb-2">Regex patterns to redact from captured content</p><div class="flex flex-wrap gap-1.5 mb-2"></div><input type="text" placeholder="Type and press Enter..." class="w-full rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white placeholder-gray-600 outline-none focus:border-primary-500/50" value=""/></div><div class="border-t border-white/[0.04] pt-4"><p class="text-xs font-medium text-gray-400 mb-3">Actions</p><div class="flex flex-wrap gap-2"><button class="inline-flex items-center gap-2 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs font-medium text-gray-300 transition-colors hover:bg-surface-700 hover:text-white disabled:cursor-not-allowed disabled:opacity-50">Reindex</button><button class="inline-flex items-center gap-2 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs font-medium text-gray-300 transition-colors hover:bg-surface-700 hover:text-white disabled:cursor-not-allowed disabled:opacity-50">Export</button><button class="inline-flex items-center gap-2 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs font-medium text-gray-300 transition-colors hover:bg-surface-700 hover:text-white disabled:cursor-not-allowed disabled:opacity-50">Import</button></div></div></div></section><section id="sandbox"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m21 7.5-2.25-1.313M21 7.5v2.25m0-2.25-2.25 1.313M3 7.5l2.25-1.313M3 7.5l2.25 1.313M3 7.5v2.25m9 3 2.25-1.313M12 12.75l-2.25-1.313M12 12.75V15m0 6.75 2.25-1.313M12 21.75V19.5m0 2.25-2.25-1.313m0-16.875L12 2.25l2.25 1.313M21 14.25v2.25l-2.25 1.313m-13.5 0L3 16.5v-2.25"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">Sandbox</h2><p class="text-xs text-gray-500">Sandbox and container isolation</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><div class="flex items-center justify-between"><div><p class="text-sm text-white">Enabled</p><p class="text-xs text-gray-500">Run agent tasks in a sandbox</p></div><button type="button" role="switch" aria-checked="false" class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors bg-surface-700"><span class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm transition-transform translate-x-0"></span></button></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Mode</p><p class="text-xs text-gray-500">Sandbox technology to use</p></div><select class="rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white outline-none focus:border-primary-500/50"><option value="none" selected="">None</option><option value="bwrap">Bubblewrap (bwrap)</option><option value="sandbox-exec">sandbox-exec (macOS)</option></select></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Allow network</p><p class="text-xs text-gray-500">Allow network access inside sandbox</p></div><button type="button" role="switch" aria-checked="false" class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors bg-surface-700"><span class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm transition-transform translate-x-0"></span></button></div><div><p class="text-sm text-white">Allowed paths</p><p class="text-xs text-gray-500 mb-2">Paths accessible inside the sandbox</p><div class="flex flex-wrap gap-1.5 mb-2"></div><input type="text" placeholder="Type and press Enter..." class="w-full rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white placeholder-gray-600 outline-none focus:border-primary-500/50" value=""/></div><div><p class="text-sm text-white">Read-only paths</p><p class="text-xs text-gray-500 mb-2">Paths mounted read-only in sandbox</p><div class="flex flex-wrap gap-1.5 mb-2"></div><input type="text" placeholder="Type and press Enter..." class="w-full rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-xs text-white placeholder-gray-600 outline-none focus:border-primary-500/50" value=""/></div></div></section><section id="remote"><button type="button" class="flex w-full items-center gap-3 mb-4 group cursor-pointer"><div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"></path></svg></div><div class="text-left flex-1"><h2 class="text-sm font-semibold text-white">Remote</h2><p class="text-xs text-gray-500">Remote agent connections</p></div><svg class="h-4 w-4 shrink-0 text-gray-600 transition-transform rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path></svg></button><div class="rounded-xl border border-white/[0.06] bg-surface-900 p-5 space-y-4"><div class="flex items-center justify-between"><div><p class="text-sm text-white">Enabled</p><p class="text-xs text-gray-500">Accept remote agent connections via WebSocket</p></div><button type="button" role="switch" aria-checked="false" class="relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors bg-surface-700"><span class="pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow-sm transition-transform translate-x-0"></span></button></div><div class="flex items-center justify-between"><div><p class="text-sm text-white">Port</p><p class="text-xs text-gray-500">WebSocket server port</p></div><input type="number" min="1024" max="65535" step="1" class="w-24 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white text-right outline-none focus:border-primary-500/50" value="9900"/></div><div class="flex items-center justify-between gap-4"><div class="min-w-0"><p class="text-sm text-white">Host</p><p class="text-xs text-gray-500">Bind address for the remote server</p></div><input type="text" placeholder="127.0.0.1" class="w-48 rounded-lg border border-white/[0.08] bg-surface-800 px-3 py-1.5 text-sm text-white placeholder-gray-600 outline-none focus:border-primary-500/50" value="127.0.0.1"/></div></div></section><div><a class="group flex items-center gap-4 rounded-xl border border-white/[0.06] bg-surface-900 p-4 transition-colors hover:bg-surface-850" href="/notifications"><div class="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-surface-800 text-gray-500 group-hover:text-gray-400 transition-colors"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-sm font-medium text-gray-200 group-hover:text-white transition-colors">Notifications</h3><p class="mt-0.5 text-xs text-gray-500">Configure notification channels and routing</p></div><svg class="h-4 w-4 shrink-0 text-gray-700 group-hover:text-gray-400 transition-colors" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"></path></svg></a></div><div class="border-t border-white/[0.04] pt-4"><div class="flex items-center gap-2 text-xs text-emerald-400/70"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5"></path></svg>Settings saved automatically</div></div></div></div></div><!--$--><!--/$--></div></main></div><script src="/_next/static/chunks/webpack-474e7ba2d816be4a.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8954,[],\"\"]\n3:I[7704,[\"8039\",\"static/chunks/app/error-78a7677dcd24ca1b.js\"],\"default\"]\n4:I[5640,[],\"\"]\n5:I[4033,[],\"ClientSegmentRoot\"]\n6:I[8535,[\"5935\",\"static/chunks/5935-a39f44cf0cbaf28b.js\",\"8934\",\"static/chunks/8934-9fbad2b348b6ada1.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-4232b69653c5fbbf.js\"],\"default\"]\n8:I[3339,[],\"ClientPageRoot\"]\n9:I[27,[\"5935\",\"static/chunks/5935-a39f44cf0cbaf28b.js\",\"8934\",\"static/chunks/8934-9fbad2b348b6ada1.js\",\"1670\",\"static/chunks/app/(dashboard)/settings/page-045a30e0bd843279.js\"],\"default\"]\nc:I[2051,[],\"OutletBoundary\"]\ne:I[6658,[],\"AsyncMetadataOutlet\"]\n10:I[2051,[],\"ViewportBoundary\"]\n12:I[2051,[],\"MetadataBoundary\"]\n13:\"$Sreact.suspense\"\n15:I[7698,[],\"\"]\n:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/cf8a94d8f0136ff9.css\",\"style\"]\n:HL[\"/_next/static/css/d8d33dd99ab06e3d.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"p-7mo3JdIgTzhlpqhShmK\",\"p\":\"\",\"c\":[\"\",\"settings\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"(dashboard)\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/cf8a94d8f0136ff9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d8d33dd99ab06e3d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_3c557b font-sans bg-surface-950 text-gray-100 antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$3\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[\"(dashboard)\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"slots\":{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"params\":{},\"promise\":\"$@7\"}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L8\",null,{\"Component\":\"$9\",\"searchParams\":{},\"params\":\"$0:f:0:1:2:children:1:props:children:1:props:params\",\"promises\":[\"$@a\",\"$@b\"]}],null,[\"$\",\"$Lc\",null,{\"children\":[\"$Ld\",[\"$\",\"$Le\",null,{\"promise\":\"$@f\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L12\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$13\",null,{\"fallback\":null,\"children\":\"$L14\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:\"$0:f:0:1:2:children:1:props:children:1:props:params\"\na:{}\nb:\"$0:f:0:1:2:children:1:props:children:1:props:params\"\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nd:null\n"])</script><script>self.__next_f.push([1,"f:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"ULPI — The Intelligence Layer for AI Coding Agents\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Free intelligence and governance layer for AI coding agents. Semantic code search, agent memory, dependency graphs, guard rules, session history — zero infrastructure, everything stored in git.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"AI coding agent,Claude Code,guard rules,code review,plan review,CodeMap,semantic code search,agent memory,dependency graph,DepGraph,shadow branches,zero infrastructure,MCP tools,developer tools,ULPI\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"ULPI — The Intelligence Layer for AI Coding Agents\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Free intelligence and governance layer for AI coding agents. Zero infrastructure — everything stored in git shadow branches.\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:url\",\"content\":\"https://app.ulpi.io\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:site_name\",\"content\":\"ULPI\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:title\",\"content\":\"ULPI — The Intelligence Layer for AI Coding Agents\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:description\",\"content\":\"Free intelligence and governance layer for AI coding agents. Zero infrastructure — everything stored in git shadow branches.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"14:\"$f:metadata\"\n"])</script></body></html>
@@ -3,9 +3,9 @@
3
3
  3:I[7704,["8039","static/chunks/app/error-78a7677dcd24ca1b.js"],"default"]
4
4
  4:I[5640,[],""]
5
5
  5:I[4033,[],"ClientSegmentRoot"]
6
- 6:I[8535,["5935","static/chunks/5935-a39f44cf0cbaf28b.js","8934","static/chunks/8934-bb365eb647fb2d5a.js","9305","static/chunks/app/(dashboard)/layout-05fc9732a636a609.js"],"default"]
6
+ 6:I[8535,["5935","static/chunks/5935-a39f44cf0cbaf28b.js","8934","static/chunks/8934-9fbad2b348b6ada1.js","9305","static/chunks/app/(dashboard)/layout-4232b69653c5fbbf.js"],"default"]
7
7
  8:I[3339,[],"ClientPageRoot"]
8
- 9:I[27,["5935","static/chunks/5935-a39f44cf0cbaf28b.js","8934","static/chunks/8934-bb365eb647fb2d5a.js","1670","static/chunks/app/(dashboard)/settings/page-ec4076cedf8df275.js"],"default"]
8
+ 9:I[27,["5935","static/chunks/5935-a39f44cf0cbaf28b.js","8934","static/chunks/8934-9fbad2b348b6ada1.js","1670","static/chunks/app/(dashboard)/settings/page-045a30e0bd843279.js"],"default"]
9
9
  c:I[2051,[],"OutletBoundary"]
10
10
  e:I[6658,[],"AsyncMetadataOutlet"]
11
11
  10:I[2051,[],"ViewportBoundary"]
@@ -16,7 +16,7 @@ e:I[6658,[],"AsyncMetadataOutlet"]
16
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
17
  :HL["/_next/static/css/cf8a94d8f0136ff9.css","style"]
18
18
  :HL["/_next/static/css/d8d33dd99ab06e3d.css","style"]
19
- 0:{"P":null,"b":"02AzZdYDA5HVAwITp37Ql","p":"","c":["","settings"],"i":false,"f":[[["",{"children":["(dashboard)",{"children":["settings",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/cf8a94d8f0136ff9.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/d8d33dd99ab06e3d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"dark","children":["$","body",null,{"className":"__variable_f367f3 __variable_3c557b font-sans bg-surface-950 text-gray-100 antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$3","errorStyles":[],"errorScripts":[],"template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["(dashboard)",["$","$1","c",{"children":[null,["$","$L5",null,{"Component":"$6","slots":{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@7"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L8",null,{"Component":"$9","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@a","$@b"]}],null,["$","$Lc",null,{"children":["$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L12",null,{"children":["$","div",null,{"hidden":true,"children":["$","$13",null,{"fallback":null,"children":"$L14"}]}]}]]}],false]],"m":"$undefined","G":["$15",[]],"s":false,"S":true}
19
+ 0:{"P":null,"b":"p-7mo3JdIgTzhlpqhShmK","p":"","c":["","settings"],"i":false,"f":[[["",{"children":["(dashboard)",{"children":["settings",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/cf8a94d8f0136ff9.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/d8d33dd99ab06e3d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"dark","children":["$","body",null,{"className":"__variable_f367f3 __variable_3c557b font-sans bg-surface-950 text-gray-100 antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$3","errorStyles":[],"errorScripts":[],"template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["(dashboard)",["$","$1","c",{"children":[null,["$","$L5",null,{"Component":"$6","slots":{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@7"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L8",null,{"Component":"$9","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@a","$@b"]}],null,["$","$Lc",null,{"children":["$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L12",null,{"children":["$","div",null,{"hidden":true,"children":["$","$13",null,{"fallback":null,"children":"$L14"}]}]}]]}],false]],"m":"$undefined","G":["$15",[]],"s":false,"S":true}
20
20
  7:"$0:f:0:1:2:children:1:props:children:1:props:params"
21
21
  a:{}
22
22
  b:"$0:f:0:1:2:children:1:props:children:1:props:params"