cuelo 0.8.3 → 0.9.1

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 (402) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +9 -6
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +5 -3
  6. package/.next/required-server-files.json +5 -3
  7. package/.next/routes-manifest.json +20 -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]/account/route.js.nft.json +1 -1
  30. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  31. package/.next/server/app/api/agent/[id]/bash-output/route.js.nft.json +1 -1
  32. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  33. package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
  34. package/.next/server/app/api/agent/[id]/route.js +1 -1
  35. package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
  36. package/.next/server/app/api/agent/new/route.js +1 -1
  37. package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
  38. package/.next/server/app/api/agent/running/route.js +1 -1
  39. package/.next/server/app/api/agent/running/route.js.nft.json +1 -1
  40. package/.next/server/app/api/attachment-settings/route.js +1 -0
  41. package/.next/server/app/api/attachment-settings/route.js.nft.json +1 -0
  42. package/.next/server/app/api/attachment-settings/route_client-reference-manifest.js +1 -0
  43. package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -0
  44. package/.next/server/app/api/attachments/[id]/transcription/route.js.nft.json +1 -0
  45. package/.next/server/app/api/attachments/[id]/transcription/route_client-reference-manifest.js +1 -0
  46. package/.next/server/app/api/attachments/draft/route.js +1 -0
  47. package/.next/server/app/api/attachments/draft/route.js.nft.json +1 -0
  48. package/.next/server/app/api/attachments/draft/route_client-reference-manifest.js +1 -0
  49. package/.next/server/app/api/attachments/route.js +28 -5
  50. package/.next/server/app/api/attachments/route.js.nft.json +1 -1
  51. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  52. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  53. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  54. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  55. package/.next/server/app/api/auth/providers/route.js +1 -1
  56. package/.next/server/app/api/cwd/browse/route.js +1 -1
  57. package/.next/server/app/api/cwd/validate/route.js +1 -1
  58. package/.next/server/app/api/cwd/validate/route.js.nft.json +1 -1
  59. package/.next/server/app/api/default-cwd/route.js +1 -1
  60. package/.next/server/app/api/default-cwd/route.js.nft.json +1 -1
  61. package/.next/server/app/api/display-settings/route.js +1 -1
  62. package/.next/server/app/api/display-settings/route.js.nft.json +1 -1
  63. package/.next/server/app/api/document-text/route.js +4 -4
  64. package/.next/server/app/api/experiments/route.js +1 -1
  65. package/.next/server/app/api/file-index/route.js +1 -1
  66. package/.next/server/app/api/file-index/route.js.nft.json +1 -1
  67. package/.next/server/app/api/files/[...path]/route.js +2 -2
  68. package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -1
  69. package/.next/server/app/api/git/diff/route.js +2 -2
  70. package/.next/server/app/api/git/diff/route.js.nft.json +1 -1
  71. package/.next/server/app/api/git/status/route.js +2 -2
  72. package/.next/server/app/api/git/status/route.js.nft.json +1 -1
  73. package/.next/server/app/api/gpt6/handles/route.js +1 -1
  74. package/.next/server/app/api/gpt6/handles/route.js.nft.json +1 -1
  75. package/.next/server/app/api/gpt6/reply/route.js +1 -1
  76. package/.next/server/app/api/gpt6/reply/route.js.nft.json +1 -1
  77. package/.next/server/app/api/gpt6/token/route.js +1 -1
  78. package/.next/server/app/api/gpt6/token/route.js.nft.json +1 -1
  79. package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
  80. package/.next/server/app/api/gpt6/web6-session/route.js.nft.json +1 -1
  81. package/.next/server/app/api/home/route.js +1 -1
  82. package/.next/server/app/api/live/call/[callId]/route.js +1 -1
  83. package/.next/server/app/api/live/call/[callId]/route.js.nft.json +1 -1
  84. package/.next/server/app/api/live/character-voice/route.js +1 -1
  85. package/.next/server/app/api/live/character-voice/route.js.nft.json +1 -1
  86. package/.next/server/app/api/live/events/route.js +2 -2
  87. package/.next/server/app/api/live/events/route.js.nft.json +1 -1
  88. package/.next/server/app/api/live/offer/route.js +1 -1
  89. package/.next/server/app/api/live/offer/route.js.nft.json +1 -1
  90. package/.next/server/app/api/live/voices/route.js +1 -1
  91. package/.next/server/app/api/live/voices/route.js.nft.json +1 -1
  92. package/.next/server/app/api/lounge/events/route.js +2 -2
  93. package/.next/server/app/api/lounge/events/route.js.nft.json +1 -1
  94. package/.next/server/app/api/lounge/route.js +1 -1
  95. package/.next/server/app/api/lounge/route.js.nft.json +1 -1
  96. package/.next/server/app/api/mcp/route.js +2 -2
  97. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  98. package/.next/server/app/api/model-roles/route.js +1 -1
  99. package/.next/server/app/api/model-roles/route.js.nft.json +1 -1
  100. package/.next/server/app/api/models/route.js +1 -1
  101. package/.next/server/app/api/models/route.js.nft.json +1 -1
  102. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  103. package/.next/server/app/api/models-config/discover/route.js +1 -1
  104. package/.next/server/app/api/models-config/route.js +4 -4
  105. package/.next/server/app/api/models-config/test/route.js +1 -1
  106. package/.next/server/app/api/office-avatars/[id]/route.js +1 -1
  107. package/.next/server/app/api/office-avatars/route.js +1 -1
  108. package/.next/server/app/api/plugins/route.js +1 -1
  109. package/.next/server/app/api/plugins/route.js.nft.json +1 -1
  110. package/.next/server/app/api/project-trust/route.js +1 -1
  111. package/.next/server/app/api/project-trust/route.js.nft.json +1 -1
  112. package/.next/server/app/api/projects/route.js +1 -1
  113. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  114. package/.next/server/app/api/runs/[runId]/route.js +1 -1
  115. package/.next/server/app/api/runs/route.js +1 -1
  116. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  117. package/.next/server/app/api/sessions/[id]/auto-name/route.js.nft.json +1 -1
  118. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  119. package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -1
  120. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  121. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js.nft.json +1 -1
  122. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  123. package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -1
  124. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  125. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  126. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  127. package/.next/server/app/api/sessions/[id]/state/route.js.nft.json +1 -1
  128. package/.next/server/app/api/sessions/route.js +1 -1
  129. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  130. package/.next/server/app/api/sessions/search/route.js +1 -1
  131. package/.next/server/app/api/sessions/search/route.js.nft.json +1 -1
  132. package/.next/server/app/api/settings/route.js +1 -1
  133. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  134. package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
  135. package/.next/server/app/api/skills/check/route.js +1 -1
  136. package/.next/server/app/api/skills/check/route.js.nft.json +1 -1
  137. package/.next/server/app/api/skills/install/route.js +2 -2
  138. package/.next/server/app/api/skills/install/route.js.nft.json +1 -1
  139. package/.next/server/app/api/skills/route.js +2 -2
  140. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  141. package/.next/server/app/api/skills/search/route.js +1 -1
  142. package/.next/server/app/api/skills/update/route.js +1 -1
  143. package/.next/server/app/api/skills/update/route.js.nft.json +1 -1
  144. package/.next/server/app/api/theme/route.js +1 -1
  145. package/.next/server/app/api/theme/route.js.nft.json +1 -1
  146. package/.next/server/app/api/tool-image/route.js +1 -1
  147. package/.next/server/app/api/tool-image/route.js.nft.json +1 -1
  148. package/.next/server/app/api/update-maintenance/route.js +3 -3
  149. package/.next/server/app/api/update-maintenance/route.js.nft.json +1 -1
  150. package/.next/server/app/api/updates/route.js +1 -1
  151. package/.next/server/app/api/web-access/recovery/route.js +1 -1
  152. package/.next/server/app/api/web-access/route.js +1 -1
  153. package/.next/server/app/api/web6/consults/route.js +1 -1
  154. package/.next/server/app/api/worktrees/route.js +1 -1
  155. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  156. package/.next/server/app/favicon.ico/route.js +1 -1
  157. package/.next/server/app/index.html +1 -1
  158. package/.next/server/app/index.rsc +5 -5
  159. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  160. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  161. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  162. package/.next/server/app/index.segments/_index.segment.rsc +3 -3
  163. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  164. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  165. package/.next/server/app/office/page.js +2 -2
  166. package/.next/server/app/office/page_client-reference-manifest.js +1 -1
  167. package/.next/server/app/office-preview/page.js +2 -2
  168. package/.next/server/app/office-preview/page_client-reference-manifest.js +1 -1
  169. package/.next/server/app/office-preview.html +1 -1
  170. package/.next/server/app/office-preview.rsc +3 -3
  171. package/.next/server/app/office-preview.segments/_full.segment.rsc +3 -3
  172. package/.next/server/app/office-preview.segments/_head.segment.rsc +1 -1
  173. package/.next/server/app/office-preview.segments/_index.segment.rsc +3 -3
  174. package/.next/server/app/office-preview.segments/_tree.segment.rsc +2 -2
  175. package/.next/server/app/office-preview.segments/office-preview/__PAGE__.segment.rsc +1 -1
  176. package/.next/server/app/office-preview.segments/office-preview.segment.rsc +1 -1
  177. package/.next/server/app/office.html +1 -1
  178. package/.next/server/app/office.rsc +5 -5
  179. package/.next/server/app/office.segments/_full.segment.rsc +5 -5
  180. package/.next/server/app/office.segments/_head.segment.rsc +1 -1
  181. package/.next/server/app/office.segments/_index.segment.rsc +3 -3
  182. package/.next/server/app/office.segments/_tree.segment.rsc +2 -2
  183. package/.next/server/app/office.segments/office/__PAGE__.segment.rsc +3 -3
  184. package/.next/server/app/office.segments/office.segment.rsc +1 -1
  185. package/.next/server/app/page.js +2 -2
  186. package/.next/server/app/page_client-reference-manifest.js +1 -1
  187. package/.next/server/app/recover/page.js +2 -2
  188. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  189. package/.next/server/app/recover.html +1 -1
  190. package/.next/server/app/recover.rsc +3 -3
  191. package/.next/server/app/recover.segments/_full.segment.rsc +3 -3
  192. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  193. package/.next/server/app/recover.segments/_index.segment.rsc +3 -3
  194. package/.next/server/app/recover.segments/_tree.segment.rsc +2 -2
  195. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
  196. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  197. package/.next/server/app-paths-manifest.json +9 -6
  198. package/.next/server/chunks/1517.js +1 -1
  199. package/.next/server/chunks/2651.js +1 -1
  200. package/.next/server/chunks/4649.js +1 -1
  201. package/.next/server/chunks/5270.js +8 -0
  202. package/.next/server/chunks/5489.js +14 -14
  203. package/.next/server/chunks/5582.js +6 -6
  204. package/.next/server/chunks/7121.js +4 -0
  205. package/.next/server/chunks/7362.js +1 -1
  206. package/.next/server/chunks/8741.js +1 -0
  207. package/.next/server/chunks/877.js +1 -1
  208. package/.next/server/functions-config-manifest.json +9 -2
  209. package/.next/server/instrumentation.js +1 -0
  210. package/.next/server/instrumentation.js.nft.json +1 -0
  211. package/.next/server/middleware-build-manifest.js +1 -1
  212. package/.next/server/middleware.js +4 -4
  213. package/.next/server/pages/404.html +1 -1
  214. package/.next/server/pages/500.html +1 -1
  215. package/.next/server/server-reference-manifest.json +1 -1
  216. package/.next/static/A-KXZPM3YkTqPPzKrND64/_buildManifest.js +1 -0
  217. package/.next/static/chunks/6110-691c0f77641fc07e.js +1 -0
  218. package/.next/static/chunks/9575-916cd5a97ceda30f.js +22 -0
  219. package/.next/static/chunks/app/_global-error/page-6b1496af498bb4fd.js +1 -0
  220. package/.next/static/chunks/app/api/agent/[id]/account/route-6b1496af498bb4fd.js +1 -0
  221. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-6b1496af498bb4fd.js +1 -0
  222. package/.next/static/chunks/app/api/agent/[id]/events/route-6b1496af498bb4fd.js +1 -0
  223. package/.next/static/chunks/app/api/agent/[id]/route-6b1496af498bb4fd.js +1 -0
  224. package/.next/static/chunks/app/api/agent/new/route-6b1496af498bb4fd.js +1 -0
  225. package/.next/static/chunks/app/api/agent/running/route-6b1496af498bb4fd.js +1 -0
  226. package/.next/static/chunks/app/api/attachment-settings/route-6b1496af498bb4fd.js +1 -0
  227. package/.next/static/chunks/app/api/attachments/[id]/transcription/route-6b1496af498bb4fd.js +1 -0
  228. package/.next/static/chunks/app/api/attachments/draft/route-6b1496af498bb4fd.js +1 -0
  229. package/.next/static/chunks/app/api/attachments/route-6b1496af498bb4fd.js +1 -0
  230. package/.next/static/chunks/app/api/auth/all-providers/route-6b1496af498bb4fd.js +1 -0
  231. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-6b1496af498bb4fd.js +1 -0
  232. package/.next/static/chunks/app/api/auth/login/[provider]/route-6b1496af498bb4fd.js +1 -0
  233. package/.next/static/chunks/app/api/auth/logout/[provider]/route-6b1496af498bb4fd.js +1 -0
  234. package/.next/static/chunks/app/api/auth/providers/route-6b1496af498bb4fd.js +1 -0
  235. package/.next/static/chunks/app/api/cwd/browse/route-6b1496af498bb4fd.js +1 -0
  236. package/.next/static/chunks/app/api/cwd/validate/route-6b1496af498bb4fd.js +1 -0
  237. package/.next/static/chunks/app/api/default-cwd/route-6b1496af498bb4fd.js +1 -0
  238. package/.next/static/chunks/app/api/display-settings/route-6b1496af498bb4fd.js +1 -0
  239. package/.next/static/chunks/app/api/document-text/route-6b1496af498bb4fd.js +1 -0
  240. package/.next/static/chunks/app/api/experiments/route-6b1496af498bb4fd.js +1 -0
  241. package/.next/static/chunks/app/api/file-index/route-6b1496af498bb4fd.js +1 -0
  242. package/.next/static/chunks/app/api/files/[...path]/route-6b1496af498bb4fd.js +1 -0
  243. package/.next/static/chunks/app/api/git/diff/route-6b1496af498bb4fd.js +1 -0
  244. package/.next/static/chunks/app/api/git/status/route-6b1496af498bb4fd.js +1 -0
  245. package/.next/static/chunks/app/api/gpt6/handles/route-6b1496af498bb4fd.js +1 -0
  246. package/.next/static/chunks/app/api/gpt6/reply/route-6b1496af498bb4fd.js +1 -0
  247. package/.next/static/chunks/app/api/gpt6/token/route-6b1496af498bb4fd.js +1 -0
  248. package/.next/static/chunks/app/api/gpt6/web6-session/route-6b1496af498bb4fd.js +1 -0
  249. package/.next/static/chunks/app/api/home/route-6b1496af498bb4fd.js +1 -0
  250. package/.next/static/chunks/app/api/live/call/[callId]/route-6b1496af498bb4fd.js +1 -0
  251. package/.next/static/chunks/app/api/live/character-voice/route-6b1496af498bb4fd.js +1 -0
  252. package/.next/static/chunks/app/api/live/events/route-6b1496af498bb4fd.js +1 -0
  253. package/.next/static/chunks/app/api/live/offer/route-6b1496af498bb4fd.js +1 -0
  254. package/.next/static/chunks/app/api/live/voices/route-6b1496af498bb4fd.js +1 -0
  255. package/.next/static/chunks/app/api/lounge/events/route-6b1496af498bb4fd.js +1 -0
  256. package/.next/static/chunks/app/api/lounge/route-6b1496af498bb4fd.js +1 -0
  257. package/.next/static/chunks/app/api/mcp/route-6b1496af498bb4fd.js +1 -0
  258. package/.next/static/chunks/app/api/model-roles/route-6b1496af498bb4fd.js +1 -0
  259. package/.next/static/chunks/app/api/models/route-6b1496af498bb4fd.js +1 -0
  260. package/.next/static/chunks/app/api/models-config/catalog/route-6b1496af498bb4fd.js +1 -0
  261. package/.next/static/chunks/app/api/models-config/discover/route-6b1496af498bb4fd.js +1 -0
  262. package/.next/static/chunks/app/api/models-config/route-6b1496af498bb4fd.js +1 -0
  263. package/.next/static/chunks/app/api/models-config/test/route-6b1496af498bb4fd.js +1 -0
  264. package/.next/static/chunks/app/api/office-avatars/[id]/route-6b1496af498bb4fd.js +1 -0
  265. package/.next/static/chunks/app/api/office-avatars/route-6b1496af498bb4fd.js +1 -0
  266. package/.next/static/chunks/app/api/plugins/route-6b1496af498bb4fd.js +1 -0
  267. package/.next/static/chunks/app/api/project-trust/route-6b1496af498bb4fd.js +1 -0
  268. package/.next/static/chunks/app/api/projects/route-6b1496af498bb4fd.js +1 -0
  269. package/.next/static/chunks/app/api/runs/[runId]/route-6b1496af498bb4fd.js +1 -0
  270. package/.next/static/chunks/app/api/runs/route-6b1496af498bb4fd.js +1 -0
  271. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-6b1496af498bb4fd.js +1 -0
  272. package/.next/static/chunks/app/api/sessions/[id]/context/route-6b1496af498bb4fd.js +1 -0
  273. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-6b1496af498bb4fd.js +1 -0
  274. package/.next/static/chunks/app/api/sessions/[id]/export/route-6b1496af498bb4fd.js +1 -0
  275. package/.next/static/chunks/app/api/sessions/[id]/route-6b1496af498bb4fd.js +1 -0
  276. package/.next/static/chunks/app/api/sessions/[id]/state/route-6b1496af498bb4fd.js +1 -0
  277. package/.next/static/chunks/app/api/sessions/route-6b1496af498bb4fd.js +1 -0
  278. package/.next/static/chunks/app/api/sessions/search/route-6b1496af498bb4fd.js +1 -0
  279. package/.next/static/chunks/app/api/settings/route-6b1496af498bb4fd.js +1 -0
  280. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-6b1496af498bb4fd.js +1 -0
  281. package/.next/static/chunks/app/api/skills/check/route-6b1496af498bb4fd.js +1 -0
  282. package/.next/static/chunks/app/api/skills/install/route-6b1496af498bb4fd.js +1 -0
  283. package/.next/static/chunks/app/api/skills/route-6b1496af498bb4fd.js +1 -0
  284. package/.next/static/chunks/app/api/skills/search/route-6b1496af498bb4fd.js +1 -0
  285. package/.next/static/chunks/app/api/skills/update/route-6b1496af498bb4fd.js +1 -0
  286. package/.next/static/chunks/app/api/theme/route-6b1496af498bb4fd.js +1 -0
  287. package/.next/static/chunks/app/api/tool-image/route-6b1496af498bb4fd.js +1 -0
  288. package/.next/static/chunks/app/api/update-maintenance/route-6b1496af498bb4fd.js +1 -0
  289. package/.next/static/chunks/app/api/updates/route-6b1496af498bb4fd.js +1 -0
  290. package/.next/static/chunks/app/api/web-access/recovery/route-6b1496af498bb4fd.js +1 -0
  291. package/.next/static/chunks/app/api/web-access/route-6b1496af498bb4fd.js +1 -0
  292. package/.next/static/chunks/app/api/web6/consults/route-6b1496af498bb4fd.js +1 -0
  293. package/.next/static/chunks/app/api/worktrees/route-6b1496af498bb4fd.js +1 -0
  294. package/.next/static/chunks/app/{layout-427af3ea4f595064.js → layout-eb09a412f4f55812.js} +1 -1
  295. package/.next/static/chunks/app/manifest.webmanifest/route-6b1496af498bb4fd.js +1 -0
  296. package/.next/static/chunks/{main-2603b128da53b28c.js → main-26b32c580fb6231f.js} +3 -3
  297. package/.next/static/chunks/next/dist/client/components/builtin/app-error-6b1496af498bb4fd.js +1 -0
  298. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-6b1496af498bb4fd.js +1 -0
  299. package/.next/static/chunks/next/dist/client/components/builtin/not-found-6b1496af498bb4fd.js +1 -0
  300. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6b1496af498bb4fd.js +1 -0
  301. package/.next/static/css/81a05eb6255ef12e.css +1 -0
  302. package/.next/trace +107 -107
  303. package/.next/trace-build +1 -1
  304. package/.next/types/app/api/attachment-settings/route.ts +351 -0
  305. package/.next/types/app/api/attachments/[id]/transcription/route.ts +351 -0
  306. package/.next/types/app/api/attachments/draft/route.ts +351 -0
  307. package/.next/types/routes.d.ts +4 -1
  308. package/.next/types/validator.ts +27 -0
  309. package/README.md +5 -2
  310. package/Tools/CUELO_Setup/files/native-runtime-patch.js +3 -3
  311. package/Tools/CUELO_Setup/files/usage-server.js +56 -3
  312. package/Tools/OMP_Global_Config/agent/AGENTS.md +2 -0
  313. package/Tools/OMP_Global_Config/agent/agents/maker.md +3 -1
  314. package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +3 -1
  315. package/Tools/OMP_Global_Config/agent/rules/omp-harness.md +5 -0
  316. package/Tools/OMP_Global_Config/agent/rules/subagent.md +15 -0
  317. package/Tools/OMP_Global_Config/agent/sop/_writer.md +2 -0
  318. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +296 -0
  319. package/next.config.ts +1 -0
  320. package/package.json +10 -7
  321. package/.next/static/A6e8vaM_XsMnaMJbdHUo9/_buildManifest.js +0 -1
  322. package/.next/static/chunks/6110-46b1b16915b39e5b.js +0 -1
  323. package/.next/static/chunks/9575-7c8d686e116aef58.js +0 -22
  324. package/.next/static/chunks/app/_global-error/page-b73c548944bb1320.js +0 -1
  325. package/.next/static/chunks/app/api/agent/[id]/account/route-b73c548944bb1320.js +0 -1
  326. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-b73c548944bb1320.js +0 -1
  327. package/.next/static/chunks/app/api/agent/[id]/events/route-b73c548944bb1320.js +0 -1
  328. package/.next/static/chunks/app/api/agent/[id]/route-b73c548944bb1320.js +0 -1
  329. package/.next/static/chunks/app/api/agent/new/route-b73c548944bb1320.js +0 -1
  330. package/.next/static/chunks/app/api/agent/running/route-b73c548944bb1320.js +0 -1
  331. package/.next/static/chunks/app/api/attachments/route-b73c548944bb1320.js +0 -1
  332. package/.next/static/chunks/app/api/auth/all-providers/route-b73c548944bb1320.js +0 -1
  333. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-b73c548944bb1320.js +0 -1
  334. package/.next/static/chunks/app/api/auth/login/[provider]/route-b73c548944bb1320.js +0 -1
  335. package/.next/static/chunks/app/api/auth/logout/[provider]/route-b73c548944bb1320.js +0 -1
  336. package/.next/static/chunks/app/api/auth/providers/route-b73c548944bb1320.js +0 -1
  337. package/.next/static/chunks/app/api/cwd/browse/route-b73c548944bb1320.js +0 -1
  338. package/.next/static/chunks/app/api/cwd/validate/route-b73c548944bb1320.js +0 -1
  339. package/.next/static/chunks/app/api/default-cwd/route-b73c548944bb1320.js +0 -1
  340. package/.next/static/chunks/app/api/display-settings/route-b73c548944bb1320.js +0 -1
  341. package/.next/static/chunks/app/api/document-text/route-b73c548944bb1320.js +0 -1
  342. package/.next/static/chunks/app/api/experiments/route-b73c548944bb1320.js +0 -1
  343. package/.next/static/chunks/app/api/file-index/route-b73c548944bb1320.js +0 -1
  344. package/.next/static/chunks/app/api/files/[...path]/route-b73c548944bb1320.js +0 -1
  345. package/.next/static/chunks/app/api/git/diff/route-b73c548944bb1320.js +0 -1
  346. package/.next/static/chunks/app/api/git/status/route-b73c548944bb1320.js +0 -1
  347. package/.next/static/chunks/app/api/gpt6/handles/route-b73c548944bb1320.js +0 -1
  348. package/.next/static/chunks/app/api/gpt6/reply/route-b73c548944bb1320.js +0 -1
  349. package/.next/static/chunks/app/api/gpt6/token/route-b73c548944bb1320.js +0 -1
  350. package/.next/static/chunks/app/api/gpt6/web6-session/route-b73c548944bb1320.js +0 -1
  351. package/.next/static/chunks/app/api/home/route-b73c548944bb1320.js +0 -1
  352. package/.next/static/chunks/app/api/live/call/[callId]/route-b73c548944bb1320.js +0 -1
  353. package/.next/static/chunks/app/api/live/character-voice/route-b73c548944bb1320.js +0 -1
  354. package/.next/static/chunks/app/api/live/events/route-b73c548944bb1320.js +0 -1
  355. package/.next/static/chunks/app/api/live/offer/route-b73c548944bb1320.js +0 -1
  356. package/.next/static/chunks/app/api/live/voices/route-b73c548944bb1320.js +0 -1
  357. package/.next/static/chunks/app/api/lounge/events/route-b73c548944bb1320.js +0 -1
  358. package/.next/static/chunks/app/api/lounge/route-b73c548944bb1320.js +0 -1
  359. package/.next/static/chunks/app/api/mcp/route-b73c548944bb1320.js +0 -1
  360. package/.next/static/chunks/app/api/model-roles/route-b73c548944bb1320.js +0 -1
  361. package/.next/static/chunks/app/api/models/route-b73c548944bb1320.js +0 -1
  362. package/.next/static/chunks/app/api/models-config/catalog/route-b73c548944bb1320.js +0 -1
  363. package/.next/static/chunks/app/api/models-config/discover/route-b73c548944bb1320.js +0 -1
  364. package/.next/static/chunks/app/api/models-config/route-b73c548944bb1320.js +0 -1
  365. package/.next/static/chunks/app/api/models-config/test/route-b73c548944bb1320.js +0 -1
  366. package/.next/static/chunks/app/api/office-avatars/[id]/route-b73c548944bb1320.js +0 -1
  367. package/.next/static/chunks/app/api/office-avatars/route-b73c548944bb1320.js +0 -1
  368. package/.next/static/chunks/app/api/plugins/route-b73c548944bb1320.js +0 -1
  369. package/.next/static/chunks/app/api/project-trust/route-b73c548944bb1320.js +0 -1
  370. package/.next/static/chunks/app/api/projects/route-b73c548944bb1320.js +0 -1
  371. package/.next/static/chunks/app/api/runs/[runId]/route-b73c548944bb1320.js +0 -1
  372. package/.next/static/chunks/app/api/runs/route-b73c548944bb1320.js +0 -1
  373. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-b73c548944bb1320.js +0 -1
  374. package/.next/static/chunks/app/api/sessions/[id]/context/route-b73c548944bb1320.js +0 -1
  375. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-b73c548944bb1320.js +0 -1
  376. package/.next/static/chunks/app/api/sessions/[id]/export/route-b73c548944bb1320.js +0 -1
  377. package/.next/static/chunks/app/api/sessions/[id]/route-b73c548944bb1320.js +0 -1
  378. package/.next/static/chunks/app/api/sessions/[id]/state/route-b73c548944bb1320.js +0 -1
  379. package/.next/static/chunks/app/api/sessions/route-b73c548944bb1320.js +0 -1
  380. package/.next/static/chunks/app/api/sessions/search/route-b73c548944bb1320.js +0 -1
  381. package/.next/static/chunks/app/api/settings/route-b73c548944bb1320.js +0 -1
  382. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-b73c548944bb1320.js +0 -1
  383. package/.next/static/chunks/app/api/skills/check/route-b73c548944bb1320.js +0 -1
  384. package/.next/static/chunks/app/api/skills/install/route-b73c548944bb1320.js +0 -1
  385. package/.next/static/chunks/app/api/skills/route-b73c548944bb1320.js +0 -1
  386. package/.next/static/chunks/app/api/skills/search/route-b73c548944bb1320.js +0 -1
  387. package/.next/static/chunks/app/api/skills/update/route-b73c548944bb1320.js +0 -1
  388. package/.next/static/chunks/app/api/theme/route-b73c548944bb1320.js +0 -1
  389. package/.next/static/chunks/app/api/tool-image/route-b73c548944bb1320.js +0 -1
  390. package/.next/static/chunks/app/api/update-maintenance/route-b73c548944bb1320.js +0 -1
  391. package/.next/static/chunks/app/api/updates/route-b73c548944bb1320.js +0 -1
  392. package/.next/static/chunks/app/api/web-access/recovery/route-b73c548944bb1320.js +0 -1
  393. package/.next/static/chunks/app/api/web-access/route-b73c548944bb1320.js +0 -1
  394. package/.next/static/chunks/app/api/web6/consults/route-b73c548944bb1320.js +0 -1
  395. package/.next/static/chunks/app/api/worktrees/route-b73c548944bb1320.js +0 -1
  396. package/.next/static/chunks/app/manifest.webmanifest/route-b73c548944bb1320.js +0 -1
  397. package/.next/static/chunks/next/dist/client/components/builtin/app-error-b73c548944bb1320.js +0 -1
  398. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b73c548944bb1320.js +0 -1
  399. package/.next/static/chunks/next/dist/client/components/builtin/not-found-b73c548944bb1320.js +0 -1
  400. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b73c548944bb1320.js +0 -1
  401. package/.next/static/css/67b6e19482963224.css +0 -1
  402. /package/.next/static/{A6e8vaM_XsMnaMJbdHUo9 → A-KXZPM3YkTqPPzKrND64}/_ssgManifest.js +0 -0
@@ -0,0 +1,351 @@
1
+ // File: D:\a\CUELO\CUELO\app\api\attachments\draft\route.ts
2
+ import * as entry from '../../../../../../app/api/attachments/draft/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/attachments/draft/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 = "/" | "/office" | "/office-preview" | "/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/character-voice" | "/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/office-avatars" | "/api/office-avatars/[id]" | "/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"
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/attachment-settings" | "/api/attachments" | "/api/attachments/[id]/transcription" | "/api/attachments/draft" | "/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/character-voice" | "/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/office-avatars" | "/api/office-avatars/[id]" | "/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
@@ -18,7 +18,10 @@ interface ParamMap {
18
18
  "/api/agent/[id]/events": { "id": string; }
19
19
  "/api/agent/new": {}
20
20
  "/api/agent/running": {}
21
+ "/api/attachment-settings": {}
21
22
  "/api/attachments": {}
23
+ "/api/attachments/[id]/transcription": { "id": string; }
24
+ "/api/attachments/draft": {}
22
25
  "/api/auth/all-providers": {}
23
26
  "/api/auth/api-key/[provider]": { "provider": string; }
24
27
  "/api/auth/login/[provider]": { "provider": string; }
@@ -137,6 +137,33 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
137
137
  type __Unused = __Check
138
138
  }
139
139
 
140
+ // Validate ../../app/api/attachment-settings/route.ts
141
+ {
142
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/attachment-settings">> = Specific
143
+ const handler = {} as typeof import("../../app/api/attachment-settings/route.js")
144
+ type __Check = __IsExpected<typeof handler>
145
+ // @ts-ignore
146
+ type __Unused = __Check
147
+ }
148
+
149
+ // Validate ../../app/api/attachments/[id]/transcription/route.ts
150
+ {
151
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/attachments/[id]/transcription">> = Specific
152
+ const handler = {} as typeof import("../../app/api/attachments/[id]/transcription/route.js")
153
+ type __Check = __IsExpected<typeof handler>
154
+ // @ts-ignore
155
+ type __Unused = __Check
156
+ }
157
+
158
+ // Validate ../../app/api/attachments/draft/route.ts
159
+ {
160
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/attachments/draft">> = Specific
161
+ const handler = {} as typeof import("../../app/api/attachments/draft/route.js")
162
+ type __Check = __IsExpected<typeof handler>
163
+ // @ts-ignore
164
+ type __Unused = __Check
165
+ }
166
+
140
167
  // Validate ../../app/api/attachments/route.ts
141
168
  {
142
169
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/attachments">> = Specific
package/README.md CHANGED
@@ -16,7 +16,7 @@ Use the same `~/.omp/agent` sessions, credentials and model configuration from t
16
16
 
17
17
  **한국어:** CUELO는 omp(oh-my-pi)를 위한 오픈소스 AI 코딩 에이전트 작업 공간이자 하네스입니다. 웹 앱은 omp SDK를 서버 안에서 실행하고, `omp` CLI와 같은 `~/.omp/agent` 디렉터리를 씁니다. 터미널에서 하던 세션을 브라우저에서 이어 가고, 다시 터미널로 돌아가도 기록·계정·모델 설정을 공유합니다.
18
18
 
19
- 내장 OMP 코어는 **18.5.1**입니다. 추론 강도를 바꾸거나 서브에이전트를 다시 이어도 예비 모델 설정을 유지하며, 별도로 설치한 `omp` CLI의 버전은 웹 업데이트와 독립적입니다.
19
+ 내장 OMP 코어는 **18.6.0**입니다. 추론 강도를 바꾸거나 서브에이전트를 다시 이어도 예비 모델 설정을 유지하며, 별도로 설치한 `omp` CLI의 버전은 웹 업데이트와 독립적입니다.
20
20
 
21
21
  CUELO의 목적은 작업 중 확인한 실패와 막힘을 기억·작업 규칙·실행 절차에 반영해, 사람이 같은 문제를 다시 지적하지 않아도 다음 작업에서 실수를 줄이는 것입니다. 원인을 확인하고 필요한 부분만 바꾸며, 다음 작업에서 적용과 효과를 확인하는 것까지를 지향합니다. 기록을 저장했다는 이유만으로 자동 개선이 끝났다고 보지는 않습니다.
22
22
 
@@ -42,7 +42,7 @@ CUELO의 목적은 작업 중 확인한 실패와 막힘을 기억·작업 규
42
42
  - goal 모드의 자동 이어 가기와 todo 진행 상황을 대화창 위에서 확인합니다. 실행을 취소하면 자동 이어 가기가 멈추며, 일시정지된 목표는 `/goal resume`으로 재개합니다.
43
43
  - 실행 중에 Steer로 지시를 바꾸면, 도구 호출이 없는 모델 요청은 서버의 전환 신호를 기다리지 않고 새 지시로 다시 요청합니다. 이미 보인 답변은 유지하며, 재요청에 따라 사용량이 늘 수 있습니다.
44
44
  - 작업 로그 패널에서 이번 턴의 과정 항목과 턴마다 쓴 파일을 따로 봅니다.
45
- - 입력창에 이미지·문서 외에 음성(받아쓰기), 코드·설정 파일(본문 첨부), 그 밖의 파일(저장 후 경로 첨부)을 붙여넣기·드롭·선택으로 넣습니다. 음성 받아쓰기에는 Google Antigravity 계정이 필요합니다.
45
+ - 입력창에 이미지·문서 외에 음성(받아쓰기), 코드·설정 파일(본문 첨부), 그 밖의 파일(저장 후 경로 첨부)을 붙여넣기·드롭·선택으로 넣습니다. 저장형 첨부는 기본 파일당 100MB이며 설정에서 한도를 바꿀 수 있습니다. 큰 음성은 처리 계획과 계정 사용량 안내를 확인한 뒤 압축·분할 전사를 시작합니다. 음성 받아쓰기는 Google Antigravity 계정이 필요합니다. 대화·분기·초안에서 사용 중인 파일은 보존하고, 미사용이 확인된 첨부만 7일 유예 후 자동 정리합니다. [첨부와 자동 정리 안내](./docs/attachments.md)를 확인하세요.
46
46
  - 에이전트가 생성하거나 확인한 이미지가 그 턴의 대화 흐름에 썸네일로 보이고, 누르면 크게 열립니다.
47
47
  - Ctrl+K 팔레트로 대화 내용을 검색해 해당 메시지로 이동합니다. 압축으로 사라진 과거 메시지는 제외하고, 현재 볼 수 있는 메시지를 세션당 최대 3건 보여 줍니다. 긴 대화 안에서는 Ctrl+F로 찾고, 오른쪽 질문 레일로 내가 한 질문 사이를 오갑니다.
48
48
  - 서버나 PC가 꺼져 실행이 끊긴 대화를 열면 중단 알림을 보여 줍니다. 컨텍스트 압축 중에는 경과 시간을 표시합니다.
@@ -54,12 +54,15 @@ CUELO의 목적은 작업 중 확인한 실패와 막힘을 기억·작업 규
54
54
 
55
55
  - 계정별 사용량 카드: 한도 창, 이번 구간 실측, 리셋 권장을 한 화면에 보여 줍니다. 기록이 없으면 숫자를 지어내지 않고 「기록 부족」으로 표시합니다.
56
56
  - 계정은 이메일 대신 캐릭터 얼굴과 별칭으로 구별합니다. 주소를 상시 노출하지 않기 위해서입니다.
57
+ - 사이드바 아래 사용량에서 「순서 편집」을 누르면 계정마다 위로·아래로 버튼이 생깁니다. 한 계정의 한도는 함께 움직이고, 고른 순서는 이 브라우저에 저장돼 새로고침해도 유지됩니다. 순서는 화면 표시에만 적용되며, 처음 보는 계정은 맨 뒤에 붙습니다.
58
+ - 로그인이 만료되거나 쓸 수 없게 된 계정도 사용량에서 사라지지 않고 이유와 함께 남습니다. 다시 로그인해야 풀리는 계정에만 「재로그인」 버튼이 붙으며, 누르면 Models의 해당 제공자 로그인 화면이 대상 계정(얼굴·별칭·가린 주소)과 함께 열립니다. 로그인은 그 화면에서 직접 시작하고, 끝나면 사용량을 다시 읽어 같은 계정이 돌아왔을 때만 복구됐다고 알립니다. 다른 계정으로 로그인하면 원래 계정의 오류는 그대로 남습니다. 직접 꺼 둔 계정은 지금처럼 목록에 나오지 않습니다.
57
59
  - 효율 패널(Run X-Ray · Experiment Lab): `~/.omp/stats.db`와 세션 기록에 이미 쌓인 값만 읽어 실행별 병목과 구성 비교를 보여 줍니다.
58
60
 
59
61
  **여러 에이전트와 함께 일하기**
60
62
 
61
63
  - SubAgent 아카이브: 진행 중·완료된 자식 에이전트의 기록을 열어 봅니다.
62
64
  - 서브에이전트를 발주한 답변 안에 접힌 카드가 붙어, 맡긴 일마다 실행 상태와 Main의 검수 판정을 한 줄로 보여 줍니다. 펼치면 현재 단계·모델·판정 사유와 상세 패널 링크가 나옵니다. 실행이 끝났어도 Main이 판정을 남기지 않았으면 「검수 미기록」으로 표시하며, 끝난 것을 통과로 치지 않습니다. 서브에이전트가 실행 중이거나 판정을 기다리는 동안에는 입력창 위에 한 줄 요약이 고정되고, 누르면 그 카드로 스크롤해 강조합니다.
65
+ - 대화가 압축돼도 서브에이전트 카드·진행줄과 할 일 목록은 현재 분기의 기록을 이어서 보여 줍니다. 압축으로 원래 답변이 가려진 카드는 압축 지점에서 다시 열 수 있으며, 새로고침해도 복원됩니다. 이후 실행 상태와 검수 판정은 새 관측에 맞춰 갱신됩니다.
63
66
  - 끝난 턴의 마지막 답변 아래에 변경 파일·검사·실패·미확인 개수를 한 줄로 요약하고, 펼치면 파일과 검사 명령·결과를 봅니다.
64
67
  - 실행 중에 보낸 입력은 「지금 지시」와 「완료 후 요청」으로 나뉘어, 접수·전달 대기·대화에 들어감 단계를 따로 보여 줍니다. 전달을 확인하지 못하면 그렇다고 표시합니다. 스크린샷만 보낸 입력도 「이미지 N개」로 표시합니다. 기본 목록에는 최근 4개만 보이고, 「이전 N개 더 보기」로 나머지를 펼칠 수 있습니다. 실제 대기 중인 입력은 목록에서 숨겨져도 유지되며, 펼친 목록에서 거둘 수 있습니다.
65
68
  - 오피스 화면: 대화 화면의 「오피스」를 누르면 3D 사무실 전용 화면(`/office`)이 새 탭에서 열립니다. 원래 탭의 주소·선택한 세션·작성 중인 초안·진행 중인 응답은 그대로 남고, 오피스 탭도 같은 세션 주소(`?session=`)를 쓰므로 직접 열거나 새로고침해도 같은 세션이 열립니다. 사무실이 화면 폭을 다 쓰고, Main과 참여한 Maker가 각자 캐릭터로 자리에 앉아 실제 실행 상태대로 일하거나 책상 곁에서 기다리며, 실행이 끝나면 쉬는 자리로 돌아갑니다. 실행 완료는 Main의 수용으로 표시하지 않습니다. 이 세션에 참여하지 않은 캐릭터는 휴게 구역에서 쉬며, 가리키면 「참여 안 함」이 보입니다. 오른쪽 위 버튼으로 확대·축소·전체 보기를 하고, 확대한 뒤에는 장면을 끌거나 화살표 버튼으로 둘러봅니다. 참여자 캐릭터나 머리 위 말풍선, 아래 참여자 줄을 누르면 사무실 대신 그 대상의 대화나 작업 기록·파일이 화면을 다 쓰고, 참여자 줄의 「사무실」로 돌아옵니다. 창이 낮으면 줄여 맞추지 않고 세로로 스크롤합니다. Maker 기록은 조회 전용이고 입력은 늘 Main에게 갑니다. 고르기만 해서는 모델·계정이 바뀌거나 메시지가 다른 대상으로 가지 않습니다. 오피스 탭의 「대화 화면」은 같은 세션의 대화 화면으로 돌아갑니다. 두 탭이 같은 세션을 열어 두면 완료 알림·소리가 탭마다 날 수 있습니다. WebGL을 쓸 수 없거나 장면을 받지 못하면 자리 카드로 보여 주고 다시 시도할 수 있습니다. 캐릭터는 기본적으로 코드로 그리고, 방의 가구는 KayKit·Kenney의 CC0 모델을 오피스를 열 때만 받습니다. 가구를 받지 못하면 코드로 그린 방을 보여 줍니다([`public/office3d/ASSETS.md`](./public/office3d/ASSETS.md)).
@@ -9,9 +9,9 @@ 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.8.3',
12
+ version: '0.9.1',
13
13
  distribution: 'cuelo',
14
- coreVersion: '18.5.1',
14
+ coreVersion: '18.6.0',
15
15
  };
16
16
 
17
17
  // OMP core 18.4.12 `src/sdk.ts`: session-scoped AsyncJobManager for a process
@@ -177,7 +177,7 @@ function readNativePackage(target) {
177
177
  throw new Error(`unexpected native package ${packageJson.name}@${packageJson.version}`);
178
178
  }
179
179
  if (!build || build.distribution !== EXPECTED.distribution || build.coreVersion !== EXPECTED.coreVersion) {
180
- throw new Error('native cueloBuild metadata does not match cuelo / core 18.5.1');
180
+ throw new Error('native cueloBuild metadata does not match cuelo / core 18.6.0');
181
181
  }
182
182
  return packageJson;
183
183
  }
@@ -171,6 +171,19 @@ function controlError(status, code, outcomeUnknown = false) {
171
171
  return Object.assign(new Error(code), { status, code, outcomeUnknown });
172
172
  }
173
173
 
174
+ // 인증 실패 tombstone의 사유를 화면용 코드로 줄인다. core의 원문 사유(provider 응답 조각)는 내보내지 않는다.
175
+ // 자리를 지키는 tombstone은 모두 인증 실패이므로 다시 로그인해야 쓸 수 있다.
176
+ function authError(cause) {
177
+ const text = String(cause ?? '');
178
+ if (/invalid_grant|refresh token (?:expired|not found|invalid)/i.test(text)) {
179
+ return { code: 'refresh_expired', message: '로그인이 만료되었습니다. 다시 로그인하세요.', reloginRequired: true };
180
+ }
181
+ if (/invalidated|revoked|unauthorized|\b401\b/i.test(text)) {
182
+ return { code: 'token_revoked', message: '인증이 취소되었습니다. 다시 로그인하세요.', reloginRequired: true };
183
+ }
184
+ return { code: 'auth_failed', message: '인증에 실패해 이 계정을 쓸 수 없습니다. 다시 로그인하세요.', reloginRequired: true };
185
+ }
186
+
174
187
  // 동일 storage의 reload/cache도 함께 직렬화한다. 외부 CLI의 mutation까지 잠그지는 않는다.
175
188
  function createControlFacade(getControl, invalidate = invalidateUsage) {
176
189
  let tail = Promise.resolve();
@@ -204,6 +217,17 @@ function createControlFacade(getControl, invalidate = invalidateUsage) {
204
217
  await storage.reload();
205
218
  const entries = storage.credentials.snapshot().credentials;
206
219
  const blocks = storage.blocks.list(entries.map(entry => entry.id));
220
+ // 계정 자리(oauthPosition)는 core가 정한다. 인증 실패로 비활성화된 계정도 재로그인 전까지 자기 자리를
221
+ // 지키므로, 그 tombstone을 오류 행으로 함께 낸다. 자리 API가 없는 core에서는 자리·오류 행을 내지 않는다.
222
+ const hasSeats = typeof storage.credentials.oauthSeatIds === 'function';
223
+ const tombstones = hasSeats && typeof storage.credentials.listDisabled === 'function'
224
+ ? await storage.credentials.listDisabled() : [];
225
+ const seats = new Map();
226
+ const seatOf = (provider, id) => {
227
+ if (!seats.has(provider)) seats.set(provider, storage.credentials.oauthSeatIds(provider));
228
+ const position = seats.get(provider).indexOf(id);
229
+ return position >= 0 ? { oauthPosition: position } : {};
230
+ };
207
231
  const result = entries.map(entry => {
208
232
  const providerKey = `${entry.provider}:${entry.credential.type}`;
209
233
  const own = blocks.filter(block => block.credentialId === entry.id);
@@ -216,8 +240,19 @@ function createControlFacade(getControl, invalidate = invalidateUsage) {
216
240
  ...pick(entry.credential, IDENTITY_KEYS),
217
241
  disabled: !!manual,
218
242
  autoBlockedUntilMs: auto.length ? Math.max(...auto.map(block => block.blockedUntilMs)) : null,
243
+ ...(hasSeats && entry.credential.type === 'oauth' ? seatOf(entry.provider, entry.id) : {}),
219
244
  };
220
245
  });
246
+ for (const tombstone of tombstones) {
247
+ if (tombstone.type !== 'oauth') continue;
248
+ const seat = seatOf(tombstone.provider, tombstone.id);
249
+ // 자리가 없는 tombstone은 교체·로그아웃으로 자리를 반납한 행이다. 사용자에게 할 일이 없다.
250
+ if (seat.oauthPosition === undefined) continue;
251
+ result.push({
252
+ credentialId: tombstone.id, provider: tombstone.provider, credentialType: 'oauth',
253
+ ...pick(tombstone, IDENTITY_KEYS), ...seat, authError: authError(tombstone.cause),
254
+ });
255
+ }
221
256
  if (currentEpoch !== epoch) return credentials(true);
222
257
  snapshot = { at: Date.now(), credentials: result };
223
258
  return result;
@@ -283,14 +318,16 @@ function createControlFacade(getControl, invalidate = invalidateUsage) {
283
318
  }
284
319
  if (startEpoch !== epoch) return enrich(raw);
285
320
  const joined = new Set();
321
+ // 인증 실패 행은 사용량 보고서와 결합하지 않는다. 같은 identity의 활성 계정 보고서를 가져가면 안 된다.
322
+ const usable = all.filter(credential => !credential.authError);
286
323
  for (const report of usage.reports) {
287
- const credential = matchCredential(report, all);
324
+ const credential = matchCredential(report, usable);
288
325
  if (!credential) {
289
326
  report.accountRole = 'usage-only';
290
327
  if (RESET_PROVIDERS.includes(report.provider)) report.savedReset = savedReset(undefined, Date.now(), report.provider);
291
328
  continue;
292
329
  }
293
- Object.assign(report, pick(credential, ['credentialId', 'disabled', 'autoBlockedUntilMs']));
330
+ Object.assign(report, pick(credential, ['credentialId', 'disabled', 'autoBlockedUntilMs', 'oauthPosition']));
294
331
  joined.add(credential.credentialId);
295
332
  if (RESET_PROVIDERS.includes(report.provider)) {
296
333
  const credits = creditsByProvider.get(report.provider);
@@ -301,11 +338,21 @@ function createControlFacade(getControl, invalidate = invalidateUsage) {
301
338
  }
302
339
  for (const credential of all) {
303
340
  if (joined.has(credential.credentialId) || !control().storage.usage.providerFor(credential.provider)) continue;
341
+ if (credential.authError) {
342
+ // 수동 OFF·쿨다운 상태와 섞지 않는다. 그 id의 block은 재로그인 뒤 다시 보인다.
343
+ usage.reports.push({
344
+ provider: credential.provider, fetchedAt: 0, limits: [],
345
+ accountRole: 'auth-error',
346
+ metadata: pick(credential, IDENTITY_KEYS),
347
+ ...pick(credential, ['credentialId', 'oauthPosition', 'authError']),
348
+ });
349
+ continue;
350
+ }
304
351
  usage.reports.push({
305
352
  provider: credential.provider, fetchedAt: 0, limits: [],
306
353
  accountRole: 'control-only',
307
354
  metadata: pick(credential, IDENTITY_KEYS),
308
- ...pick(credential, ['credentialId', 'disabled', 'autoBlockedUntilMs']),
355
+ ...pick(credential, ['credentialId', 'disabled', 'autoBlockedUntilMs', 'oauthPosition']),
309
356
  ...(RESET_PROVIDERS.includes(credential.provider) ? { savedReset: savedReset(
310
357
  creditsByProvider.get(credential.provider)?.statuses.find(status => status.credentialId === credential.credentialId),
311
358
  creditsByProvider.get(credential.provider)?.at, credential.provider) } : {}),
@@ -318,9 +365,15 @@ function createControlFacade(getControl, invalidate = invalidateUsage) {
318
365
  delete report.credentialId;
319
366
  delete report.disabled;
320
367
  delete report.autoBlockedUntilMs;
368
+ delete report.oauthPosition;
321
369
  if (RESET_PROVIDERS.includes(report.provider)) report.savedReset = savedReset(undefined, Date.now(), report.provider);
322
370
  }
323
371
  }
372
+ // 화면이 순서를 기억할 안정 키. credential id(없으면 provider 계정 id)로 만들고 email은 쓰지 않는다.
373
+ for (const report of usage.reports) {
374
+ if (Number.isSafeInteger(report.credentialId) && report.credentialId > 0) report.accountKey = `${report.provider}:${report.credentialId}`;
375
+ else if (report.metadata?.accountId) report.accountKey = `${report.provider}:acct:${report.metadata.accountId}`;
376
+ }
324
377
  return usage;
325
378
  }
326
379
  function setDisabled(id, disabled) {
@@ -71,6 +71,8 @@ Main은 확정 delta와 그 증거를 누적 검수하며, 최종 수용은 수
71
71
 
72
72
  Main은 사용자 요구·수용 조건·보존 동작·승인·관측 경로를 먼저 확정한다. 위임 브리프와 첫 조사에서 요구를 대조하는 절차는 `rule://verdict`·`rule://subagent` 및 `harness-policy.json` `briefContextRelay`·`routing.dispatchAssumptionCheck`를 따른다. `task` 발주 시 `TASK_GUARD` 뒤의 공유 메타 `TASK_TITLE`·`TODO_TASKS`도 `rule://task-guard`에 따라 전달한다. Skill은 설치만으로 열지 않고 이번 작업에 필요하거나 사용자가 요청했을 때만 연다. UI 작업은 `rule://frontend`를 따른다. 사용자가 명시 요청하지 않으면 `goal` 도구에 `token_budget`을 임의 설정하지 않는다.
73
73
 
74
+ Main이 활용한 관련 Skill을 Maker에게 넘기고 적용 여부를 확인하는 절차는 `rule://subagent` 「Skill 인계」를 따른다. 사용자가 다시 요청해야 발동하는 절차가 아니다.
75
+
74
76
  `systematic-debugging`·`verification-before-completion`처럼 절차만 담은 Skill은 원인을 모르는 버그, 두 번째 실패, 완료 판정이 모호할 때만 연다. 위치와 수정 방향이 과제에 이미 나온 수정은 기본 검증 절차로 충분하므로 선독하지 않는다.
75
77
 
76
78
  요청 한 번마다 전체 컨텍스트를 다시 싣는다. 서로 의존하지 않는 읽기·검색은 한 턴에 묶고, 수정 전에는 고칠 구간과 그 호출부·테스트를 함께 읽어 한 번에 맞게 고친다. edit이 "본 적 없는 줄"로 거절되면 안내대로 같은 edit을 그대로 다시 보내고 재읽기를 하지 않는다.
@@ -6,7 +6,7 @@ thinking-level: medium
6
6
  tools: [read, bash, edit, write, grep, glob, skim, lsp, eval, generate_image, ast_grep, ast_edit, debug, todo, web_search, checkpoint]
7
7
  ---
8
8
 
9
- <!-- omp-global-config:generated source-hash=4e5719c2a636
9
+ <!-- omp-global-config:generated source-hash=816f54313240
10
10
  이 파일은 patches/build-agents.mjs 가 만든 빌드 산출물이다. 직접 수정하지 마라.
11
11
  고칠 곳: agent/sop/maker.md · agent/sop/_writer.md · agent/sop/_common.md
12
12
  재생성: node patches/build-agents.mjs 검사: node patches/build-agents.mjs --check
@@ -76,6 +76,8 @@ is yours end to end.
76
76
  - Answer every finding that names your change with the fix you made and the raw output of the check
77
77
  that now covers it, keeping the same finding id — no separate messenger or new reporting stage.
78
78
  Never weaken an expectation, relax a fixture, or hide a failure to make validation pass.
79
+ - Follow `rule://subagent` 「Skill 인계」 for relevant skills handed over in the brief:
80
+ required direct reading before implementation, reuse of known locators, and reconsultation when unclear.
79
81
  - 관련 Skill을 먼저 읽고 이번 조치에 적용되는 주의사항만 이름·절/locator·위험 요약으로 추린다.
80
82
  pre-retry advisory를 보충하다가(Common Rules) 검증 약화나 Skill 충돌·적용 불가가 나오면 문제 된
81
83
  조치만 보류하고 기존 blocker/조향 DM으로 원문 오류 locator·Skill locator·제안 조치·보존할 수용
@@ -1,4 +1,4 @@
1
- <!-- source-fingerprint: 94b703423427496b -->
1
+ <!-- source-fingerprint: a3671e216eec0e9 -->
2
2
  # Global Agent Instructions
3
3
 
4
4
  (Model-facing English copy of the Korean source `AGENTS.md`. All user-facing prose stays Korean.)
@@ -74,6 +74,8 @@ Use Main-only `wait` (subagents have none) only at real dependency/synthesis bar
74
74
 
75
75
  Main first fixes user requirements, acceptance criteria, behavior to preserve, approvals, and the observation path. Checking the requirements in the delegation brief and first investigation: `rule://verdict`·`rule://subagent` and `harness-policy.json` `briefContextRelay`·`routing.dispatchAssumptionCheck`. When dispatching `task`, also pass the shared metadata `TASK_TITLE`·`TODO_TASKS` after `TASK_GUARD` per `rule://task-guard`. Open a Skill only when this task needs it or the user asks, not because it is installed. UI work follows `rule://frontend`. Never set `token_budget` on the `goal` tool unless the user explicitly asks.
76
76
 
77
+ Follow `rule://subagent` 「Skill 인계」 to hand the relevant Skills Main used to the Maker and verify their application. This applies without another user reminder.
78
+
77
79
  Open procedure-only Skills such as `systematic-debugging`·`verification-before-completion` only for a bug of unknown cause, a second failure, or an ambiguous completion verdict. When the task already names the location and fix direction, the default verification procedure suffices; do not pre-read them.
78
80
 
79
81
  Every request resends the full context. Batch independent reads/searches in one turn; before editing, read the section to change together with its callers and tests so the edit lands in one pass. If an edit is rejected for touching lines "never displayed", resend the same edit as instructed without re-reading.
@@ -53,6 +53,11 @@ globs: ["Tools/OMP_Global_Config/**", "Tools/CUELO_Setup/**"]
53
53
  목표는 최신판 추종이 아니라 upstream 개선을 가져오면서 기존 해결책과 고유 작업 계약을 보존하고,
54
54
  upstream이 해결한 workaround를 제거해 patch debt를 줄이는 것이다.
55
55
 
56
+ 사용자가 “최신으로 올려줘”라고만 해도 내장 코어의 새 API·상태·데이터 흐름에 맞춘 호출부 이관,
57
+ 기존 패치의 KEEP/ADAPT/RETIRE/BLOCK 판정, 회귀·실행 검증을 요청에 포함한다. 충돌 조정은 별도
58
+ 재지시를 기다리지 않는다. CLI 실행 파일 교체와 CUELO 내장 코어 이식의 완료 증거는 구분한다.
59
+ 이 기본 범위가 배포·삭제·비용·인증 변경의 별도 승인 경계를 낮추지는 않는다.
60
+
56
61
  ### 판단 정본과 upstream 조사
57
62
 
58
63
  현재 설치 버전만으로 판단하지 않는다. 다음 미러와 실제 Known-Good runtime을 먼저 대조한다.