cuelo 0.6.6 → 0.6.7

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 (290) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +16 -15
  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 +16 -15
  120. package/.next/server/chunks/9108.js +1 -1
  121. package/.next/server/chunks/9280.js +4 -4
  122. package/.next/server/middleware-build-manifest.js +1 -1
  123. package/.next/server/pages/404.html +1 -1
  124. package/.next/server/pages/500.html +1 -1
  125. package/.next/server/server-reference-manifest.json +1 -1
  126. package/.next/static/ZtmM1pqseDsjZJNTAi2i3/_buildManifest.js +1 -0
  127. package/.next/static/chunks/app/_global-error/page-701a3390117d7557.js +1 -0
  128. package/.next/static/chunks/app/api/agent/[id]/account/route-701a3390117d7557.js +1 -0
  129. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-701a3390117d7557.js +1 -0
  130. package/.next/static/chunks/app/api/agent/[id]/events/route-701a3390117d7557.js +1 -0
  131. package/.next/static/chunks/app/api/agent/[id]/route-701a3390117d7557.js +1 -0
  132. package/.next/static/chunks/app/api/agent/new/route-701a3390117d7557.js +1 -0
  133. package/.next/static/chunks/app/api/agent/running/route-701a3390117d7557.js +1 -0
  134. package/.next/static/chunks/app/api/attachments/route-701a3390117d7557.js +1 -0
  135. package/.next/static/chunks/app/api/auth/all-providers/route-701a3390117d7557.js +1 -0
  136. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-701a3390117d7557.js +1 -0
  137. package/.next/static/chunks/app/api/auth/login/[provider]/route-701a3390117d7557.js +1 -0
  138. package/.next/static/chunks/app/api/auth/logout/[provider]/route-701a3390117d7557.js +1 -0
  139. package/.next/static/chunks/app/api/auth/providers/route-701a3390117d7557.js +1 -0
  140. package/.next/static/chunks/app/api/cwd/browse/route-701a3390117d7557.js +1 -0
  141. package/.next/static/chunks/app/api/cwd/validate/route-701a3390117d7557.js +1 -0
  142. package/.next/static/chunks/app/api/default-cwd/route-701a3390117d7557.js +1 -0
  143. package/.next/static/chunks/app/api/display-settings/route-701a3390117d7557.js +1 -0
  144. package/.next/static/chunks/app/api/document-text/route-701a3390117d7557.js +1 -0
  145. package/.next/static/chunks/app/api/experiments/route-701a3390117d7557.js +1 -0
  146. package/.next/static/chunks/app/api/file-index/route-701a3390117d7557.js +1 -0
  147. package/.next/static/chunks/app/api/files/[...path]/route-701a3390117d7557.js +1 -0
  148. package/.next/static/chunks/app/api/git/diff/route-701a3390117d7557.js +1 -0
  149. package/.next/static/chunks/app/api/git/status/route-701a3390117d7557.js +1 -0
  150. package/.next/static/chunks/app/api/gpt6/handles/route-701a3390117d7557.js +1 -0
  151. package/.next/static/chunks/app/api/gpt6/reply/route-701a3390117d7557.js +1 -0
  152. package/.next/static/chunks/app/api/gpt6/token/route-701a3390117d7557.js +1 -0
  153. package/.next/static/chunks/app/api/gpt6/web6-session/route-701a3390117d7557.js +1 -0
  154. package/.next/static/chunks/app/api/home/route-701a3390117d7557.js +1 -0
  155. package/.next/static/chunks/app/api/live/call/[callId]/route-701a3390117d7557.js +1 -0
  156. package/.next/static/chunks/app/api/live/events/route-701a3390117d7557.js +1 -0
  157. package/.next/static/chunks/app/api/live/offer/route-701a3390117d7557.js +1 -0
  158. package/.next/static/chunks/app/api/live/voices/route-701a3390117d7557.js +1 -0
  159. package/.next/static/chunks/app/api/lounge/events/route-701a3390117d7557.js +1 -0
  160. package/.next/static/chunks/app/api/lounge/route-701a3390117d7557.js +1 -0
  161. package/.next/static/chunks/app/api/mcp/route-701a3390117d7557.js +1 -0
  162. package/.next/static/chunks/app/api/model-roles/route-701a3390117d7557.js +1 -0
  163. package/.next/static/chunks/app/api/models/route-701a3390117d7557.js +1 -0
  164. package/.next/static/chunks/app/api/models-config/catalog/route-701a3390117d7557.js +1 -0
  165. package/.next/static/chunks/app/api/models-config/discover/route-701a3390117d7557.js +1 -0
  166. package/.next/static/chunks/app/api/models-config/route-701a3390117d7557.js +1 -0
  167. package/.next/static/chunks/app/api/models-config/test/route-701a3390117d7557.js +1 -0
  168. package/.next/static/chunks/app/api/plugins/route-701a3390117d7557.js +1 -0
  169. package/.next/static/chunks/app/api/project-trust/route-701a3390117d7557.js +1 -0
  170. package/.next/static/chunks/app/api/projects/route-701a3390117d7557.js +1 -0
  171. package/.next/static/chunks/app/api/runs/[runId]/route-701a3390117d7557.js +1 -0
  172. package/.next/static/chunks/app/api/runs/route-701a3390117d7557.js +1 -0
  173. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-701a3390117d7557.js +1 -0
  174. package/.next/static/chunks/app/api/sessions/[id]/context/route-701a3390117d7557.js +1 -0
  175. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-701a3390117d7557.js +1 -0
  176. package/.next/static/chunks/app/api/sessions/[id]/export/route-701a3390117d7557.js +1 -0
  177. package/.next/static/chunks/app/api/sessions/[id]/route-701a3390117d7557.js +1 -0
  178. package/.next/static/chunks/app/api/sessions/[id]/state/route-701a3390117d7557.js +1 -0
  179. package/.next/static/chunks/app/api/sessions/route-701a3390117d7557.js +1 -0
  180. package/.next/static/chunks/app/api/sessions/search/route-701a3390117d7557.js +1 -0
  181. package/.next/static/chunks/app/api/settings/route-701a3390117d7557.js +1 -0
  182. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-701a3390117d7557.js +1 -0
  183. package/.next/static/chunks/app/api/skills/check/route-701a3390117d7557.js +1 -0
  184. package/.next/static/chunks/app/api/skills/install/route-701a3390117d7557.js +1 -0
  185. package/.next/static/chunks/app/api/skills/route-701a3390117d7557.js +1 -0
  186. package/.next/static/chunks/app/api/skills/search/route-701a3390117d7557.js +1 -0
  187. package/.next/static/chunks/app/api/skills/update/route-701a3390117d7557.js +1 -0
  188. package/.next/static/chunks/app/api/theme/route-701a3390117d7557.js +1 -0
  189. package/.next/static/chunks/app/api/tool-image/route-701a3390117d7557.js +1 -0
  190. package/.next/static/chunks/app/api/update-maintenance/route-701a3390117d7557.js +1 -0
  191. package/.next/static/chunks/app/api/updates/route-701a3390117d7557.js +1 -0
  192. package/.next/static/chunks/app/api/web-access/recovery/route-701a3390117d7557.js +1 -0
  193. package/.next/static/chunks/app/api/web-access/route-701a3390117d7557.js +1 -0
  194. package/.next/static/chunks/app/api/web6/consults/route-701a3390117d7557.js +1 -0
  195. package/.next/static/chunks/app/api/worktrees/route-701a3390117d7557.js +1 -0
  196. package/.next/static/chunks/app/{layout-0cd3ee1b7ad71a56.js → layout-e2710f3d550fa365.js} +1 -1
  197. package/.next/static/chunks/app/manifest.webmanifest/route-701a3390117d7557.js +1 -0
  198. package/.next/static/chunks/app/page-6fbdefb38e5ea22f.js +22 -0
  199. package/.next/static/chunks/next/dist/client/components/builtin/app-error-701a3390117d7557.js +1 -0
  200. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-701a3390117d7557.js +1 -0
  201. package/.next/static/chunks/next/dist/client/components/builtin/not-found-701a3390117d7557.js +1 -0
  202. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-701a3390117d7557.js +1 -0
  203. package/.next/static/css/{1f257674fb782a57.css → d0ec5531aef136d6.css} +1 -1
  204. package/.next/trace +105 -105
  205. package/.next/trace-build +1 -1
  206. package/.next/types/app/api/sessions/search/route.ts +351 -0
  207. package/.next/types/routes.d.ts +2 -1
  208. package/.next/types/validator.ts +9 -0
  209. package/README.md +4 -1
  210. package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
  211. package/Tools/OMP_Global_Config/agent/extensions/command-guard/index.ts +4 -0
  212. package/Tools/OMP_Global_Config/agent/extensions/command-guard/powershell-syntax.ts +168 -0
  213. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +43 -0
  214. package/package.json +1 -1
  215. package/.next/static/3-TNbqZBhQBsgN3SMAKv1/_buildManifest.js +0 -1
  216. package/.next/static/chunks/app/_global-error/page-d1e510cc33aec52f.js +0 -1
  217. package/.next/static/chunks/app/api/agent/[id]/account/route-d1e510cc33aec52f.js +0 -1
  218. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-d1e510cc33aec52f.js +0 -1
  219. package/.next/static/chunks/app/api/agent/[id]/events/route-d1e510cc33aec52f.js +0 -1
  220. package/.next/static/chunks/app/api/agent/[id]/route-d1e510cc33aec52f.js +0 -1
  221. package/.next/static/chunks/app/api/agent/new/route-d1e510cc33aec52f.js +0 -1
  222. package/.next/static/chunks/app/api/agent/running/route-d1e510cc33aec52f.js +0 -1
  223. package/.next/static/chunks/app/api/attachments/route-d1e510cc33aec52f.js +0 -1
  224. package/.next/static/chunks/app/api/auth/all-providers/route-d1e510cc33aec52f.js +0 -1
  225. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-d1e510cc33aec52f.js +0 -1
  226. package/.next/static/chunks/app/api/auth/login/[provider]/route-d1e510cc33aec52f.js +0 -1
  227. package/.next/static/chunks/app/api/auth/logout/[provider]/route-d1e510cc33aec52f.js +0 -1
  228. package/.next/static/chunks/app/api/auth/providers/route-d1e510cc33aec52f.js +0 -1
  229. package/.next/static/chunks/app/api/cwd/browse/route-d1e510cc33aec52f.js +0 -1
  230. package/.next/static/chunks/app/api/cwd/validate/route-d1e510cc33aec52f.js +0 -1
  231. package/.next/static/chunks/app/api/default-cwd/route-d1e510cc33aec52f.js +0 -1
  232. package/.next/static/chunks/app/api/display-settings/route-d1e510cc33aec52f.js +0 -1
  233. package/.next/static/chunks/app/api/document-text/route-d1e510cc33aec52f.js +0 -1
  234. package/.next/static/chunks/app/api/experiments/route-d1e510cc33aec52f.js +0 -1
  235. package/.next/static/chunks/app/api/file-index/route-d1e510cc33aec52f.js +0 -1
  236. package/.next/static/chunks/app/api/files/[...path]/route-d1e510cc33aec52f.js +0 -1
  237. package/.next/static/chunks/app/api/git/diff/route-d1e510cc33aec52f.js +0 -1
  238. package/.next/static/chunks/app/api/git/status/route-d1e510cc33aec52f.js +0 -1
  239. package/.next/static/chunks/app/api/gpt6/handles/route-d1e510cc33aec52f.js +0 -1
  240. package/.next/static/chunks/app/api/gpt6/reply/route-d1e510cc33aec52f.js +0 -1
  241. package/.next/static/chunks/app/api/gpt6/token/route-d1e510cc33aec52f.js +0 -1
  242. package/.next/static/chunks/app/api/gpt6/web6-session/route-d1e510cc33aec52f.js +0 -1
  243. package/.next/static/chunks/app/api/home/route-d1e510cc33aec52f.js +0 -1
  244. package/.next/static/chunks/app/api/live/call/[callId]/route-d1e510cc33aec52f.js +0 -1
  245. package/.next/static/chunks/app/api/live/events/route-d1e510cc33aec52f.js +0 -1
  246. package/.next/static/chunks/app/api/live/offer/route-d1e510cc33aec52f.js +0 -1
  247. package/.next/static/chunks/app/api/live/voices/route-d1e510cc33aec52f.js +0 -1
  248. package/.next/static/chunks/app/api/lounge/events/route-d1e510cc33aec52f.js +0 -1
  249. package/.next/static/chunks/app/api/lounge/route-d1e510cc33aec52f.js +0 -1
  250. package/.next/static/chunks/app/api/mcp/route-d1e510cc33aec52f.js +0 -1
  251. package/.next/static/chunks/app/api/model-roles/route-d1e510cc33aec52f.js +0 -1
  252. package/.next/static/chunks/app/api/models/route-d1e510cc33aec52f.js +0 -1
  253. package/.next/static/chunks/app/api/models-config/catalog/route-d1e510cc33aec52f.js +0 -1
  254. package/.next/static/chunks/app/api/models-config/discover/route-d1e510cc33aec52f.js +0 -1
  255. package/.next/static/chunks/app/api/models-config/route-d1e510cc33aec52f.js +0 -1
  256. package/.next/static/chunks/app/api/models-config/test/route-d1e510cc33aec52f.js +0 -1
  257. package/.next/static/chunks/app/api/plugins/route-d1e510cc33aec52f.js +0 -1
  258. package/.next/static/chunks/app/api/project-trust/route-d1e510cc33aec52f.js +0 -1
  259. package/.next/static/chunks/app/api/projects/route-d1e510cc33aec52f.js +0 -1
  260. package/.next/static/chunks/app/api/runs/[runId]/route-d1e510cc33aec52f.js +0 -1
  261. package/.next/static/chunks/app/api/runs/route-d1e510cc33aec52f.js +0 -1
  262. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-d1e510cc33aec52f.js +0 -1
  263. package/.next/static/chunks/app/api/sessions/[id]/context/route-d1e510cc33aec52f.js +0 -1
  264. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-d1e510cc33aec52f.js +0 -1
  265. package/.next/static/chunks/app/api/sessions/[id]/export/route-d1e510cc33aec52f.js +0 -1
  266. package/.next/static/chunks/app/api/sessions/[id]/route-d1e510cc33aec52f.js +0 -1
  267. package/.next/static/chunks/app/api/sessions/[id]/state/route-d1e510cc33aec52f.js +0 -1
  268. package/.next/static/chunks/app/api/sessions/route-d1e510cc33aec52f.js +0 -1
  269. package/.next/static/chunks/app/api/settings/route-d1e510cc33aec52f.js +0 -1
  270. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-d1e510cc33aec52f.js +0 -1
  271. package/.next/static/chunks/app/api/skills/check/route-d1e510cc33aec52f.js +0 -1
  272. package/.next/static/chunks/app/api/skills/install/route-d1e510cc33aec52f.js +0 -1
  273. package/.next/static/chunks/app/api/skills/route-d1e510cc33aec52f.js +0 -1
  274. package/.next/static/chunks/app/api/skills/search/route-d1e510cc33aec52f.js +0 -1
  275. package/.next/static/chunks/app/api/skills/update/route-d1e510cc33aec52f.js +0 -1
  276. package/.next/static/chunks/app/api/theme/route-d1e510cc33aec52f.js +0 -1
  277. package/.next/static/chunks/app/api/tool-image/route-d1e510cc33aec52f.js +0 -1
  278. package/.next/static/chunks/app/api/update-maintenance/route-d1e510cc33aec52f.js +0 -1
  279. package/.next/static/chunks/app/api/updates/route-d1e510cc33aec52f.js +0 -1
  280. package/.next/static/chunks/app/api/web-access/recovery/route-d1e510cc33aec52f.js +0 -1
  281. package/.next/static/chunks/app/api/web-access/route-d1e510cc33aec52f.js +0 -1
  282. package/.next/static/chunks/app/api/web6/consults/route-d1e510cc33aec52f.js +0 -1
  283. package/.next/static/chunks/app/api/worktrees/route-d1e510cc33aec52f.js +0 -1
  284. package/.next/static/chunks/app/manifest.webmanifest/route-d1e510cc33aec52f.js +0 -1
  285. package/.next/static/chunks/app/page-42bb9e939eef51e6.js +0 -22
  286. package/.next/static/chunks/next/dist/client/components/builtin/app-error-d1e510cc33aec52f.js +0 -1
  287. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-d1e510cc33aec52f.js +0 -1
  288. package/.next/static/chunks/next/dist/client/components/builtin/not-found-d1e510cc33aec52f.js +0 -1
  289. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d1e510cc33aec52f.js +0 -1
  290. /package/.next/static/{3-TNbqZBhQBsgN3SMAKv1 → ZtmM1pqseDsjZJNTAi2i3}/_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":108237833,"timestamp":1713162,"id":14,"parentId":1,"tags":{},"startTime":1790790224865,"traceId":"14d32451c13deeae"},{"name":"run-typescript","duration":19219159,"timestamp":110292622,"id":10734,"parentId":1,"tags":{},"startTime":1790790333445,"traceId":"14d32451c13deeae"},{"name":"static-check","duration":4805110,"timestamp":129634810,"id":10737,"parentId":1,"tags":{},"startTime":1790790352787,"traceId":"14d32451c13deeae"},{"name":"static-generation","duration":12978798,"timestamp":134547324,"id":10891,"parentId":1,"tags":{},"startTime":1790790357700,"traceId":"14d32451c13deeae"},{"name":"collect-build-traces","duration":22186281,"timestamp":134511222,"id":10888,"parentId":1,"tags":{},"startTime":1790790357664,"traceId":"14d32451c13deeae"},{"name":"telemetry-flush","duration":86,"timestamp":156702963,"id":10900,"parentId":1,"tags":{},"startTime":1790790379856,"traceId":"14d32451c13deeae"},{"name":"next-build","duration":155516432,"timestamp":1186642,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1790790224339,"traceId":"14d32451c13deeae"}]
@@ -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
@@ -43,6 +43,9 @@ CUELO의 목적은 작업 중 확인한 실패와 막힘을 기억·작업 규
43
43
  - 작업 로그 패널에서 이번 턴의 과정 항목과 턴마다 쓴 파일을 따로 봅니다.
44
44
  - 입력창에 이미지·문서 외에 음성(받아쓰기), 코드·설정 파일(본문 첨부), 그 밖의 파일(저장 후 경로 첨부)을 붙여넣기·드롭·선택으로 넣습니다. 음성 받아쓰기에는 Google Antigravity 계정이 필요합니다.
45
45
  - 에이전트가 생성하거나 확인한 이미지가 그 턴의 대화 흐름에 썸네일로 보이고, 누르면 크게 열립니다.
46
+ - Ctrl+K 팔레트로 모든 대화 내용을 검색해 해당 메시지로 이동하고, 긴 대화 안에서는 Ctrl+F로 가장 오래된 메시지까지 찾습니다. 오른쪽 질문 레일로 내가 한 질문 사이를 오갑니다.
47
+ - 실행이 3분 넘게 조용하면 멈춤 경고를, 서버나 PC가 꺼져 실행이 끊긴 대화를 열면 중단 알림을 보여 줍니다. 컨텍스트 압축 중에는 경과 시간을 표시합니다.
48
+ - 모델 선택기 맨 위에 자주 고른 모델이 나오고, 팔레트에서 넓은 대화 폭을 켤 수 있습니다.
46
49
 
47
50
  **계정과 자원**
48
51
 
@@ -74,7 +77,7 @@ CUELO의 목적은 작업 중 확인한 실패와 막힘을 기억·작업 규
74
77
 
75
78
  - 완료·실패·승인 요청·선택 요청 등 상황에 맞는 캐릭터 스티커와 음성으로 알립니다(RIN · MIO · YUKI · ISANA · NOVA · SHION · HIKARI).
76
79
  - 브라우저 알림과 PWA 설치를 지원합니다.
77
- - 직접 저장한 교훈·스킬은 해당 턴 끝의 카드에서 확인합니다. 교훈 자동 기록을 켠 경우 자동 저장 알림도 작업 과정을 접어도 대화에 남습니다. 요청에 이름이 없고 필요성도 확인되지 않은 MCP 후보는 보류 안내로 나열하지 않습니다.
80
+ - 직접 저장한 교훈·스킬은 저장한 답변이나 과정 바로 뒤의 카드에서 확인합니다. 교훈 자동 기록을 켠 경우 자동 저장 알림도 작업 과정을 접어도 대화에 남습니다. 요청에 이름이 없고 필요성도 확인되지 않은 MCP 후보는 보류 안내로 나열하지 않습니다.
78
81
  - 한국어가 기본인 인터페이스입니다(영어·중국어 간체도 선택 가능).
79
82
 
80
83
  **omp-web에서 이어받은 기반 기능**
@@ -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.7',
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
+ }