cuelo 0.6.5 → 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 (296) 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/1517.js +3 -3
  121. package/.next/server/chunks/3707.js +1 -1
  122. package/.next/server/chunks/6429.js +1 -1
  123. package/.next/server/chunks/9108.js +1 -1
  124. package/.next/server/chunks/9280.js +4 -4
  125. package/.next/server/middleware-build-manifest.js +1 -1
  126. package/.next/server/pages/404.html +1 -1
  127. package/.next/server/pages/500.html +1 -1
  128. package/.next/server/server-reference-manifest.json +1 -1
  129. package/.next/static/ZtmM1pqseDsjZJNTAi2i3/_buildManifest.js +1 -0
  130. package/.next/static/chunks/app/_global-error/page-701a3390117d7557.js +1 -0
  131. package/.next/static/chunks/app/api/agent/[id]/account/route-701a3390117d7557.js +1 -0
  132. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-701a3390117d7557.js +1 -0
  133. package/.next/static/chunks/app/api/agent/[id]/events/route-701a3390117d7557.js +1 -0
  134. package/.next/static/chunks/app/api/agent/[id]/route-701a3390117d7557.js +1 -0
  135. package/.next/static/chunks/app/api/agent/new/route-701a3390117d7557.js +1 -0
  136. package/.next/static/chunks/app/api/agent/running/route-701a3390117d7557.js +1 -0
  137. package/.next/static/chunks/app/api/attachments/route-701a3390117d7557.js +1 -0
  138. package/.next/static/chunks/app/api/auth/all-providers/route-701a3390117d7557.js +1 -0
  139. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-701a3390117d7557.js +1 -0
  140. package/.next/static/chunks/app/api/auth/login/[provider]/route-701a3390117d7557.js +1 -0
  141. package/.next/static/chunks/app/api/auth/logout/[provider]/route-701a3390117d7557.js +1 -0
  142. package/.next/static/chunks/app/api/auth/providers/route-701a3390117d7557.js +1 -0
  143. package/.next/static/chunks/app/api/cwd/browse/route-701a3390117d7557.js +1 -0
  144. package/.next/static/chunks/app/api/cwd/validate/route-701a3390117d7557.js +1 -0
  145. package/.next/static/chunks/app/api/default-cwd/route-701a3390117d7557.js +1 -0
  146. package/.next/static/chunks/app/api/display-settings/route-701a3390117d7557.js +1 -0
  147. package/.next/static/chunks/app/api/document-text/route-701a3390117d7557.js +1 -0
  148. package/.next/static/chunks/app/api/experiments/route-701a3390117d7557.js +1 -0
  149. package/.next/static/chunks/app/api/file-index/route-701a3390117d7557.js +1 -0
  150. package/.next/static/chunks/app/api/files/[...path]/route-701a3390117d7557.js +1 -0
  151. package/.next/static/chunks/app/api/git/diff/route-701a3390117d7557.js +1 -0
  152. package/.next/static/chunks/app/api/git/status/route-701a3390117d7557.js +1 -0
  153. package/.next/static/chunks/app/api/gpt6/handles/route-701a3390117d7557.js +1 -0
  154. package/.next/static/chunks/app/api/gpt6/reply/route-701a3390117d7557.js +1 -0
  155. package/.next/static/chunks/app/api/gpt6/token/route-701a3390117d7557.js +1 -0
  156. package/.next/static/chunks/app/api/gpt6/web6-session/route-701a3390117d7557.js +1 -0
  157. package/.next/static/chunks/app/api/home/route-701a3390117d7557.js +1 -0
  158. package/.next/static/chunks/app/api/live/call/[callId]/route-701a3390117d7557.js +1 -0
  159. package/.next/static/chunks/app/api/live/events/route-701a3390117d7557.js +1 -0
  160. package/.next/static/chunks/app/api/live/offer/route-701a3390117d7557.js +1 -0
  161. package/.next/static/chunks/app/api/live/voices/route-701a3390117d7557.js +1 -0
  162. package/.next/static/chunks/app/api/lounge/events/route-701a3390117d7557.js +1 -0
  163. package/.next/static/chunks/app/api/lounge/route-701a3390117d7557.js +1 -0
  164. package/.next/static/chunks/app/api/mcp/route-701a3390117d7557.js +1 -0
  165. package/.next/static/chunks/app/api/model-roles/route-701a3390117d7557.js +1 -0
  166. package/.next/static/chunks/app/api/models/route-701a3390117d7557.js +1 -0
  167. package/.next/static/chunks/app/api/models-config/catalog/route-701a3390117d7557.js +1 -0
  168. package/.next/static/chunks/app/api/models-config/discover/route-701a3390117d7557.js +1 -0
  169. package/.next/static/chunks/app/api/models-config/route-701a3390117d7557.js +1 -0
  170. package/.next/static/chunks/app/api/models-config/test/route-701a3390117d7557.js +1 -0
  171. package/.next/static/chunks/app/api/plugins/route-701a3390117d7557.js +1 -0
  172. package/.next/static/chunks/app/api/project-trust/route-701a3390117d7557.js +1 -0
  173. package/.next/static/chunks/app/api/projects/route-701a3390117d7557.js +1 -0
  174. package/.next/static/chunks/app/api/runs/[runId]/route-701a3390117d7557.js +1 -0
  175. package/.next/static/chunks/app/api/runs/route-701a3390117d7557.js +1 -0
  176. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-701a3390117d7557.js +1 -0
  177. package/.next/static/chunks/app/api/sessions/[id]/context/route-701a3390117d7557.js +1 -0
  178. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-701a3390117d7557.js +1 -0
  179. package/.next/static/chunks/app/api/sessions/[id]/export/route-701a3390117d7557.js +1 -0
  180. package/.next/static/chunks/app/api/sessions/[id]/route-701a3390117d7557.js +1 -0
  181. package/.next/static/chunks/app/api/sessions/[id]/state/route-701a3390117d7557.js +1 -0
  182. package/.next/static/chunks/app/api/sessions/route-701a3390117d7557.js +1 -0
  183. package/.next/static/chunks/app/api/sessions/search/route-701a3390117d7557.js +1 -0
  184. package/.next/static/chunks/app/api/settings/route-701a3390117d7557.js +1 -0
  185. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-701a3390117d7557.js +1 -0
  186. package/.next/static/chunks/app/api/skills/check/route-701a3390117d7557.js +1 -0
  187. package/.next/static/chunks/app/api/skills/install/route-701a3390117d7557.js +1 -0
  188. package/.next/static/chunks/app/api/skills/route-701a3390117d7557.js +1 -0
  189. package/.next/static/chunks/app/api/skills/search/route-701a3390117d7557.js +1 -0
  190. package/.next/static/chunks/app/api/skills/update/route-701a3390117d7557.js +1 -0
  191. package/.next/static/chunks/app/api/theme/route-701a3390117d7557.js +1 -0
  192. package/.next/static/chunks/app/api/tool-image/route-701a3390117d7557.js +1 -0
  193. package/.next/static/chunks/app/api/update-maintenance/route-701a3390117d7557.js +1 -0
  194. package/.next/static/chunks/app/api/updates/route-701a3390117d7557.js +1 -0
  195. package/.next/static/chunks/app/api/web-access/recovery/route-701a3390117d7557.js +1 -0
  196. package/.next/static/chunks/app/api/web-access/route-701a3390117d7557.js +1 -0
  197. package/.next/static/chunks/app/api/web6/consults/route-701a3390117d7557.js +1 -0
  198. package/.next/static/chunks/app/api/worktrees/route-701a3390117d7557.js +1 -0
  199. package/.next/static/chunks/app/{layout-1f400c6ff9faef10.js → layout-e2710f3d550fa365.js} +1 -1
  200. package/.next/static/chunks/app/manifest.webmanifest/route-701a3390117d7557.js +1 -0
  201. package/.next/static/chunks/app/page-6fbdefb38e5ea22f.js +22 -0
  202. package/.next/static/chunks/next/dist/client/components/builtin/app-error-701a3390117d7557.js +1 -0
  203. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-701a3390117d7557.js +1 -0
  204. package/.next/static/chunks/next/dist/client/components/builtin/not-found-701a3390117d7557.js +1 -0
  205. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-701a3390117d7557.js +1 -0
  206. package/.next/static/css/{1f257674fb782a57.css → d0ec5531aef136d6.css} +1 -1
  207. package/.next/trace +105 -105
  208. package/.next/trace-build +1 -1
  209. package/.next/types/app/api/sessions/search/route.ts +351 -0
  210. package/.next/types/routes.d.ts +2 -1
  211. package/.next/types/validator.ts +9 -0
  212. package/README.md +8 -1
  213. package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
  214. package/Tools/OMP_Global_Config/agent/RULES.md +1 -0
  215. package/Tools/OMP_Global_Config/agent/extensions/command-guard/index.ts +4 -0
  216. package/Tools/OMP_Global_Config/agent/extensions/command-guard/powershell-syntax.ts +168 -0
  217. package/Tools/OMP_Global_Config/agent/extensions/skim.ts +9 -2
  218. package/Tools/OMP_Global_Config/agent/prompt-copies/RULES.en.md +2 -1
  219. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +380 -0
  220. package/package.json +1 -1
  221. package/.next/static/chunks/app/_global-error/page-d1e510cc33aec52f.js +0 -1
  222. package/.next/static/chunks/app/api/agent/[id]/account/route-d1e510cc33aec52f.js +0 -1
  223. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-d1e510cc33aec52f.js +0 -1
  224. package/.next/static/chunks/app/api/agent/[id]/events/route-d1e510cc33aec52f.js +0 -1
  225. package/.next/static/chunks/app/api/agent/[id]/route-d1e510cc33aec52f.js +0 -1
  226. package/.next/static/chunks/app/api/agent/new/route-d1e510cc33aec52f.js +0 -1
  227. package/.next/static/chunks/app/api/agent/running/route-d1e510cc33aec52f.js +0 -1
  228. package/.next/static/chunks/app/api/attachments/route-d1e510cc33aec52f.js +0 -1
  229. package/.next/static/chunks/app/api/auth/all-providers/route-d1e510cc33aec52f.js +0 -1
  230. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-d1e510cc33aec52f.js +0 -1
  231. package/.next/static/chunks/app/api/auth/login/[provider]/route-d1e510cc33aec52f.js +0 -1
  232. package/.next/static/chunks/app/api/auth/logout/[provider]/route-d1e510cc33aec52f.js +0 -1
  233. package/.next/static/chunks/app/api/auth/providers/route-d1e510cc33aec52f.js +0 -1
  234. package/.next/static/chunks/app/api/cwd/browse/route-d1e510cc33aec52f.js +0 -1
  235. package/.next/static/chunks/app/api/cwd/validate/route-d1e510cc33aec52f.js +0 -1
  236. package/.next/static/chunks/app/api/default-cwd/route-d1e510cc33aec52f.js +0 -1
  237. package/.next/static/chunks/app/api/display-settings/route-d1e510cc33aec52f.js +0 -1
  238. package/.next/static/chunks/app/api/document-text/route-d1e510cc33aec52f.js +0 -1
  239. package/.next/static/chunks/app/api/experiments/route-d1e510cc33aec52f.js +0 -1
  240. package/.next/static/chunks/app/api/file-index/route-d1e510cc33aec52f.js +0 -1
  241. package/.next/static/chunks/app/api/files/[...path]/route-d1e510cc33aec52f.js +0 -1
  242. package/.next/static/chunks/app/api/git/diff/route-d1e510cc33aec52f.js +0 -1
  243. package/.next/static/chunks/app/api/git/status/route-d1e510cc33aec52f.js +0 -1
  244. package/.next/static/chunks/app/api/gpt6/handles/route-d1e510cc33aec52f.js +0 -1
  245. package/.next/static/chunks/app/api/gpt6/reply/route-d1e510cc33aec52f.js +0 -1
  246. package/.next/static/chunks/app/api/gpt6/token/route-d1e510cc33aec52f.js +0 -1
  247. package/.next/static/chunks/app/api/gpt6/web6-session/route-d1e510cc33aec52f.js +0 -1
  248. package/.next/static/chunks/app/api/home/route-d1e510cc33aec52f.js +0 -1
  249. package/.next/static/chunks/app/api/live/call/[callId]/route-d1e510cc33aec52f.js +0 -1
  250. package/.next/static/chunks/app/api/live/events/route-d1e510cc33aec52f.js +0 -1
  251. package/.next/static/chunks/app/api/live/offer/route-d1e510cc33aec52f.js +0 -1
  252. package/.next/static/chunks/app/api/live/voices/route-d1e510cc33aec52f.js +0 -1
  253. package/.next/static/chunks/app/api/lounge/events/route-d1e510cc33aec52f.js +0 -1
  254. package/.next/static/chunks/app/api/lounge/route-d1e510cc33aec52f.js +0 -1
  255. package/.next/static/chunks/app/api/mcp/route-d1e510cc33aec52f.js +0 -1
  256. package/.next/static/chunks/app/api/model-roles/route-d1e510cc33aec52f.js +0 -1
  257. package/.next/static/chunks/app/api/models/route-d1e510cc33aec52f.js +0 -1
  258. package/.next/static/chunks/app/api/models-config/catalog/route-d1e510cc33aec52f.js +0 -1
  259. package/.next/static/chunks/app/api/models-config/discover/route-d1e510cc33aec52f.js +0 -1
  260. package/.next/static/chunks/app/api/models-config/route-d1e510cc33aec52f.js +0 -1
  261. package/.next/static/chunks/app/api/models-config/test/route-d1e510cc33aec52f.js +0 -1
  262. package/.next/static/chunks/app/api/plugins/route-d1e510cc33aec52f.js +0 -1
  263. package/.next/static/chunks/app/api/project-trust/route-d1e510cc33aec52f.js +0 -1
  264. package/.next/static/chunks/app/api/projects/route-d1e510cc33aec52f.js +0 -1
  265. package/.next/static/chunks/app/api/runs/[runId]/route-d1e510cc33aec52f.js +0 -1
  266. package/.next/static/chunks/app/api/runs/route-d1e510cc33aec52f.js +0 -1
  267. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-d1e510cc33aec52f.js +0 -1
  268. package/.next/static/chunks/app/api/sessions/[id]/context/route-d1e510cc33aec52f.js +0 -1
  269. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-d1e510cc33aec52f.js +0 -1
  270. package/.next/static/chunks/app/api/sessions/[id]/export/route-d1e510cc33aec52f.js +0 -1
  271. package/.next/static/chunks/app/api/sessions/[id]/route-d1e510cc33aec52f.js +0 -1
  272. package/.next/static/chunks/app/api/sessions/[id]/state/route-d1e510cc33aec52f.js +0 -1
  273. package/.next/static/chunks/app/api/sessions/route-d1e510cc33aec52f.js +0 -1
  274. package/.next/static/chunks/app/api/settings/route-d1e510cc33aec52f.js +0 -1
  275. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-d1e510cc33aec52f.js +0 -1
  276. package/.next/static/chunks/app/api/skills/check/route-d1e510cc33aec52f.js +0 -1
  277. package/.next/static/chunks/app/api/skills/install/route-d1e510cc33aec52f.js +0 -1
  278. package/.next/static/chunks/app/api/skills/route-d1e510cc33aec52f.js +0 -1
  279. package/.next/static/chunks/app/api/skills/search/route-d1e510cc33aec52f.js +0 -1
  280. package/.next/static/chunks/app/api/skills/update/route-d1e510cc33aec52f.js +0 -1
  281. package/.next/static/chunks/app/api/theme/route-d1e510cc33aec52f.js +0 -1
  282. package/.next/static/chunks/app/api/tool-image/route-d1e510cc33aec52f.js +0 -1
  283. package/.next/static/chunks/app/api/update-maintenance/route-d1e510cc33aec52f.js +0 -1
  284. package/.next/static/chunks/app/api/updates/route-d1e510cc33aec52f.js +0 -1
  285. package/.next/static/chunks/app/api/web-access/recovery/route-d1e510cc33aec52f.js +0 -1
  286. package/.next/static/chunks/app/api/web-access/route-d1e510cc33aec52f.js +0 -1
  287. package/.next/static/chunks/app/api/web6/consults/route-d1e510cc33aec52f.js +0 -1
  288. package/.next/static/chunks/app/api/worktrees/route-d1e510cc33aec52f.js +0 -1
  289. package/.next/static/chunks/app/manifest.webmanifest/route-d1e510cc33aec52f.js +0 -1
  290. package/.next/static/chunks/app/page-73ab54909e09eb66.js +0 -22
  291. package/.next/static/chunks/next/dist/client/components/builtin/app-error-d1e510cc33aec52f.js +0 -1
  292. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-d1e510cc33aec52f.js +0 -1
  293. package/.next/static/chunks/next/dist/client/components/builtin/not-found-d1e510cc33aec52f.js +0 -1
  294. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d1e510cc33aec52f.js +0 -1
  295. package/.next/static/p4VT4B7cMX4CRW9JBo9-M/_buildManifest.js +0 -1
  296. /package/.next/static/{p4VT4B7cMX4CRW9JBo9-M → ZtmM1pqseDsjZJNTAi2i3}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":132546212,"timestamp":869498,"id":14,"parentId":1,"tags":{},"startTime":1790750979055,"traceId":"68063d30c801f3d8"},{"name":"run-typescript","duration":24630658,"timestamp":133855403,"id":10707,"parentId":1,"tags":{},"startTime":1790751112042,"traceId":"68063d30c801f3d8"},{"name":"static-check","duration":7250946,"timestamp":158664298,"id":10710,"parentId":1,"tags":{},"startTime":1790751136851,"traceId":"68063d30c801f3d8"},{"name":"static-generation","duration":14909292,"timestamp":166093818,"id":10862,"parentId":1,"tags":{},"startTime":1790751144280,"traceId":"68063d30c801f3d8"},{"name":"collect-build-traces","duration":25695134,"timestamp":166009085,"id":10859,"parentId":1,"tags":{},"startTime":1790751144195,"traceId":"68063d30c801f3d8"},{"name":"telemetry-flush","duration":98,"timestamp":191716138,"id":10871,"parentId":1,"tags":{},"startTime":1790751169903,"traceId":"68063d30c801f3d8"},{"name":"next-build","duration":190951823,"timestamp":764436,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1790750978950,"traceId":"68063d30c801f3d8"}]
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,13 +77,17 @@ 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에서 이어받은 기반 기능**
81
84
 
82
85
  - 모델 역할(`default`, `smol`, `slow`, `plan`, `commit`, `task` 등)별 모델 지정·전환 — TUI의 `/model`과 같은 `config.yml`을 씁니다.
83
86
  - 입력창의 `/` 명령은 대기 중뿐 아니라 실행 중에도 Enter·Steer·Follow-up으로 실행할 수 있습니다. 내장 명령은 즉시 처리하고, 발견된 확장·스킬·프롬프트 템플릿 명령은 해당 명령 경로로 전달합니다. 사용할 수 없거나 실행 중 허용되지 않는 명령은 안내하며 일반 채팅으로 전송하지 않습니다.
87
+ - Codex 응답이 진행 중일 때 보낸 Steer가 서버의 "unsupported_native_inflight_message"로 거절돼도 대화가 오류로 끝나지 않습니다. 그 메시지는 현재 응답이 끝난 뒤 다음 요청으로 한 번 전달됩니다.
88
+ - 에이전트가 일반 구현 방식을 고르는 질문에 추천안을 붙여 물으면, 2분 동안 답이 없을 때 추천안으로 진행합니다. 질문 창에 그 안내가 표시되고, 옵션을 고르거나 답을 입력하면 대기 시간이 다시 시작됩니다. 자동 선택은 사용자 승인으로 치지 않으며, 배포·삭제·비용·계정·권한 확인 질문은 답할 때까지 기다립니다.
89
+ - Main이 OpenAI 모델에서 Fast를 켜면 새로 만드는 OpenAI 계열 SubAgent도 Fast로 요청합니다. Anthropic·Google SubAgent에는 Fast를 자동으로 넘기지 않고, Fast가 꺼져 있으면 SubAgent도 표준 처리로 요청합니다.
90
+ - 네이티브 창을 다루는 `computer.run`에서 버튼을 한 번 누른 뒤, 원하는 행·문구·값이 나타날 때까지 로컬 읽기로만 다시 확인하고 결과만 돌려줍니다. 기다리는 동안 다시 누르지 않으며, 제한 시간 초과·취소·읽기 오류를 서로 구분해 알립니다. 저장·전송처럼 결과가 남는 클릭의 승인 절차는 바뀌지 않습니다([사용법](./docs/harness.md#typed-judgment-routing-jev)).
84
91
  - provider 로그인·API 키, `models.yml`, 플러그인, 스킬을 웹에서 관리합니다.
85
92
  - 프로젝트 파일 탐색과 소스·문서·이미지·오디오·PDF 미리보기, Git worktree 전환.
86
93
  - 프로젝트 신뢰: 설정에서 프로젝트별 승인을 관리·해제하고, 실행 중에는 작업을 끊지 않고 신뢰 승인을 예약합니다. 신뢰하지 않은 저장소의 확장·훅·도구·MCP는 실행하지 않습니다([docs/project-trust.md](./docs/project-trust.md)).
@@ -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.5',
12
+ version: '0.6.7',
13
13
  distribution: 'cuelo',
14
14
  coreVersion: '18.4.4',
15
15
  };
@@ -35,6 +35,7 @@
35
35
  확인을 요청하지 않는다. 테스트·문서·현재 동작 중 어느 하나도 자동으로 정답이 아니므로 요구와
36
36
  충돌하면 실제 동작을 확인한다. 제품 의미가 달라지는데 증거로 정할 수 없거나 권한·외부 승인이
37
37
  없는 항목만 사용자 판단으로 올리고, 그 부분이 막혀도 독립적으로 허용된 작업은 계속 수행한다.
38
+ - 그래도 사용자가 골라야 하는 일반 구현 선택을 `ask`로 물을 때는 유효한 `recommended`와 `autoSelectRecommended: true`를 달아 2분 동안 답이 없으면 추천안으로 진행하게 한다. 삭제·배포·비용·계정·권한·provider 안전 확인과 그 밖의 고영향 확인 질문에는 자동선택을 켜지 않고 답을 기다린다. 타임아웃 자동선택은 사용자 승인이 아니므로 승인이 필요한 작업의 근거로 쓰지 않는다.
38
39
  - 승인된 목표 안에서 발견한 직접 원인과 그 변경이 만든 회귀는 사용자가 다시 지시하지 않아도
39
40
  수정하고 관련 검증까지 마친다. 허용 경계 밖, 다른 소유자의 파일, 원래 완료 조건과 무관한
40
41
  정리·기능 추가는 여전히 범위 밖이며 읽을 수 있다는 것이 수정 권한은 아니다.
@@ -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
+ }