cuelo 0.10.52 → 0.10.53

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 (484) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +35 -35
  3. package/.next/build-manifest.json +4 -4
  4. package/.next/next-server.js.nft.json +1 -1
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +549 -561
  7. package/.next/required-server-files.js +25 -25
  8. package/.next/required-server-files.json +25 -25
  9. package/.next/server/app/_global-error/page.js +3 -3
  10. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  18. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  19. package/.next/server/app/_not-found/page.js +2 -2
  20. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/_not-found.html +1 -1
  22. package/.next/server/app/_not-found.rsc +2 -2
  23. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  24. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  26. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  28. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  29. package/.next/server/app/api/agent/[id]/account/route.js +1 -1
  30. package/.next/server/app/api/agent/[id]/account/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  32. package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  34. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/agent/[id]/route.js +1 -1
  36. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/agent/new/route.js +1 -1
  38. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/agent/running/route.js +1 -1
  40. package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/attachment-settings/route.js +1 -1
  42. package/.next/server/app/api/attachment-settings/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -2
  44. package/.next/server/app/api/attachments/[id]/transcription/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/attachments/draft/route.js +1 -1
  46. package/.next/server/app/api/attachments/draft/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/attachments/route.js +2 -2
  48. package/.next/server/app/api/attachments/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  50. package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  52. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  54. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  56. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/auth/providers/route.js +1 -1
  58. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/character-mode/route.js +1 -2
  60. package/.next/server/app/api/character-mode/route.js.nft.json +1 -1
  61. package/.next/server/app/api/character-mode/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/cwd/browse/route.js +1 -1
  63. package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/cwd/validate/route.js +1 -1
  65. package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/default-cwd/route.js +1 -1
  67. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/display-settings/route.js +1 -1
  69. package/.next/server/app/api/display-settings/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/document-text/route.js +2 -2
  71. package/.next/server/app/api/document-text/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/experiments/route.js +1 -1
  73. package/.next/server/app/api/experiments/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/file-index/route.js +1 -1
  75. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/files/[...path]/route.js +1 -1
  77. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/git/diff/route.js +1 -1
  79. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/git/status/route.js +2 -2
  81. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/github/projects/route.js +1 -1
  83. package/.next/server/app/api/github/projects/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/gpt6/handles/route.js +1 -1
  85. package/.next/server/app/api/gpt6/handles/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/gpt6/reply/route.js +1 -1
  87. package/.next/server/app/api/gpt6/reply/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/gpt6/token/route.js +1 -1
  89. package/.next/server/app/api/gpt6/token/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
  91. package/.next/server/app/api/gpt6/web6-session/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/home/route.js +1 -1
  93. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/live/call/[callId]/route.js +2 -2
  95. package/.next/server/app/api/live/call/[callId]/route.js.nft.json +1 -1
  96. package/.next/server/app/api/live/call/[callId]/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/live/events/route.js +2 -2
  98. package/.next/server/app/api/live/events/route.js.nft.json +1 -1
  99. package/.next/server/app/api/live/events/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/live/interpret/route.js +2 -2
  101. package/.next/server/app/api/live/interpret/route.js.nft.json +1 -1
  102. package/.next/server/app/api/live/interpret/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/live/offer/route.js +1 -1
  104. package/.next/server/app/api/live/offer/route.js.nft.json +1 -1
  105. package/.next/server/app/api/live/offer/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/live/voices/route.js +1 -1
  107. package/.next/server/app/api/live/voices/route.js.nft.json +1 -1
  108. package/.next/server/app/api/live/voices/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/mcp/route.js +2 -2
  110. package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/model-roles/route.js +1 -1
  112. package/.next/server/app/api/model-roles/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/models/route.js +1 -1
  114. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  116. package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/models-config/discover/route.js +1 -1
  118. package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/models-config/route.js +3 -3
  120. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/models-config/test/route.js +1 -1
  122. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/office-characters/[...path]/route.js +1 -2
  124. package/.next/server/app/api/office-characters/[...path]/route.js.nft.json +1 -1
  125. package/.next/server/app/api/office-characters/[...path]/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/plugins/route.js +1 -1
  127. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/project-docs/route.js +1 -1
  129. package/.next/server/app/api/project-docs/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/project-trust/route.js +1 -1
  131. package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/projects/route.js +2 -2
  133. package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/runs/[runId]/prelude/route.js +1 -1
  135. package/.next/server/app/api/runs/[runId]/prelude/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/runs/[runId]/route.js +1 -1
  137. package/.next/server/app/api/runs/[runId]/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/runs/[runId]/turns/route.js +1 -1
  139. package/.next/server/app/api/runs/[runId]/turns/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/runs/route.js +1 -1
  141. package/.next/server/app/api/runs/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  143. package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  145. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  147. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  149. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  151. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  153. package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/sessions/route.js +1 -1
  155. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/sessions/search/route.js +1 -1
  157. package/.next/server/app/api/sessions/search/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/settings/route.js +1 -1
  159. package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
  161. package/.next/server/app/api/sidecars/[service]/[...path]/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/skills/check/route.js +1 -1
  163. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/skills/install/route.js +2 -2
  165. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/skills/route.js +1 -1
  167. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/skills/search/route.js +1 -1
  169. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/skills/update/route.js +1 -1
  171. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/subagents/eta/route.js +1 -1
  173. package/.next/server/app/api/subagents/eta/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/theme/route.js +1 -1
  175. package/.next/server/app/api/theme/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/tool-image/route.js +1 -1
  177. package/.next/server/app/api/tool-image/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/update-maintenance/route.js +2 -2
  179. package/.next/server/app/api/update-maintenance/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/updates/route.js +1 -1
  181. package/.next/server/app/api/updates/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/web-access/recovery/route.js +1 -1
  183. package/.next/server/app/api/web-access/recovery/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/web-access/route.js +1 -1
  185. package/.next/server/app/api/web-access/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/web6/consults/route.js +1 -1
  187. package/.next/server/app/api/web6/consults/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/route.js +1 -1
  189. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/favicon.ico/route.js +1 -1
  191. package/.next/server/app/index.html +1 -1
  192. package/.next/server/app/index.rsc +4 -4
  193. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  194. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  195. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  196. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  197. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  198. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  199. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/page.js +5 -5
  201. package/.next/server/app/page_client-reference-manifest.js +1 -1
  202. package/.next/server/app/recover/page.js +2 -2
  203. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  204. package/.next/server/app/recover.html +1 -1
  205. package/.next/server/app/recover.rsc +3 -3
  206. package/.next/server/app/recover.segments/_full.segment.rsc +3 -3
  207. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  208. package/.next/server/app/recover.segments/_index.segment.rsc +2 -2
  209. package/.next/server/app/recover.segments/_tree.segment.rsc +1 -1
  210. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +2 -2
  211. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  212. package/.next/server/app-paths-manifest.json +35 -35
  213. package/.next/server/chunks/1008.js +2 -2
  214. package/.next/server/chunks/1966.js +2 -0
  215. package/.next/server/chunks/319.js +3 -3
  216. package/.next/server/chunks/6429.js +2 -2
  217. package/.next/server/chunks/6775.js +7 -0
  218. package/.next/server/middleware-build-manifest.js +1 -1
  219. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  220. package/.next/server/middleware.js +9 -9
  221. package/.next/server/pages/404.html +1 -1
  222. package/.next/server/pages/500.html +1 -1
  223. package/.next/server/server-reference-manifest.json +1 -1
  224. package/.next/static/chunks/app/_not-found/page-041b64675adcdf82.js +1 -0
  225. package/.next/static/chunks/app/layout-3b1f8b74c7fc5e77.js +1 -0
  226. package/.next/static/chunks/app/{page-3640086c732eb87d.js → page-efae4fdcf84b7a14.js} +4 -4
  227. package/.next/static/chunks/app/recover/{page-c0c40b3c215078a4.js → page-2bcd6a351f3eda3d.js} +1 -1
  228. package/.next/static/chunks/{main-app-fbc4aa3c15d48613.js → main-app-ca46ab75db2b4e4b.js} +1 -1
  229. package/.next/static/chunks/main-dd4c9daba44bef88.js +5 -0
  230. package/.next/static/chunks/next/dist/client/components/builtin/global-error-dac2a58a3b9eb28e.js +1 -0
  231. package/.next/static/chunks/webpack-546c8221d1906945.js +1 -0
  232. package/.next/trace +107 -107
  233. package/.next/trace-build +1 -1
  234. package/.next/types/app/api/agent/[id]/account/route.ts +1 -1
  235. package/.next/types/app/api/agent/[id]/bash-output/route.ts +1 -1
  236. package/.next/types/app/api/agent/[id]/events/route.ts +1 -1
  237. package/.next/types/app/api/agent/[id]/route.ts +1 -1
  238. package/.next/types/app/api/agent/new/route.ts +1 -1
  239. package/.next/types/app/api/agent/running/route.ts +1 -1
  240. package/.next/types/app/api/attachment-settings/route.ts +1 -1
  241. package/.next/types/app/api/attachments/[id]/transcription/route.ts +1 -1
  242. package/.next/types/app/api/attachments/draft/route.ts +1 -1
  243. package/.next/types/app/api/attachments/route.ts +1 -1
  244. package/.next/types/app/api/auth/all-providers/route.ts +1 -1
  245. package/.next/types/app/api/auth/api-key/[provider]/route.ts +1 -1
  246. package/.next/types/app/api/auth/login/[provider]/route.ts +1 -1
  247. package/.next/types/app/api/auth/logout/[provider]/route.ts +1 -1
  248. package/.next/types/app/api/auth/providers/route.ts +1 -1
  249. package/.next/types/app/api/character-mode/route.ts +1 -1
  250. package/.next/types/app/api/cwd/browse/route.ts +1 -1
  251. package/.next/types/app/api/cwd/validate/route.ts +1 -1
  252. package/.next/types/app/api/default-cwd/route.ts +1 -1
  253. package/.next/types/app/api/display-settings/route.ts +1 -1
  254. package/.next/types/app/api/document-text/route.ts +1 -1
  255. package/.next/types/app/api/experiments/route.ts +1 -1
  256. package/.next/types/app/api/file-index/route.ts +1 -1
  257. package/.next/types/app/api/files/[...path]/route.ts +1 -1
  258. package/.next/types/app/api/git/diff/route.ts +1 -1
  259. package/.next/types/app/api/git/status/route.ts +1 -1
  260. package/.next/types/app/api/github/projects/route.ts +1 -1
  261. package/.next/types/app/api/gpt6/handles/route.ts +1 -1
  262. package/.next/types/app/api/gpt6/reply/route.ts +1 -1
  263. package/.next/types/app/api/gpt6/token/route.ts +1 -1
  264. package/.next/types/app/api/gpt6/web6-session/route.ts +1 -1
  265. package/.next/types/app/api/home/route.ts +1 -1
  266. package/.next/types/app/api/live/call/[callId]/route.ts +1 -1
  267. package/.next/types/app/api/live/events/route.ts +1 -1
  268. package/.next/types/app/api/live/interpret/route.ts +1 -1
  269. package/.next/types/app/api/live/offer/route.ts +1 -1
  270. package/.next/types/app/api/live/voices/route.ts +1 -1
  271. package/.next/types/app/api/mcp/route.ts +1 -1
  272. package/.next/types/app/api/model-roles/route.ts +1 -1
  273. package/.next/types/app/api/models/route.ts +1 -1
  274. package/.next/types/app/api/models-config/catalog/route.ts +1 -1
  275. package/.next/types/app/api/models-config/discover/route.ts +1 -1
  276. package/.next/types/app/api/models-config/route.ts +1 -1
  277. package/.next/types/app/api/models-config/test/route.ts +1 -1
  278. package/.next/types/app/api/office-characters/[...path]/route.ts +1 -1
  279. package/.next/types/app/api/plugins/route.ts +1 -1
  280. package/.next/types/app/api/project-docs/route.ts +1 -1
  281. package/.next/types/app/api/project-trust/route.ts +1 -1
  282. package/.next/types/app/api/projects/route.ts +1 -1
  283. package/.next/types/app/api/runs/[runId]/prelude/route.ts +1 -1
  284. package/.next/types/app/api/runs/[runId]/route.ts +1 -1
  285. package/.next/types/app/api/runs/[runId]/turns/route.ts +1 -1
  286. package/.next/types/app/api/runs/route.ts +1 -1
  287. package/.next/types/app/api/sessions/[id]/auto-name/route.ts +1 -1
  288. package/.next/types/app/api/sessions/[id]/context/route.ts +1 -1
  289. package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +1 -1
  290. package/.next/types/app/api/sessions/[id]/export/route.ts +1 -1
  291. package/.next/types/app/api/sessions/[id]/route.ts +1 -1
  292. package/.next/types/app/api/sessions/[id]/state/route.ts +1 -1
  293. package/.next/types/app/api/sessions/route.ts +1 -1
  294. package/.next/types/app/api/sessions/search/route.ts +1 -1
  295. package/.next/types/app/api/settings/route.ts +1 -1
  296. package/.next/types/app/api/sidecars/[service]/[...path]/route.ts +1 -1
  297. package/.next/types/app/api/skills/check/route.ts +1 -1
  298. package/.next/types/app/api/skills/install/route.ts +1 -1
  299. package/.next/types/app/api/skills/route.ts +1 -1
  300. package/.next/types/app/api/skills/search/route.ts +1 -1
  301. package/.next/types/app/api/skills/update/route.ts +1 -1
  302. package/.next/types/app/api/subagents/eta/route.ts +1 -1
  303. package/.next/types/app/api/theme/route.ts +1 -1
  304. package/.next/types/app/api/tool-image/route.ts +1 -1
  305. package/.next/types/app/api/update-maintenance/route.ts +1 -1
  306. package/.next/types/app/api/updates/route.ts +1 -1
  307. package/.next/types/app/api/web-access/recovery/route.ts +1 -1
  308. package/.next/types/app/api/web-access/route.ts +1 -1
  309. package/.next/types/app/api/web6/consults/route.ts +1 -1
  310. package/.next/types/app/api/worktrees/route.ts +1 -1
  311. package/.next/types/app/layout.ts +1 -1
  312. package/.next/types/app/page.ts +1 -1
  313. package/.next/types/app/recover/page.ts +1 -1
  314. package/LICENSE +22 -22
  315. package/README.md +273 -271
  316. package/Tools/CUELO_Setup/files/btw-server.js +346 -346
  317. package/Tools/CUELO_Setup/files/native-runtime-patch.js +238 -238
  318. package/Tools/CUELO_Setup/files/subagent-server.js +587 -587
  319. package/Tools/CUELO_Setup/files/usage-server.js +1057 -1057
  320. package/Tools/OMP_Global_Config/agent/AGENTS.md +144 -144
  321. package/Tools/OMP_Global_Config/agent/RULES.md +140 -140
  322. package/Tools/OMP_Global_Config/agent/TITLE_SYSTEM.md +17 -17
  323. package/Tools/OMP_Global_Config/agent/WATCHDOG.md +55 -55
  324. package/Tools/OMP_Global_Config/agent/agents/maker.md +413 -413
  325. package/Tools/OMP_Global_Config/agent/extensions/character-voice.ts +1035 -1035
  326. package/Tools/OMP_Global_Config/agent/extensions/command-guard/index.ts +1110 -1110
  327. package/Tools/OMP_Global_Config/agent/extensions/command-guard/interop-hint.ts +133 -133
  328. package/Tools/OMP_Global_Config/agent/extensions/command-guard/matcher.ts +2258 -2258
  329. package/Tools/OMP_Global_Config/agent/extensions/command-guard/powershell-syntax.ts +210 -210
  330. package/Tools/OMP_Global_Config/agent/extensions/command-guard/task-guard.ts +1137 -1121
  331. package/Tools/OMP_Global_Config/agent/extensions/cross-review.ts +132 -132
  332. package/Tools/OMP_Global_Config/agent/extensions/docmap-route.ts +133 -133
  333. package/Tools/OMP_Global_Config/agent/extensions/draft/markdown.ts +226 -226
  334. package/Tools/OMP_Global_Config/agent/extensions/draft/ooxml.ts +222 -222
  335. package/Tools/OMP_Global_Config/agent/extensions/draft/pdf.ts +63 -63
  336. package/Tools/OMP_Global_Config/agent/extensions/draft/zip.ts +73 -73
  337. package/Tools/OMP_Global_Config/agent/extensions/draft.ts +204 -204
  338. package/Tools/OMP_Global_Config/agent/extensions/edit-lessons.ts +159 -159
  339. package/Tools/OMP_Global_Config/agent/extensions/external-advice-check.ts +36 -36
  340. package/Tools/OMP_Global_Config/agent/extensions/gitnexus-autosync.ts +406 -406
  341. package/Tools/OMP_Global_Config/agent/extensions/image-question-router.ts +55 -55
  342. package/Tools/OMP_Global_Config/agent/extensions/jev-runtime.ts +2700 -2700
  343. package/Tools/OMP_Global_Config/agent/extensions/korean-reply-guard.ts +190 -190
  344. package/Tools/OMP_Global_Config/agent/extensions/lib/cross-review.ts +1208 -1208
  345. package/Tools/OMP_Global_Config/agent/extensions/lib/docmap-search.ts +612 -612
  346. package/Tools/OMP_Global_Config/agent/extensions/lib/job-observation.ts +182 -182
  347. package/Tools/OMP_Global_Config/agent/extensions/lib/maker-routing.ts +1332 -1332
  348. package/Tools/OMP_Global_Config/agent/extensions/lib/mcp-selection.ts +361 -361
  349. package/Tools/OMP_Global_Config/agent/extensions/lib/memory-excerpt.ts +5 -5
  350. package/Tools/OMP_Global_Config/agent/extensions/lib/native-judge.ts +113 -113
  351. package/Tools/OMP_Global_Config/agent/extensions/lib/prepared-task.ts +211 -211
  352. package/Tools/OMP_Global_Config/agent/extensions/lib/routing-ledger.ts +538 -538
  353. package/Tools/OMP_Global_Config/agent/extensions/lib/session-identity.ts +34 -34
  354. package/Tools/OMP_Global_Config/agent/extensions/lib/task-progress.ts +492 -492
  355. package/Tools/OMP_Global_Config/agent/extensions/mcp-selection.ts +301 -301
  356. package/Tools/OMP_Global_Config/agent/extensions/prompt-compact.ts +67 -67
  357. package/Tools/OMP_Global_Config/agent/extensions/report-chart-guard.ts +102 -102
  358. package/Tools/OMP_Global_Config/agent/extensions/skim.ts +332 -332
  359. package/Tools/OMP_Global_Config/agent/extensions/steering-reply-gate.ts +207 -207
  360. package/Tools/OMP_Global_Config/agent/extensions/todo-nudge.ts +80 -80
  361. package/Tools/OMP_Global_Config/agent/extensions/turn-end-guard.ts +421 -421
  362. package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +147 -147
  363. package/Tools/OMP_Global_Config/agent/prompt-copies/RULES.en.md +49 -49
  364. package/Tools/OMP_Global_Config/agent/rules/docs-handoff.md +39 -39
  365. package/Tools/OMP_Global_Config/agent/rules/frontend.md +74 -74
  366. package/Tools/OMP_Global_Config/agent/rules/harness-policy.json +1224 -1224
  367. package/Tools/OMP_Global_Config/agent/rules/legacy-encoding.md +21 -21
  368. package/Tools/OMP_Global_Config/agent/rules/meta-harness.md +45 -45
  369. package/Tools/OMP_Global_Config/agent/rules/omp-harness.md +151 -151
  370. package/Tools/OMP_Global_Config/agent/rules/subagent.md +750 -750
  371. package/Tools/OMP_Global_Config/agent/rules/task-guard.md +62 -62
  372. package/Tools/OMP_Global_Config/agent/rules/verdict.md +210 -210
  373. package/Tools/OMP_Global_Config/agent/rules/web6-consult.md +83 -83
  374. package/Tools/OMP_Global_Config/agent/sop/_common.md +136 -136
  375. package/Tools/OMP_Global_Config/agent/sop/_writer.md +259 -259
  376. package/Tools/OMP_Global_Config/agent/sop/maker.md +9 -9
  377. package/Tools/OMP_Global_Config/agent/tools/git-finalizer/finalizer.ps1 +409 -409
  378. package/Tools/OMP_Global_Config/agent/tools/git-finalizer/index.ts +303 -303
  379. package/Tools/OMP_Global_Config/agent/tools/git-finalizer/sync-checkout.ts +184 -184
  380. package/Tools/OMP_Global_Config/agent/tools/git-finalizer/wsl-git.ts +96 -96
  381. package/Tools/OMP_Global_Config/agent/tools/windows-build/index.ts +387 -387
  382. package/Tools/OMP_Global_Config/agent/tools/windows-control/control.ps1 +200 -200
  383. package/Tools/OMP_Global_Config/agent/tools/windows-control/index.ts +255 -255
  384. package/Tools/OMP_Global_Config/notices/orchestrate.md +26 -26
  385. package/Tools/OMP_Global_Config/notices/ultrathink.md +9 -9
  386. package/Tools/OMP_Global_Config/notices/workflow.md +16 -16
  387. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +18339 -18304
  388. package/Tools/OMP_Global_Config/patches/apply-notices.mjs +135 -135
  389. package/bin/cuelo-options.js +38 -38
  390. package/bin/cuelo.js +273 -273
  391. package/bin/docker-entrypoint.mjs +19 -19
  392. package/bin/password-prompt.js +100 -100
  393. package/bin/prepare-runtime.js +112 -112
  394. package/bin/runtime.js +134 -134
  395. package/bin/web-auth-store.d.ts +104 -104
  396. package/bin/web-auth-store.js +593 -593
  397. package/install.mjs +427 -427
  398. package/next.config.ts +104 -104
  399. package/package.json +141 -141
  400. package/public/audio/completion/voices.json +1393 -1393
  401. package/public/fonts/cuelo-display/NOTICE.txt +15 -15
  402. package/public/fonts/fonts.css +288 -288
  403. package/public/fonts/jetbrains-mono/OFL.txt +93 -93
  404. package/public/fonts/wanted-sans/OFL.txt +93 -93
  405. package/public/icons/catppuccin/LICENSE +22 -22
  406. package/public/icons/catppuccin/README.md +8 -8
  407. package/public/icons/catppuccin/latte/_file.svg +3 -3
  408. package/public/icons/catppuccin/latte/_folder.svg +3 -3
  409. package/public/icons/catppuccin/latte/_folder_open.svg +3 -3
  410. package/public/icons/catppuccin/latte/bash.svg +7 -7
  411. package/public/icons/catppuccin/latte/bun-lock.svg +8 -8
  412. package/public/icons/catppuccin/latte/config.svg +3 -3
  413. package/public/icons/catppuccin/latte/css.svg +6 -6
  414. package/public/icons/catppuccin/latte/database.svg +3 -3
  415. package/public/icons/catppuccin/latte/docker.svg +3 -3
  416. package/public/icons/catppuccin/latte/env.svg +3 -3
  417. package/public/icons/catppuccin/latte/eslint.svg +6 -6
  418. package/public/icons/catppuccin/latte/git.svg +6 -6
  419. package/public/icons/catppuccin/latte/go.svg +3 -3
  420. package/public/icons/catppuccin/latte/graphql.svg +3 -3
  421. package/public/icons/catppuccin/latte/html.svg +6 -6
  422. package/public/icons/catppuccin/latte/javascript-react.svg +8 -8
  423. package/public/icons/catppuccin/latte/javascript.svg +6 -6
  424. package/public/icons/catppuccin/latte/json.svg +3 -3
  425. package/public/icons/catppuccin/latte/lock.svg +3 -3
  426. package/public/icons/catppuccin/latte/markdown.svg +3 -3
  427. package/public/icons/catppuccin/latte/ms-word.svg +6 -6
  428. package/public/icons/catppuccin/latte/next.svg +6 -6
  429. package/public/icons/catppuccin/latte/npm-lock.svg +7 -7
  430. package/public/icons/catppuccin/latte/pdf.svg +3 -3
  431. package/public/icons/catppuccin/latte/python.svg +8 -8
  432. package/public/icons/catppuccin/latte/rust.svg +6 -6
  433. package/public/icons/catppuccin/latte/sass.svg +3 -3
  434. package/public/icons/catppuccin/latte/terraform.svg +3 -3
  435. package/public/icons/catppuccin/latte/toml.svg +3 -3
  436. package/public/icons/catppuccin/latte/typescript-react.svg +8 -8
  437. package/public/icons/catppuccin/latte/typescript.svg +6 -6
  438. package/public/icons/catppuccin/latte/yaml.svg +3 -3
  439. package/public/icons/catppuccin/mocha/_file.svg +3 -3
  440. package/public/icons/catppuccin/mocha/_folder.svg +3 -3
  441. package/public/icons/catppuccin/mocha/_folder_open.svg +3 -3
  442. package/public/icons/catppuccin/mocha/bash.svg +7 -7
  443. package/public/icons/catppuccin/mocha/bun-lock.svg +8 -8
  444. package/public/icons/catppuccin/mocha/config.svg +3 -3
  445. package/public/icons/catppuccin/mocha/css.svg +6 -6
  446. package/public/icons/catppuccin/mocha/database.svg +3 -3
  447. package/public/icons/catppuccin/mocha/docker.svg +3 -3
  448. package/public/icons/catppuccin/mocha/env.svg +3 -3
  449. package/public/icons/catppuccin/mocha/eslint.svg +6 -6
  450. package/public/icons/catppuccin/mocha/git.svg +6 -6
  451. package/public/icons/catppuccin/mocha/go.svg +3 -3
  452. package/public/icons/catppuccin/mocha/graphql.svg +3 -3
  453. package/public/icons/catppuccin/mocha/html.svg +6 -6
  454. package/public/icons/catppuccin/mocha/javascript-react.svg +8 -8
  455. package/public/icons/catppuccin/mocha/javascript.svg +6 -6
  456. package/public/icons/catppuccin/mocha/json.svg +3 -3
  457. package/public/icons/catppuccin/mocha/lock.svg +3 -3
  458. package/public/icons/catppuccin/mocha/markdown.svg +3 -3
  459. package/public/icons/catppuccin/mocha/ms-word.svg +6 -6
  460. package/public/icons/catppuccin/mocha/next.svg +6 -6
  461. package/public/icons/catppuccin/mocha/npm-lock.svg +7 -7
  462. package/public/icons/catppuccin/mocha/pdf.svg +3 -3
  463. package/public/icons/catppuccin/mocha/python.svg +8 -8
  464. package/public/icons/catppuccin/mocha/rust.svg +6 -6
  465. package/public/icons/catppuccin/mocha/sass.svg +3 -3
  466. package/public/icons/catppuccin/mocha/terraform.svg +3 -3
  467. package/public/icons/catppuccin/mocha/toml.svg +3 -3
  468. package/public/icons/catppuccin/mocha/typescript-react.svg +8 -8
  469. package/public/icons/catppuccin/mocha/typescript.svg +6 -6
  470. package/public/icons/catppuccin/mocha/yaml.svg +3 -3
  471. package/public/icons/cuelo-icon.svg +8 -8
  472. package/public/offline.html +145 -145
  473. package/public/sw.js +135 -135
  474. package/.next/server/chunks/205.js +0 -7
  475. package/.next/server/chunks/7738.js +0 -1
  476. package/.next/static/chunks/1966.b8f83f7ba376c962.js +0 -1
  477. package/.next/static/chunks/3899.3f761f7e3a944e8c.js +0 -1
  478. package/.next/static/chunks/app/_not-found/page-9e5295df095e2e41.js +0 -1
  479. package/.next/static/chunks/app/layout-8b29ba206a96135e.js +0 -1
  480. package/.next/static/chunks/main-1ddb405481ce21f6.js +0 -5
  481. package/.next/static/chunks/next/dist/client/components/builtin/global-error-50782c8c9c06c8b5.js +0 -1
  482. package/.next/static/chunks/webpack-7b514b9855bd748c.js +0 -1
  483. /package/.next/static/{dQA--5NX6NZt_A6pLZUde → -mDQEyWQ8VQsAfLpiACIP}/_buildManifest.js +0 -0
  484. /package/.next/static/{dQA--5NX6NZt_A6pLZUde → -mDQEyWQ8VQsAfLpiACIP}/_ssgManifest.js +0 -0
@@ -1,200 +1,200 @@
1
- param([Parameter(Mandatory = $true)][string]$Request)
2
- # windows_control 도구의 Windows 쪽 본체. 요청은 base64(UTF-8 JSON) 한 인자로 받는다(WSL 인자 따옴표 문제를 피한다).
3
- # 클래식 Win32 컨트롤(WinForms·VB6·MFC)의 자식 창에 SendMessageTimeout으로 WM_SETTEXT·BM_CLICK을 보낸다.
4
- # 전면 창·포커스는 바꾸지 않는다(SetForegroundWindow·SetFocus·SendInput을 쓰지 않는다).
5
- [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)
6
- $ErrorActionPreference = 'Stop'
7
-
8
- Add-Type -TypeDefinition @"
9
- using System;
10
- using System.Text;
11
- using System.Collections.Generic;
12
- using System.Runtime.InteropServices;
13
-
14
- public class CueloChild {
15
- public long Hwnd;
16
- public string ClassName;
17
- public string Text;
18
- public int ControlId;
19
- public bool Visible;
20
- public bool Enabled;
21
- public int Check;
22
- }
23
-
24
- public static class CueloWin {
25
- private delegate bool EnumProc(IntPtr h, IntPtr l);
26
- [DllImport("user32.dll")] private static extern bool EnumChildWindows(IntPtr p, EnumProc f, IntPtr l);
27
- [DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern int GetClassName(IntPtr h, StringBuilder s, int n);
28
- [DllImport("user32.dll")] private static extern int GetDlgCtrlID(IntPtr h);
29
- [DllImport("user32.dll")] private static extern bool IsWindowVisible(IntPtr h);
30
- [DllImport("user32.dll")] private static extern bool IsWindowEnabled(IntPtr h);
31
- [DllImport("user32.dll")] private static extern bool IsWindow(IntPtr h);
32
- [DllImport("user32.dll")] private static extern int GetWindowLong(IntPtr h, int index);
33
- [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow();
34
- [DllImport("user32.dll", SetLastError = true)]
35
- private static extern IntPtr SendMessageTimeout(IntPtr h, uint m, IntPtr w, IntPtr l, uint flags, uint timeout, out IntPtr result);
36
- [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = "SendMessageTimeoutW")]
37
- private static extern IntPtr SendMessageTimeoutText(IntPtr h, uint m, IntPtr w, StringBuilder l, uint flags, uint timeout, out IntPtr result);
38
- [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = "SendMessageTimeoutW")]
39
- private static extern IntPtr SendMessageTimeoutString(IntPtr h, uint m, IntPtr w, string l, uint flags, uint timeout, out IntPtr result);
40
-
41
- private const uint SMTO_ABORTIFHUNG = 2;
42
- private const uint WM_SETTEXT = 0x000C, WM_GETTEXT = 0x000D, WM_GETTEXTLENGTH = 0x000E;
43
- private const uint BM_GETCHECK = 0x00F0, BM_CLICK = 0x00F5;
44
- private const int GWL_STYLE = -16;
45
-
46
- public static bool Exists(long hwnd) { return IsWindow(new IntPtr(hwnd)); }
47
-
48
- public static string ReadText(IntPtr h) {
49
- IntPtr length;
50
- if (SendMessageTimeout(h, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero, SMTO_ABORTIFHUNG, 1000, out length) == IntPtr.Zero) return null;
51
- int n = (int)length.ToInt64();
52
- if (n < 0) n = 0;
53
- if (n > 65535) n = 65535;
54
- StringBuilder buffer = new StringBuilder(n + 1);
55
- IntPtr copied;
56
- if (SendMessageTimeoutText(h, WM_GETTEXT, new IntPtr(n + 1), buffer, SMTO_ABORTIFHUNG, 1000, out copied) == IntPtr.Zero) return null;
57
- return buffer.ToString();
58
- }
59
-
60
- // Check state only for check-box and radio-button styles; push buttons report -1.
61
- private static int CheckState(IntPtr h, string className) {
62
- if (className.IndexOf("BUTTON", StringComparison.OrdinalIgnoreCase) < 0) return -1;
63
- int kind = GetWindowLong(h, GWL_STYLE) & 0xF;
64
- if (kind != 2 && kind != 3 && kind != 4 && kind != 5 && kind != 6 && kind != 9) return -1;
65
- IntPtr state;
66
- if (SendMessageTimeout(h, BM_GETCHECK, IntPtr.Zero, IntPtr.Zero, SMTO_ABORTIFHUNG, 1000, out state) == IntPtr.Zero) return -1;
67
- return (int)state.ToInt64();
68
- }
69
-
70
- public static CueloChild Describe(IntPtr h) {
71
- StringBuilder cls = new StringBuilder(256);
72
- GetClassName(h, cls, 256);
73
- CueloChild child = new CueloChild();
74
- child.Hwnd = h.ToInt64();
75
- child.ClassName = cls.ToString();
76
- child.Text = ReadText(h);
77
- child.ControlId = GetDlgCtrlID(h);
78
- child.Visible = IsWindowVisible(h);
79
- child.Enabled = IsWindowEnabled(h);
80
- child.Check = CheckState(h, child.ClassName);
81
- return child;
82
- }
83
-
84
- public static List<CueloChild> Children(long top) {
85
- List<CueloChild> list = new List<CueloChild>();
86
- EnumChildWindows(new IntPtr(top), delegate (IntPtr h, IntPtr l) { list.Add(Describe(h)); return true; }, IntPtr.Zero);
87
- return list;
88
- }
89
-
90
- // Returns 0 when delivered; otherwise the Win32 error (1460 = timeout, e.g. a modal dialog is still open; 5 = elevated target).
91
- public static int SetText(long hwnd, string value) {
92
- IntPtr result;
93
- if (SendMessageTimeoutString(new IntPtr(hwnd), WM_SETTEXT, IntPtr.Zero, value, SMTO_ABORTIFHUNG, 2000, out result) != IntPtr.Zero) return 0;
94
- int error = Marshal.GetLastWin32Error();
95
- return error == 0 ? -1 : error;
96
- }
97
-
98
- public static int Click(long hwnd, uint timeoutMs) {
99
- IntPtr result;
100
- if (SendMessageTimeout(new IntPtr(hwnd), BM_CLICK, IntPtr.Zero, IntPtr.Zero, SMTO_ABORTIFHUNG, timeoutMs, out result) != IntPtr.Zero) return 0;
101
- int error = Marshal.GetLastWin32Error();
102
- return error == 0 ? -1 : error;
103
- }
104
- }
105
- "@
106
-
107
- function Write-Result($value) { $value | ConvertTo-Json -Depth 5 -Compress }
108
-
109
- function Get-Changes($before, $after) {
110
- $old = @{}
111
- foreach ($child in $before) { $old[$child.Hwnd] = $child }
112
- $changes = @()
113
- foreach ($child in $after) {
114
- $prev = $old[$child.Hwnd]
115
- if ($null -eq $prev) {
116
- $changes += [ordered]@{ hwnd = $child.Hwnd; className = $child.ClassName; added = $true; text = $child.Text }
117
- continue
118
- }
119
- if ($prev.Text -ne $child.Text -or $prev.Check -ne $child.Check -or $prev.Enabled -ne $child.Enabled -or $prev.Visible -ne $child.Visible) {
120
- $changes += [ordered]@{
121
- hwnd = $child.Hwnd; className = $child.ClassName
122
- textBefore = $prev.Text; textAfter = $child.Text
123
- checkBefore = $prev.Check; checkAfter = $child.Check
124
- enabledAfter = $child.Enabled; visibleAfter = $child.Visible
125
- }
126
- }
127
- }
128
- # 사라진 컨트롤도 변화다(창은 남았는데 버튼이 자식을 없앤 경우).
129
- $now = @{}
130
- foreach ($child in $after) { $now[$child.Hwnd] = $true }
131
- foreach ($child in $before) {
132
- if (-not $now.ContainsKey($child.Hwnd)) {
133
- $changes += [ordered]@{ hwnd = $child.Hwnd; className = $child.ClassName; removed = $true; text = $child.Text }
134
- }
135
- }
136
- , $changes
137
- }
138
-
139
- try {
140
- $req = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($Request)) | ConvertFrom-Json
141
- $window = [long]$req.window
142
- $foregroundBefore = [CueloWin]::GetForegroundWindow().ToInt64()
143
- if (-not [CueloWin]::Exists($window)) {
144
- Write-Result ([ordered]@{ ok = $false; error = 'window-not-found'; window = $window }); exit 0
145
- }
146
- $before = [CueloWin]::Children($window)
147
- if ($req.action -eq 'list') {
148
- $foregroundAfter = [CueloWin]::GetForegroundWindow().ToInt64()
149
- Write-Result ([ordered]@{ ok = $true; action = 'list'; window = $window; foregroundUnchanged = ($foregroundBefore -eq $foregroundAfter); controls = $before }); exit 0
150
- }
151
-
152
- $found = @($before | Where-Object {
153
- ($null -eq $req.text -or $_.Text -ceq [string]$req.text) -and
154
- ($null -eq $req.className -or $_.ClassName.IndexOf([string]$req.className, [StringComparison]::OrdinalIgnoreCase) -ge 0)
155
- })
156
- if ($found.Count -eq 0) {
157
- Write-Result ([ordered]@{ ok = $false; error = 'control-not-found'; window = $window; controls = $before }); exit 0
158
- }
159
- if ($null -ne $req.index) {
160
- $index = [int]$req.index
161
- if ($index -lt 0 -or $index -ge $found.Count) {
162
- Write-Result ([ordered]@{ ok = $false; error = 'index-out-of-range'; window = $window; matches = $found }); exit 0
163
- }
164
- $target = $found[$index]
165
- } elseif ($found.Count -gt 1) {
166
- Write-Result ([ordered]@{ ok = $false; error = 'ambiguous'; window = $window; matches = $found }); exit 0
167
- } else {
168
- $target = $found[0]
169
- }
170
-
171
- # 바꾸는 동작은 비활성 컨트롤에 보내지 않는다(사용자가 막아 둔 입력칸·버튼이다).
172
- if ($req.action -ne 'read' -and -not $target.Enabled) {
173
- Write-Result ([ordered]@{ ok = $false; error = 'control-disabled'; window = $window; target = $target }); exit 0
174
- }
175
- $code = 0
176
- $started = [Diagnostics.Stopwatch]::StartNew()
177
- switch ($req.action) {
178
- 'setText' { $code = [CueloWin]::SetText($target.Hwnd, [string]$req.value) }
179
- 'click' { $code = [CueloWin]::Click($target.Hwnd, [uint32]$req.timeoutMs) }
180
- 'read' { }
181
- default { throw "unknown action $($req.action)" }
182
- }
183
- $started.Stop()
184
- $after = if ([CueloWin]::Exists($window)) { [CueloWin]::Children($window) } else { @() }
185
- $foregroundAfter = [CueloWin]::GetForegroundWindow().ToInt64()
186
- Write-Result ([ordered]@{
187
- ok = ($code -eq 0)
188
- action = $req.action
189
- window = $window
190
- windowClosed = -not [CueloWin]::Exists($window)
191
- target = $target
192
- targetAfter = ($after | Where-Object { $_.Hwnd -eq $target.Hwnd } | Select-Object -First 1)
193
- win32Error = $code
194
- elapsedMs = $started.ElapsedMilliseconds
195
- foregroundUnchanged = ($foregroundBefore -eq $foregroundAfter)
196
- changes = (Get-Changes $before $after)
197
- })
198
- } catch {
199
- Write-Result ([ordered]@{ ok = $false; error = 'script-error'; message = $_.Exception.Message })
200
- }
1
+ param([Parameter(Mandatory = $true)][string]$Request)
2
+ # windows_control 도구의 Windows 쪽 본체. 요청은 base64(UTF-8 JSON) 한 인자로 받는다(WSL 인자 따옴표 문제를 피한다).
3
+ # 클래식 Win32 컨트롤(WinForms·VB6·MFC)의 자식 창에 SendMessageTimeout으로 WM_SETTEXT·BM_CLICK을 보낸다.
4
+ # 전면 창·포커스는 바꾸지 않는다(SetForegroundWindow·SetFocus·SendInput을 쓰지 않는다).
5
+ [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)
6
+ $ErrorActionPreference = 'Stop'
7
+
8
+ Add-Type -TypeDefinition @"
9
+ using System;
10
+ using System.Text;
11
+ using System.Collections.Generic;
12
+ using System.Runtime.InteropServices;
13
+
14
+ public class CueloChild {
15
+ public long Hwnd;
16
+ public string ClassName;
17
+ public string Text;
18
+ public int ControlId;
19
+ public bool Visible;
20
+ public bool Enabled;
21
+ public int Check;
22
+ }
23
+
24
+ public static class CueloWin {
25
+ private delegate bool EnumProc(IntPtr h, IntPtr l);
26
+ [DllImport("user32.dll")] private static extern bool EnumChildWindows(IntPtr p, EnumProc f, IntPtr l);
27
+ [DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern int GetClassName(IntPtr h, StringBuilder s, int n);
28
+ [DllImport("user32.dll")] private static extern int GetDlgCtrlID(IntPtr h);
29
+ [DllImport("user32.dll")] private static extern bool IsWindowVisible(IntPtr h);
30
+ [DllImport("user32.dll")] private static extern bool IsWindowEnabled(IntPtr h);
31
+ [DllImport("user32.dll")] private static extern bool IsWindow(IntPtr h);
32
+ [DllImport("user32.dll")] private static extern int GetWindowLong(IntPtr h, int index);
33
+ [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow();
34
+ [DllImport("user32.dll", SetLastError = true)]
35
+ private static extern IntPtr SendMessageTimeout(IntPtr h, uint m, IntPtr w, IntPtr l, uint flags, uint timeout, out IntPtr result);
36
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = "SendMessageTimeoutW")]
37
+ private static extern IntPtr SendMessageTimeoutText(IntPtr h, uint m, IntPtr w, StringBuilder l, uint flags, uint timeout, out IntPtr result);
38
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = "SendMessageTimeoutW")]
39
+ private static extern IntPtr SendMessageTimeoutString(IntPtr h, uint m, IntPtr w, string l, uint flags, uint timeout, out IntPtr result);
40
+
41
+ private const uint SMTO_ABORTIFHUNG = 2;
42
+ private const uint WM_SETTEXT = 0x000C, WM_GETTEXT = 0x000D, WM_GETTEXTLENGTH = 0x000E;
43
+ private const uint BM_GETCHECK = 0x00F0, BM_CLICK = 0x00F5;
44
+ private const int GWL_STYLE = -16;
45
+
46
+ public static bool Exists(long hwnd) { return IsWindow(new IntPtr(hwnd)); }
47
+
48
+ public static string ReadText(IntPtr h) {
49
+ IntPtr length;
50
+ if (SendMessageTimeout(h, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero, SMTO_ABORTIFHUNG, 1000, out length) == IntPtr.Zero) return null;
51
+ int n = (int)length.ToInt64();
52
+ if (n < 0) n = 0;
53
+ if (n > 65535) n = 65535;
54
+ StringBuilder buffer = new StringBuilder(n + 1);
55
+ IntPtr copied;
56
+ if (SendMessageTimeoutText(h, WM_GETTEXT, new IntPtr(n + 1), buffer, SMTO_ABORTIFHUNG, 1000, out copied) == IntPtr.Zero) return null;
57
+ return buffer.ToString();
58
+ }
59
+
60
+ // Check state only for check-box and radio-button styles; push buttons report -1.
61
+ private static int CheckState(IntPtr h, string className) {
62
+ if (className.IndexOf("BUTTON", StringComparison.OrdinalIgnoreCase) < 0) return -1;
63
+ int kind = GetWindowLong(h, GWL_STYLE) & 0xF;
64
+ if (kind != 2 && kind != 3 && kind != 4 && kind != 5 && kind != 6 && kind != 9) return -1;
65
+ IntPtr state;
66
+ if (SendMessageTimeout(h, BM_GETCHECK, IntPtr.Zero, IntPtr.Zero, SMTO_ABORTIFHUNG, 1000, out state) == IntPtr.Zero) return -1;
67
+ return (int)state.ToInt64();
68
+ }
69
+
70
+ public static CueloChild Describe(IntPtr h) {
71
+ StringBuilder cls = new StringBuilder(256);
72
+ GetClassName(h, cls, 256);
73
+ CueloChild child = new CueloChild();
74
+ child.Hwnd = h.ToInt64();
75
+ child.ClassName = cls.ToString();
76
+ child.Text = ReadText(h);
77
+ child.ControlId = GetDlgCtrlID(h);
78
+ child.Visible = IsWindowVisible(h);
79
+ child.Enabled = IsWindowEnabled(h);
80
+ child.Check = CheckState(h, child.ClassName);
81
+ return child;
82
+ }
83
+
84
+ public static List<CueloChild> Children(long top) {
85
+ List<CueloChild> list = new List<CueloChild>();
86
+ EnumChildWindows(new IntPtr(top), delegate (IntPtr h, IntPtr l) { list.Add(Describe(h)); return true; }, IntPtr.Zero);
87
+ return list;
88
+ }
89
+
90
+ // Returns 0 when delivered; otherwise the Win32 error (1460 = timeout, e.g. a modal dialog is still open; 5 = elevated target).
91
+ public static int SetText(long hwnd, string value) {
92
+ IntPtr result;
93
+ if (SendMessageTimeoutString(new IntPtr(hwnd), WM_SETTEXT, IntPtr.Zero, value, SMTO_ABORTIFHUNG, 2000, out result) != IntPtr.Zero) return 0;
94
+ int error = Marshal.GetLastWin32Error();
95
+ return error == 0 ? -1 : error;
96
+ }
97
+
98
+ public static int Click(long hwnd, uint timeoutMs) {
99
+ IntPtr result;
100
+ if (SendMessageTimeout(new IntPtr(hwnd), BM_CLICK, IntPtr.Zero, IntPtr.Zero, SMTO_ABORTIFHUNG, timeoutMs, out result) != IntPtr.Zero) return 0;
101
+ int error = Marshal.GetLastWin32Error();
102
+ return error == 0 ? -1 : error;
103
+ }
104
+ }
105
+ "@
106
+
107
+ function Write-Result($value) { $value | ConvertTo-Json -Depth 5 -Compress }
108
+
109
+ function Get-Changes($before, $after) {
110
+ $old = @{}
111
+ foreach ($child in $before) { $old[$child.Hwnd] = $child }
112
+ $changes = @()
113
+ foreach ($child in $after) {
114
+ $prev = $old[$child.Hwnd]
115
+ if ($null -eq $prev) {
116
+ $changes += [ordered]@{ hwnd = $child.Hwnd; className = $child.ClassName; added = $true; text = $child.Text }
117
+ continue
118
+ }
119
+ if ($prev.Text -ne $child.Text -or $prev.Check -ne $child.Check -or $prev.Enabled -ne $child.Enabled -or $prev.Visible -ne $child.Visible) {
120
+ $changes += [ordered]@{
121
+ hwnd = $child.Hwnd; className = $child.ClassName
122
+ textBefore = $prev.Text; textAfter = $child.Text
123
+ checkBefore = $prev.Check; checkAfter = $child.Check
124
+ enabledAfter = $child.Enabled; visibleAfter = $child.Visible
125
+ }
126
+ }
127
+ }
128
+ # 사라진 컨트롤도 변화다(창은 남았는데 버튼이 자식을 없앤 경우).
129
+ $now = @{}
130
+ foreach ($child in $after) { $now[$child.Hwnd] = $true }
131
+ foreach ($child in $before) {
132
+ if (-not $now.ContainsKey($child.Hwnd)) {
133
+ $changes += [ordered]@{ hwnd = $child.Hwnd; className = $child.ClassName; removed = $true; text = $child.Text }
134
+ }
135
+ }
136
+ , $changes
137
+ }
138
+
139
+ try {
140
+ $req = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($Request)) | ConvertFrom-Json
141
+ $window = [long]$req.window
142
+ $foregroundBefore = [CueloWin]::GetForegroundWindow().ToInt64()
143
+ if (-not [CueloWin]::Exists($window)) {
144
+ Write-Result ([ordered]@{ ok = $false; error = 'window-not-found'; window = $window }); exit 0
145
+ }
146
+ $before = [CueloWin]::Children($window)
147
+ if ($req.action -eq 'list') {
148
+ $foregroundAfter = [CueloWin]::GetForegroundWindow().ToInt64()
149
+ Write-Result ([ordered]@{ ok = $true; action = 'list'; window = $window; foregroundUnchanged = ($foregroundBefore -eq $foregroundAfter); controls = $before }); exit 0
150
+ }
151
+
152
+ $found = @($before | Where-Object {
153
+ ($null -eq $req.text -or $_.Text -ceq [string]$req.text) -and
154
+ ($null -eq $req.className -or $_.ClassName.IndexOf([string]$req.className, [StringComparison]::OrdinalIgnoreCase) -ge 0)
155
+ })
156
+ if ($found.Count -eq 0) {
157
+ Write-Result ([ordered]@{ ok = $false; error = 'control-not-found'; window = $window; controls = $before }); exit 0
158
+ }
159
+ if ($null -ne $req.index) {
160
+ $index = [int]$req.index
161
+ if ($index -lt 0 -or $index -ge $found.Count) {
162
+ Write-Result ([ordered]@{ ok = $false; error = 'index-out-of-range'; window = $window; matches = $found }); exit 0
163
+ }
164
+ $target = $found[$index]
165
+ } elseif ($found.Count -gt 1) {
166
+ Write-Result ([ordered]@{ ok = $false; error = 'ambiguous'; window = $window; matches = $found }); exit 0
167
+ } else {
168
+ $target = $found[0]
169
+ }
170
+
171
+ # 바꾸는 동작은 비활성 컨트롤에 보내지 않는다(사용자가 막아 둔 입력칸·버튼이다).
172
+ if ($req.action -ne 'read' -and -not $target.Enabled) {
173
+ Write-Result ([ordered]@{ ok = $false; error = 'control-disabled'; window = $window; target = $target }); exit 0
174
+ }
175
+ $code = 0
176
+ $started = [Diagnostics.Stopwatch]::StartNew()
177
+ switch ($req.action) {
178
+ 'setText' { $code = [CueloWin]::SetText($target.Hwnd, [string]$req.value) }
179
+ 'click' { $code = [CueloWin]::Click($target.Hwnd, [uint32]$req.timeoutMs) }
180
+ 'read' { }
181
+ default { throw "unknown action $($req.action)" }
182
+ }
183
+ $started.Stop()
184
+ $after = if ([CueloWin]::Exists($window)) { [CueloWin]::Children($window) } else { @() }
185
+ $foregroundAfter = [CueloWin]::GetForegroundWindow().ToInt64()
186
+ Write-Result ([ordered]@{
187
+ ok = ($code -eq 0)
188
+ action = $req.action
189
+ window = $window
190
+ windowClosed = -not [CueloWin]::Exists($window)
191
+ target = $target
192
+ targetAfter = ($after | Where-Object { $_.Hwnd -eq $target.Hwnd } | Select-Object -First 1)
193
+ win32Error = $code
194
+ elapsedMs = $started.ElapsedMilliseconds
195
+ foregroundUnchanged = ($foregroundBefore -eq $foregroundAfter)
196
+ changes = (Get-Changes $before $after)
197
+ })
198
+ } catch {
199
+ Write-Result ([ordered]@{ ok = $false; error = 'script-error'; message = $_.Exception.Message })
200
+ }