@jlongo78/agent-spaces 0.9.7 → 0.9.9

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 (643) hide show
  1. package/.next/standalone/.claude/settings.local.json +17 -4
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/app-path-routes-manifest.json +4 -0
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/routes-manifest.json +29 -0
  7. package/.next/standalone/.next/server/app/(desktop)/admin/analytics/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/(desktop)/admin/analytics/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(desktop)/admin/users/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(desktop)/analytics/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/(desktop)/cortex/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(desktop)/network/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(desktop)/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/(desktop)/projects/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(desktop)/sessions/[id]/page.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/(desktop)/sessions/[id]/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/(desktop)/sessions/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(desktop)/settings/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/(desktop)/terminal/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/(desktop)/terminal/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(desktop)/terminal/pane/[id]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/(desktop)/terminal/remote/[nodeId]/[workspaceId]/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/(desktop)/workspaces/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  25. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  26. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  27. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  28. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  29. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  30. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  31. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  33. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  34. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  35. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  36. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  37. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  38. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  39. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  40. package/.next/standalone/.next/server/app/admin/analytics.html +1 -1
  41. package/.next/standalone/.next/server/app/admin/analytics.rsc +3 -3
  42. package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap/admin/analytics/__PAGE__.segment.rsc +2 -2
  43. package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap/admin/analytics.segment.rsc +1 -1
  44. package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap/admin.segment.rsc +1 -1
  45. package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  46. package/.next/standalone/.next/server/app/admin/analytics.segments/_full.segment.rsc +3 -3
  47. package/.next/standalone/.next/server/app/admin/analytics.segments/_head.segment.rsc +1 -1
  48. package/.next/standalone/.next/server/app/admin/analytics.segments/_index.segment.rsc +2 -2
  49. package/.next/standalone/.next/server/app/admin/analytics.segments/_tree.segment.rsc +2 -2
  50. package/.next/standalone/.next/server/app/admin/users.html +1 -1
  51. package/.next/standalone/.next/server/app/admin/users.rsc +2 -2
  52. package/.next/standalone/.next/server/app/admin/users.segments/!KGRlc2t0b3Ap/admin/users/__PAGE__.segment.rsc +1 -1
  53. package/.next/standalone/.next/server/app/admin/users.segments/!KGRlc2t0b3Ap/admin/users.segment.rsc +1 -1
  54. package/.next/standalone/.next/server/app/admin/users.segments/!KGRlc2t0b3Ap/admin.segment.rsc +1 -1
  55. package/.next/standalone/.next/server/app/admin/users.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  56. package/.next/standalone/.next/server/app/admin/users.segments/_full.segment.rsc +2 -2
  57. package/.next/standalone/.next/server/app/admin/users.segments/_head.segment.rsc +1 -1
  58. package/.next/standalone/.next/server/app/admin/users.segments/_index.segment.rsc +2 -2
  59. package/.next/standalone/.next/server/app/admin/users.segments/_tree.segment.rsc +2 -2
  60. package/.next/standalone/.next/server/app/analytics.html +1 -1
  61. package/.next/standalone/.next/server/app/analytics.rsc +2 -2
  62. package/.next/standalone/.next/server/app/analytics.segments/!KGRlc2t0b3Ap/analytics/__PAGE__.segment.rsc +1 -1
  63. package/.next/standalone/.next/server/app/analytics.segments/!KGRlc2t0b3Ap/analytics.segment.rsc +1 -1
  64. package/.next/standalone/.next/server/app/analytics.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  65. package/.next/standalone/.next/server/app/analytics.segments/_full.segment.rsc +2 -2
  66. package/.next/standalone/.next/server/app/analytics.segments/_head.segment.rsc +1 -1
  67. package/.next/standalone/.next/server/app/analytics.segments/_index.segment.rsc +2 -2
  68. package/.next/standalone/.next/server/app/analytics.segments/_tree.segment.rsc +2 -2
  69. package/.next/standalone/.next/server/app/api/analytics/overview/route.js +1 -1
  70. package/.next/standalone/.next/server/app/api/analytics/overview/route.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/api/benchmark/lobes/route.js +1 -1
  72. package/.next/standalone/.next/server/app/api/benchmark/lobes/route.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/api/benchmark/run/route.js +1 -1
  74. package/.next/standalone/.next/server/app/api/benchmark/run/route.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/api/benchmark/runs/[id]/route.js +1 -1
  76. package/.next/standalone/.next/server/app/api/benchmark/runs/[id]/route.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/api/benchmark/runs/route.js +1 -1
  78. package/.next/standalone/.next/server/app/api/benchmark/runs/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/benchmark/status/route.js +1 -1
  80. package/.next/standalone/.next/server/app/api/benchmark/status/route.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/api/bulk/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/bulk/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/claude/usage/route/app-paths-manifest.json +3 -0
  84. package/.next/standalone/.next/server/app/api/claude/usage/route/build-manifest.json +11 -0
  85. package/.next/standalone/.next/server/app/api/claude/usage/route/server-reference-manifest.json +4 -0
  86. package/.next/standalone/.next/server/app/api/claude/usage/route.js +8 -0
  87. package/.next/standalone/.next/server/app/api/claude/usage/route.js.map +5 -0
  88. package/.next/standalone/.next/server/app/api/claude/usage/route.js.nft.json +1 -0
  89. package/.next/standalone/.next/server/app/api/claude/usage/route_client-reference-manifest.js +2 -0
  90. package/.next/standalone/.next/server/app/api/config/route.js +1 -1
  91. package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/api/cortex/context/route.js +1 -1
  93. package/.next/standalone/.next/server/app/api/cortex/context/route.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/app/api/cortex/curation/assess/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/cortex/curation/assess/route.js.nft.json +1 -1
  96. package/.next/standalone/.next/server/app/api/cortex/curation/publish/route.js +1 -1
  97. package/.next/standalone/.next/server/app/api/cortex/curation/publish/route.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/api/cortex/curation/refine/route.js +1 -1
  99. package/.next/standalone/.next/server/app/api/cortex/curation/refine/route.js.nft.json +1 -1
  100. package/.next/standalone/.next/server/app/api/cortex/curation/review/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/cortex/curation/review/route.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/api/cortex/curation/seed/route.js +1 -1
  103. package/.next/standalone/.next/server/app/api/cortex/curation/seed/route.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/api/cortex/export/route.js +1 -1
  105. package/.next/standalone/.next/server/app/api/cortex/export/route.js.nft.json +1 -1
  106. package/.next/standalone/.next/server/app/api/cortex/federation/pending/route.js +1 -1
  107. package/.next/standalone/.next/server/app/api/cortex/federation/pending/route.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/api/cortex/federation/resolve/route.js +1 -1
  109. package/.next/standalone/.next/server/app/api/cortex/federation/resolve/route.js.nft.json +1 -1
  110. package/.next/standalone/.next/server/app/api/cortex/federation/search/route.js +1 -1
  111. package/.next/standalone/.next/server/app/api/cortex/federation/search/route.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/api/cortex/federation/teach/route.js +1 -1
  113. package/.next/standalone/.next/server/app/api/cortex/federation/teach/route.js.nft.json +1 -1
  114. package/.next/standalone/.next/server/app/api/cortex/graph/edges/route.js +1 -1
  115. package/.next/standalone/.next/server/app/api/cortex/graph/edges/route.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/api/cortex/graph/entities/[id]/route.js +1 -1
  117. package/.next/standalone/.next/server/app/api/cortex/graph/entities/[id]/route.js.nft.json +1 -1
  118. package/.next/standalone/.next/server/app/api/cortex/graph/entities/route.js +1 -1
  119. package/.next/standalone/.next/server/app/api/cortex/graph/entities/route.js.nft.json +1 -1
  120. package/.next/standalone/.next/server/app/api/cortex/graph/populate/route.js +1 -1
  121. package/.next/standalone/.next/server/app/api/cortex/graph/populate/route.js.nft.json +1 -1
  122. package/.next/standalone/.next/server/app/api/cortex/import/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/cortex/import/route.js.nft.json +1 -1
  124. package/.next/standalone/.next/server/app/api/cortex/import/status/route.js +1 -1
  125. package/.next/standalone/.next/server/app/api/cortex/import/status/route.js.nft.json +1 -1
  126. package/.next/standalone/.next/server/app/api/cortex/ingest/bootstrap/route.js +1 -1
  127. package/.next/standalone/.next/server/app/api/cortex/ingest/bootstrap/route.js.nft.json +1 -1
  128. package/.next/standalone/.next/server/app/api/cortex/ingest/status/route.js +1 -1
  129. package/.next/standalone/.next/server/app/api/cortex/ingest/status/route.js.nft.json +1 -1
  130. package/.next/standalone/.next/server/app/api/cortex/knowledge/[id]/route.js +1 -1
  131. package/.next/standalone/.next/server/app/api/cortex/knowledge/[id]/route.js.nft.json +1 -1
  132. package/.next/standalone/.next/server/app/api/cortex/knowledge/route.js +1 -1
  133. package/.next/standalone/.next/server/app/api/cortex/knowledge/route.js.nft.json +1 -1
  134. package/.next/standalone/.next/server/app/api/cortex/lobes/[id]/route.js +1 -1
  135. package/.next/standalone/.next/server/app/api/cortex/lobes/[id]/route.js.nft.json +1 -1
  136. package/.next/standalone/.next/server/app/api/cortex/lobes/route.js +1 -1
  137. package/.next/standalone/.next/server/app/api/cortex/lobes/route.js.nft.json +1 -1
  138. package/.next/standalone/.next/server/app/api/cortex/lobes/share/route.js +1 -1
  139. package/.next/standalone/.next/server/app/api/cortex/lobes/share/route.js.nft.json +1 -1
  140. package/.next/standalone/.next/server/app/api/cortex/marketplace/browse/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/cortex/marketplace/browse/route.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/api/cortex/marketplace/preview/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/cortex/marketplace/preview/route.js.nft.json +1 -1
  144. package/.next/standalone/.next/server/app/api/cortex/mcp/call/route.js +1 -1
  145. package/.next/standalone/.next/server/app/api/cortex/mcp/call/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/cortex/mcp/tools/route.js +1 -1
  147. package/.next/standalone/.next/server/app/api/cortex/mcp/tools/route.js.nft.json +1 -1
  148. package/.next/standalone/.next/server/app/api/cortex/search/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/cortex/search/route.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/app/api/cortex/settings/route.js +1 -1
  151. package/.next/standalone/.next/server/app/api/cortex/settings/route.js.nft.json +1 -1
  152. package/.next/standalone/.next/server/app/api/cortex/status/route.js +1 -1
  153. package/.next/standalone/.next/server/app/api/cortex/status/route.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/app/api/cortex/timeline/route.js +1 -1
  155. package/.next/standalone/.next/server/app/api/cortex/timeline/route.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/app/api/cortex/usage/route.js +1 -1
  157. package/.next/standalone/.next/server/app/api/cortex/usage/route.js.nft.json +1 -1
  158. package/.next/standalone/.next/server/app/api/cortex/workspace/[id]/context/route.js +1 -1
  159. package/.next/standalone/.next/server/app/api/cortex/workspace/[id]/context/route.js.nft.json +1 -1
  160. package/.next/standalone/.next/server/app/api/events/route.js +1 -1
  161. package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
  162. package/.next/standalone/.next/server/app/api/files/route.js +1 -1
  163. package/.next/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  164. package/.next/standalone/.next/server/app/api/folders/route.js +1 -1
  165. package/.next/standalone/.next/server/app/api/folders/route.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/api/network/handshake/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/network/handshake/route.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/api/network/panes/[id]/route.js +1 -1
  169. package/.next/standalone/.next/server/app/api/network/panes/[id]/route.js.nft.json +1 -1
  170. package/.next/standalone/.next/server/app/api/network/panes/route.js +1 -1
  171. package/.next/standalone/.next/server/app/api/network/panes/route.js.nft.json +1 -1
  172. package/.next/standalone/.next/server/app/api/network/projects/route.js +1 -1
  173. package/.next/standalone/.next/server/app/api/network/projects/route.js.nft.json +1 -1
  174. package/.next/standalone/.next/server/app/api/network/search/route.js +1 -1
  175. package/.next/standalone/.next/server/app/api/network/search/route.js.nft.json +1 -1
  176. package/.next/standalone/.next/server/app/api/network/sessions/[id]/messages/route.js +1 -1
  177. package/.next/standalone/.next/server/app/api/network/sessions/[id]/messages/route.js.nft.json +1 -1
  178. package/.next/standalone/.next/server/app/api/network/sessions/[id]/route.js +1 -1
  179. package/.next/standalone/.next/server/app/api/network/sessions/[id]/route.js.nft.json +1 -1
  180. package/.next/standalone/.next/server/app/api/network/sessions/route.js +1 -1
  181. package/.next/standalone/.next/server/app/api/network/sessions/route.js.nft.json +1 -1
  182. package/.next/standalone/.next/server/app/api/network/workspaces/[id]/route.js +1 -1
  183. package/.next/standalone/.next/server/app/api/network/workspaces/[id]/route.js.nft.json +1 -1
  184. package/.next/standalone/.next/server/app/api/network/workspaces/route.js +1 -1
  185. package/.next/standalone/.next/server/app/api/network/workspaces/route.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/app/api/panes/[id]/diff/route.js +1 -1
  187. package/.next/standalone/.next/server/app/api/panes/[id]/diff/route.js.nft.json +1 -1
  188. package/.next/standalone/.next/server/app/api/panes/[id]/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/panes/[id]/route.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/api/panes/route.js +1 -1
  191. package/.next/standalone/.next/server/app/api/panes/route.js.nft.json +1 -1
  192. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  193. package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  194. package/.next/standalone/.next/server/app/api/proxy/models/[modelId]/[...path]/route.js +1 -1
  195. package/.next/standalone/.next/server/app/api/proxy/models/[modelId]/[...path]/route.js.nft.json +1 -1
  196. package/.next/standalone/.next/server/app/api/proxy/models/[modelId]/status/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/proxy/models/[modelId]/status/route.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/app/api/search/route.js +2 -2
  199. package/.next/standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  200. package/.next/standalone/.next/server/app/api/sessions/[id]/chat/route.js +1 -1
  201. package/.next/standalone/.next/server/app/api/sessions/[id]/chat/route.js.nft.json +1 -1
  202. package/.next/standalone/.next/server/app/api/sessions/[id]/messages/route.js +1 -1
  203. package/.next/standalone/.next/server/app/api/sessions/[id]/messages/route.js.nft.json +1 -1
  204. package/.next/standalone/.next/server/app/api/sessions/[id]/route.js +1 -1
  205. package/.next/standalone/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  206. package/.next/standalone/.next/server/app/api/sessions/route.js +2 -2
  207. package/.next/standalone/.next/server/app/api/sessions/route.js.nft.json +1 -1
  208. package/.next/standalone/.next/server/app/api/sync/route.js +1 -1
  209. package/.next/standalone/.next/server/app/api/sync/route.js.nft.json +1 -1
  210. package/.next/standalone/.next/server/app/api/tags/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/tags/route.js.nft.json +1 -1
  212. package/.next/standalone/.next/server/app/api/tier/route.js +1 -1
  213. package/.next/standalone/.next/server/app/api/tier/route.js.nft.json +1 -1
  214. package/.next/standalone/.next/server/app/api/whisper/config/route.js +1 -1
  215. package/.next/standalone/.next/server/app/api/whisper/config/route.js.nft.json +1 -1
  216. package/.next/standalone/.next/server/app/api/whisper/route.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/app/api/wizard/chart/route/app-paths-manifest.json +3 -0
  218. package/.next/standalone/.next/server/app/api/wizard/chart/route/build-manifest.json +11 -0
  219. package/.next/standalone/.next/server/app/api/wizard/chart/route/server-reference-manifest.json +4 -0
  220. package/.next/standalone/.next/server/app/api/wizard/chart/route.js +7 -0
  221. package/.next/standalone/.next/server/app/api/wizard/chart/route.js.map +5 -0
  222. package/.next/standalone/.next/server/app/api/wizard/chart/route.js.nft.json +1 -0
  223. package/.next/standalone/.next/server/app/api/wizard/chart/route_client-reference-manifest.js +2 -0
  224. package/.next/standalone/.next/server/app/api/wizard/chat/route.js +1 -1
  225. package/.next/standalone/.next/server/app/api/wizard/chat/route.js.nft.json +1 -1
  226. package/.next/standalone/.next/server/app/api/workspaces/[id]/context/[key]/route.js +1 -1
  227. package/.next/standalone/.next/server/app/api/workspaces/[id]/context/[key]/route.js.nft.json +1 -1
  228. package/.next/standalone/.next/server/app/api/workspaces/[id]/context/route.js +1 -1
  229. package/.next/standalone/.next/server/app/api/workspaces/[id]/context/route.js.nft.json +1 -1
  230. package/.next/standalone/.next/server/app/api/workspaces/[id]/messages/[msgId]/route.js +1 -1
  231. package/.next/standalone/.next/server/app/api/workspaces/[id]/messages/[msgId]/route.js.nft.json +1 -1
  232. package/.next/standalone/.next/server/app/api/workspaces/[id]/messages/route.js +1 -1
  233. package/.next/standalone/.next/server/app/api/workspaces/[id]/messages/route.js.nft.json +1 -1
  234. package/.next/standalone/.next/server/app/api/workspaces/[id]/route.js +1 -1
  235. package/.next/standalone/.next/server/app/api/workspaces/[id]/route.js.nft.json +1 -1
  236. package/.next/standalone/.next/server/app/api/workspaces/[id]/sessions/route.js +1 -1
  237. package/.next/standalone/.next/server/app/api/workspaces/[id]/sessions/route.js.nft.json +1 -1
  238. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route/app-paths-manifest.json +3 -0
  239. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route/build-manifest.json +11 -0
  240. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route/server-reference-manifest.json +4 -0
  241. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route.js +8 -0
  242. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route.js.map +5 -0
  243. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route.js.nft.json +1 -0
  244. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route_client-reference-manifest.js +2 -0
  245. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route/app-paths-manifest.json +3 -0
  246. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route/build-manifest.json +11 -0
  247. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route/server-reference-manifest.json +4 -0
  248. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route.js +8 -0
  249. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route.js.map +5 -0
  250. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route.js.nft.json +1 -0
  251. package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route_client-reference-manifest.js +2 -0
  252. package/.next/standalone/.next/server/app/api/workspaces/route.js +2 -2
  253. package/.next/standalone/.next/server/app/api/workspaces/route.js.nft.json +1 -1
  254. package/.next/standalone/.next/server/app/cortex.html +1 -1
  255. package/.next/standalone/.next/server/app/cortex.rsc +3 -3
  256. package/.next/standalone/.next/server/app/cortex.segments/!KGRlc2t0b3Ap/cortex/__PAGE__.segment.rsc +2 -2
  257. package/.next/standalone/.next/server/app/cortex.segments/!KGRlc2t0b3Ap/cortex.segment.rsc +1 -1
  258. package/.next/standalone/.next/server/app/cortex.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  259. package/.next/standalone/.next/server/app/cortex.segments/_full.segment.rsc +3 -3
  260. package/.next/standalone/.next/server/app/cortex.segments/_head.segment.rsc +1 -1
  261. package/.next/standalone/.next/server/app/cortex.segments/_index.segment.rsc +2 -2
  262. package/.next/standalone/.next/server/app/cortex.segments/_tree.segment.rsc +2 -2
  263. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  264. package/.next/standalone/.next/server/app/login.html +1 -1
  265. package/.next/standalone/.next/server/app/login.rsc +2 -2
  266. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +2 -2
  267. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  268. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +2 -2
  269. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  270. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  271. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  272. package/.next/standalone/.next/server/app/m/page_client-reference-manifest.js +1 -1
  273. package/.next/standalone/.next/server/app/m/projects/page_client-reference-manifest.js +1 -1
  274. package/.next/standalone/.next/server/app/m/projects.html +1 -1
  275. package/.next/standalone/.next/server/app/m/projects.rsc +2 -2
  276. package/.next/standalone/.next/server/app/m/projects.segments/_full.segment.rsc +2 -2
  277. package/.next/standalone/.next/server/app/m/projects.segments/_head.segment.rsc +1 -1
  278. package/.next/standalone/.next/server/app/m/projects.segments/_index.segment.rsc +2 -2
  279. package/.next/standalone/.next/server/app/m/projects.segments/_tree.segment.rsc +2 -2
  280. package/.next/standalone/.next/server/app/m/projects.segments/m/projects/__PAGE__.segment.rsc +1 -1
  281. package/.next/standalone/.next/server/app/m/projects.segments/m/projects.segment.rsc +1 -1
  282. package/.next/standalone/.next/server/app/m/projects.segments/m.segment.rsc +1 -1
  283. package/.next/standalone/.next/server/app/m/sessions/[id]/page.js.nft.json +1 -1
  284. package/.next/standalone/.next/server/app/m/sessions/[id]/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/m/sessions/page_client-reference-manifest.js +1 -1
  286. package/.next/standalone/.next/server/app/m/sessions.html +1 -1
  287. package/.next/standalone/.next/server/app/m/sessions.rsc +2 -2
  288. package/.next/standalone/.next/server/app/m/sessions.segments/_full.segment.rsc +2 -2
  289. package/.next/standalone/.next/server/app/m/sessions.segments/_head.segment.rsc +1 -1
  290. package/.next/standalone/.next/server/app/m/sessions.segments/_index.segment.rsc +2 -2
  291. package/.next/standalone/.next/server/app/m/sessions.segments/_tree.segment.rsc +2 -2
  292. package/.next/standalone/.next/server/app/m/sessions.segments/m/sessions/__PAGE__.segment.rsc +1 -1
  293. package/.next/standalone/.next/server/app/m/sessions.segments/m/sessions.segment.rsc +1 -1
  294. package/.next/standalone/.next/server/app/m/sessions.segments/m.segment.rsc +1 -1
  295. package/.next/standalone/.next/server/app/m/settings/page_client-reference-manifest.js +1 -1
  296. package/.next/standalone/.next/server/app/m/settings.html +1 -1
  297. package/.next/standalone/.next/server/app/m/settings.rsc +2 -2
  298. package/.next/standalone/.next/server/app/m/settings.segments/_full.segment.rsc +2 -2
  299. package/.next/standalone/.next/server/app/m/settings.segments/_head.segment.rsc +1 -1
  300. package/.next/standalone/.next/server/app/m/settings.segments/_index.segment.rsc +2 -2
  301. package/.next/standalone/.next/server/app/m/settings.segments/_tree.segment.rsc +2 -2
  302. package/.next/standalone/.next/server/app/m/settings.segments/m/settings/__PAGE__.segment.rsc +1 -1
  303. package/.next/standalone/.next/server/app/m/settings.segments/m/settings.segment.rsc +1 -1
  304. package/.next/standalone/.next/server/app/m/settings.segments/m.segment.rsc +1 -1
  305. package/.next/standalone/.next/server/app/m/terminal/page_client-reference-manifest.js +1 -1
  306. package/.next/standalone/.next/server/app/m/terminal.html +1 -1
  307. package/.next/standalone/.next/server/app/m/terminal.rsc +3 -3
  308. package/.next/standalone/.next/server/app/m/terminal.segments/_full.segment.rsc +3 -3
  309. package/.next/standalone/.next/server/app/m/terminal.segments/_head.segment.rsc +1 -1
  310. package/.next/standalone/.next/server/app/m/terminal.segments/_index.segment.rsc +2 -2
  311. package/.next/standalone/.next/server/app/m/terminal.segments/_tree.segment.rsc +2 -2
  312. package/.next/standalone/.next/server/app/m/terminal.segments/m/terminal/__PAGE__.segment.rsc +2 -2
  313. package/.next/standalone/.next/server/app/m/terminal.segments/m/terminal.segment.rsc +1 -1
  314. package/.next/standalone/.next/server/app/m/terminal.segments/m.segment.rsc +1 -1
  315. package/.next/standalone/.next/server/app/m.html +1 -1
  316. package/.next/standalone/.next/server/app/m.rsc +2 -2
  317. package/.next/standalone/.next/server/app/m.segments/_full.segment.rsc +2 -2
  318. package/.next/standalone/.next/server/app/m.segments/_head.segment.rsc +1 -1
  319. package/.next/standalone/.next/server/app/m.segments/_index.segment.rsc +2 -2
  320. package/.next/standalone/.next/server/app/m.segments/_tree.segment.rsc +2 -2
  321. package/.next/standalone/.next/server/app/m.segments/m/__PAGE__.segment.rsc +1 -1
  322. package/.next/standalone/.next/server/app/m.segments/m.segment.rsc +1 -1
  323. package/.next/standalone/.next/server/app/network.html +1 -1
  324. package/.next/standalone/.next/server/app/network.rsc +2 -2
  325. package/.next/standalone/.next/server/app/network.segments/!KGRlc2t0b3Ap/network/__PAGE__.segment.rsc +1 -1
  326. package/.next/standalone/.next/server/app/network.segments/!KGRlc2t0b3Ap/network.segment.rsc +1 -1
  327. package/.next/standalone/.next/server/app/network.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  328. package/.next/standalone/.next/server/app/network.segments/_full.segment.rsc +2 -2
  329. package/.next/standalone/.next/server/app/network.segments/_head.segment.rsc +1 -1
  330. package/.next/standalone/.next/server/app/network.segments/_index.segment.rsc +2 -2
  331. package/.next/standalone/.next/server/app/network.segments/_tree.segment.rsc +2 -2
  332. package/.next/standalone/.next/server/app/projects.html +1 -1
  333. package/.next/standalone/.next/server/app/projects.rsc +2 -2
  334. package/.next/standalone/.next/server/app/projects.segments/!KGRlc2t0b3Ap/projects/__PAGE__.segment.rsc +1 -1
  335. package/.next/standalone/.next/server/app/projects.segments/!KGRlc2t0b3Ap/projects.segment.rsc +1 -1
  336. package/.next/standalone/.next/server/app/projects.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  337. package/.next/standalone/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  338. package/.next/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  339. package/.next/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  340. package/.next/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  341. package/.next/standalone/.next/server/app/sessions.html +1 -1
  342. package/.next/standalone/.next/server/app/sessions.rsc +2 -2
  343. package/.next/standalone/.next/server/app/sessions.segments/!KGRlc2t0b3Ap/sessions/__PAGE__.segment.rsc +1 -1
  344. package/.next/standalone/.next/server/app/sessions.segments/!KGRlc2t0b3Ap/sessions.segment.rsc +1 -1
  345. package/.next/standalone/.next/server/app/sessions.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  346. package/.next/standalone/.next/server/app/sessions.segments/_full.segment.rsc +2 -2
  347. package/.next/standalone/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
  348. package/.next/standalone/.next/server/app/sessions.segments/_index.segment.rsc +2 -2
  349. package/.next/standalone/.next/server/app/sessions.segments/_tree.segment.rsc +2 -2
  350. package/.next/standalone/.next/server/app/settings.html +1 -1
  351. package/.next/standalone/.next/server/app/settings.rsc +3 -3
  352. package/.next/standalone/.next/server/app/settings.segments/!KGRlc2t0b3Ap/settings/__PAGE__.segment.rsc +2 -2
  353. package/.next/standalone/.next/server/app/settings.segments/!KGRlc2t0b3Ap/settings.segment.rsc +1 -1
  354. package/.next/standalone/.next/server/app/settings.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  355. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  356. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  357. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  358. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  359. package/.next/standalone/.next/server/app/terminal.html +1 -1
  360. package/.next/standalone/.next/server/app/terminal.rsc +3 -3
  361. package/.next/standalone/.next/server/app/terminal.segments/!KGRlc2t0b3Ap/terminal/__PAGE__.segment.rsc +2 -2
  362. package/.next/standalone/.next/server/app/terminal.segments/!KGRlc2t0b3Ap/terminal.segment.rsc +1 -1
  363. package/.next/standalone/.next/server/app/terminal.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  364. package/.next/standalone/.next/server/app/terminal.segments/_full.segment.rsc +3 -3
  365. package/.next/standalone/.next/server/app/terminal.segments/_head.segment.rsc +1 -1
  366. package/.next/standalone/.next/server/app/terminal.segments/_index.segment.rsc +2 -2
  367. package/.next/standalone/.next/server/app/terminal.segments/_tree.segment.rsc +2 -2
  368. package/.next/standalone/.next/server/app/vr/page/react-loadable-manifest.json +1 -1
  369. package/.next/standalone/.next/server/app/vr/page_client-reference-manifest.js +1 -1
  370. package/.next/standalone/.next/server/app/vr.html +1 -1
  371. package/.next/standalone/.next/server/app/vr.rsc +3 -3
  372. package/.next/standalone/.next/server/app/vr.segments/_full.segment.rsc +3 -3
  373. package/.next/standalone/.next/server/app/vr.segments/_head.segment.rsc +1 -1
  374. package/.next/standalone/.next/server/app/vr.segments/_index.segment.rsc +2 -2
  375. package/.next/standalone/.next/server/app/vr.segments/_tree.segment.rsc +2 -2
  376. package/.next/standalone/.next/server/app/vr.segments/vr/__PAGE__.segment.rsc +2 -2
  377. package/.next/standalone/.next/server/app/vr.segments/vr.segment.rsc +1 -1
  378. package/.next/standalone/.next/server/app/workspaces.html +1 -1
  379. package/.next/standalone/.next/server/app/workspaces.rsc +2 -2
  380. package/.next/standalone/.next/server/app/workspaces.segments/!KGRlc2t0b3Ap/workspaces/__PAGE__.segment.rsc +1 -1
  381. package/.next/standalone/.next/server/app/workspaces.segments/!KGRlc2t0b3Ap/workspaces.segment.rsc +1 -1
  382. package/.next/standalone/.next/server/app/workspaces.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
  383. package/.next/standalone/.next/server/app/workspaces.segments/_full.segment.rsc +2 -2
  384. package/.next/standalone/.next/server/app/workspaces.segments/_head.segment.rsc +1 -1
  385. package/.next/standalone/.next/server/app/workspaces.segments/_index.segment.rsc +2 -2
  386. package/.next/standalone/.next/server/app/workspaces.segments/_tree.segment.rsc +2 -2
  387. package/.next/standalone/.next/server/app-paths-manifest.json +4 -0
  388. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00e90fc6._.js +111 -0
  389. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01ab8675._.js +111 -0
  390. package/.next/standalone/.next/server/chunks/[root-of-the-server]__03974f05._.js +111 -0
  391. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__bb331da9._.js → [root-of-the-server]__046c9b91._.js} +16 -3
  392. package/.next/standalone/.next/server/chunks/[root-of-the-server]__04ae6bf0._.js +111 -0
  393. package/.next/standalone/.next/server/chunks/[root-of-the-server]__056fa416._.js +1 -1
  394. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ac4ea3f._.js +3 -0
  395. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b8e64cb._.js +111 -0
  396. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0facd39e._.js +111 -0
  397. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10bc76a3._.js +3 -0
  398. package/.next/standalone/.next/server/chunks/[root-of-the-server]__115f3934._.js +111 -0
  399. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11f155f1._.js +3 -0
  400. package/.next/standalone/.next/server/chunks/[root-of-the-server]__160e7c73._.js +50 -33
  401. package/.next/standalone/.next/server/chunks/[root-of-the-server]__17a3b966._.js +111 -0
  402. package/.next/standalone/.next/server/chunks/[root-of-the-server]__17d3a2b2._.js +111 -0
  403. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a86c055._.js +111 -0
  404. package/.next/standalone/.next/server/chunks/[root-of-the-server]__20b5e9c4._.js +3 -0
  405. package/.next/standalone/.next/server/chunks/[root-of-the-server]__28d6fbd8._.js +111 -0
  406. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2a3f866b._.js +119 -0
  407. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__a95bb38b._.js → [root-of-the-server]__316617e7._.js} +3 -3
  408. package/.next/standalone/.next/server/chunks/[root-of-the-server]__32ad8f71._.js +111 -0
  409. package/.next/standalone/.next/server/chunks/[root-of-the-server]__35457394._.js +111 -0
  410. package/.next/standalone/.next/server/chunks/[root-of-the-server]__35de78e6._.js +111 -0
  411. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3685ffcb._.js +111 -0
  412. package/.next/standalone/.next/server/chunks/[root-of-the-server]__38954988._.js +111 -0
  413. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3a32b624._.js +111 -0
  414. package/.next/standalone/.next/server/chunks/[root-of-the-server]__426ad936._.js +119 -0
  415. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4985c034._.js +111 -0
  416. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5c6ce9ed._.js +111 -0
  417. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5cebe58a._.js +111 -0
  418. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d5e4789._.js +111 -0
  419. package/.next/standalone/.next/server/chunks/[root-of-the-server]__65676930._.js +3 -0
  420. package/.next/standalone/.next/server/chunks/[root-of-the-server]__67cab326._.js +58 -0
  421. package/.next/standalone/.next/server/chunks/[root-of-the-server]__698c6f01._.js +111 -0
  422. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__7ebc4280._.js → [root-of-the-server]__6c64af29._.js} +22 -9
  423. package/.next/standalone/.next/server/chunks/[root-of-the-server]__73aed9f5._.js +111 -0
  424. package/.next/standalone/.next/server/chunks/[root-of-the-server]__79b6a9bb._.js +111 -0
  425. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__e56abacf._.js → [root-of-the-server]__7db704c6._.js} +18 -5
  426. package/.next/standalone/.next/server/chunks/[root-of-the-server]__812ca02b._.js +111 -0
  427. package/.next/standalone/.next/server/chunks/[root-of-the-server]__821f50fa._.js +111 -0
  428. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8716b86e._.js +111 -0
  429. package/.next/standalone/.next/server/chunks/[root-of-the-server]__884ef754._.js +111 -0
  430. package/.next/standalone/.next/server/chunks/[root-of-the-server]__88cdbd68._.js +111 -0
  431. package/.next/standalone/.next/server/chunks/[root-of-the-server]__89d9aba9._.js +111 -0
  432. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8c2e1260._.js +111 -0
  433. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8d536cb5._.js +111 -0
  434. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8df8c5d1._.js +111 -0
  435. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8f2ccc41._.js +111 -0
  436. package/.next/standalone/.next/server/chunks/[root-of-the-server]__95c9d682._.js +111 -0
  437. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9e5d7774._.js +111 -0
  438. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9edcff87._.js +111 -0
  439. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a049dfc2._.js +111 -0
  440. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a5b4bb9a._.js +111 -0
  441. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a83262a1._.js +111 -0
  442. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9cd1240._.js +111 -0
  443. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__efb8251e._.js → [root-of-the-server]__a9d7f822._.js} +16 -3
  444. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ad08c221._.js +111 -0
  445. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ad585f2f._.js +111 -0
  446. package/.next/standalone/.next/server/chunks/[root-of-the-server]__afcb8f7d._.js +111 -0
  447. package/.next/standalone/.next/server/chunks/[root-of-the-server]__bc250d43._.js +111 -0
  448. package/.next/standalone/.next/server/chunks/[root-of-the-server]__bce2a6e7._.js +111 -0
  449. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c011bf91._.js +111 -0
  450. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c0ac2895._.js +3 -0
  451. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c37d6380._.js +3 -0
  452. package/.next/standalone/.next/server/chunks/[root-of-the-server]__cae392eb._.js +111 -0
  453. package/.next/standalone/.next/server/chunks/[root-of-the-server]__cc2616bb._.js +16 -3
  454. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d501fa9b._.js +111 -0
  455. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d59c6c15._.js +111 -0
  456. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d5c1db32._.js +111 -0
  457. package/.next/standalone/.next/server/chunks/[root-of-the-server]__dba60c86._.js +111 -0
  458. package/.next/standalone/.next/server/chunks/[root-of-the-server]__de14b9ae._.js +111 -0
  459. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e10643d1._.js +111 -0
  460. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e2a996e5._.js +127 -0
  461. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e3477417._.js +111 -0
  462. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__32dc5513._.js → [root-of-the-server]__e4db362e._.js} +2 -2
  463. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e4e70b86._.js +111 -0
  464. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e54925af._.js +111 -0
  465. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e8cbeaca._.js +111 -0
  466. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__cabaac2b._.js → [root-of-the-server]__e8edc5b0._.js} +16 -3
  467. package/.next/standalone/.next/server/chunks/[root-of-the-server]__eab4d83b._.js +111 -0
  468. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ead29015._.js +1 -1
  469. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f056fd83._.js +111 -0
  470. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f0e99572._.js +111 -0
  471. package/.next/standalone/.next/server/chunks/[root-of-the-server]__fe1e16d0._.js +111 -0
  472. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ff9cd277._.js +111 -0
  473. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ffaea2ce._.js +111 -0
  474. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_claude_usage_route_actions_fe002ec1.js +3 -0
  475. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_wizard_chart_route_actions_888e2ec1.js +3 -0
  476. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_workspaces_[id]_todos_route_actions_0d4ffac5.js +3 -0
  477. package/.next/standalone/.next/server/chunks/ce889_server_app_api_workspaces_[id]_todos_[todoId]_route_actions_754fe6b9.js +3 -0
  478. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__2cffc362._.js +3 -0
  479. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__f1050870._.js → [root-of-the-server]__47c97637._.js} +2 -2
  480. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__66aca5d4._.js +1 -1
  481. package/.next/standalone/.next/server/chunks/ssr/_20c2cf3a._.js +3 -0
  482. package/.next/standalone/.next/server/chunks/ssr/_2a1d79e7._.js +1 -1
  483. package/.next/standalone/.next/server/chunks/ssr/_5c3c4cfa._.js +7 -5
  484. package/.next/standalone/.next/server/chunks/ssr/_5f55bf8f._.js +3 -0
  485. package/.next/standalone/.next/server/chunks/ssr/_ba432382._.js +7 -5
  486. package/.next/standalone/.next/server/chunks/ssr/src_app_(desktop)_cortex_page_tsx_0f33d8b3._.js +1 -1
  487. package/.next/standalone/.next/server/chunks/ssr/src_app_(desktop)_settings_page_tsx_f74824b3._.js +1 -1
  488. package/.next/standalone/.next/server/chunks/ssr/src_app_(desktop)_terminal_page_tsx_de5e8d85._.js +4 -4
  489. package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__90eeddae._.js +1 -1
  490. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  491. package/.next/standalone/.next/server/pages/404.html +1 -1
  492. package/.next/standalone/.next/server/pages/500.html +2 -2
  493. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  494. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  495. package/.next/standalone/.next/static/chunks/{74d0ac0b1d0a1b79.js → 10b00b4f66102dcf.js} +1 -1
  496. package/.next/standalone/.next/static/chunks/14216197f9dcbe5b.css +3 -0
  497. package/.next/standalone/.next/static/chunks/{16eb77953dee9ea3.js → 19c71a8376c23c58.js} +1 -1
  498. package/.next/standalone/.next/static/chunks/{3e91fc608659c524.js → 350271fe79509caf.js} +1 -1
  499. package/.next/standalone/.next/static/chunks/4c9fb0a38f041a3d.js +85 -0
  500. package/.next/standalone/.next/static/chunks/{70423c7afd8abf5f.js → 597847c22200c212.js} +1 -1
  501. package/.next/standalone/.next/static/chunks/8f6f93ab45a5ff5b.js +1 -0
  502. package/.next/standalone/.next/static/chunks/{7ecd9bbb0ce4d68a.js → b7c8fe9b7275a84f.js} +1 -1
  503. package/.next/standalone/.next/static/chunks/{6245135a7afb8c7b.js → c9b10fc55516d142.js} +8 -6
  504. package/.next/standalone/.next/static/chunks/d0065f48eab94944.js +1 -0
  505. package/.next/standalone/.next/static/chunks/{e62bb488d02db247.js → d2566c2dcf53fef3.js} +1 -1
  506. package/.next/standalone/.next/static/chunks/{180c1b9ff31b979f.js → f7b34c807badf95d.js} +8 -6
  507. package/.next/standalone/.next/static/chunks/{fb0abd1933b2b2e1.js → ff7d85dade44d1f3.js} +1 -1
  508. package/.next/standalone/.spaces/cortex-context.md +35 -129
  509. package/.next/standalone/bin/spaces.js +7 -4
  510. package/.next/standalone/bin/terminal-server.js +48 -10
  511. package/.next/standalone/cortex-hook-debug.log +118 -23
  512. package/.next/standalone/docs/features/claude-usage.md +105 -0
  513. package/.next/standalone/docs/features/workspace-todos.md +127 -0
  514. package/.next/standalone/docs/superpowers/plans/2026-04-21-workspace-todos.md +1097 -0
  515. package/.next/standalone/docs/superpowers/plans/2026-04-22-claude-usage-display.md +749 -0
  516. package/.next/standalone/docs/superpowers/specs/2026-04-21-workspace-todos-design.md +180 -0
  517. package/.next/standalone/docs/superpowers/specs/2026-04-22-claude-usage-display-design.md +183 -0
  518. package/.next/standalone/package-lock.json +2 -2
  519. package/.next/standalone/package.json +1 -1
  520. package/.next/standalone/src/app/(desktop)/settings/page.tsx +40 -1
  521. package/.next/standalone/src/app/(desktop)/terminal/page.tsx +98 -7
  522. package/.next/standalone/src/app/api/benchmark/run/route.ts +24 -3
  523. package/.next/standalone/src/app/api/claude/usage/route.ts +33 -0
  524. package/.next/standalone/src/app/api/config/route.ts +3 -0
  525. package/.next/standalone/src/app/api/cortex/context/route.ts +1 -1
  526. package/.next/standalone/src/app/api/cortex/knowledge/route.ts +1 -1
  527. package/.next/standalone/src/app/api/cortex/search/route.ts +14 -2
  528. package/.next/standalone/src/app/api/folders/route.ts +16 -6
  529. package/.next/standalone/src/app/api/network/panes/[id]/route.ts +27 -11
  530. package/.next/standalone/src/app/api/network/panes/route.ts +25 -14
  531. package/.next/standalone/src/app/api/network/projects/route.ts +11 -4
  532. package/.next/standalone/src/app/api/network/search/route.ts +21 -14
  533. package/.next/standalone/src/app/api/network/sessions/[id]/messages/route.ts +18 -11
  534. package/.next/standalone/src/app/api/network/sessions/[id]/route.ts +16 -9
  535. package/.next/standalone/src/app/api/network/sessions/route.ts +25 -18
  536. package/.next/standalone/src/app/api/network/workspaces/[id]/route.ts +21 -12
  537. package/.next/standalone/src/app/api/network/workspaces/route.ts +16 -14
  538. package/.next/standalone/src/app/api/whisper/config/route.ts +16 -8
  539. package/.next/standalone/src/app/api/wizard/chart/route.ts +129 -0
  540. package/.next/standalone/src/app/api/workspaces/[id]/todos/[todoId]/route.ts +55 -0
  541. package/.next/standalone/src/app/api/workspaces/[id]/todos/route.ts +43 -0
  542. package/.next/standalone/src/components/claude/claude-usage-strip.tsx +175 -0
  543. package/.next/standalone/src/components/cortex/benchmark-tab.tsx +14 -0
  544. package/.next/standalone/src/components/terminal/terminal-pane.tsx +78 -12
  545. package/.next/standalone/src/components/wizard/chart-wizard.tsx +405 -0
  546. package/.next/standalone/src/components/workspace/workspace-todos.tsx +265 -0
  547. package/.next/standalone/src/hooks/use-benchmark.ts +1 -0
  548. package/.next/standalone/src/hooks/use-claude-usage.ts +66 -0
  549. package/.next/standalone/src/hooks/use-speech-recognition.ts +2 -1
  550. package/.next/standalone/src/lib/claude/credentials.ts +36 -0
  551. package/.next/standalone/src/lib/claude/usage.ts +69 -0
  552. package/.next/standalone/src/lib/config.ts +3 -0
  553. package/.next/standalone/src/lib/cortex/benchmark.ts +17 -1
  554. package/.next/standalone/src/lib/cortex/index.ts +54 -1
  555. package/.next/standalone/src/lib/db/queries.ts +105 -90
  556. package/.next/standalone/src/lib/db/schema.ts +18 -0
  557. package/.next/standalone/src/lib/shell-user.ts +101 -0
  558. package/.next/standalone/src/types/claude.ts +39 -0
  559. package/.next/standalone/tests/db/workspace-todos.test.ts +156 -0
  560. package/bin/spaces.js +7 -4
  561. package/bin/terminal-server.js +48 -10
  562. package/package.json +1 -1
  563. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00fdfbda._.js +0 -114
  564. package/.next/standalone/.next/server/chunks/[root-of-the-server]__04f04898._.js +0 -106
  565. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0903a426._.js +0 -98
  566. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09e8ccc9._.js +0 -98
  567. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11c684b1._.js +0 -98
  568. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1572d4ef._.js +0 -98
  569. package/.next/standalone/.next/server/chunks/[root-of-the-server]__186cd0bb._.js +0 -3
  570. package/.next/standalone/.next/server/chunks/[root-of-the-server]__194955d4._.js +0 -98
  571. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1f054c65._.js +0 -98
  572. package/.next/standalone/.next/server/chunks/[root-of-the-server]__212760e6._.js +0 -98
  573. package/.next/standalone/.next/server/chunks/[root-of-the-server]__228595ec._.js +0 -98
  574. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2384f98e._.js +0 -98
  575. package/.next/standalone/.next/server/chunks/[root-of-the-server]__277d9445._.js +0 -98
  576. package/.next/standalone/.next/server/chunks/[root-of-the-server]__283c890f._.js +0 -3
  577. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2a2c5fc5._.js +0 -98
  578. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2d7a454e._.js +0 -98
  579. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2f300a68._.js +0 -98
  580. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2f452778._.js +0 -98
  581. package/.next/standalone/.next/server/chunks/[root-of-the-server]__35f8e77e._.js +0 -98
  582. package/.next/standalone/.next/server/chunks/[root-of-the-server]__379fc2e9._.js +0 -98
  583. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3b40d79f._.js +0 -98
  584. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3d3dca2b._.js +0 -98
  585. package/.next/standalone/.next/server/chunks/[root-of-the-server]__49e42a3a._.js +0 -98
  586. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4d5b78d2._.js +0 -98
  587. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4d903941._.js +0 -98
  588. package/.next/standalone/.next/server/chunks/[root-of-the-server]__54163e52._.js +0 -98
  589. package/.next/standalone/.next/server/chunks/[root-of-the-server]__563c0817._.js +0 -3
  590. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5812f90a._.js +0 -98
  591. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5c5e87f5._.js +0 -98
  592. package/.next/standalone/.next/server/chunks/[root-of-the-server]__60d15b16._.js +0 -98
  593. package/.next/standalone/.next/server/chunks/[root-of-the-server]__614458b7._.js +0 -98
  594. package/.next/standalone/.next/server/chunks/[root-of-the-server]__69d315e5._.js +0 -3
  595. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6fe5e6c8._.js +0 -98
  596. package/.next/standalone/.next/server/chunks/[root-of-the-server]__71f29038._.js +0 -98
  597. package/.next/standalone/.next/server/chunks/[root-of-the-server]__74084e07._.js +0 -3
  598. package/.next/standalone/.next/server/chunks/[root-of-the-server]__7921aa80._.js +0 -98
  599. package/.next/standalone/.next/server/chunks/[root-of-the-server]__7e077dd8._.js +0 -98
  600. package/.next/standalone/.next/server/chunks/[root-of-the-server]__857c60bb._.js +0 -98
  601. package/.next/standalone/.next/server/chunks/[root-of-the-server]__874fe565._.js +0 -98
  602. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8e2171f7._.js +0 -98
  603. package/.next/standalone/.next/server/chunks/[root-of-the-server]__91e23c96._.js +0 -98
  604. package/.next/standalone/.next/server/chunks/[root-of-the-server]__929ea03a._.js +0 -98
  605. package/.next/standalone/.next/server/chunks/[root-of-the-server]__95659b2d._.js +0 -98
  606. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9679b91e._.js +0 -98
  607. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9d68157b._.js +0 -98
  608. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a90729a1._.js +0 -98
  609. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ac39ecc7._.js +0 -98
  610. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ac84b704._.js +0 -98
  611. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ad4346fa._.js +0 -98
  612. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b0862d69._.js +0 -98
  613. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b43306ee._.js +0 -98
  614. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b689ff5e._.js +0 -106
  615. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba87daaa._.js +0 -98
  616. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c0461005._.js +0 -98
  617. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c1deb5f3._.js +0 -98
  618. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c8a62f42._.js +0 -98
  619. package/.next/standalone/.next/server/chunks/[root-of-the-server]__cb027619._.js +0 -98
  620. package/.next/standalone/.next/server/chunks/[root-of-the-server]__cc6e2885._.js +0 -98
  621. package/.next/standalone/.next/server/chunks/[root-of-the-server]__cf608218._.js +0 -98
  622. package/.next/standalone/.next/server/chunks/[root-of-the-server]__cfc1290d._.js +0 -98
  623. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d0109b9b._.js +0 -98
  624. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d0125483._.js +0 -3
  625. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d048ee6b._.js +0 -98
  626. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d12644e7._.js +0 -98
  627. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d95165f0._.js +0 -98
  628. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e3cc946c._.js +0 -98
  629. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e6fd27f8._.js +0 -98
  630. package/.next/standalone/.next/server/chunks/[root-of-the-server]__eafd040b._.js +0 -98
  631. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f44c6882._.js +0 -98
  632. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f85283de._.js +0 -98
  633. package/.next/standalone/.next/server/chunks/[root-of-the-server]__feceb3e4._.js +0 -98
  634. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__843070a6._.js +0 -3
  635. package/.next/standalone/.next/server/chunks/ssr/_3ba93bdd._.js +0 -3
  636. package/.next/standalone/.next/server/chunks/ssr/_e84a0c06._.js +0 -3
  637. package/.next/standalone/.next/static/chunks/074df89a63b6a854.js +0 -1
  638. package/.next/standalone/.next/static/chunks/9d4164833c2c1fd6.js +0 -85
  639. package/.next/standalone/.next/static/chunks/bffaf378f7745d59.css +0 -3
  640. package/.next/standalone/.next/static/chunks/f091f4bf8d80fd07.js +0 -1
  641. /package/.next/standalone/.next/static/{0KefPNmR9NsrZHWWt9Xr7 → bAQs2gDlFrq3e8w9ni9tr}/_buildManifest.js +0 -0
  642. /package/.next/standalone/.next/static/{0KefPNmR9NsrZHWWt9Xr7 → bAQs2gDlFrq3e8w9ni9tr}/_clientMiddlewareManifest.json +0 -0
  643. /package/.next/standalone/.next/static/{0KefPNmR9NsrZHWWt9Xr7 → bAQs2gDlFrq3e8w9ni9tr}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ import React, { useState, useEffect, useCallback, useRef } from 'react';
4
4
  import {
5
5
  Plus, Loader2, Terminal, Search, MessageSquare, FolderOpen,
6
6
  Clock, ChevronDown, ChevronRight, Save, FolderInput, Trash2, Pencil, Check, X,
7
- Layers, Copy, Home, XCircle, ArrowLeftToLine, Globe, AlertCircle, Users, Brain, Maximize2,
7
+ Layers, Copy, Home, XCircle, ArrowLeftToLine, Globe, AlertCircle, Users, Brain, Maximize2, Wand2,
8
8
  } from 'lucide-react';
9
9
  import { useRouter } from 'next/navigation';
10
10
  import { TerminalPane } from '@/components/terminal/terminal-pane';
@@ -27,6 +27,9 @@ import { track } from '@/lib/telemetry';
27
27
  import { LobeSettings } from '@/components/cortex/lobe-settings';
28
28
  import { FileExplorer } from '@/components/files/file-explorer';
29
29
  import { useTier } from '@/hooks/use-tier';
30
+ import { ProjectWizard } from '@/components/wizard/project-wizard';
31
+ import { WorkspaceTodos } from '@/components/workspace/workspace-todos';
32
+ import { ClaudeUsageStrip } from '@/components/claude/claude-usage-strip';
30
33
 
31
34
  function ResizablePaneGrid({ panes, renderPane }: {
32
35
  panes: PaneData[];
@@ -134,15 +137,27 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
134
137
  // SSE bus events for real-time updates
135
138
  useSSEBusEvents();
136
139
 
140
+ // Experimental feature toggles (read-once on mount)
141
+ const [todosEnabled, setTodosEnabled] = useState(false);
142
+ useEffect(() => {
143
+ fetch(api('/api/config'))
144
+ .then(r => r.json())
145
+ .then(data => setTodosEnabled(!!data.todosEnabled))
146
+ .catch(() => {});
147
+ }, []);
148
+
137
149
  // Workspace state
138
150
  const [workspaces, setWorkspaces] = useState<Workspace[]>([]);
139
151
  const [activeWorkspace, setActiveWorkspace] = useState<Workspace | null>(null);
140
152
  const [showWsPicker, setShowWsPicker] = useState(false);
141
153
  const [showSaveAs, setShowSaveAs] = useState(false);
154
+ const [showWizard, setShowWizard] = useState(false);
142
155
  const [saveAsName, setSaveAsName] = useState('');
143
156
  const [saveAsColor, setSaveAsColor] = useState('#6366f1');
144
157
  const [editingWs, setEditingWs] = useState<number | null>(null);
145
158
  const [editWsName, setEditWsName] = useState('');
159
+ const [colorPickerWs, setColorPickerWs] = useState<number | null>(null);
160
+ const colorPickerRef = useRef<HTMLDivElement>(null);
146
161
  const [lobeOpenWs, setLobeOpenWs] = useState<number | null>(null);
147
162
  const [showFiles, setShowFiles] = useState(false);
148
163
  const [browseTarget, setBrowseTarget] = useState<string | null>(null);
@@ -296,6 +311,9 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
296
311
  if (wsPickerRef.current && !wsPickerRef.current.contains(e.target as Node)) {
297
312
  setShowWsPicker(false);
298
313
  }
314
+ if (colorPickerRef.current && !colorPickerRef.current.contains(e.target as Node)) {
315
+ setColorPickerWs(null);
316
+ }
299
317
  }
300
318
  document.addEventListener('mousedown', handleClick);
301
319
  return () => document.removeEventListener('mousedown', handleClick);
@@ -541,6 +559,16 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
541
559
  await loadWorkspaces();
542
560
  }, [loadWorkspaces]);
543
561
 
562
+ const changeWorkspaceColor = useCallback(async (wsId: number, color: string) => {
563
+ await fetch(api(`/api/workspaces/${wsId}`), {
564
+ method: 'PUT',
565
+ headers: { 'Content-Type': 'application/json' },
566
+ body: JSON.stringify({ color }),
567
+ });
568
+ setColorPickerWs(null);
569
+ await loadWorkspaces();
570
+ }, [loadWorkspaces]);
571
+
544
572
  // ─── Render ────────────────────────────────────────────────
545
573
 
546
574
  const visiblePanes = panes.filter(p => !poppedOut.has(p.id) && !minimized.has(p.id));
@@ -620,7 +648,7 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
620
648
  ))}
621
649
  </div>
622
650
 
623
- <div className="flex justify-center">
651
+ <div className="flex justify-center gap-3">
624
652
  <button
625
653
  onClick={createNewWorkspace}
626
654
  className="flex items-center gap-2 px-4 py-2.5 text-sm border border-zinc-700 text-zinc-400 rounded-lg hover:text-white hover:border-zinc-500 transition-colors"
@@ -628,6 +656,13 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
628
656
  <Plus className="w-4 h-4" />
629
657
  New Workspace
630
658
  </button>
659
+ <button
660
+ onClick={() => setShowWizard(true)}
661
+ className="flex items-center gap-2 px-4 py-2.5 text-sm border border-dashed border-indigo-500/50 text-indigo-400 rounded-lg hover:text-indigo-300 hover:border-indigo-400 hover:bg-indigo-500/10 transition-colors"
662
+ >
663
+ <Wand2 className="w-4 h-4" />
664
+ Plan a Project
665
+ </button>
631
666
  </div>
632
667
 
633
668
  {/* Remote workspaces from network nodes */}
@@ -708,6 +743,15 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
708
743
  )}
709
744
  </div>
710
745
  </div>
746
+
747
+ <ProjectWizard
748
+ isOpen={showWizard}
749
+ onClose={() => setShowWizard(false)}
750
+ onLaunch={(wsId) => {
751
+ setShowWizard(false);
752
+ switchWorkspace(wsId);
753
+ }}
754
+ />
711
755
  </div>
712
756
  );
713
757
  }
@@ -774,11 +818,33 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
774
818
  </div>
775
819
  ) : (
776
820
  <>
821
+ <div className="relative pl-3">
822
+ <button
823
+ onClick={(e) => {
824
+ e.stopPropagation();
825
+ setColorPickerWs(colorPickerWs === ws.id ? null : ws.id);
826
+ }}
827
+ className="w-2.5 h-2.5 rounded-full flex-shrink-0 hover:ring-2 hover:ring-zinc-500/50 transition-all"
828
+ style={{ backgroundColor: ws.color }}
829
+ title="Change color"
830
+ />
831
+ {colorPickerWs === ws.id && (
832
+ <div
833
+ ref={colorPickerRef}
834
+ className="absolute z-50 top-full left-0 mt-1.5 p-2 bg-zinc-800 border border-zinc-700 rounded-md shadow-xl"
835
+ onClick={(e) => e.stopPropagation()}
836
+ >
837
+ <ColorPicker
838
+ value={ws.color}
839
+ onChange={(c) => changeWorkspaceColor(ws.id, c)}
840
+ />
841
+ </div>
842
+ )}
843
+ </div>
777
844
  <button
778
845
  onClick={() => switchWorkspace(ws.id)}
779
- className="flex items-center gap-2 flex-1 px-3 py-2 text-left"
846
+ className="flex items-center gap-2 flex-1 py-2 pr-3 text-left"
780
847
  >
781
- <span className="w-2.5 h-2.5 rounded-full flex-shrink-0" style={{ backgroundColor: ws.color }} />
782
848
  <span className="text-xs text-white truncate flex-1">{ws.name}</span>
783
849
  <span className="text-[10px] text-zinc-500">{ws.paneCount || 0} panes</span>
784
850
  {ws.isActive && <span className="text-[10px] text-indigo-400">active</span>}
@@ -819,11 +885,17 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
819
885
  >
820
886
  <Plus className="w-3 h-3" /> New Empty
821
887
  </button>
888
+ <button
889
+ onClick={() => { setShowWizard(true); setShowWsPicker(false); }}
890
+ className="flex items-center gap-1.5 px-2.5 py-1.5 text-[11px] text-indigo-400 hover:text-indigo-300 hover:bg-indigo-500/10 rounded transition-colors flex-1"
891
+ >
892
+ <Wand2 className="w-3 h-3" /> Plan Project
893
+ </button>
822
894
  <button
823
895
  onClick={() => { setShowSaveAs(true); setShowWsPicker(false); }}
824
896
  className="flex items-center gap-1.5 px-2.5 py-1.5 text-[11px] text-zinc-400 hover:text-white hover:bg-zinc-700 rounded transition-colors flex-1"
825
897
  >
826
- <Copy className="w-3 h-3" /> Duplicate Current
898
+ <Copy className="w-3 h-3" /> Duplicate
827
899
  </button>
828
900
  </div>
829
901
  </div>
@@ -837,6 +909,7 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
837
909
  </div>
838
910
 
839
911
  <div className="flex items-center gap-2">
912
+ <ClaudeUsageStrip enabled={panes.some(p => p.agentType === 'claude' && !poppedOut.has(p.id))} />
840
913
  <button
841
914
  onClick={() => setShowFiles(!showFiles)}
842
915
  className={`flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md border transition-colors ${
@@ -1193,6 +1266,9 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
1193
1266
  </div>
1194
1267
  )}
1195
1268
 
1269
+ {/* Workspace todos */}
1270
+ {todosEnabled && <WorkspaceTodos workspace={activeWorkspace} />}
1271
+
1196
1272
  {/* File Explorer + Terminal grid + Activity Panel */}
1197
1273
  <div className="flex-1 flex overflow-hidden min-h-0">
1198
1274
  {showFiles && (
@@ -1203,7 +1279,7 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
1203
1279
  />
1204
1280
  </div>
1205
1281
  )}
1206
- {visiblePanes.length === 0 && poppedOut.size === 0 ? (
1282
+ {visiblePanes.length === 0 && poppedOut.size === 0 && minimized.size === 0 ? (
1207
1283
  <div className="flex-1 flex items-center justify-center">
1208
1284
  <div className="text-center space-y-3">
1209
1285
  {/* eslint-disable-next-line @next/next/no-img-element */}
@@ -1222,7 +1298,13 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
1222
1298
  ) : visiblePanes.length === 0 ? (
1223
1299
  <div className="flex-1 flex items-center justify-center">
1224
1300
  <div className="text-center space-y-2">
1225
- <p className="text-zinc-500 text-sm">All panes are popped out to separate windows.</p>
1301
+ <p className="text-zinc-500 text-sm">
1302
+ {minimized.size > 0 && poppedOut.size > 0
1303
+ ? 'All panes are minimized or popped out.'
1304
+ : minimized.size > 0
1305
+ ? `All panes are minimized. Use the toolbar to restore them.`
1306
+ : 'All panes are popped out to separate windows.'}
1307
+ </p>
1226
1308
  <button
1227
1309
  onClick={() => setShowAdd(true)}
1228
1310
  className="px-3 py-1.5 text-xs text-zinc-400 hover:text-white border border-zinc-700 rounded-md hover:border-zinc-600 inline-flex items-center gap-1.5"
@@ -1286,6 +1368,15 @@ function TerminalPageInner({ terminalToken }: { terminalToken: string }) {
1286
1368
  />
1287
1369
  )}
1288
1370
  </div>
1371
+
1372
+ <ProjectWizard
1373
+ isOpen={showWizard}
1374
+ onClose={() => setShowWizard(false)}
1375
+ onLaunch={(wsId) => {
1376
+ setShowWizard(false);
1377
+ switchWorkspace(wsId);
1378
+ }}
1379
+ />
1289
1380
  </div>
1290
1381
  );
1291
1382
  }
@@ -22,6 +22,7 @@ export async function POST(request: NextRequest) {
22
22
  categories,
23
23
  noJudge = false,
24
24
  model = 'claude-haiku-4-5',
25
+ concurrency,
25
26
  } = body;
26
27
 
27
28
  // Build args for the benchmark CLI
@@ -30,6 +31,10 @@ export async function POST(request: NextRequest) {
30
31
  if (categories) args.push('--category', categories);
31
32
  if (noJudge) args.push('--no-judge');
32
33
  args.push('--models', model);
34
+ if (concurrency != null) {
35
+ const clamped = Math.min(5, Math.max(1, Math.floor(Number(concurrency)) || 1));
36
+ args.push('--concurrency', String(clamped));
37
+ }
33
38
 
34
39
  // Find the cortex repo
35
40
  const cortexDir = findCortexDir();
@@ -77,14 +82,30 @@ export async function POST(request: NextRequest) {
77
82
  }
78
83
 
79
84
  function findCortexDir(): string | null {
80
- const candidates = [
85
+ const candidates: string[] = [];
86
+
87
+ // Primary: resolve the addon's package location via NODE_PATH — this tracks
88
+ // however the host actually loaded @spaces/cortex at runtime (managed
89
+ // install under ~/.spaces/packages, symlink, global, etc.).
90
+ try {
91
+ const { createRequire } = require('module') as typeof import('module');
92
+ const req = createRequire(path.join(process.cwd(), 'package.json'));
93
+ candidates.push(path.dirname(req.resolve('@spaces/cortex/package.json')));
94
+ } catch { /* addon not resolvable from this process */ }
95
+
96
+ // Fallbacks: managed install location and local sibling checkouts.
97
+ if (process.env.HOME) {
98
+ candidates.push(path.join(process.env.HOME, '.spaces', 'packages', 'cortex'));
99
+ }
100
+ candidates.push(
81
101
  path.resolve(process.cwd(), '../spaces-cortex'),
82
102
  path.resolve(process.cwd(), '../../spaces-cortex'),
83
103
  'C:\\projects\\spaces-cortex',
84
104
  '/c/projects/spaces-cortex',
85
- ];
105
+ );
106
+
86
107
  for (const dir of candidates) {
87
- if (fs.existsSync(path.join(dir, 'tests', 'benchmark', 'index.ts'))) {
108
+ if (dir && fs.existsSync(path.join(dir, 'tests', 'benchmark', 'index.ts'))) {
88
109
  return dir;
89
110
  }
90
111
  }
@@ -0,0 +1,33 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ import { getAuthUser, withUser } from '@/lib/auth';
3
+ import { ensureInitialized } from '@/lib/db/init';
4
+ import { readClaudeAiOauthTokens, isTokenExpired } from '@/lib/claude/credentials';
5
+ import { fetchUtilization } from '@/lib/claude/usage';
6
+ import type { UsageResponse } from '@/types/claude';
7
+
8
+ export async function GET(request: NextRequest) {
9
+ const user = getAuthUser(request);
10
+ return withUser(user, async () => {
11
+ await ensureInitialized();
12
+
13
+ const tokens = await readClaudeAiOauthTokens();
14
+ if (!tokens) {
15
+ const body: UsageResponse = { status: 'unauthenticated' };
16
+ return NextResponse.json(body);
17
+ }
18
+
19
+ if (isTokenExpired(tokens)) {
20
+ const body: UsageResponse = { status: 'expired' };
21
+ return NextResponse.json(body);
22
+ }
23
+
24
+ const outcome = await fetchUtilization(tokens.accessToken);
25
+ if (!outcome.ok) {
26
+ const body: UsageResponse = { status: 'upstream_error' };
27
+ return NextResponse.json(body);
28
+ }
29
+
30
+ const body: UsageResponse = { status: 'ok', data: outcome.data };
31
+ return NextResponse.json(body);
32
+ });
33
+ }
@@ -24,6 +24,9 @@ export async function PUT(request: NextRequest) {
24
24
  .filter((d: unknown) => typeof d === 'string' && isAbsolute(d))
25
25
  .map((d: string) => resolve(d));
26
26
  }
27
+ if (typeof body.todosEnabled === 'boolean') {
28
+ updates.todosEnabled = body.todosEnabled;
29
+ }
27
30
  const config = writeConfig(user, updates);
28
31
  return NextResponse.json(config);
29
32
  });
@@ -1,7 +1,7 @@
1
1
  import { NextResponse } from 'next/server';
2
2
  import type { NextRequest } from 'next/server';
3
3
  import { getAuthUser, withUser } from '@/lib/auth';
4
- import { getCortex, isCortexAvailable } from '@/lib/cortex';
4
+ import { getCortex, isCortexAvailable, getCortexClient } from '@/lib/cortex';
5
5
  import { ContextEngine } from '@/lib/cortex/retrieval/context-engine';
6
6
  import { EntityResolver } from '@/lib/cortex/graph/resolver';
7
7
  import { slugify } from '@/lib/cortex/graph/types';
@@ -2,7 +2,7 @@ import { NextResponse } from 'next/server';
2
2
  import type { NextRequest } from 'next/server';
3
3
  import crypto from 'crypto';
4
4
  import { getAuthUser, withUser } from '@/lib/auth';
5
- import { isCortexAvailable, getCortex } from '@/lib/cortex';
5
+ import { isCortexAvailable, getCortex, getCortexClient } from '@/lib/cortex';
6
6
  import { isValidKnowledgeType, isValidLayer, getConfidenceBase } from '@/lib/cortex/knowledge/types';
7
7
  import { layerToScope, scopeToLayer, scopeToLayerKey } from '@/lib/cortex/knowledge/compat';
8
8
 
@@ -1,7 +1,7 @@
1
1
  import { NextResponse } from 'next/server';
2
2
  import type { NextRequest } from 'next/server';
3
3
  import { getAuthUser, withUser } from '@/lib/auth';
4
- import { isCortexAvailable, getCortex } from '@/lib/cortex';
4
+ import { isCortexAvailable, getCortex, getCortexClient } from '@/lib/cortex';
5
5
 
6
6
  export async function GET(request: NextRequest) {
7
7
  const user = getAuthUser(request);
@@ -19,7 +19,7 @@ export async function GET(request: NextRequest) {
19
19
  const layer = url.searchParams.get('layer') as 'personal' | 'workspace' | 'team' | null;
20
20
  const limit = parseInt(url.searchParams.get('limit') || '5', 10);
21
21
 
22
- // Browse mode: return recent knowledge without a search query
22
+ // Browse mode: return recent knowledge without a search query (local engine only)
23
23
  if (!query) {
24
24
  const layers = layer ? [layer] : (['personal', 'workspace', 'team'] as const);
25
25
  const results: any[] = [];
@@ -30,6 +30,18 @@ export async function GET(request: NextRequest) {
30
30
  return NextResponse.json({ results: results.slice(0, limit) });
31
31
  }
32
32
 
33
+ // Use client for search (fans out to all connected servers)
34
+ const client = await getCortexClient();
35
+ if (client) {
36
+ const results = await client.search(query, {
37
+ limit,
38
+ layers: layer ? [layer] : undefined,
39
+ });
40
+ console.log(`[Cortex Search] q="${query.slice(0, 60)}" → ${results.length} results (multi-server)`);
41
+ return NextResponse.json({ results });
42
+ }
43
+
44
+ // Fallback to direct engine search
33
45
  const [queryVector] = await cortex.embedding.embed([query]);
34
46
 
35
47
  const results = await cortex.search.search(queryVector, {
@@ -1,12 +1,14 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
2
  import { getAuthUser } from '@/lib/auth';
3
3
  import { readConfig } from '@/lib/config';
4
+ import { lookupShellUser, resolveHome, execAsUser } from '@/lib/shell-user';
4
5
  import fs from 'fs';
5
6
  import path from 'path';
6
7
 
7
8
  export async function GET(request: NextRequest) {
8
9
  const user = getAuthUser(request);
9
- const userHome = require('os').homedir();
10
+ const shellUser = lookupShellUser(user);
11
+ const userHome = resolveHome(shellUser);
10
12
  const config = readConfig(user);
11
13
  const devDirs = (config.devDirectories.length > 0 ? config.devDirectories : [userHome])
12
14
  .map(d => path.resolve(d));
@@ -52,8 +54,9 @@ export async function GET(request: NextRequest) {
52
54
 
53
55
  export async function POST(request: NextRequest) {
54
56
  const user = getAuthUser(request);
57
+ const shellUser = lookupShellUser(user);
58
+ const userHome = resolveHome(shellUser);
55
59
  const config = readConfig(user);
56
- const userHome = require('os').homedir();
57
60
  const devDirs = (config.devDirectories.length > 0 ? config.devDirectories : [userHome])
58
61
  .map((d: string) => path.resolve(d));
59
62
 
@@ -83,15 +86,22 @@ export async function POST(request: NextRequest) {
83
86
 
84
87
  const newPath = path.join(resolvedParent, name);
85
88
 
86
- // Check if already exists
87
89
  if (fs.existsSync(newPath)) {
88
90
  return NextResponse.json({ error: 'Folder already exists' }, { status: 409 });
89
91
  }
90
92
 
91
- fs.mkdirSync(newPath, { recursive: true });
93
+ // Create the directory as the authenticated shell user, not as the server process user.
94
+ // Otherwise a mkdir inside another user's home fails with EACCES.
95
+ const result = execAsUser(shellUser, ['mkdir', '--', newPath]);
96
+ if (result.status !== 0) {
97
+ const msg = (result.stderr || '').trim() || 'Failed to create folder';
98
+ const status = /exists/i.test(msg) ? 409 : /permission|denied/i.test(msg) ? 403 : 500;
99
+ return NextResponse.json({ error: msg }, { status });
100
+ }
92
101
 
93
102
  return NextResponse.json({ path: newPath }, { status: 201 });
94
- } catch {
95
- return NextResponse.json({ error: 'Failed to create folder' }, { status: 500 });
103
+ } catch (e) {
104
+ const msg = e instanceof Error ? e.message : 'Failed to create folder';
105
+ return NextResponse.json({ error: msg }, { status: 500 });
96
106
  }
97
107
  }
@@ -2,6 +2,7 @@ import { NextRequest } from 'next/server';
2
2
  import { getPro } from '@/lib/pro';
3
3
  import { ensureInitialized } from '@/lib/db/init';
4
4
  import { getPaneById, updatePane, deletePane } from '@/lib/db/queries';
5
+ import { withUser } from '@/lib/auth';
5
6
 
6
7
  const notAvailable = () =>
7
8
  Response.json({ error: 'Requires @spaces/pro' }, { status: 404 });
@@ -17,11 +18,16 @@ export async function GET(req: NextRequest, { params }: { params: Promise<{ id:
17
18
  throw e;
18
19
  }
19
20
 
21
+ const keyUser = keyRecord?.username;
22
+ if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
23
+
20
24
  const { id } = await params;
21
- await ensureInitialized();
22
- const pane = getPaneById(id);
23
- if (!pane) return Response.json({ error: 'Pane not found' }, { status: 404 });
24
- return Response.json(pane);
25
+ return withUser(keyUser, async () => {
26
+ await ensureInitialized();
27
+ const pane = getPaneById(id);
28
+ if (!pane) return Response.json({ error: 'Pane not found' }, { status: 404 });
29
+ return Response.json(pane);
30
+ });
25
31
  }
26
32
 
27
33
  export async function PUT(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {
@@ -36,11 +42,16 @@ export async function PUT(req: NextRequest, { params }: { params: Promise<{ id:
36
42
  }
37
43
  if (keyRecord?.permissions !== 'admin') return Response.json({ error: 'Admin permission required' }, { status: 403 });
38
44
 
45
+ const keyUser = keyRecord?.username;
46
+ if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
47
+
39
48
  const { id } = await params;
40
- await ensureInitialized();
41
- const body = await req.json();
42
- updatePane(id, body);
43
- return Response.json({ success: true });
49
+ return withUser(keyUser, async () => {
50
+ await ensureInitialized();
51
+ const body = await req.json();
52
+ updatePane(id, body);
53
+ return Response.json({ success: true });
54
+ });
44
55
  }
45
56
 
46
57
  export async function DELETE(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {
@@ -55,8 +66,13 @@ export async function DELETE(req: NextRequest, { params }: { params: Promise<{ i
55
66
  }
56
67
  if (keyRecord?.permissions !== 'admin') return Response.json({ error: 'Admin permission required' }, { status: 403 });
57
68
 
69
+ const keyUser = keyRecord?.username;
70
+ if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
71
+
58
72
  const { id } = await params;
59
- await ensureInitialized();
60
- deletePane(id);
61
- return Response.json({ success: true });
73
+ return withUser(keyUser, async () => {
74
+ await ensureInitialized();
75
+ deletePane(id);
76
+ return Response.json({ success: true });
77
+ });
62
78
  }
@@ -3,6 +3,7 @@ import { randomUUID } from 'crypto';
3
3
  import { getPro } from '@/lib/pro';
4
4
  import { ensureInitialized } from '@/lib/db/init';
5
5
  import { getPanesByWorkspace, getActivePanes, createPane } from '@/lib/db/queries';
6
+ import { withUser } from '@/lib/auth';
6
7
 
7
8
  const notAvailable = () =>
8
9
  Response.json({ error: 'Requires @spaces/pro' }, { status: 404 });
@@ -18,10 +19,15 @@ export async function GET(req: NextRequest) {
18
19
  throw e;
19
20
  }
20
21
 
21
- await ensureInitialized();
22
- const wsId = req.nextUrl.searchParams.get('workspace_id');
23
- const panes = wsId ? getPanesByWorkspace(parseInt(wsId, 10)) : getActivePanes();
24
- return Response.json({ panes });
22
+ const keyUser = keyRecord?.username;
23
+ if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
24
+
25
+ return withUser(keyUser, async () => {
26
+ await ensureInitialized();
27
+ const wsId = req.nextUrl.searchParams.get('workspace_id');
28
+ const panes = wsId ? getPanesByWorkspace(parseInt(wsId, 10)) : getActivePanes();
29
+ return Response.json({ panes });
30
+ });
25
31
  }
26
32
 
27
33
  export async function POST(req: NextRequest) {
@@ -36,15 +42,20 @@ export async function POST(req: NextRequest) {
36
42
  }
37
43
  if (keyRecord?.permissions !== 'admin') return Response.json({ error: 'Admin permission required' }, { status: 403 });
38
44
 
39
- await ensureInitialized();
40
- const body = await req.json();
41
- const pane = createPane({
42
- id: body.id || randomUUID(),
43
- title: body.title || 'Terminal',
44
- color: body.color || '#6366f1',
45
- cwd: body.cwd || '~',
46
- agentType: body.agentType || 'shell',
47
- workspaceId: body.workspaceId,
45
+ const keyUser = keyRecord?.username;
46
+ if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
47
+
48
+ return withUser(keyUser, async () => {
49
+ await ensureInitialized();
50
+ const body = await req.json();
51
+ const pane = createPane({
52
+ id: body.id || randomUUID(),
53
+ title: body.title || 'Terminal',
54
+ color: body.color || '#6366f1',
55
+ cwd: body.cwd || '~',
56
+ agentType: body.agentType || 'shell',
57
+ workspaceId: body.workspaceId,
58
+ });
59
+ return Response.json(pane);
48
60
  });
49
- return Response.json(pane);
50
61
  }
@@ -2,6 +2,7 @@ import { NextRequest } from 'next/server';
2
2
  import { getPro } from '@/lib/pro';
3
3
  import { ensureInitialized } from '@/lib/db/init';
4
4
  import { getAllProjects } from '@/lib/db/queries';
5
+ import { withUser } from '@/lib/auth';
5
6
 
6
7
  const notAvailable = () =>
7
8
  Response.json({ error: 'Requires @spaces/pro' }, { status: 404 });
@@ -10,8 +11,9 @@ export async function GET(req: NextRequest) {
10
11
  const pro = getPro();
11
12
  if (!pro) return notAvailable();
12
13
 
14
+ let keyRecord;
13
15
  try {
14
- pro.network.requireNetworkAuth(req);
16
+ keyRecord = pro.network.requireNetworkAuth(req);
15
17
  } catch (e: any) {
16
18
  if (e.name === 'NetworkAuthError') {
17
19
  return Response.json({ error: e.message }, { status: 401 });
@@ -19,7 +21,12 @@ export async function GET(req: NextRequest) {
19
21
  throw e;
20
22
  }
21
23
 
22
- await ensureInitialized();
23
- const projects = getAllProjects();
24
- return Response.json(projects);
24
+ const keyUser = keyRecord?.username;
25
+ if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
26
+
27
+ return withUser(keyUser, async () => {
28
+ await ensureInitialized();
29
+ const projects = getAllProjects();
30
+ return Response.json(projects);
31
+ });
25
32
  }
@@ -2,6 +2,7 @@ import { NextRequest } from 'next/server';
2
2
  import { getPro } from '@/lib/pro';
3
3
  import { ensureInitialized } from '@/lib/db/init';
4
4
  import { searchSessions } from '@/lib/db/queries';
5
+ import { withUser } from '@/lib/auth';
5
6
 
6
7
  const notAvailable = () =>
7
8
  Response.json({ error: 'Requires @spaces/pro' }, { status: 404 });
@@ -10,8 +11,9 @@ export async function GET(req: NextRequest) {
10
11
  const pro = getPro();
11
12
  if (!pro) return notAvailable();
12
13
 
14
+ let keyRecord;
13
15
  try {
14
- pro.network.requireNetworkAuth(req);
16
+ keyRecord = pro.network.requireNetworkAuth(req);
15
17
  } catch (e: any) {
16
18
  if (e.name === 'NetworkAuthError') {
17
19
  return Response.json({ error: e.message }, { status: 401 });
@@ -19,20 +21,25 @@ export async function GET(req: NextRequest) {
19
21
  throw e;
20
22
  }
21
23
 
22
- await ensureInitialized();
24
+ const keyUser = keyRecord?.username;
25
+ if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
23
26
 
24
- const { searchParams } = req.nextUrl;
25
- const query = searchParams.get('q') || '';
26
- if (!query) {
27
- return Response.json({ results: [], query: '' });
28
- }
27
+ return withUser(keyUser, async () => {
28
+ await ensureInitialized();
29
+
30
+ const { searchParams } = req.nextUrl;
31
+ const query = searchParams.get('q') || '';
32
+ if (!query) {
33
+ return Response.json({ results: [], query: '' });
34
+ }
29
35
 
30
- const params = {
31
- projectId: searchParams.get('projectId') || undefined,
32
- limit: parseInt(searchParams.get('limit') || '20', 10),
33
- offset: parseInt(searchParams.get('offset') || '0', 10),
34
- };
36
+ const params = {
37
+ projectId: searchParams.get('projectId') || undefined,
38
+ limit: parseInt(searchParams.get('limit') || '20', 10),
39
+ offset: parseInt(searchParams.get('offset') || '0', 10),
40
+ };
35
41
 
36
- const results = searchSessions(query, params);
37
- return Response.json({ results, query });
42
+ const results = searchSessions(query, params);
43
+ return Response.json({ results, query });
44
+ });
38
45
  }