cuelo 0.5.1 → 0.5.3

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 (285) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +10 -10
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +5 -5
  6. package/.next/required-server-files.json +5 -5
  7. package/.next/server/app/_global-error/page.js +3 -3
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/_not-found.html +1 -1
  20. package/.next/server/app/_not-found.rsc +3 -3
  21. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  24. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  27. package/.next/server/app/api/agent/[id]/account/route.js +1 -1
  28. package/.next/server/app/api/agent/[id]/account/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  30. package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  32. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/agent/[id]/route.js +1 -1
  34. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/agent/new/route.js +1 -1
  36. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/agent/running/route.js +1 -1
  38. package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  40. package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  42. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  44. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  46. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/auth/providers/route.js +1 -1
  48. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/cwd/browse/route.js +1 -1
  50. package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/cwd/validate/route.js +1 -1
  52. package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/default-cwd/route.js +1 -1
  54. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/display-settings/route.js +1 -1
  56. package/.next/server/app/api/display-settings/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/document-text/route.js +2 -2
  58. package/.next/server/app/api/document-text/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/experiments/route.js +1 -1
  60. package/.next/server/app/api/experiments/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/file-index/route.js +1 -1
  62. package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/files/[...path]/route.js +1 -1
  64. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/git/diff/route.js +2 -2
  66. package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/git/status/route.js +1 -1
  68. package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/gpt6/handles/route.js +1 -1
  70. package/.next/server/app/api/gpt6/handles/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/gpt6/mcp/route.js +1 -1
  72. package/.next/server/app/api/gpt6/mcp/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/gpt6/reply/route.js +1 -1
  74. package/.next/server/app/api/gpt6/reply/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/gpt6/token/route.js +1 -1
  76. package/.next/server/app/api/gpt6/token/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
  78. package/.next/server/app/api/gpt6/web6-session/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/home/route.js +1 -1
  80. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/live/call/[callId]/route.js +1 -1
  82. package/.next/server/app/api/live/call/[callId]/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/live/events/route.js +2 -2
  84. package/.next/server/app/api/live/events/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/live/offer/route.js +1 -1
  86. package/.next/server/app/api/live/offer/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/live/voices/route.js +1 -1
  88. package/.next/server/app/api/live/voices/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/mcp/route.js +1 -1
  90. package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/model-roles/route.js +1 -1
  92. package/.next/server/app/api/model-roles/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/models/route.js +1 -1
  94. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  96. package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/models-config/discover/route.js +1 -1
  98. package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/models-config/route.js +2 -2
  100. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/models-config/test/route.js +1 -1
  102. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/plugins/route.js +1 -1
  104. package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/project-trust/route.js +1 -1
  106. package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/projects/route.js +1 -1
  108. package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/runs/[runId]/route.js +1 -1
  110. package/.next/server/app/api/runs/[runId]/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/runs/route.js +1 -1
  112. package/.next/server/app/api/runs/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  114. package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  116. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  118. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  120. package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  122. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  124. package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/sessions/route.js +1 -1
  126. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/settings/route.js +1 -1
  128. package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
  130. package/.next/server/app/api/sidecars/[service]/[...path]/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/skills/check/route.js +1 -1
  132. package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/skills/install/route.js +1 -1
  134. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/skills/route.js +2 -2
  136. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/skills/search/route.js +1 -1
  138. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/skills/update/route.js +1 -1
  140. package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/theme/route.js +1 -1
  142. package/.next/server/app/api/theme/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/update-maintenance/route.js +2 -2
  144. package/.next/server/app/api/update-maintenance/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/updates/route.js +1 -1
  146. package/.next/server/app/api/updates/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/web-access/recovery/route.js +1 -1
  148. package/.next/server/app/api/web-access/recovery/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/web-access/route.js +1 -1
  150. package/.next/server/app/api/web-access/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/web6/consults/route.js +1 -1
  152. package/.next/server/app/api/web6/consults/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/route.js +1 -1
  154. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/favicon.ico/route.js +1 -1
  156. package/.next/server/app/index.html +1 -1
  157. package/.next/server/app/index.rsc +5 -5
  158. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  159. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  160. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  161. package/.next/server/app/index.segments/_index.segment.rsc +3 -3
  162. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  163. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  164. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/page.js +4 -4
  166. package/.next/server/app/page_client-reference-manifest.js +1 -1
  167. package/.next/server/app/recover/page.js +2 -2
  168. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  169. package/.next/server/app/recover.html +1 -1
  170. package/.next/server/app/recover.rsc +4 -4
  171. package/.next/server/app/recover.segments/_full.segment.rsc +4 -4
  172. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  173. package/.next/server/app/recover.segments/_index.segment.rsc +3 -3
  174. package/.next/server/app/recover.segments/_tree.segment.rsc +2 -2
  175. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +2 -2
  176. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  177. package/.next/server/app-paths-manifest.json +10 -10
  178. package/.next/server/chunks/319.js +3 -3
  179. package/.next/server/chunks/3379.js +1 -1
  180. package/.next/server/chunks/7245.js +1 -1
  181. package/.next/server/chunks/9280.js +1 -1
  182. package/.next/server/middleware-build-manifest.js +1 -1
  183. package/.next/server/middleware.js +3 -3
  184. package/.next/server/pages/404.html +1 -1
  185. package/.next/server/pages/500.html +1 -1
  186. package/.next/server/server-reference-manifest.json +1 -1
  187. package/.next/static/chunks/app/_not-found/page-9e5295df095e2e41.js +1 -0
  188. package/.next/static/chunks/app/layout-6068ca5fef089e8f.js +1 -0
  189. package/.next/static/chunks/app/{page-5cde6189aa974555.js → page-d0f53d2b019e567d.js} +3 -3
  190. package/.next/static/chunks/app/recover/{page-b21a217e972ce75f.js → page-c0c40b3c215078a4.js} +1 -1
  191. package/.next/static/chunks/{main-app-0af2539744a1d9c8.js → main-app-fbc4aa3c15d48613.js} +1 -1
  192. package/.next/static/chunks/next/dist/client/components/builtin/global-error-50782c8c9c06c8b5.js +1 -0
  193. package/.next/static/css/41958fa4965167ad.css +1 -0
  194. package/.next/trace +104 -7
  195. package/.next/trace-build +1 -1
  196. package/.next/types/app/api/agent/[id]/account/route.ts +1 -1
  197. package/.next/types/app/api/agent/[id]/bash-output/route.ts +1 -1
  198. package/.next/types/app/api/agent/[id]/events/route.ts +1 -1
  199. package/.next/types/app/api/agent/[id]/route.ts +1 -1
  200. package/.next/types/app/api/agent/new/route.ts +1 -1
  201. package/.next/types/app/api/agent/running/route.ts +1 -1
  202. package/.next/types/app/api/auth/all-providers/route.ts +1 -1
  203. package/.next/types/app/api/auth/api-key/[provider]/route.ts +1 -1
  204. package/.next/types/app/api/auth/login/[provider]/route.ts +1 -1
  205. package/.next/types/app/api/auth/logout/[provider]/route.ts +1 -1
  206. package/.next/types/app/api/auth/providers/route.ts +1 -1
  207. package/.next/types/app/api/cwd/browse/route.ts +1 -1
  208. package/.next/types/app/api/cwd/validate/route.ts +1 -1
  209. package/.next/types/app/api/default-cwd/route.ts +1 -1
  210. package/.next/types/app/api/display-settings/route.ts +1 -1
  211. package/.next/types/app/api/document-text/route.ts +1 -1
  212. package/.next/types/app/api/experiments/route.ts +1 -1
  213. package/.next/types/app/api/file-index/route.ts +1 -1
  214. package/.next/types/app/api/files/[...path]/route.ts +1 -1
  215. package/.next/types/app/api/git/diff/route.ts +1 -1
  216. package/.next/types/app/api/git/status/route.ts +1 -1
  217. package/.next/types/app/api/gpt6/handles/route.ts +1 -1
  218. package/.next/types/app/api/gpt6/mcp/route.ts +1 -1
  219. package/.next/types/app/api/gpt6/reply/route.ts +1 -1
  220. package/.next/types/app/api/gpt6/token/route.ts +1 -1
  221. package/.next/types/app/api/gpt6/web6-session/route.ts +1 -1
  222. package/.next/types/app/api/home/route.ts +1 -1
  223. package/.next/types/app/api/live/call/[callId]/route.ts +1 -1
  224. package/.next/types/app/api/live/events/route.ts +1 -1
  225. package/.next/types/app/api/live/offer/route.ts +1 -1
  226. package/.next/types/app/api/live/voices/route.ts +1 -1
  227. package/.next/types/app/api/mcp/route.ts +1 -1
  228. package/.next/types/app/api/model-roles/route.ts +1 -1
  229. package/.next/types/app/api/models/route.ts +1 -1
  230. package/.next/types/app/api/models-config/catalog/route.ts +1 -1
  231. package/.next/types/app/api/models-config/discover/route.ts +1 -1
  232. package/.next/types/app/api/models-config/route.ts +1 -1
  233. package/.next/types/app/api/models-config/test/route.ts +1 -1
  234. package/.next/types/app/api/plugins/route.ts +1 -1
  235. package/.next/types/app/api/project-trust/route.ts +1 -1
  236. package/.next/types/app/api/projects/route.ts +1 -1
  237. package/.next/types/app/api/runs/[runId]/route.ts +1 -1
  238. package/.next/types/app/api/runs/route.ts +1 -1
  239. package/.next/types/app/api/sessions/[id]/auto-name/route.ts +1 -1
  240. package/.next/types/app/api/sessions/[id]/context/route.ts +1 -1
  241. package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +1 -1
  242. package/.next/types/app/api/sessions/[id]/export/route.ts +1 -1
  243. package/.next/types/app/api/sessions/[id]/route.ts +1 -1
  244. package/.next/types/app/api/sessions/[id]/state/route.ts +1 -1
  245. package/.next/types/app/api/sessions/route.ts +1 -1
  246. package/.next/types/app/api/settings/route.ts +1 -1
  247. package/.next/types/app/api/sidecars/[service]/[...path]/route.ts +1 -1
  248. package/.next/types/app/api/skills/check/route.ts +1 -1
  249. package/.next/types/app/api/skills/install/route.ts +1 -1
  250. package/.next/types/app/api/skills/route.ts +1 -1
  251. package/.next/types/app/api/skills/search/route.ts +1 -1
  252. package/.next/types/app/api/skills/update/route.ts +1 -1
  253. package/.next/types/app/api/theme/route.ts +1 -1
  254. package/.next/types/app/api/update-maintenance/route.ts +1 -1
  255. package/.next/types/app/api/updates/route.ts +1 -1
  256. package/.next/types/app/api/web-access/recovery/route.ts +1 -1
  257. package/.next/types/app/api/web-access/route.ts +1 -1
  258. package/.next/types/app/api/web6/consults/route.ts +1 -1
  259. package/.next/types/app/api/worktrees/route.ts +1 -1
  260. package/.next/types/app/layout.ts +1 -1
  261. package/.next/types/app/page.ts +1 -1
  262. package/.next/types/app/recover/page.ts +1 -1
  263. package/README.md +3 -3
  264. package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
  265. package/Tools/OMP_Global_Config/agent/AGENTS.md +2 -2
  266. package/Tools/OMP_Global_Config/agent/agents/maker.md +11 -8
  267. package/Tools/OMP_Global_Config/agent/extensions/external-advice-check.ts +131 -0
  268. package/Tools/OMP_Global_Config/agent/extensions/jev-runtime.ts +141 -10
  269. package/Tools/OMP_Global_Config/agent/extensions/lib/maker-routing.ts +22 -2
  270. package/Tools/OMP_Global_Config/agent/extensions/lib/routing-ledger.ts +2 -0
  271. package/Tools/OMP_Global_Config/agent/extensions/turn-end-guard.ts +180 -18
  272. package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +3 -3
  273. package/Tools/OMP_Global_Config/agent/rules/harness-policy.json +28 -3
  274. package/Tools/OMP_Global_Config/agent/rules/subagent.md +15 -0
  275. package/Tools/OMP_Global_Config/agent/rules/verdict.md +8 -3
  276. package/Tools/OMP_Global_Config/agent/sop/_common.md +10 -7
  277. package/Tools/OMP_Global_Config/agent/tools/git-finalizer/index.ts +101 -2
  278. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +173 -0
  279. package/package.json +3 -3
  280. package/.next/static/chunks/app/_not-found/page-d47816c8266ad10a.js +0 -1
  281. package/.next/static/chunks/app/layout-85736d5559027813.js +0 -1
  282. package/.next/static/chunks/next/dist/client/components/builtin/global-error-5bf20286772920a7.js +0 -1
  283. package/.next/static/css/e55ae9b4602a1ee6.css +0 -1
  284. /package/.next/static/{RnMmpk_boPQwlwbelVcs- → -47RqT-7phbUEMcVgR7Jy}/_buildManifest.js +0 -0
  285. /package/.next/static/{RnMmpk_boPQwlwbelVcs- → -47RqT-7phbUEMcVgR7Jy}/_ssgManifest.js +0 -0
@@ -4627,6 +4627,102 @@ import { getActiveRules } from "../capability/rule";`,
4627
4627
  anchor: "\t\t\t\ttype: \"tool_call\",\n\t\t\t\ttoolName: ctx.tool.name,\n\t\t\t\ttoolCallId: ctx.toolCall.id,\n",
4628
4628
  patched: "\t\t\t\ttype: \"tool_call\",\n\t\t\t\ttoolName: ctx.tool.name,\n\t\t\t\ttoolCallId: ctx.toolCall.id,\n\t\t\t\tassistantMessage: ctx.assistantMessage, // HANSE: steering gate\n",
4629
4629
  },
4630
+ // 2026-09-26: Opus 5.5는 도구 앞 사용자용 문장을 서명에 `narration`이 든 thinking 블록으로 보낸다.
4631
+ // omitThinking(`display: "omitted"`)은 그 문장까지 비워서, 세션 79개 중 25개 메시지의 답이 화면·세션 파일에서
4632
+ // 사라졌다(`T[thinking] T[narration] toolCall`). 요청은 summarized로 받고, omitThinking이면 thinking 내용은 계속
4633
+ // 숨기되 narration만 본문 text 블록으로 보인다. 다시 보낼 때는 서명된 thinking을 원래대로 보내고 화면용 사본은 뺀다.
4634
+ {
4635
+ file: "../pi-ai/src/providers/anthropic.ts",
4636
+ marker: "function isHanseNarrationSignature(",
4637
+ anchor: "function unwrapAnthropicThinkingEnvelope(text: string): string | undefined {\n",
4638
+ patched: [
4639
+ "/** HANSE: 도구 앞 사용자용 문장을 담은 thinking 블록인지 서명 안의 블록 종류 이름으로 본다(2026-09-26 실측). */",
4640
+ "function isHanseNarrationSignature(signature: string | undefined): boolean {",
4641
+ "\tif (!signature) return false;",
4642
+ "\ttry {",
4643
+ "\t\treturn Buffer.from(signature, \"base64\").toString(\"latin1\").includes(\"narration\");",
4644
+ "\t} catch {",
4645
+ "\t\treturn false;",
4646
+ "\t}",
4647
+ "}",
4648
+ "",
4649
+ "function unwrapAnthropicThinkingEnvelope(text: string): string | undefined {",
4650
+ "",
4651
+ ].join("\n"),
4652
+ },
4653
+ {
4654
+ file: "../pi-ai/src/providers/anthropic.ts",
4655
+ marker: "const hanseHideThinking = options?.thinkingDisplay === \"omitted\";",
4656
+ anchor: "\t\t\tconst finalizeStreamBlock = (block: Block, contentIndex: number): void => {\n",
4657
+ patched: [
4658
+ "\t\t\t// HANSE: omitThinking은 thinking 내용을 숨기되 도구 앞 narration 문장은 본문으로 보인다.",
4659
+ "\t\t\tconst hanseHideThinking = options?.thinkingDisplay === \"omitted\";",
4660
+ "\t\t\tconst finalizeStreamBlock = (block: Block, contentIndex: number): void => {",
4661
+ "",
4662
+ ].join("\n"),
4663
+ },
4664
+ {
4665
+ file: "../pi-ai/src/providers/anthropic.ts",
4666
+ marker: "hanseBlock.hanseHiddenThinking = (hanseBlock.hanseHiddenThinking ?? \"\") + event.delta.thinking;",
4667
+ anchor: "\t\t\t\t\t\t\t\tstreamedReplayUnsafeContent = true;\n\t\t\t\t\t\t\t\tblock.thinking += event.delta.thinking;\n",
4668
+ patched: [
4669
+ "\t\t\t\t\t\t\t\tstreamedReplayUnsafeContent = true;",
4670
+ "\t\t\t\t\t\t\t\tif (hanseHideThinking) {",
4671
+ "\t\t\t\t\t\t\t\t\t// narration인지는 블록 끝의 서명으로만 알 수 있어, 그때까지 화면에 내보내지 않고 모은다.",
4672
+ "\t\t\t\t\t\t\t\t\tconst hanseBlock = block as Block & { hanseHiddenThinking?: string };",
4673
+ "\t\t\t\t\t\t\t\t\thanseBlock.hanseHiddenThinking = (hanseBlock.hanseHiddenThinking ?? \"\") + event.delta.thinking;",
4674
+ "\t\t\t\t\t\t\t\t\tcontinue;",
4675
+ "\t\t\t\t\t\t\t\t}",
4676
+ "\t\t\t\t\t\t\t\tblock.thinking += event.delta.thinking;",
4677
+ "",
4678
+ ].join("\n"),
4679
+ },
4680
+ {
4681
+ file: "../pi-ai/src/providers/anthropic.ts",
4682
+ marker: "hanseNarration: true, [kStreamingBlockIndex]: -1",
4683
+ anchor: "\t\t\t\t\tstream.push({ type: \"thinking_end\", contentIndex, content: block.thinking, partial: output });\n",
4684
+ patched: [
4685
+ "\t\t\t\t\tstream.push({ type: \"thinking_end\", contentIndex, content: block.thinking, partial: output });",
4686
+ "\t\t\t\t\tif (hanseHideThinking) {",
4687
+ "\t\t\t\t\t\tconst hanseBlock = block as Block & { hanseHiddenThinking?: string };",
4688
+ "\t\t\t\t\t\tconst hanseHidden = (hanseBlock.hanseHiddenThinking ?? \"\").trim();",
4689
+ "\t\t\t\t\t\tdelete hanseBlock.hanseHiddenThinking;",
4690
+ "\t\t\t\t\t\tif (hanseHidden && isHanseNarrationSignature(block.thinkingSignature)) {",
4691
+ "\t\t\t\t\t\t\tconst narration = { type: \"text\", text: hanseHidden, hanseNarration: true, [kStreamingBlockIndex]: -1 } as unknown as Block;",
4692
+ "\t\t\t\t\t\t\toutput.content.push(narration as AssistantMessage[\"content\"][number]);",
4693
+ "\t\t\t\t\t\t\tconst narrationIndex = output.content.length - 1;",
4694
+ "\t\t\t\t\t\t\tstream.push({ type: \"text_start\", contentIndex: narrationIndex, partial: output });",
4695
+ "\t\t\t\t\t\t\tstream.push({ type: \"text_delta\", contentIndex: narrationIndex, delta: hanseHidden, partial: output });",
4696
+ "\t\t\t\t\t\t\tstream.push({ type: \"text_end\", contentIndex: narrationIndex, content: hanseHidden, partial: output });",
4697
+ "\t\t\t\t\t\t}",
4698
+ "\t\t\t\t\t}",
4699
+ "",
4700
+ ].join("\n"),
4701
+ },
4702
+ {
4703
+ file: "../pi-ai/src/providers/anthropic.ts",
4704
+ marker: "adaptive.display = \"summarized\"; // HANSE: narration",
4705
+ anchor: "adaptive.display = thinkingOptions.thinkingDisplay ?? \"summarized\";",
4706
+ patched: "adaptive.display = \"summarized\"; // HANSE: narration은 omitted에서 비므로 숨김은 스트림에서 한다",
4707
+ },
4708
+ {
4709
+ file: "../pi-ai/src/providers/anthropic.ts",
4710
+ marker: "display: \"summarized\", // HANSE: narration",
4711
+ anchor: "display: thinkingOptions.thinkingDisplay ?? \"summarized\",",
4712
+ patched: "display: \"summarized\", // HANSE: narration은 omitted에서 비므로 숨김은 스트림에서 한다",
4713
+ },
4714
+ {
4715
+ file: "../pi-ai/src/providers/anthropic.ts",
4716
+ marker: "\"hanseNarration\" in block && block.hanseNarration === true && hasSignedThinking",
4717
+ anchor: "\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tif (block.text.trim().length === 0) continue;\n",
4718
+ patched: [
4719
+ "\t\t\t\tif (block.type === \"text\") {",
4720
+ "\t\t\t\t\tif (block.text.trim().length === 0) continue;",
4721
+ "\t\t\t\t\t// HANSE: narration 문장은 서명된 thinking 안에 이미 있다. 그 thinking을 보낼 때는 화면용 사본을 뺀다.",
4722
+ "\t\t\t\t\tif (\"hanseNarration\" in block && block.hanseNarration === true && hasSignedThinking && !opts?.dropAllThinking) continue;",
4723
+ "",
4724
+ ].join("\n"),
4725
+ },
4630
4726
  {
4631
4727
  // 2026-09-25: CUELO는 Next 서버 프로세스 안에서 에이전트를 돌린다. `next start`가 그 프로세스에 넣은
4632
4728
  // NODE_ENV=production·PORT·NEXT_* 가 bash 도구 자식 셸에 그대로 새어, 셸에서 띄운 `next dev`가
@@ -4721,6 +4817,83 @@ export function hostNextServerEnvUnsets(
4721
4817
  anchor: "\t\tcontent: [{ type: \"text\", text: errorMessage ? `${message}: ${errorMessage}` : `${message}.` }],\n",
4722
4818
  patched: "\t\t// HANSE: skipped reason stands alone\n\t\tcontent: [{ type: \"text\", text: reason === \"skipped\" && errorMessage ? errorMessage : errorMessage ? `${message}: ${errorMessage}` : `${message}.` }],\n",
4723
4819
  },
4820
+ {
4821
+ // 2026-09-25·27 실측: edit 거부 안내(seen-line guard)는 native 가 만든 영어 문장이라, Main 이 바로 다음
4822
+ // 진행 문장을 영어로 이어 썼다. 문구는 pi-natives 바이너리 안에 있어 직접 못 고치지만 모델에는 이 파일의
4823
+ // 오류 반환을 거쳐 간다. 알려진 문장 틀만 한국어로 바꾸고, 틀이 다르면 원문을 그대로 둔다.
4824
+ file: "src/edit/index.ts",
4825
+ marker: "// HANSE: localized seen-line rejection",
4826
+ anchor: "function operationFromNative(op: string): Operation | undefined {\n",
4827
+ patched: `// HANSE: localized seen-line rejection
4828
+ const SEEN_LINE_HEAD =
4829
+ /^This edit anchors to lines (.+?) of (.+?) that (\\[[^\\]\\n]+\\]) never displayed \\(it showed a partial range, a search hit, or a folded summary\\)\\. (?:Actual file content at those lines|Preview of the actual file content at the first (\\d+) unseen line\\(s\\)):$/gm;
4830
+ const SEEN_LINE_TAIL =
4831
+ /^Verify the content matches what you intend to touch, then re-issue the edit with the same \\[path#tag\\] header — a straight retry now succeeds without a re-read\\. If the content does NOT match, fix your line numbers\\.$/gm;
4832
+ export function localizeSeenLineRejection(text: string): string {
4833
+ return text
4834
+ .replace(
4835
+ SEEN_LINE_HEAD,
4836
+ (_match, lines: string, file: string, tag: string, preview: string | undefined) =>
4837
+ "이 edit는 " + file + "의 " + lines + "번 줄을 기준으로 했지만, " + tag +
4838
+ " 스냅샷은 그 줄을 온전히 보여 준 적이 없다(부분 범위·검색 결과·접힌 요약만 보였다). " +
4839
+ (preview ? "보지 않은 줄 중 앞쪽 " + preview + "줄의 실제 내용:" : "그 줄의 실제 내용:"),
4840
+ )
4841
+ .replace(
4842
+ SEEN_LINE_TAIL,
4843
+ "건드리려던 내용과 맞는지 확인한 뒤 같은 [path#tag] 헤더로 edit를 다시 보낸다. 다시 읽지 않고 그대로 재시도해도 이제 성공한다. 내용이 다르면 줄 번호를 고친다.",
4844
+ );
4845
+ }
4846
+
4847
+ function operationFromNative(op: string): Operation | undefined {
4848
+ `,
4849
+ },
4850
+ {
4851
+ file: "src/edit/index.ts",
4852
+ marker: "text: localizeSeenLineRejection(outcome.text) }], isError: true };",
4853
+ anchor: "\t\t\treturn { content: [{ type: \"text\", text: outcome.text }], isError: true };\n",
4854
+ patched: "\t\t\treturn { content: [{ type: \"text\", text: localizeSeenLineRejection(outcome.text) }], isError: true };\n",
4855
+ },
4856
+ {
4857
+ // 2026-09-27 자가학습 점검: Maker(taskDepth>0) 세션은 부모 state 의 alias 로 만들어지면서
4858
+ // hasRecalledForFirstTurn=true 로 시작해, 자기 작업 brief 로는 한 번도 회상하지 않았다(작업 직전
4859
+ // 교훈 적용 연결이 끊김). 첫 턴 회상 경로(beforeAgentStartPrompt)는 child 자기 state 를 쓰고, alias 는
4860
+ // 부모와 같은 scoped 저장소를 공유하므로 이 값만 풀면 작업 brief 로 한 번 회상한다. 쓰기(retain)는
4861
+ // 기존대로 alias 에서 막힌다.
4862
+ file: "src/mnemopi/backend.ts",
4863
+ marker: "// HANSE: child recalls its own task",
4864
+ anchor: "\t\t\t\t\taliasOf: parent,\n\t\t\t\t\thasRecalledForFirstTurn: true,\n",
4865
+ patched: "\t\t\t\t\taliasOf: parent,\n\t\t\t\t\t// HANSE: child recalls its own task\n\t\t\t\t\thasRecalledForFirstTurn: false,\n",
4866
+ },
4867
+ {
4868
+ // 위 항목의 짝. child 는 부모의 첫 턴 회상(부모 첫 요청 기준)이 아니라 자기 작업 회상만 싣는다.
4869
+ // 부모 snippet 을 계속 붙이면 child 첫 요청에 서로 다른 <memories> 두 벌이 실린다.
4870
+ file: "src/mnemopi/backend.ts",
4871
+ marker: "const recallSnippet = state?.aliasOf ? state.lastRecallSnippet : primary?.lastRecallSnippet;",
4872
+ anchor: "\t\tif (primary?.lastRecallSnippet) parts.push(primary.lastRecallSnippet);\n",
4873
+ patched: "\t\tconst recallSnippet = state?.aliasOf ? state.lastRecallSnippet : primary?.lastRecallSnippet;\n\t\tif (recallSnippet) parts.push(recallSnippet);\n",
4874
+ },
4875
+ {
4876
+ // 주입되는 <memories> 줄에 기억 id 를 싣는다. recall 도구 결과에는 id 가 있지만 자동 주입 블록에는
4877
+ // 없어서, 작업에 전달된 교훈을 routing_verdict appliedLessons 로 가리킬 수 없었다.
4878
+ file: "src/mnemopi/state.ts",
4879
+ marker: "// HANSE: recall line carries memory id",
4880
+ anchor: "\t\treturn `- ${content}${source}${date}`;\n",
4881
+ patched: "\t\t// HANSE: recall line carries memory id\n\t\tconst memoryId = result.id ? ` (id: ${result.id})` : \"\";\n\t\treturn `- ${content}${source}${date}${memoryId}`;\n",
4882
+ },
4883
+ {
4884
+ // learn 은 rememberScoped 가 돌려준 기억 id 를 버리고 "Lesson stored." 만 알렸다. 교훈을 뒤에서
4885
+ // 가리킬 식별자가 없으면 적용·결과를 연결할 수 없다. mnemopi 경로에서만 id 를 싣는다.
4886
+ file: "src/tools/learn.ts",
4887
+ marker: "// HANSE: learn reports memory id",
4888
+ anchor: "\t\t\ttry {\n\t\t\t\tstate.rememberScoped(params.memory, {\n",
4889
+ patched: "\t\t\ttry {\n\t\t\t\t// HANSE: learn reports memory id\n\t\t\t\tconst memoryId = state.rememberScoped(params.memory, {\n",
4890
+ },
4891
+ {
4892
+ file: "src/tools/learn.ts",
4893
+ marker: "memoryMessage = `Lesson stored (id: ${memoryId})`;",
4894
+ anchor: "\t\t\t\t\tmemoryType: \"fact\",\n\t\t\t\t});\n\t\t\t} catch (error) {\n",
4895
+ patched: "\t\t\t\t\tmemoryType: \"fact\",\n\t\t\t\t});\n\t\t\t\tif (memoryId) memoryMessage = `Lesson stored (id: ${memoryId})`;\n\t\t\t} catch (error) {\n",
4896
+ },
4724
4897
  {
4725
4898
  // 2026-09-26 실측: `learn`/`retain` 은 `extract: true` 로 저장돼 원문 기억 1건에서 문장 단위 fact 가
4726
4899
  // 파생된다(facts.source_msg_id = 원문 working id). fact 회수 결과에는 그 연결이 빠져 있어서, 세션 첫
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cuelo",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "description": "CUELO — open-source AI coding agent workspace and harness for omp (oh-my-pi)",
5
5
  "homepage": "https://github.com/gim47656-ship-it/CUELO#readme",
6
6
  "repository": {
@@ -82,8 +82,8 @@
82
82
  "start:lan": "bun bin/cuelo.js --no-open -H 0.0.0.0 -p 30141",
83
83
  "lint": "eslint .",
84
84
  "typecheck": "tsc --noEmit",
85
- "test": "bun test ./app ./components ./hooks ./lib ./public ./bin",
86
- "test:coverage": "bun test --coverage ./app ./components ./hooks ./lib ./public ./bin"
85
+ "test": "bun test ./app ./components ./hooks ./lib ./public ./bin ./install.test.mjs",
86
+ "test:coverage": "bun test --coverage ./app ./components ./hooks ./lib ./public ./bin ./install.test.mjs"
87
87
  },
88
88
  "dependencies": {
89
89
  "@oh-my-pi/pi-agent-core": "18.3.2",
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9492],{1129:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(9541)}])},9541:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(95155),n=l(35949),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},35949:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(95155),n=l(37356);function o({status:e,message:t}){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:`${e}: ${t}`}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:e}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:t})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},37356:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=1129)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{57788:(e,r,t)=>{"use strict";t.d(r,{PwaRegistration:()=>o});var n=t(12115);function o(){return(0,n.useEffect)(()=>{if(!("serviceWorker"in navigator))return;let e=()=>{let e=`/sw.js?v=${encodeURIComponent("0.5.1")}`;navigator.serviceWorker.register(e,{scope:"/",updateViaCache:"none"}).catch(e=>{console.error("Failed to register the CUELO service worker:",e)})};return"complete"===document.readyState?void e():(window.addEventListener("load",e,{once:!0}),()=>window.removeEventListener("load",e))},[]),null}},66872:()=>{},84559:()=>{},90275:(e,r,t)=>{Promise.resolve().then(t.bind(t,57788)),Promise.resolve().then(t.t.bind(t,84559,23)),Promise.resolve().then(t.t.bind(t,66872,23))}},e=>{e.O(0,[5846,7513,8441,3794,7358],()=>e(e.s=90275)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9337],{16537:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,27123,23))}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=16537)),_N_E=e.O()}]);