cuelo 0.6.6 → 0.6.8

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 (292) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +10 -9
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +6 -0
  8. package/.next/server/app/_global-error/page.js +3 -3
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  25. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/api/agent/[id]/account/route.js +1 -1
  29. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  30. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  31. package/.next/server/app/api/agent/[id]/route.js +1 -1
  32. package/.next/server/app/api/agent/new/route.js +1 -1
  33. package/.next/server/app/api/agent/running/route.js +1 -1
  34. package/.next/server/app/api/attachments/route.js +2 -2
  35. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  36. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  37. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  38. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  39. package/.next/server/app/api/auth/providers/route.js +1 -1
  40. package/.next/server/app/api/cwd/browse/route.js +1 -1
  41. package/.next/server/app/api/cwd/validate/route.js +1 -1
  42. package/.next/server/app/api/default-cwd/route.js +1 -1
  43. package/.next/server/app/api/display-settings/route.js +1 -1
  44. package/.next/server/app/api/document-text/route.js +2 -2
  45. package/.next/server/app/api/experiments/route.js +1 -1
  46. package/.next/server/app/api/file-index/route.js +1 -1
  47. package/.next/server/app/api/files/[...path]/route.js +1 -1
  48. package/.next/server/app/api/git/diff/route.js +2 -2
  49. package/.next/server/app/api/git/status/route.js +2 -2
  50. package/.next/server/app/api/gpt6/handles/route.js +1 -1
  51. package/.next/server/app/api/gpt6/reply/route.js +1 -1
  52. package/.next/server/app/api/gpt6/token/route.js +1 -1
  53. package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
  54. package/.next/server/app/api/home/route.js +1 -1
  55. package/.next/server/app/api/live/call/[callId]/route.js +1 -1
  56. package/.next/server/app/api/live/events/route.js +2 -2
  57. package/.next/server/app/api/live/offer/route.js +1 -1
  58. package/.next/server/app/api/live/voices/route.js +1 -1
  59. package/.next/server/app/api/lounge/events/route.js +2 -2
  60. package/.next/server/app/api/lounge/route.js +1 -1
  61. package/.next/server/app/api/mcp/route.js +2 -2
  62. package/.next/server/app/api/model-roles/route.js +1 -1
  63. package/.next/server/app/api/models/route.js +1 -1
  64. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  65. package/.next/server/app/api/models-config/discover/route.js +1 -1
  66. package/.next/server/app/api/models-config/route.js +3 -3
  67. package/.next/server/app/api/models-config/test/route.js +1 -1
  68. package/.next/server/app/api/plugins/route.js +1 -1
  69. package/.next/server/app/api/project-trust/route.js +1 -1
  70. package/.next/server/app/api/projects/route.js +1 -1
  71. package/.next/server/app/api/runs/[runId]/route.js +1 -1
  72. package/.next/server/app/api/runs/route.js +1 -1
  73. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  74. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  75. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  76. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  77. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  78. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  79. package/.next/server/app/api/sessions/route.js +1 -1
  80. package/.next/server/app/api/sessions/search/route.js +1 -0
  81. package/.next/server/app/api/sessions/search/route.js.nft.json +1 -0
  82. package/.next/server/app/api/sessions/search/route_client-reference-manifest.js +1 -0
  83. package/.next/server/app/api/settings/route.js +1 -1
  84. package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
  85. package/.next/server/app/api/skills/check/route.js +1 -1
  86. package/.next/server/app/api/skills/install/route.js +2 -2
  87. package/.next/server/app/api/skills/route.js +2 -2
  88. package/.next/server/app/api/skills/search/route.js +1 -1
  89. package/.next/server/app/api/skills/update/route.js +1 -1
  90. package/.next/server/app/api/theme/route.js +1 -1
  91. package/.next/server/app/api/tool-image/route.js +1 -1
  92. package/.next/server/app/api/update-maintenance/route.js +3 -3
  93. package/.next/server/app/api/updates/route.js +1 -1
  94. package/.next/server/app/api/web-access/recovery/route.js +1 -1
  95. package/.next/server/app/api/web-access/route.js +1 -1
  96. package/.next/server/app/api/web6/consults/route.js +1 -1
  97. package/.next/server/app/api/worktrees/route.js +1 -1
  98. package/.next/server/app/favicon.ico/route.js +1 -1
  99. package/.next/server/app/index.html +1 -1
  100. package/.next/server/app/index.rsc +5 -5
  101. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  102. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  103. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  104. package/.next/server/app/index.segments/_index.segment.rsc +3 -3
  105. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  106. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  107. package/.next/server/app/page.js +17 -17
  108. package/.next/server/app/page_client-reference-manifest.js +1 -1
  109. package/.next/server/app/recover/page.js +2 -2
  110. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/recover.html +1 -1
  112. package/.next/server/app/recover.rsc +3 -3
  113. package/.next/server/app/recover.segments/_full.segment.rsc +3 -3
  114. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  115. package/.next/server/app/recover.segments/_index.segment.rsc +3 -3
  116. package/.next/server/app/recover.segments/_tree.segment.rsc +2 -2
  117. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
  118. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  119. package/.next/server/app-paths-manifest.json +10 -9
  120. package/.next/server/chunks/5582.js +2 -2
  121. package/.next/server/chunks/6429.js +3 -3
  122. package/.next/server/chunks/9108.js +1 -1
  123. package/.next/server/chunks/9280.js +4 -4
  124. package/.next/server/middleware-build-manifest.js +1 -1
  125. package/.next/server/pages/404.html +1 -1
  126. package/.next/server/pages/500.html +1 -1
  127. package/.next/server/server-reference-manifest.json +1 -1
  128. package/.next/static/chunks/app/_global-error/page-701a3390117d7557.js +1 -0
  129. package/.next/static/chunks/app/api/agent/[id]/account/route-701a3390117d7557.js +1 -0
  130. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-701a3390117d7557.js +1 -0
  131. package/.next/static/chunks/app/api/agent/[id]/events/route-701a3390117d7557.js +1 -0
  132. package/.next/static/chunks/app/api/agent/[id]/route-701a3390117d7557.js +1 -0
  133. package/.next/static/chunks/app/api/agent/new/route-701a3390117d7557.js +1 -0
  134. package/.next/static/chunks/app/api/agent/running/route-701a3390117d7557.js +1 -0
  135. package/.next/static/chunks/app/api/attachments/route-701a3390117d7557.js +1 -0
  136. package/.next/static/chunks/app/api/auth/all-providers/route-701a3390117d7557.js +1 -0
  137. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-701a3390117d7557.js +1 -0
  138. package/.next/static/chunks/app/api/auth/login/[provider]/route-701a3390117d7557.js +1 -0
  139. package/.next/static/chunks/app/api/auth/logout/[provider]/route-701a3390117d7557.js +1 -0
  140. package/.next/static/chunks/app/api/auth/providers/route-701a3390117d7557.js +1 -0
  141. package/.next/static/chunks/app/api/cwd/browse/route-701a3390117d7557.js +1 -0
  142. package/.next/static/chunks/app/api/cwd/validate/route-701a3390117d7557.js +1 -0
  143. package/.next/static/chunks/app/api/default-cwd/route-701a3390117d7557.js +1 -0
  144. package/.next/static/chunks/app/api/display-settings/route-701a3390117d7557.js +1 -0
  145. package/.next/static/chunks/app/api/document-text/route-701a3390117d7557.js +1 -0
  146. package/.next/static/chunks/app/api/experiments/route-701a3390117d7557.js +1 -0
  147. package/.next/static/chunks/app/api/file-index/route-701a3390117d7557.js +1 -0
  148. package/.next/static/chunks/app/api/files/[...path]/route-701a3390117d7557.js +1 -0
  149. package/.next/static/chunks/app/api/git/diff/route-701a3390117d7557.js +1 -0
  150. package/.next/static/chunks/app/api/git/status/route-701a3390117d7557.js +1 -0
  151. package/.next/static/chunks/app/api/gpt6/handles/route-701a3390117d7557.js +1 -0
  152. package/.next/static/chunks/app/api/gpt6/reply/route-701a3390117d7557.js +1 -0
  153. package/.next/static/chunks/app/api/gpt6/token/route-701a3390117d7557.js +1 -0
  154. package/.next/static/chunks/app/api/gpt6/web6-session/route-701a3390117d7557.js +1 -0
  155. package/.next/static/chunks/app/api/home/route-701a3390117d7557.js +1 -0
  156. package/.next/static/chunks/app/api/live/call/[callId]/route-701a3390117d7557.js +1 -0
  157. package/.next/static/chunks/app/api/live/events/route-701a3390117d7557.js +1 -0
  158. package/.next/static/chunks/app/api/live/offer/route-701a3390117d7557.js +1 -0
  159. package/.next/static/chunks/app/api/live/voices/route-701a3390117d7557.js +1 -0
  160. package/.next/static/chunks/app/api/lounge/events/route-701a3390117d7557.js +1 -0
  161. package/.next/static/chunks/app/api/lounge/route-701a3390117d7557.js +1 -0
  162. package/.next/static/chunks/app/api/mcp/route-701a3390117d7557.js +1 -0
  163. package/.next/static/chunks/app/api/model-roles/route-701a3390117d7557.js +1 -0
  164. package/.next/static/chunks/app/api/models/route-701a3390117d7557.js +1 -0
  165. package/.next/static/chunks/app/api/models-config/catalog/route-701a3390117d7557.js +1 -0
  166. package/.next/static/chunks/app/api/models-config/discover/route-701a3390117d7557.js +1 -0
  167. package/.next/static/chunks/app/api/models-config/route-701a3390117d7557.js +1 -0
  168. package/.next/static/chunks/app/api/models-config/test/route-701a3390117d7557.js +1 -0
  169. package/.next/static/chunks/app/api/plugins/route-701a3390117d7557.js +1 -0
  170. package/.next/static/chunks/app/api/project-trust/route-701a3390117d7557.js +1 -0
  171. package/.next/static/chunks/app/api/projects/route-701a3390117d7557.js +1 -0
  172. package/.next/static/chunks/app/api/runs/[runId]/route-701a3390117d7557.js +1 -0
  173. package/.next/static/chunks/app/api/runs/route-701a3390117d7557.js +1 -0
  174. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-701a3390117d7557.js +1 -0
  175. package/.next/static/chunks/app/api/sessions/[id]/context/route-701a3390117d7557.js +1 -0
  176. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-701a3390117d7557.js +1 -0
  177. package/.next/static/chunks/app/api/sessions/[id]/export/route-701a3390117d7557.js +1 -0
  178. package/.next/static/chunks/app/api/sessions/[id]/route-701a3390117d7557.js +1 -0
  179. package/.next/static/chunks/app/api/sessions/[id]/state/route-701a3390117d7557.js +1 -0
  180. package/.next/static/chunks/app/api/sessions/route-701a3390117d7557.js +1 -0
  181. package/.next/static/chunks/app/api/sessions/search/route-701a3390117d7557.js +1 -0
  182. package/.next/static/chunks/app/api/settings/route-701a3390117d7557.js +1 -0
  183. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-701a3390117d7557.js +1 -0
  184. package/.next/static/chunks/app/api/skills/check/route-701a3390117d7557.js +1 -0
  185. package/.next/static/chunks/app/api/skills/install/route-701a3390117d7557.js +1 -0
  186. package/.next/static/chunks/app/api/skills/route-701a3390117d7557.js +1 -0
  187. package/.next/static/chunks/app/api/skills/search/route-701a3390117d7557.js +1 -0
  188. package/.next/static/chunks/app/api/skills/update/route-701a3390117d7557.js +1 -0
  189. package/.next/static/chunks/app/api/theme/route-701a3390117d7557.js +1 -0
  190. package/.next/static/chunks/app/api/tool-image/route-701a3390117d7557.js +1 -0
  191. package/.next/static/chunks/app/api/update-maintenance/route-701a3390117d7557.js +1 -0
  192. package/.next/static/chunks/app/api/updates/route-701a3390117d7557.js +1 -0
  193. package/.next/static/chunks/app/api/web-access/recovery/route-701a3390117d7557.js +1 -0
  194. package/.next/static/chunks/app/api/web-access/route-701a3390117d7557.js +1 -0
  195. package/.next/static/chunks/app/api/web6/consults/route-701a3390117d7557.js +1 -0
  196. package/.next/static/chunks/app/api/worktrees/route-701a3390117d7557.js +1 -0
  197. package/.next/static/chunks/app/{layout-0cd3ee1b7ad71a56.js → layout-50d78c1f0e021377.js} +1 -1
  198. package/.next/static/chunks/app/manifest.webmanifest/route-701a3390117d7557.js +1 -0
  199. package/.next/static/chunks/app/page-4c2544dfbb3d1f9a.js +22 -0
  200. package/.next/static/chunks/next/dist/client/components/builtin/app-error-701a3390117d7557.js +1 -0
  201. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-701a3390117d7557.js +1 -0
  202. package/.next/static/chunks/next/dist/client/components/builtin/not-found-701a3390117d7557.js +1 -0
  203. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-701a3390117d7557.js +1 -0
  204. package/.next/static/css/{1f257674fb782a57.css → d0ec5531aef136d6.css} +1 -1
  205. package/.next/static/hPKzLPSEaHxrT4rE0H1XO/_buildManifest.js +1 -0
  206. package/.next/trace +105 -105
  207. package/.next/trace-build +1 -1
  208. package/.next/types/app/api/sessions/search/route.ts +351 -0
  209. package/.next/types/routes.d.ts +2 -1
  210. package/.next/types/validator.ts +9 -0
  211. package/README.md +7 -3
  212. package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
  213. package/Tools/OMP_Global_Config/agent/extensions/command-guard/index.ts +4 -0
  214. package/Tools/OMP_Global_Config/agent/extensions/command-guard/powershell-syntax.ts +168 -0
  215. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +169 -0
  216. package/package.json +1 -1
  217. package/.next/static/3-TNbqZBhQBsgN3SMAKv1/_buildManifest.js +0 -1
  218. package/.next/static/chunks/app/_global-error/page-d1e510cc33aec52f.js +0 -1
  219. package/.next/static/chunks/app/api/agent/[id]/account/route-d1e510cc33aec52f.js +0 -1
  220. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-d1e510cc33aec52f.js +0 -1
  221. package/.next/static/chunks/app/api/agent/[id]/events/route-d1e510cc33aec52f.js +0 -1
  222. package/.next/static/chunks/app/api/agent/[id]/route-d1e510cc33aec52f.js +0 -1
  223. package/.next/static/chunks/app/api/agent/new/route-d1e510cc33aec52f.js +0 -1
  224. package/.next/static/chunks/app/api/agent/running/route-d1e510cc33aec52f.js +0 -1
  225. package/.next/static/chunks/app/api/attachments/route-d1e510cc33aec52f.js +0 -1
  226. package/.next/static/chunks/app/api/auth/all-providers/route-d1e510cc33aec52f.js +0 -1
  227. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-d1e510cc33aec52f.js +0 -1
  228. package/.next/static/chunks/app/api/auth/login/[provider]/route-d1e510cc33aec52f.js +0 -1
  229. package/.next/static/chunks/app/api/auth/logout/[provider]/route-d1e510cc33aec52f.js +0 -1
  230. package/.next/static/chunks/app/api/auth/providers/route-d1e510cc33aec52f.js +0 -1
  231. package/.next/static/chunks/app/api/cwd/browse/route-d1e510cc33aec52f.js +0 -1
  232. package/.next/static/chunks/app/api/cwd/validate/route-d1e510cc33aec52f.js +0 -1
  233. package/.next/static/chunks/app/api/default-cwd/route-d1e510cc33aec52f.js +0 -1
  234. package/.next/static/chunks/app/api/display-settings/route-d1e510cc33aec52f.js +0 -1
  235. package/.next/static/chunks/app/api/document-text/route-d1e510cc33aec52f.js +0 -1
  236. package/.next/static/chunks/app/api/experiments/route-d1e510cc33aec52f.js +0 -1
  237. package/.next/static/chunks/app/api/file-index/route-d1e510cc33aec52f.js +0 -1
  238. package/.next/static/chunks/app/api/files/[...path]/route-d1e510cc33aec52f.js +0 -1
  239. package/.next/static/chunks/app/api/git/diff/route-d1e510cc33aec52f.js +0 -1
  240. package/.next/static/chunks/app/api/git/status/route-d1e510cc33aec52f.js +0 -1
  241. package/.next/static/chunks/app/api/gpt6/handles/route-d1e510cc33aec52f.js +0 -1
  242. package/.next/static/chunks/app/api/gpt6/reply/route-d1e510cc33aec52f.js +0 -1
  243. package/.next/static/chunks/app/api/gpt6/token/route-d1e510cc33aec52f.js +0 -1
  244. package/.next/static/chunks/app/api/gpt6/web6-session/route-d1e510cc33aec52f.js +0 -1
  245. package/.next/static/chunks/app/api/home/route-d1e510cc33aec52f.js +0 -1
  246. package/.next/static/chunks/app/api/live/call/[callId]/route-d1e510cc33aec52f.js +0 -1
  247. package/.next/static/chunks/app/api/live/events/route-d1e510cc33aec52f.js +0 -1
  248. package/.next/static/chunks/app/api/live/offer/route-d1e510cc33aec52f.js +0 -1
  249. package/.next/static/chunks/app/api/live/voices/route-d1e510cc33aec52f.js +0 -1
  250. package/.next/static/chunks/app/api/lounge/events/route-d1e510cc33aec52f.js +0 -1
  251. package/.next/static/chunks/app/api/lounge/route-d1e510cc33aec52f.js +0 -1
  252. package/.next/static/chunks/app/api/mcp/route-d1e510cc33aec52f.js +0 -1
  253. package/.next/static/chunks/app/api/model-roles/route-d1e510cc33aec52f.js +0 -1
  254. package/.next/static/chunks/app/api/models/route-d1e510cc33aec52f.js +0 -1
  255. package/.next/static/chunks/app/api/models-config/catalog/route-d1e510cc33aec52f.js +0 -1
  256. package/.next/static/chunks/app/api/models-config/discover/route-d1e510cc33aec52f.js +0 -1
  257. package/.next/static/chunks/app/api/models-config/route-d1e510cc33aec52f.js +0 -1
  258. package/.next/static/chunks/app/api/models-config/test/route-d1e510cc33aec52f.js +0 -1
  259. package/.next/static/chunks/app/api/plugins/route-d1e510cc33aec52f.js +0 -1
  260. package/.next/static/chunks/app/api/project-trust/route-d1e510cc33aec52f.js +0 -1
  261. package/.next/static/chunks/app/api/projects/route-d1e510cc33aec52f.js +0 -1
  262. package/.next/static/chunks/app/api/runs/[runId]/route-d1e510cc33aec52f.js +0 -1
  263. package/.next/static/chunks/app/api/runs/route-d1e510cc33aec52f.js +0 -1
  264. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-d1e510cc33aec52f.js +0 -1
  265. package/.next/static/chunks/app/api/sessions/[id]/context/route-d1e510cc33aec52f.js +0 -1
  266. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-d1e510cc33aec52f.js +0 -1
  267. package/.next/static/chunks/app/api/sessions/[id]/export/route-d1e510cc33aec52f.js +0 -1
  268. package/.next/static/chunks/app/api/sessions/[id]/route-d1e510cc33aec52f.js +0 -1
  269. package/.next/static/chunks/app/api/sessions/[id]/state/route-d1e510cc33aec52f.js +0 -1
  270. package/.next/static/chunks/app/api/sessions/route-d1e510cc33aec52f.js +0 -1
  271. package/.next/static/chunks/app/api/settings/route-d1e510cc33aec52f.js +0 -1
  272. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-d1e510cc33aec52f.js +0 -1
  273. package/.next/static/chunks/app/api/skills/check/route-d1e510cc33aec52f.js +0 -1
  274. package/.next/static/chunks/app/api/skills/install/route-d1e510cc33aec52f.js +0 -1
  275. package/.next/static/chunks/app/api/skills/route-d1e510cc33aec52f.js +0 -1
  276. package/.next/static/chunks/app/api/skills/search/route-d1e510cc33aec52f.js +0 -1
  277. package/.next/static/chunks/app/api/skills/update/route-d1e510cc33aec52f.js +0 -1
  278. package/.next/static/chunks/app/api/theme/route-d1e510cc33aec52f.js +0 -1
  279. package/.next/static/chunks/app/api/tool-image/route-d1e510cc33aec52f.js +0 -1
  280. package/.next/static/chunks/app/api/update-maintenance/route-d1e510cc33aec52f.js +0 -1
  281. package/.next/static/chunks/app/api/updates/route-d1e510cc33aec52f.js +0 -1
  282. package/.next/static/chunks/app/api/web-access/recovery/route-d1e510cc33aec52f.js +0 -1
  283. package/.next/static/chunks/app/api/web-access/route-d1e510cc33aec52f.js +0 -1
  284. package/.next/static/chunks/app/api/web6/consults/route-d1e510cc33aec52f.js +0 -1
  285. package/.next/static/chunks/app/api/worktrees/route-d1e510cc33aec52f.js +0 -1
  286. package/.next/static/chunks/app/manifest.webmanifest/route-d1e510cc33aec52f.js +0 -1
  287. package/.next/static/chunks/app/page-42bb9e939eef51e6.js +0 -22
  288. package/.next/static/chunks/next/dist/client/components/builtin/app-error-d1e510cc33aec52f.js +0 -1
  289. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-d1e510cc33aec52f.js +0 -1
  290. package/.next/static/chunks/next/dist/client/components/builtin/not-found-d1e510cc33aec52f.js +0 -1
  291. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d1e510cc33aec52f.js +0 -1
  292. /package/.next/static/{3-TNbqZBhQBsgN3SMAKv1 → hPKzLPSEaHxrT4rE0H1XO}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":91652796,"timestamp":741083,"id":14,"parentId":1,"tags":{},"startTime":1790765555546,"traceId":"c18bf164adcd5868"},{"name":"run-typescript","duration":14133056,"timestamp":92736076,"id":10707,"parentId":1,"tags":{},"startTime":1790765647541,"traceId":"c18bf164adcd5868"},{"name":"static-check","duration":3607011,"timestamp":106953217,"id":10710,"parentId":1,"tags":{},"startTime":1790765661759,"traceId":"c18bf164adcd5868"},{"name":"static-generation","duration":9747103,"timestamp":110660497,"id":10862,"parentId":1,"tags":{},"startTime":1790765665466,"traceId":"c18bf164adcd5868"},{"name":"collect-build-traces","duration":16611498,"timestamp":110624918,"id":10859,"parentId":1,"tags":{},"startTime":1790765665430,"traceId":"c18bf164adcd5868"},{"name":"telemetry-flush","duration":72,"timestamp":127240213,"id":10871,"parentId":1,"tags":{},"startTime":1790765682046,"traceId":"c18bf164adcd5868"},{"name":"next-build","duration":126587215,"timestamp":653094,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1790765555458,"traceId":"c18bf164adcd5868"}]
1
+ [{"name":"run-webpack","duration":94212091,"timestamp":1068143,"id":14,"parentId":1,"tags":{},"startTime":1790791782933,"traceId":"ef9c20941a10f64d"},{"name":"run-typescript","duration":15350528,"timestamp":95608687,"id":10735,"parentId":1,"tags":{},"startTime":1790791877473,"traceId":"ef9c20941a10f64d"},{"name":"static-check","duration":3942334,"timestamp":111041358,"id":10738,"parentId":1,"tags":{},"startTime":1790791892906,"traceId":"ef9c20941a10f64d"},{"name":"static-generation","duration":11036951,"timestamp":115105841,"id":10892,"parentId":1,"tags":{},"startTime":1790791896970,"traceId":"ef9c20941a10f64d"},{"name":"collect-build-traces","duration":19364468,"timestamp":115073067,"id":10889,"parentId":1,"tags":{},"startTime":1790791896937,"traceId":"ef9c20941a10f64d"},{"name":"telemetry-flush","duration":81,"timestamp":134442431,"id":10901,"parentId":1,"tags":{},"startTime":1790791916307,"traceId":"ef9c20941a10f64d"},{"name":"next-build","duration":133475924,"timestamp":966614,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1790791782832,"traceId":"ef9c20941a10f64d"}]
@@ -0,0 +1,351 @@
1
+ // File: D:\a\CUELO\CUELO\app\api\sessions\search\route.ts
2
+ import * as entry from '../../../../../../app/api/sessions/search/route.js'
3
+ import type { NextRequest } from 'next/server.js'
4
+
5
+ import type { InstantConfigForTypeCheckInternal } from 'next/dist/build/segment-config/app/app-segment-config.js'
6
+
7
+ type TEntry = typeof import('../../../../../../app/api/sessions/search/route.js')
8
+
9
+ type SegmentParams<T extends Object = any> = T extends Record<string, any>
10
+ ? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
11
+ : T
12
+
13
+ // Check that the entry is a valid entry
14
+ checkFields<Diff<{
15
+ GET?: Function
16
+ HEAD?: Function
17
+ OPTIONS?: Function
18
+ POST?: Function
19
+ PUT?: Function
20
+ DELETE?: Function
21
+ PATCH?: Function
22
+ config?: {}
23
+ generateStaticParams?: Function
24
+ unstable_instant?: InstantConfigForTypeCheckInternal
25
+ unstable_dynamicStaleTime?: number
26
+ revalidate?: RevalidateRange<TEntry> | false
27
+ dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
28
+ dynamicParams?: boolean
29
+ fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
30
+ preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
31
+ runtime?: 'nodejs' | 'experimental-edge' | 'edge'
32
+ maxDuration?: number
33
+
34
+ }, TEntry, ''>>()
35
+
36
+ type RouteContext = { params: Promise<SegmentParams> }
37
+ // Check the prop type of the entry function
38
+ if ('GET' in entry) {
39
+ checkFields<
40
+ Diff<
41
+ ParamCheck<Request | NextRequest>,
42
+ {
43
+ __tag__: 'GET'
44
+ __param_position__: 'first'
45
+ __param_type__: FirstArg<MaybeField<TEntry, 'GET'>>
46
+ },
47
+ 'GET'
48
+ >
49
+ >()
50
+ checkFields<
51
+ Diff<
52
+ ParamCheck<RouteContext>,
53
+ {
54
+ __tag__: 'GET'
55
+ __param_position__: 'second'
56
+ __param_type__: SecondArg<MaybeField<TEntry, 'GET'>>
57
+ },
58
+ 'GET'
59
+ >
60
+ >()
61
+
62
+ checkFields<
63
+ Diff<
64
+ {
65
+ __tag__: 'GET',
66
+ __return_type__: Response | void | never | Promise<Response | void | never>
67
+ },
68
+ {
69
+ __tag__: 'GET',
70
+ __return_type__: ReturnType<MaybeField<TEntry, 'GET'>>
71
+ },
72
+ 'GET'
73
+ >
74
+ >()
75
+ }
76
+ // Check the prop type of the entry function
77
+ if ('HEAD' in entry) {
78
+ checkFields<
79
+ Diff<
80
+ ParamCheck<Request | NextRequest>,
81
+ {
82
+ __tag__: 'HEAD'
83
+ __param_position__: 'first'
84
+ __param_type__: FirstArg<MaybeField<TEntry, 'HEAD'>>
85
+ },
86
+ 'HEAD'
87
+ >
88
+ >()
89
+ checkFields<
90
+ Diff<
91
+ ParamCheck<RouteContext>,
92
+ {
93
+ __tag__: 'HEAD'
94
+ __param_position__: 'second'
95
+ __param_type__: SecondArg<MaybeField<TEntry, 'HEAD'>>
96
+ },
97
+ 'HEAD'
98
+ >
99
+ >()
100
+
101
+ checkFields<
102
+ Diff<
103
+ {
104
+ __tag__: 'HEAD',
105
+ __return_type__: Response | void | never | Promise<Response | void | never>
106
+ },
107
+ {
108
+ __tag__: 'HEAD',
109
+ __return_type__: ReturnType<MaybeField<TEntry, 'HEAD'>>
110
+ },
111
+ 'HEAD'
112
+ >
113
+ >()
114
+ }
115
+ // Check the prop type of the entry function
116
+ if ('OPTIONS' in entry) {
117
+ checkFields<
118
+ Diff<
119
+ ParamCheck<Request | NextRequest>,
120
+ {
121
+ __tag__: 'OPTIONS'
122
+ __param_position__: 'first'
123
+ __param_type__: FirstArg<MaybeField<TEntry, 'OPTIONS'>>
124
+ },
125
+ 'OPTIONS'
126
+ >
127
+ >()
128
+ checkFields<
129
+ Diff<
130
+ ParamCheck<RouteContext>,
131
+ {
132
+ __tag__: 'OPTIONS'
133
+ __param_position__: 'second'
134
+ __param_type__: SecondArg<MaybeField<TEntry, 'OPTIONS'>>
135
+ },
136
+ 'OPTIONS'
137
+ >
138
+ >()
139
+
140
+ checkFields<
141
+ Diff<
142
+ {
143
+ __tag__: 'OPTIONS',
144
+ __return_type__: Response | void | never | Promise<Response | void | never>
145
+ },
146
+ {
147
+ __tag__: 'OPTIONS',
148
+ __return_type__: ReturnType<MaybeField<TEntry, 'OPTIONS'>>
149
+ },
150
+ 'OPTIONS'
151
+ >
152
+ >()
153
+ }
154
+ // Check the prop type of the entry function
155
+ if ('POST' in entry) {
156
+ checkFields<
157
+ Diff<
158
+ ParamCheck<Request | NextRequest>,
159
+ {
160
+ __tag__: 'POST'
161
+ __param_position__: 'first'
162
+ __param_type__: FirstArg<MaybeField<TEntry, 'POST'>>
163
+ },
164
+ 'POST'
165
+ >
166
+ >()
167
+ checkFields<
168
+ Diff<
169
+ ParamCheck<RouteContext>,
170
+ {
171
+ __tag__: 'POST'
172
+ __param_position__: 'second'
173
+ __param_type__: SecondArg<MaybeField<TEntry, 'POST'>>
174
+ },
175
+ 'POST'
176
+ >
177
+ >()
178
+
179
+ checkFields<
180
+ Diff<
181
+ {
182
+ __tag__: 'POST',
183
+ __return_type__: Response | void | never | Promise<Response | void | never>
184
+ },
185
+ {
186
+ __tag__: 'POST',
187
+ __return_type__: ReturnType<MaybeField<TEntry, 'POST'>>
188
+ },
189
+ 'POST'
190
+ >
191
+ >()
192
+ }
193
+ // Check the prop type of the entry function
194
+ if ('PUT' in entry) {
195
+ checkFields<
196
+ Diff<
197
+ ParamCheck<Request | NextRequest>,
198
+ {
199
+ __tag__: 'PUT'
200
+ __param_position__: 'first'
201
+ __param_type__: FirstArg<MaybeField<TEntry, 'PUT'>>
202
+ },
203
+ 'PUT'
204
+ >
205
+ >()
206
+ checkFields<
207
+ Diff<
208
+ ParamCheck<RouteContext>,
209
+ {
210
+ __tag__: 'PUT'
211
+ __param_position__: 'second'
212
+ __param_type__: SecondArg<MaybeField<TEntry, 'PUT'>>
213
+ },
214
+ 'PUT'
215
+ >
216
+ >()
217
+
218
+ checkFields<
219
+ Diff<
220
+ {
221
+ __tag__: 'PUT',
222
+ __return_type__: Response | void | never | Promise<Response | void | never>
223
+ },
224
+ {
225
+ __tag__: 'PUT',
226
+ __return_type__: ReturnType<MaybeField<TEntry, 'PUT'>>
227
+ },
228
+ 'PUT'
229
+ >
230
+ >()
231
+ }
232
+ // Check the prop type of the entry function
233
+ if ('DELETE' in entry) {
234
+ checkFields<
235
+ Diff<
236
+ ParamCheck<Request | NextRequest>,
237
+ {
238
+ __tag__: 'DELETE'
239
+ __param_position__: 'first'
240
+ __param_type__: FirstArg<MaybeField<TEntry, 'DELETE'>>
241
+ },
242
+ 'DELETE'
243
+ >
244
+ >()
245
+ checkFields<
246
+ Diff<
247
+ ParamCheck<RouteContext>,
248
+ {
249
+ __tag__: 'DELETE'
250
+ __param_position__: 'second'
251
+ __param_type__: SecondArg<MaybeField<TEntry, 'DELETE'>>
252
+ },
253
+ 'DELETE'
254
+ >
255
+ >()
256
+
257
+ checkFields<
258
+ Diff<
259
+ {
260
+ __tag__: 'DELETE',
261
+ __return_type__: Response | void | never | Promise<Response | void | never>
262
+ },
263
+ {
264
+ __tag__: 'DELETE',
265
+ __return_type__: ReturnType<MaybeField<TEntry, 'DELETE'>>
266
+ },
267
+ 'DELETE'
268
+ >
269
+ >()
270
+ }
271
+ // Check the prop type of the entry function
272
+ if ('PATCH' in entry) {
273
+ checkFields<
274
+ Diff<
275
+ ParamCheck<Request | NextRequest>,
276
+ {
277
+ __tag__: 'PATCH'
278
+ __param_position__: 'first'
279
+ __param_type__: FirstArg<MaybeField<TEntry, 'PATCH'>>
280
+ },
281
+ 'PATCH'
282
+ >
283
+ >()
284
+ checkFields<
285
+ Diff<
286
+ ParamCheck<RouteContext>,
287
+ {
288
+ __tag__: 'PATCH'
289
+ __param_position__: 'second'
290
+ __param_type__: SecondArg<MaybeField<TEntry, 'PATCH'>>
291
+ },
292
+ 'PATCH'
293
+ >
294
+ >()
295
+
296
+ checkFields<
297
+ Diff<
298
+ {
299
+ __tag__: 'PATCH',
300
+ __return_type__: Response | void | never | Promise<Response | void | never>
301
+ },
302
+ {
303
+ __tag__: 'PATCH',
304
+ __return_type__: ReturnType<MaybeField<TEntry, 'PATCH'>>
305
+ },
306
+ 'PATCH'
307
+ >
308
+ >()
309
+ }
310
+
311
+ // Check the arguments and return type of the generateStaticParams function
312
+ if ('generateStaticParams' in entry) {
313
+ checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
314
+ checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
315
+ }
316
+
317
+ export interface PageProps {
318
+ params?: Promise<SegmentParams>
319
+ searchParams?: Promise<any>
320
+ }
321
+ export interface LayoutProps {
322
+ children?: React.ReactNode
323
+
324
+ params?: Promise<SegmentParams>
325
+ }
326
+
327
+ // =============
328
+ // Utility types
329
+ type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
330
+
331
+ // If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
332
+ type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
333
+ type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
334
+
335
+ type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
336
+ type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
337
+ type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
338
+
339
+ type ParamCheck<T> = {
340
+ __tag__: string
341
+ __param_position__: string
342
+ __param_type__: T
343
+ }
344
+
345
+ function checkFields<_ extends { [k in keyof any]: never }>() {}
346
+
347
+ // https://github.com/sindresorhus/type-fest
348
+ type Numeric = number | bigint
349
+ type Zero = 0 | 0n
350
+ type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
351
+ type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/" | "/recover"
5
- type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/account" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/new" | "/api/agent/running" | "/api/attachments" | "/api/auth/all-providers" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/display-settings" | "/api/document-text" | "/api/experiments" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/gpt6/handles" | "/api/gpt6/reply" | "/api/gpt6/token" | "/api/gpt6/web6-session" | "/api/home" | "/api/live/call/[callId]" | "/api/live/events" | "/api/live/offer" | "/api/live/voices" | "/api/lounge" | "/api/lounge/events" | "/api/mcp" | "/api/model-roles" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/plugins" | "/api/project-trust" | "/api/projects" | "/api/runs" | "/api/runs/[runId]" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/export" | "/api/sessions/[id]/state" | "/api/settings" | "/api/sidecars/[service]/[...path]" | "/api/skills" | "/api/skills/check" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/theme" | "/api/tool-image" | "/api/update-maintenance" | "/api/updates" | "/api/web-access" | "/api/web-access/recovery" | "/api/web6/consults" | "/api/worktrees"
5
+ type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/account" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/new" | "/api/agent/running" | "/api/attachments" | "/api/auth/all-providers" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/display-settings" | "/api/document-text" | "/api/experiments" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/gpt6/handles" | "/api/gpt6/reply" | "/api/gpt6/token" | "/api/gpt6/web6-session" | "/api/home" | "/api/live/call/[callId]" | "/api/live/events" | "/api/live/offer" | "/api/live/voices" | "/api/lounge" | "/api/lounge/events" | "/api/mcp" | "/api/model-roles" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/plugins" | "/api/project-trust" | "/api/projects" | "/api/runs" | "/api/runs/[runId]" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/export" | "/api/sessions/[id]/state" | "/api/sessions/search" | "/api/settings" | "/api/sidecars/[service]/[...path]" | "/api/skills" | "/api/skills/check" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/theme" | "/api/tool-image" | "/api/update-maintenance" | "/api/updates" | "/api/web-access" | "/api/web-access/recovery" | "/api/web6/consults" | "/api/worktrees"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -64,6 +64,7 @@ interface ParamMap {
64
64
  "/api/sessions/[id]/entries/[entryId]/thinking": { "id": string; "entryId": string; }
65
65
  "/api/sessions/[id]/export": { "id": string; }
66
66
  "/api/sessions/[id]/state": { "id": string; }
67
+ "/api/sessions/search": {}
67
68
  "/api/settings": {}
68
69
  "/api/sidecars/[service]/[...path]": { "service": string; "path": string[]; }
69
70
  "/api/skills": {}
@@ -533,6 +533,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
533
533
  type __Unused = __Check
534
534
  }
535
535
 
536
+ // Validate ../../app/api/sessions/search/route.ts
537
+ {
538
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/sessions/search">> = Specific
539
+ const handler = {} as typeof import("../../app/api/sessions/search/route.js")
540
+ type __Check = __IsExpected<typeof handler>
541
+ // @ts-ignore
542
+ type __Unused = __Check
543
+ }
544
+
536
545
  // Validate ../../app/api/settings/route.ts
537
546
  {
538
547
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/settings">> = Specific
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="./docs/hero.png" alt="CUELO — AI coding agent workspace and harness for omp" width="100%">
2
+ <img src="./docs/hero.webp" alt="CUELO — AI coding agent workspace and harness for omp" width="100%">
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -43,6 +43,10 @@ CUELO의 목적은 작업 중 확인한 실패와 막힘을 기억·작업 규
43
43
  - 작업 로그 패널에서 이번 턴의 과정 항목과 턴마다 쓴 파일을 따로 봅니다.
44
44
  - 입력창에 이미지·문서 외에 음성(받아쓰기), 코드·설정 파일(본문 첨부), 그 밖의 파일(저장 후 경로 첨부)을 붙여넣기·드롭·선택으로 넣습니다. 음성 받아쓰기에는 Google Antigravity 계정이 필요합니다.
45
45
  - 에이전트가 생성하거나 확인한 이미지가 그 턴의 대화 흐름에 썸네일로 보이고, 누르면 크게 열립니다.
46
+ - Ctrl+K 팔레트로 모든 대화 내용을 검색해 해당 메시지로 이동하고, 긴 대화 안에서는 Ctrl+F로 가장 오래된 메시지까지 찾습니다. 오른쪽 질문 레일로 내가 한 질문 사이를 오갑니다.
47
+ - 실행이 3분 넘게 조용하면 멈춤 경고를, 서버나 PC가 꺼져 실행이 끊긴 대화를 열면 중단 알림을 보여 줍니다. 컨텍스트 압축 중에는 경과 시간을 표시합니다.
48
+ - 모델 선택기 맨 위에 자주 고른 모델이 나오고, 팔레트에서 넓은 대화 폭을 켤 수 있습니다.
49
+ - 입력창 아래 줄은 Main 프리셋 → 그 제공자의 모델 → 추론 강도 순서이고, 추론 강도는 "자동, 최대 high"처럼 상한을 둔 자동으로도 고를 수 있습니다.
46
50
 
47
51
  **계정과 자원**
48
52
 
@@ -74,7 +78,7 @@ CUELO의 목적은 작업 중 확인한 실패와 막힘을 기억·작업 규
74
78
 
75
79
  - 완료·실패·승인 요청·선택 요청 등 상황에 맞는 캐릭터 스티커와 음성으로 알립니다(RIN · MIO · YUKI · ISANA · NOVA · SHION · HIKARI).
76
80
  - 브라우저 알림과 PWA 설치를 지원합니다.
77
- - 직접 저장한 교훈·스킬은 해당 턴 끝의 카드에서 확인합니다. 교훈 자동 기록을 켠 경우 자동 저장 알림도 작업 과정을 접어도 대화에 남습니다. 요청에 이름이 없고 필요성도 확인되지 않은 MCP 후보는 보류 안내로 나열하지 않습니다.
81
+ - 직접 저장한 교훈·스킬은 저장한 답변이나 과정 바로 뒤의 카드에서 확인합니다. 교훈 자동 기록을 켠 경우 자동 저장 알림도 작업 과정을 접어도 대화에 남습니다. 요청에 이름이 없고 필요성도 확인되지 않은 MCP 후보는 보류 안내로 나열하지 않습니다.
78
82
  - 한국어가 기본인 인터페이스입니다(영어·중국어 간체도 선택 가능).
79
83
 
80
84
  **omp-web에서 이어받은 기반 기능**
@@ -191,6 +195,6 @@ CUELO는 [@ddallabenetta](https://github.com/ddallabenetta)의 [omp-web](https:/
191
195
 
192
196
  CUELO의 에이전트 엔진은 [omp (oh-my-pi)](https://github.com/can1357/oh-my-pi)입니다. omp 소스를 이 저장소에 복사하지 않고 `@oh-my-pi/*` npm 패키지(MIT, Copyright (c) 2025 Mario Zechner, Copyright (c) 2025-2026 Can Bölük)를 의존성으로 씁니다. 각 패키지의 라이선스 전문은 설치된 패키지 안의 `LICENSE`에 들어 있습니다.
193
197
 
194
- 캐릭터(RIN · MIO · YUKI · ISANA · NOVA · SHION · HIKARI)의 그림·음성·스티커와 `docs/hero.png`는 CUELO 고유 자산입니다.
198
+ 캐릭터(RIN · MIO · YUKI · ISANA · NOVA · SHION · HIKARI)의 그림·음성·스티커와 `docs/hero.webp`는 CUELO 고유 자산입니다.
195
199
 
196
200
  코드: [MIT License](./LICENSE)
@@ -9,7 +9,7 @@ const MEMORY_RE = /(const phase1Model = await resolveMemoryModel\(\{[^}]*?fallba
9
9
  const MEMORY_DONE = /const phase1Model = await resolveMemoryModel\(\{[^}]*?fallbackRole: "smol"/;
10
10
  const EXPECTED = {
11
11
  name: 'cuelo',
12
- version: '0.6.6',
12
+ version: '0.6.8',
13
13
  distribution: 'cuelo',
14
14
  coreVersion: '18.4.4',
15
15
  };
@@ -13,6 +13,7 @@ import {
13
13
  import { resolvePreparedTaskInput } from "../lib/prepared-task";
14
14
 
15
15
  import { matchBlockedCommand } from "./matcher";
16
+ import { matchPowerShellSyntax } from "./powershell-syntax";
16
17
  import {
17
18
  bindSpawnAliases,
18
19
  createOwnershipState,
@@ -817,6 +818,9 @@ export default function commandGuard(pi: ExtensionAPI): void {
817
818
 
818
819
  if (!isToolCallEventType("bash", event)) return;
819
820
 
821
+ const powerShellReason = matchPowerShellSyntax(event.input.command);
822
+ if (powerShellReason) return { block: true, reason: powerShellReason };
823
+
820
824
  const sessionCwd = eventSessionCwd(ctx);
821
825
  const cwd =
822
826
  typeof event.input.cwd === "string" ? resolve(sessionCwd, event.input.cwd) : sessionCwd;
@@ -0,0 +1,168 @@
1
+ /**
2
+ * OMP `bash` 도구의 내장 셸은 PowerShell도 Git Bash도 아니다. PowerShell 전용 문법을 실행 위치에 쓰면
3
+ * 실행 뒤에 `pi-natives:command: syntax error`로만 드러나므로, 실행 전에 같은 기준으로 거절한다.
4
+ * 따옴표 안의 값(grep 패턴, echo 인자 등)과 heredoc 본문은 다른 프로그램의 데이터라 검사하지 않는다.
5
+ */
6
+
7
+ const CMDLETS = new Set(
8
+ [
9
+ "Add-Content", "ConvertFrom-Json", "ConvertTo-Json", "Copy-Item", "ForEach-Object",
10
+ "Get-ChildItem", "Get-Command", "Get-Content", "Get-Date", "Get-Item", "Get-Location",
11
+ "Get-Process", "Invoke-Expression", "Invoke-WebRequest", "Join-Path", "Measure-Object",
12
+ "Move-Item", "New-Item", "Out-File", "Out-Null", "Out-String", "Pop-Location",
13
+ "Push-Location", "Remove-Item", "Rename-Item", "Resolve-Path", "Select-Object",
14
+ "Select-String", "Set-Content", "Set-Location", "Sort-Object", "Split-Path", "Start-Process",
15
+ "Stop-Process", "Test-Path", "Where-Object", "Write-Error", "Write-Host", "Write-Output",
16
+ ].map((name) => name.toLowerCase()),
17
+ );
18
+
19
+ const GUIDANCE =
20
+ "PowerShell 로직은 `write`로 .ps1 파일을 만든 뒤 `powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:/절대/슬래시/경로.ps1`로 실행하세요.";
21
+
22
+ function reason(subject: string): string {
23
+ return `bash 도구의 내장 셸은 PowerShell이 아니라서 ${subject}는 실행 전에 차단됩니다. ${GUIDANCE}`;
24
+ }
25
+
26
+ /** `<<[-]'WORD'` 형태의 heredoc 본문을 지워 스크립트 파일 내용이 명령으로 검사되지 않게 한다. */
27
+ function stripHeredocBodies(command: string): string {
28
+ const lines = command.split("\n");
29
+ const kept: string[] = [];
30
+ let delimiter: string | undefined;
31
+ for (const line of lines) {
32
+ if (delimiter !== undefined) {
33
+ if (line.replace(/\r$/, "").trim() === delimiter) delimiter = undefined;
34
+ continue;
35
+ }
36
+ kept.push(line);
37
+ const marker = /<<-?\s*(?:'([^']+)'|"([^"]+)"|([A-Za-z_][\w]*))/.exec(line);
38
+ if (marker) delimiter = marker[1] ?? marker[2] ?? marker[3];
39
+ }
40
+ return kept.join("\n");
41
+ }
42
+
43
+ /** 따옴표 안쪽 글자를 공백으로 바꿔 정규식이 데이터를 코드로 오인하지 않게 한다. */
44
+ function maskQuoted(command: string): string {
45
+ let out = "";
46
+ let quote: "'" | '"' | undefined;
47
+ for (let index = 0; index < command.length; index += 1) {
48
+ const character = command[index];
49
+ if (quote) {
50
+ if (character === quote) {
51
+ quote = undefined;
52
+ out += character;
53
+ } else if (quote === '"' && character === "\\" && index + 1 < command.length) {
54
+ out += " ";
55
+ index += 1;
56
+ } else {
57
+ out += character === "\n" ? "\n" : " ";
58
+ }
59
+ continue;
60
+ }
61
+ if (character === "'" || character === '"') quote = character;
62
+ out += character;
63
+ }
64
+ return out;
65
+ }
66
+
67
+ interface Token {
68
+ value: string;
69
+ quoted: boolean;
70
+ }
71
+
72
+ /** 따옴표를 존중해 명령 구분자(; | & 줄바꿈 괄호)로 나눈 세그먼트별 토큰. */
73
+ function segmentTokens(command: string): Token[][] {
74
+ const segments: Token[][] = [];
75
+ let tokens: Token[] = [];
76
+ let value = "";
77
+ let started = false;
78
+ let quoted = false;
79
+ let quote: "'" | '"' | undefined;
80
+ const endToken = (): void => {
81
+ if (started) tokens.push({ value, quoted });
82
+ value = "";
83
+ started = false;
84
+ quoted = false;
85
+ };
86
+ const endSegment = (): void => {
87
+ endToken();
88
+ if (tokens.length > 0) segments.push(tokens);
89
+ tokens = [];
90
+ };
91
+ for (let index = 0; index < command.length; index += 1) {
92
+ const character = command[index];
93
+ if (quote) {
94
+ if (character === quote) quote = undefined;
95
+ else value += character;
96
+ continue;
97
+ }
98
+ if (character === "'" || character === '"') {
99
+ quote = character;
100
+ started = true;
101
+ quoted = true;
102
+ } else if (character === "#" && !started) {
103
+ while (index + 1 < command.length && command[index + 1] !== "\n") index += 1;
104
+ } else if (/\s/.test(character) && character !== "\n") {
105
+ endToken();
106
+ } else if (/[;|&\n(){}]/.test(character)) {
107
+ endSegment();
108
+ } else {
109
+ value += character;
110
+ started = true;
111
+ }
112
+ }
113
+ endSegment();
114
+ return segments;
115
+ }
116
+
117
+ function commandBasename(value: string): string {
118
+ const normalized = value.replace(/\\/g, "/");
119
+ return normalized.slice(normalized.lastIndexOf("/") + 1).toLowerCase().replace(/\.exe$/, "");
120
+ }
121
+
122
+ /** powershell/pwsh 호출의 판정: undefined면 허용, 문자열이면 차단 사유. */
123
+ function matchPowerShellHost(args: Token[]): string | undefined {
124
+ for (const arg of args) {
125
+ const option = arg.value.toLowerCase();
126
+ if (!arg.quoted && /^-f(?:i(?:le?)?)?$/.test(option)) return undefined;
127
+ if (!arg.quoted && (option === "-encodedcommand" || option === "-e" || option === "-ec")) {
128
+ return undefined;
129
+ }
130
+ }
131
+ const commandIndex = args.findIndex(
132
+ (arg) => !arg.quoted && ["-c", "-command", "-commandwithargs"].includes(arg.value.toLowerCase()),
133
+ );
134
+ if (commandIndex < 0) return undefined;
135
+ if (args.slice(commandIndex + 1).some((arg) => arg.value.includes("$"))) {
136
+ return reason("`-Command` 인자의 `$`(bash 층이 변형해 PowerShell이 다른 코드를 받습니다)");
137
+ }
138
+ return undefined;
139
+ }
140
+
141
+ /** bash 명령에 PowerShell 전용 문법이 실행 위치로 쓰였으면 차단 사유를, 아니면 undefined를 돌려준다. */
142
+ export function matchPowerShellSyntax(command: string): string | undefined {
143
+ const body = stripHeredocBodies(command);
144
+
145
+ for (const tokens of segmentTokens(body)) {
146
+ const head = tokens[0];
147
+ if (head.quoted) continue;
148
+ const name = commandBasename(head.value);
149
+ if (name === "powershell" || name === "pwsh") {
150
+ const hostReason = matchPowerShellHost(tokens.slice(1));
151
+ if (hostReason) return hostReason;
152
+ continue;
153
+ }
154
+ if (CMDLETS.has(name)) return reason(`cmdlet \`${head.value}\``);
155
+ }
156
+
157
+ const masked = maskQuoted(body);
158
+ const envVariable = /\$env:[A-Za-z_]\w*/i.exec(masked);
159
+ if (envVariable) return reason(`\`${envVariable[0]}\``);
160
+
161
+ const assignment = /(?:^|[;&|{\n])[ \t]*(\$[A-Za-z_]\w*)[ \t]*(?:[-+*/]|\?\?)?=(?!=)/.exec(masked);
162
+ if (assignment) return reason(`\`${assignment[1]} = ...\` 대입`);
163
+
164
+ const block = /(?:^|[;&|{\n])[ \t]*(if|elseif|foreach|while)[ \t]*\([^\n]*\)[ \t]*\{/i.exec(masked);
165
+ if (block) return reason(`\`${block[1]} (...) { }\` 블록`);
166
+
167
+ return undefined;
168
+ }