cuelo 0.10.19 → 0.10.21

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 (358) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +3 -4
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +2 -2
  6. package/.next/required-server-files.json +2 -2
  7. package/.next/routes-manifest.json +0 -6
  8. package/.next/server/app/_global-error/page.js +2 -2
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  25. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/api/agent/[id]/account/route.js +1 -1
  29. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  30. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  31. package/.next/server/app/api/agent/[id]/route.js +1 -1
  32. package/.next/server/app/api/agent/new/route.js +1 -1
  33. package/.next/server/app/api/agent/running/route.js +1 -1
  34. package/.next/server/app/api/attachment-settings/route.js +1 -1
  35. package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -2
  36. package/.next/server/app/api/attachments/draft/route.js +1 -1
  37. package/.next/server/app/api/attachments/route.js +2 -2
  38. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  39. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  40. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  41. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  42. package/.next/server/app/api/auth/providers/route.js +1 -1
  43. package/.next/server/app/api/cwd/browse/route.js +1 -1
  44. package/.next/server/app/api/cwd/validate/route.js +1 -1
  45. package/.next/server/app/api/default-cwd/route.js +1 -1
  46. package/.next/server/app/api/display-settings/route.js +1 -1
  47. package/.next/server/app/api/document-text/route.js +1 -1
  48. package/.next/server/app/api/experiments/route.js +1 -1
  49. package/.next/server/app/api/file-index/route.js +1 -1
  50. package/.next/server/app/api/files/[...path]/route.js +1 -1
  51. package/.next/server/app/api/git/diff/route.js +2 -2
  52. package/.next/server/app/api/git/status/route.js +1 -1
  53. package/.next/server/app/api/github/projects/route.js +1 -1
  54. package/.next/server/app/api/gpt6/handles/route.js +1 -1
  55. package/.next/server/app/api/gpt6/reply/route.js +1 -1
  56. package/.next/server/app/api/gpt6/token/route.js +1 -1
  57. package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
  58. package/.next/server/app/api/home/route.js +1 -1
  59. package/.next/server/app/api/live/call/[callId]/route.js +3 -3
  60. package/.next/server/app/api/live/call/[callId]/route.js.nft.json +1 -1
  61. package/.next/server/app/api/live/events/route.js +4 -4
  62. package/.next/server/app/api/live/events/route.js.nft.json +1 -1
  63. package/.next/server/app/api/live/interpret/route.js +3 -3
  64. package/.next/server/app/api/live/interpret/route.js.nft.json +1 -1
  65. package/.next/server/app/api/live/offer/route.js +1 -1
  66. package/.next/server/app/api/live/offer/route.js.nft.json +1 -1
  67. package/.next/server/app/api/live/voices/route.js +1 -1
  68. package/.next/server/app/api/live/voices/route.js.nft.json +1 -1
  69. package/.next/server/app/api/mcp/route.js +2 -2
  70. package/.next/server/app/api/model-roles/route.js +1 -1
  71. package/.next/server/app/api/models/route.js +1 -1
  72. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  73. package/.next/server/app/api/models-config/discover/route.js +1 -1
  74. package/.next/server/app/api/models-config/route.js +3 -3
  75. package/.next/server/app/api/models-config/test/route.js +1 -1
  76. package/.next/server/app/api/office-avatars/[id]/route.js +1 -1
  77. package/.next/server/app/api/office-avatars/route.js +1 -1
  78. package/.next/server/app/api/plugins/route.js +1 -1
  79. package/.next/server/app/api/project-docs/route.js +1 -1
  80. package/.next/server/app/api/project-trust/route.js +1 -1
  81. package/.next/server/app/api/projects/route.js +1 -1
  82. package/.next/server/app/api/runs/[runId]/route.js +1 -1
  83. package/.next/server/app/api/runs/route.js +1 -1
  84. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  85. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  86. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  87. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  88. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  89. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  90. package/.next/server/app/api/sessions/route.js +1 -1
  91. package/.next/server/app/api/sessions/search/route.js +1 -1
  92. package/.next/server/app/api/settings/route.js +1 -1
  93. package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
  94. package/.next/server/app/api/skills/check/route.js +1 -1
  95. package/.next/server/app/api/skills/install/route.js +2 -2
  96. package/.next/server/app/api/skills/route.js +1 -1
  97. package/.next/server/app/api/skills/search/route.js +1 -1
  98. package/.next/server/app/api/skills/update/route.js +1 -1
  99. package/.next/server/app/api/subagents/eta/route.js +1 -1
  100. package/.next/server/app/api/theme/route.js +1 -1
  101. package/.next/server/app/api/tool-image/route.js +1 -1
  102. package/.next/server/app/api/update-maintenance/route.js +3 -3
  103. package/.next/server/app/api/updates/route.js +1 -1
  104. package/.next/server/app/api/web-access/recovery/route.js +1 -1
  105. package/.next/server/app/api/web-access/route.js +1 -1
  106. package/.next/server/app/api/web6/consults/route.js +1 -1
  107. package/.next/server/app/api/worktrees/route.js +1 -1
  108. package/.next/server/app/favicon.ico/route.js +1 -1
  109. package/.next/server/app/index.html +1 -1
  110. package/.next/server/app/index.rsc +5 -5
  111. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  112. package/.next/server/app/index.segments/_full.segment.rsc +5 -5
  113. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  114. package/.next/server/app/index.segments/_index.segment.rsc +3 -3
  115. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  116. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  117. package/.next/server/app/office/page.js +2 -2
  118. package/.next/server/app/office/page_client-reference-manifest.js +1 -1
  119. package/.next/server/app/office-preview/page.js +2 -2
  120. package/.next/server/app/office-preview/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/office-preview.html +1 -1
  122. package/.next/server/app/office-preview.rsc +3 -3
  123. package/.next/server/app/office-preview.segments/_full.segment.rsc +3 -3
  124. package/.next/server/app/office-preview.segments/_head.segment.rsc +1 -1
  125. package/.next/server/app/office-preview.segments/_index.segment.rsc +3 -3
  126. package/.next/server/app/office-preview.segments/_tree.segment.rsc +2 -2
  127. package/.next/server/app/office-preview.segments/office-preview/__PAGE__.segment.rsc +1 -1
  128. package/.next/server/app/office-preview.segments/office-preview.segment.rsc +1 -1
  129. package/.next/server/app/office.html +1 -1
  130. package/.next/server/app/office.rsc +5 -5
  131. package/.next/server/app/office.segments/_full.segment.rsc +5 -5
  132. package/.next/server/app/office.segments/_head.segment.rsc +1 -1
  133. package/.next/server/app/office.segments/_index.segment.rsc +3 -3
  134. package/.next/server/app/office.segments/_tree.segment.rsc +2 -2
  135. package/.next/server/app/office.segments/office/__PAGE__.segment.rsc +3 -3
  136. package/.next/server/app/office.segments/office.segment.rsc +1 -1
  137. package/.next/server/app/page.js +2 -2
  138. package/.next/server/app/page_client-reference-manifest.js +1 -1
  139. package/.next/server/app/recover/page.js +2 -2
  140. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  141. package/.next/server/app/recover.html +1 -1
  142. package/.next/server/app/recover.rsc +3 -3
  143. package/.next/server/app/recover.segments/_full.segment.rsc +3 -3
  144. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  145. package/.next/server/app/recover.segments/_index.segment.rsc +3 -3
  146. package/.next/server/app/recover.segments/_tree.segment.rsc +2 -2
  147. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
  148. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  149. package/.next/server/app-paths-manifest.json +3 -4
  150. package/.next/server/chunks/1008.js +5 -5
  151. package/.next/server/chunks/5489.js +4 -4
  152. package/.next/server/chunks/5582.js +1 -1
  153. package/.next/server/chunks/6429.js +5 -5
  154. package/.next/server/chunks/6775.js +7 -0
  155. package/.next/server/chunks/7362.js +1 -1
  156. package/.next/server/middleware-build-manifest.js +1 -1
  157. package/.next/server/pages/404.html +1 -1
  158. package/.next/server/pages/500.html +1 -1
  159. package/.next/server/server-reference-manifest.json +1 -1
  160. package/.next/static/IKi2VjUzAnD5AUcDn7QNi/_buildManifest.js +1 -0
  161. package/.next/static/chunks/6110-7a2311ab143b31e2.js +1 -0
  162. package/.next/static/chunks/{9575-fd6b2862fa09bf5a.js → 9575-032510d25828764f.js} +4 -4
  163. package/.next/static/chunks/app/_global-error/{page-95aaaafc49522a6b.js → page-571d58ede1391fc8.js} +1 -1
  164. package/.next/static/chunks/app/api/agent/[id]/account/{route-95aaaafc49522a6b.js → route-571d58ede1391fc8.js} +1 -1
  165. package/.next/static/chunks/app/api/agent/[id]/bash-output/{route-95aaaafc49522a6b.js → route-571d58ede1391fc8.js} +1 -1
  166. package/.next/static/chunks/app/api/agent/[id]/events/{route-95aaaafc49522a6b.js → route-571d58ede1391fc8.js} +1 -1
  167. package/.next/static/chunks/app/api/agent/[id]/route-571d58ede1391fc8.js +1 -0
  168. package/.next/static/chunks/app/api/agent/new/route-571d58ede1391fc8.js +1 -0
  169. package/.next/static/chunks/app/api/agent/running/route-571d58ede1391fc8.js +1 -0
  170. package/.next/static/chunks/app/api/attachment-settings/route-571d58ede1391fc8.js +1 -0
  171. package/.next/static/chunks/app/api/attachments/[id]/transcription/route-571d58ede1391fc8.js +1 -0
  172. package/.next/static/chunks/app/api/attachments/draft/route-571d58ede1391fc8.js +1 -0
  173. package/.next/static/chunks/app/api/attachments/route-571d58ede1391fc8.js +1 -0
  174. package/.next/static/chunks/app/api/auth/all-providers/route-571d58ede1391fc8.js +1 -0
  175. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-571d58ede1391fc8.js +1 -0
  176. package/.next/static/chunks/app/api/auth/login/[provider]/route-571d58ede1391fc8.js +1 -0
  177. package/.next/static/chunks/app/api/auth/logout/[provider]/route-571d58ede1391fc8.js +1 -0
  178. package/.next/static/chunks/app/api/auth/providers/route-571d58ede1391fc8.js +1 -0
  179. package/.next/static/chunks/app/api/cwd/browse/route-571d58ede1391fc8.js +1 -0
  180. package/.next/static/chunks/app/api/cwd/validate/route-571d58ede1391fc8.js +1 -0
  181. package/.next/static/chunks/app/api/default-cwd/route-571d58ede1391fc8.js +1 -0
  182. package/.next/static/chunks/app/api/display-settings/route-571d58ede1391fc8.js +1 -0
  183. package/.next/static/chunks/app/api/document-text/route-571d58ede1391fc8.js +1 -0
  184. package/.next/static/chunks/app/api/experiments/route-571d58ede1391fc8.js +1 -0
  185. package/.next/static/chunks/app/api/file-index/route-571d58ede1391fc8.js +1 -0
  186. package/.next/static/chunks/app/api/files/[...path]/route-571d58ede1391fc8.js +1 -0
  187. package/.next/static/chunks/app/api/git/diff/route-571d58ede1391fc8.js +1 -0
  188. package/.next/static/chunks/app/api/git/status/route-571d58ede1391fc8.js +1 -0
  189. package/.next/static/chunks/app/api/github/projects/route-571d58ede1391fc8.js +1 -0
  190. package/.next/static/chunks/app/api/gpt6/handles/route-571d58ede1391fc8.js +1 -0
  191. package/.next/static/chunks/app/api/gpt6/reply/route-571d58ede1391fc8.js +1 -0
  192. package/.next/static/chunks/app/api/gpt6/token/route-571d58ede1391fc8.js +1 -0
  193. package/.next/static/chunks/app/api/gpt6/web6-session/route-571d58ede1391fc8.js +1 -0
  194. package/.next/static/chunks/app/api/home/route-571d58ede1391fc8.js +1 -0
  195. package/.next/static/chunks/app/api/live/call/[callId]/route-571d58ede1391fc8.js +1 -0
  196. package/.next/static/chunks/app/api/live/events/route-571d58ede1391fc8.js +1 -0
  197. package/.next/static/chunks/app/api/live/interpret/route-571d58ede1391fc8.js +1 -0
  198. package/.next/static/chunks/app/api/live/offer/route-571d58ede1391fc8.js +1 -0
  199. package/.next/static/chunks/app/api/live/voices/route-571d58ede1391fc8.js +1 -0
  200. package/.next/static/chunks/app/api/mcp/route-571d58ede1391fc8.js +1 -0
  201. package/.next/static/chunks/app/api/model-roles/route-571d58ede1391fc8.js +1 -0
  202. package/.next/static/chunks/app/api/models/route-571d58ede1391fc8.js +1 -0
  203. package/.next/static/chunks/app/api/models-config/catalog/route-571d58ede1391fc8.js +1 -0
  204. package/.next/static/chunks/app/api/models-config/discover/route-571d58ede1391fc8.js +1 -0
  205. package/.next/static/chunks/app/api/models-config/route-571d58ede1391fc8.js +1 -0
  206. package/.next/static/chunks/app/api/models-config/test/route-571d58ede1391fc8.js +1 -0
  207. package/.next/static/chunks/app/api/office-avatars/[id]/route-571d58ede1391fc8.js +1 -0
  208. package/.next/static/chunks/app/api/office-avatars/route-571d58ede1391fc8.js +1 -0
  209. package/.next/static/chunks/app/api/plugins/route-571d58ede1391fc8.js +1 -0
  210. package/.next/static/chunks/app/api/project-docs/route-571d58ede1391fc8.js +1 -0
  211. package/.next/static/chunks/app/api/project-trust/route-571d58ede1391fc8.js +1 -0
  212. package/.next/static/chunks/app/api/projects/route-571d58ede1391fc8.js +1 -0
  213. package/.next/static/chunks/app/api/runs/[runId]/route-571d58ede1391fc8.js +1 -0
  214. package/.next/static/chunks/app/api/runs/route-571d58ede1391fc8.js +1 -0
  215. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-571d58ede1391fc8.js +1 -0
  216. package/.next/static/chunks/app/api/sessions/[id]/context/route-571d58ede1391fc8.js +1 -0
  217. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-571d58ede1391fc8.js +1 -0
  218. package/.next/static/chunks/app/api/sessions/[id]/export/route-571d58ede1391fc8.js +1 -0
  219. package/.next/static/chunks/app/api/sessions/[id]/route-571d58ede1391fc8.js +1 -0
  220. package/.next/static/chunks/app/api/sessions/[id]/state/route-571d58ede1391fc8.js +1 -0
  221. package/.next/static/chunks/app/api/sessions/route-571d58ede1391fc8.js +1 -0
  222. package/.next/static/chunks/app/api/sessions/search/route-571d58ede1391fc8.js +1 -0
  223. package/.next/static/chunks/app/api/settings/route-571d58ede1391fc8.js +1 -0
  224. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-571d58ede1391fc8.js +1 -0
  225. package/.next/static/chunks/app/api/skills/check/route-571d58ede1391fc8.js +1 -0
  226. package/.next/static/chunks/app/api/skills/install/route-571d58ede1391fc8.js +1 -0
  227. package/.next/static/chunks/app/api/skills/route-571d58ede1391fc8.js +1 -0
  228. package/.next/static/chunks/app/api/skills/search/route-571d58ede1391fc8.js +1 -0
  229. package/.next/static/chunks/app/api/skills/update/route-571d58ede1391fc8.js +1 -0
  230. package/.next/static/chunks/app/api/subagents/eta/route-571d58ede1391fc8.js +1 -0
  231. package/.next/static/chunks/app/api/theme/route-571d58ede1391fc8.js +1 -0
  232. package/.next/static/chunks/app/api/tool-image/route-571d58ede1391fc8.js +1 -0
  233. package/.next/static/chunks/app/api/update-maintenance/route-571d58ede1391fc8.js +1 -0
  234. package/.next/static/chunks/app/api/updates/route-571d58ede1391fc8.js +1 -0
  235. package/.next/static/chunks/app/api/web-access/recovery/route-571d58ede1391fc8.js +1 -0
  236. package/.next/static/chunks/app/api/web-access/route-571d58ede1391fc8.js +1 -0
  237. package/.next/static/chunks/app/api/web6/consults/route-571d58ede1391fc8.js +1 -0
  238. package/.next/static/chunks/app/api/worktrees/route-571d58ede1391fc8.js +1 -0
  239. package/.next/static/chunks/app/{layout-1781d82d3faf88af.js → layout-a7fca69a4fa9b2c2.js} +1 -1
  240. package/.next/static/chunks/app/manifest.webmanifest/route-571d58ede1391fc8.js +1 -0
  241. package/.next/static/chunks/next/dist/client/components/builtin/app-error-571d58ede1391fc8.js +1 -0
  242. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-571d58ede1391fc8.js +1 -0
  243. package/.next/static/chunks/next/dist/client/components/builtin/not-found-571d58ede1391fc8.js +1 -0
  244. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-571d58ede1391fc8.js +1 -0
  245. package/.next/static/css/{949fdc99cee51026.css → cc26725ba00edca3.css} +1 -1
  246. package/.next/trace +108 -108
  247. package/.next/trace-build +1 -1
  248. package/.next/types/routes.d.ts +1 -2
  249. package/.next/types/validator.ts +0 -9
  250. package/README.md +8 -4
  251. package/Tools/CUELO_Setup/files/native-runtime-patch.js +3 -3
  252. package/Tools/OMP_Global_Config/agent/AGENTS.md +2 -0
  253. package/Tools/OMP_Global_Config/agent/extensions/docmap-route.ts +34 -0
  254. package/Tools/OMP_Global_Config/agent/extensions/jev-runtime.ts +12 -1
  255. package/Tools/OMP_Global_Config/agent/extensions/lib/docmap-search.ts +576 -0
  256. package/Tools/OMP_Global_Config/agent/extensions/mcp-selection.ts +48 -7
  257. package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +3 -1
  258. package/Tools/OMP_Global_Config/agent/rules/docs-handoff.md +1 -1
  259. package/Tools/OMP_Global_Config/agent/rules/frontend.md +4 -2
  260. package/Tools/OMP_Global_Config/agent/rules/verdict.md +1 -0
  261. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +981 -132
  262. package/package.json +7 -7
  263. package/.next/server/app/api/live/character-voice/route.js +0 -1
  264. package/.next/server/app/api/live/character-voice/route.js.nft.json +0 -1
  265. package/.next/server/app/api/live/character-voice/route_client-reference-manifest.js +0 -1
  266. package/.next/server/chunks/205.js +0 -7
  267. package/.next/server/chunks/7467.js +0 -3
  268. package/.next/static/chunks/6110-11dcb476b561c51f.js +0 -1
  269. package/.next/static/chunks/app/api/agent/[id]/route-95aaaafc49522a6b.js +0 -1
  270. package/.next/static/chunks/app/api/agent/new/route-95aaaafc49522a6b.js +0 -1
  271. package/.next/static/chunks/app/api/agent/running/route-95aaaafc49522a6b.js +0 -1
  272. package/.next/static/chunks/app/api/attachment-settings/route-95aaaafc49522a6b.js +0 -1
  273. package/.next/static/chunks/app/api/attachments/[id]/transcription/route-95aaaafc49522a6b.js +0 -1
  274. package/.next/static/chunks/app/api/attachments/draft/route-95aaaafc49522a6b.js +0 -1
  275. package/.next/static/chunks/app/api/attachments/route-95aaaafc49522a6b.js +0 -1
  276. package/.next/static/chunks/app/api/auth/all-providers/route-95aaaafc49522a6b.js +0 -1
  277. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-95aaaafc49522a6b.js +0 -1
  278. package/.next/static/chunks/app/api/auth/login/[provider]/route-95aaaafc49522a6b.js +0 -1
  279. package/.next/static/chunks/app/api/auth/logout/[provider]/route-95aaaafc49522a6b.js +0 -1
  280. package/.next/static/chunks/app/api/auth/providers/route-95aaaafc49522a6b.js +0 -1
  281. package/.next/static/chunks/app/api/cwd/browse/route-95aaaafc49522a6b.js +0 -1
  282. package/.next/static/chunks/app/api/cwd/validate/route-95aaaafc49522a6b.js +0 -1
  283. package/.next/static/chunks/app/api/default-cwd/route-95aaaafc49522a6b.js +0 -1
  284. package/.next/static/chunks/app/api/display-settings/route-95aaaafc49522a6b.js +0 -1
  285. package/.next/static/chunks/app/api/document-text/route-95aaaafc49522a6b.js +0 -1
  286. package/.next/static/chunks/app/api/experiments/route-95aaaafc49522a6b.js +0 -1
  287. package/.next/static/chunks/app/api/file-index/route-95aaaafc49522a6b.js +0 -1
  288. package/.next/static/chunks/app/api/files/[...path]/route-95aaaafc49522a6b.js +0 -1
  289. package/.next/static/chunks/app/api/git/diff/route-95aaaafc49522a6b.js +0 -1
  290. package/.next/static/chunks/app/api/git/status/route-95aaaafc49522a6b.js +0 -1
  291. package/.next/static/chunks/app/api/github/projects/route-95aaaafc49522a6b.js +0 -1
  292. package/.next/static/chunks/app/api/gpt6/handles/route-95aaaafc49522a6b.js +0 -1
  293. package/.next/static/chunks/app/api/gpt6/reply/route-95aaaafc49522a6b.js +0 -1
  294. package/.next/static/chunks/app/api/gpt6/token/route-95aaaafc49522a6b.js +0 -1
  295. package/.next/static/chunks/app/api/gpt6/web6-session/route-95aaaafc49522a6b.js +0 -1
  296. package/.next/static/chunks/app/api/home/route-95aaaafc49522a6b.js +0 -1
  297. package/.next/static/chunks/app/api/live/call/[callId]/route-95aaaafc49522a6b.js +0 -1
  298. package/.next/static/chunks/app/api/live/character-voice/route-95aaaafc49522a6b.js +0 -1
  299. package/.next/static/chunks/app/api/live/events/route-95aaaafc49522a6b.js +0 -1
  300. package/.next/static/chunks/app/api/live/interpret/route-95aaaafc49522a6b.js +0 -1
  301. package/.next/static/chunks/app/api/live/offer/route-95aaaafc49522a6b.js +0 -1
  302. package/.next/static/chunks/app/api/live/voices/route-95aaaafc49522a6b.js +0 -1
  303. package/.next/static/chunks/app/api/mcp/route-95aaaafc49522a6b.js +0 -1
  304. package/.next/static/chunks/app/api/model-roles/route-95aaaafc49522a6b.js +0 -1
  305. package/.next/static/chunks/app/api/models/route-95aaaafc49522a6b.js +0 -1
  306. package/.next/static/chunks/app/api/models-config/catalog/route-95aaaafc49522a6b.js +0 -1
  307. package/.next/static/chunks/app/api/models-config/discover/route-95aaaafc49522a6b.js +0 -1
  308. package/.next/static/chunks/app/api/models-config/route-95aaaafc49522a6b.js +0 -1
  309. package/.next/static/chunks/app/api/models-config/test/route-95aaaafc49522a6b.js +0 -1
  310. package/.next/static/chunks/app/api/office-avatars/[id]/route-95aaaafc49522a6b.js +0 -1
  311. package/.next/static/chunks/app/api/office-avatars/route-95aaaafc49522a6b.js +0 -1
  312. package/.next/static/chunks/app/api/plugins/route-95aaaafc49522a6b.js +0 -1
  313. package/.next/static/chunks/app/api/project-docs/route-95aaaafc49522a6b.js +0 -1
  314. package/.next/static/chunks/app/api/project-trust/route-95aaaafc49522a6b.js +0 -1
  315. package/.next/static/chunks/app/api/projects/route-95aaaafc49522a6b.js +0 -1
  316. package/.next/static/chunks/app/api/runs/[runId]/route-95aaaafc49522a6b.js +0 -1
  317. package/.next/static/chunks/app/api/runs/route-95aaaafc49522a6b.js +0 -1
  318. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-95aaaafc49522a6b.js +0 -1
  319. package/.next/static/chunks/app/api/sessions/[id]/context/route-95aaaafc49522a6b.js +0 -1
  320. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-95aaaafc49522a6b.js +0 -1
  321. package/.next/static/chunks/app/api/sessions/[id]/export/route-95aaaafc49522a6b.js +0 -1
  322. package/.next/static/chunks/app/api/sessions/[id]/route-95aaaafc49522a6b.js +0 -1
  323. package/.next/static/chunks/app/api/sessions/[id]/state/route-95aaaafc49522a6b.js +0 -1
  324. package/.next/static/chunks/app/api/sessions/route-95aaaafc49522a6b.js +0 -1
  325. package/.next/static/chunks/app/api/sessions/search/route-95aaaafc49522a6b.js +0 -1
  326. package/.next/static/chunks/app/api/settings/route-95aaaafc49522a6b.js +0 -1
  327. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-95aaaafc49522a6b.js +0 -1
  328. package/.next/static/chunks/app/api/skills/check/route-95aaaafc49522a6b.js +0 -1
  329. package/.next/static/chunks/app/api/skills/install/route-95aaaafc49522a6b.js +0 -1
  330. package/.next/static/chunks/app/api/skills/route-95aaaafc49522a6b.js +0 -1
  331. package/.next/static/chunks/app/api/skills/search/route-95aaaafc49522a6b.js +0 -1
  332. package/.next/static/chunks/app/api/skills/update/route-95aaaafc49522a6b.js +0 -1
  333. package/.next/static/chunks/app/api/subagents/eta/route-95aaaafc49522a6b.js +0 -1
  334. package/.next/static/chunks/app/api/theme/route-95aaaafc49522a6b.js +0 -1
  335. package/.next/static/chunks/app/api/tool-image/route-95aaaafc49522a6b.js +0 -1
  336. package/.next/static/chunks/app/api/update-maintenance/route-95aaaafc49522a6b.js +0 -1
  337. package/.next/static/chunks/app/api/updates/route-95aaaafc49522a6b.js +0 -1
  338. package/.next/static/chunks/app/api/web-access/recovery/route-95aaaafc49522a6b.js +0 -1
  339. package/.next/static/chunks/app/api/web-access/route-95aaaafc49522a6b.js +0 -1
  340. package/.next/static/chunks/app/api/web6/consults/route-95aaaafc49522a6b.js +0 -1
  341. package/.next/static/chunks/app/api/worktrees/route-95aaaafc49522a6b.js +0 -1
  342. package/.next/static/chunks/app/manifest.webmanifest/route-95aaaafc49522a6b.js +0 -1
  343. package/.next/static/chunks/next/dist/client/components/builtin/app-error-95aaaafc49522a6b.js +0 -1
  344. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-95aaaafc49522a6b.js +0 -1
  345. package/.next/static/chunks/next/dist/client/components/builtin/not-found-95aaaafc49522a6b.js +0 -1
  346. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-95aaaafc49522a6b.js +0 -1
  347. package/.next/static/uKP9o1VFOow0E3p4hZv3O/_buildManifest.js +0 -1
  348. package/.next/types/app/api/live/character-voice/route.ts +0 -351
  349. package/public/audio/live/ACML-1.0.txt +0 -85
  350. package/public/audio/live/hikari-reference.wav +0 -0
  351. package/public/audio/live/isana-reference.wav +0 -0
  352. package/public/audio/live/mio-reference.wav +0 -0
  353. package/public/audio/live/nova-reference.wav +0 -0
  354. package/public/audio/live/rin-reference.wav +0 -0
  355. package/public/audio/live/shion-reference.wav +0 -0
  356. package/public/audio/live/voices.json +0 -275
  357. package/public/audio/live/yuki-reference.wav +0 -0
  358. /package/.next/static/{uKP9o1VFOow0E3p4hZv3O → IKi2VjUzAnD5AUcDn7QNi}/_ssgManifest.js +0 -0
@@ -65,6 +65,8 @@ export interface McpSelectionDeps {
65
65
  /** user `mcp.json`이 있는 agent 루트. 기본은 이 확장이 설치된 프로필 루트다. */
66
66
  agentDir?: string;
67
67
  catalog?: readonly CatalogEntry[];
68
+ /** 판정 대기 상한. 테스트만 짧게 준다. 기본은 MCP_SELECTION_TIMEOUT_MS다. */
69
+ judgeTimeoutMs?: number;
68
70
  }
69
71
 
70
72
  interface McpSelectOutcomeLike {
@@ -84,6 +86,11 @@ const CUSTOM_TYPE = "mcp-selection";
84
86
  const SUGGESTED_FILE = "mcp-suggested.json";
85
87
  const STACK_SKIP_DIRS: ReadonlySet<string> = new Set(["node_modules", "bin", "obj", "dist", "build", "out", "target", "vendor"]);
86
88
  const STACK_DIR_LIMIT = 40;
89
+ /** 새 요청의 판정 대기 상한. 넘으면 판정을 취소하고 판정 실패와 같게 새 연결 없이 진행한다(runner 30초 제한에 기대지 않는다). */
90
+ const MCP_SELECTION_TIMEOUT_MS = 3_000;
91
+ const JUDGE_TIMEOUT_REASON = "판정이 제한 시간 안에 끝나지 않음";
92
+ /** 취소·제한 시간이 판정보다 먼저 끝났음을 나타내는 race 표지. */
93
+ const STOPPED: unique symbol = Symbol("mcp-selection-stopped");
87
94
 
88
95
  async function readJson(path: string): Promise<Record<string, unknown> | undefined> {
89
96
  try {
@@ -200,6 +207,7 @@ export function createMcpSelection(deps: McpSelectionDeps = {}) {
200
207
  const catalog = deps.catalog ?? VERIFIED_CATALOG;
201
208
  const loadCore = deps.loadCore ?? defaultLoadCore;
202
209
  const resolveJudge = deps.resolveJudge ?? ((ctx: ExtensionContext) => resolveNativeJudge(ctx, loadCore));
210
+ const judgeTimeoutMs = deps.judgeTimeoutMs ?? MCP_SELECTION_TIMEOUT_MS;
203
211
 
204
212
  return function mcpSelection(pi: ExtensionAPI): void {
205
213
  /** 이미 보여 준 설치 제안. 세션을 넘어 반복하지 않도록 agentDir 파일과 함께 유지한다. */
@@ -209,6 +217,11 @@ export function createMcpSelection(deps: McpSelectionDeps = {}) {
209
217
  /** 진행 중 선택. before_agent_start가 닫으면 늦게 끝난 판정은 상태를 바꾸지 못한다. */
210
218
  let current: { controller: AbortController; done: boolean } | undefined;
211
219
  let pending: { lines: string[]; requested: boolean; outcome?: Promise<McpSelectOutcomeLike> } | undefined;
220
+ /**
221
+ * agent_start~agent_end 사이. core는 직접 요청의 mcp_select를 agent_start 전에 보내고, 실행 중 steering·queued
222
+ * 입력은 같은 run 안에서 다시 보낸다. run 안의 재요청은 run 시작 때 이미 판정했으므로 판정하지 않고 노출을 유지한다.
223
+ */
224
+ let inRun = false;
212
225
 
213
226
  const judgeFor = (ctx: ExtensionContext) => {
214
227
  // 해석 실패·미해석은 캐시하지 않는다. 다음 요청에서 다시 해석한다.
@@ -227,9 +240,13 @@ export function createMcpSelection(deps: McpSelectionDeps = {}) {
227
240
 
228
241
  const onSelect = async (event: McpSelectEventLike, ctx: ExtensionContext) => {
229
242
  current?.controller.abort();
243
+ pending = undefined;
244
+ if (inRun) {
245
+ current = undefined;
246
+ return undefined;
247
+ }
230
248
  const token = { controller: new AbortController(), done: false };
231
249
  current = token;
232
- pending = undefined;
233
250
  const finish = (value: typeof pending) => {
234
251
  if (current !== token) return false;
235
252
  token.done = true;
@@ -258,22 +275,37 @@ export function createMcpSelection(deps: McpSelectionDeps = {}) {
258
275
  return undefined;
259
276
  }
260
277
  const mentioned = mentionedServers(event.prompt, candidates.map((candidate) => candidate.name));
261
- stackPromise ??= readProjectStack(ctx.cwd);
278
+ const projectStack = (stackPromise ??= readProjectStack(ctx.cwd));
262
279
 
263
280
  const answers: Record<string, string | undefined> = {};
281
+ const signal = event.signal ? AbortSignal.any([event.signal, token.controller.signal]) : token.controller.signal;
282
+ // provider가 signal을 무시해도 취소·제한 시간에 바로 돌아온다.
283
+ const stopped = Promise.withResolvers<typeof STOPPED>();
284
+ if (signal.aborted) stopped.resolve(STOPPED);
285
+ else signal.addEventListener("abort", () => stopped.resolve(STOPPED), { once: true });
286
+ let timedOut = false;
287
+ const timer = setTimeout(() => {
288
+ timedOut = true;
289
+ token.controller.abort();
290
+ }, judgeTimeoutMs);
264
291
  try {
265
- const judge = await judgeFor(ctx);
292
+ const judge = await Promise.race([judgeFor(ctx), stopped.promise]);
293
+ if (judge === STOPPED) throw new Error("판정 취소");
266
294
  if (!judge) throw new Error("JEV 판정기를 해석하지 못함");
267
- const signal = event.signal ? AbortSignal.any([event.signal, token.controller.signal]) : token.controller.signal;
268
- const result = await judge.judge(buildJudgeRequest(cue, await stackPromise, candidates), { signal });
295
+ const stack = await Promise.race([projectStack, stopped.promise]);
296
+ if (stack === STOPPED) throw new Error("판정 취소");
297
+ const result = await Promise.race([judge.judge(buildJudgeRequest(cue, stack, candidates), { signal }), stopped.promise]);
298
+ if (result === STOPPED) throw new Error("판정 취소");
269
299
  for (const [key, answer] of Object.entries(result.answers)) {
270
300
  answers[key] = answer?.type === "choice" ? answer.choice : undefined;
271
301
  }
272
302
  } catch (error) {
273
- const reason = error instanceof Error ? error.message : String(error);
303
+ const reason = timedOut ? JUDGE_TIMEOUT_REASON : error instanceof Error ? error.message : String(error);
274
304
  if (current === token) pi.logger.warn("mcp-selection: JEV 판정 실패, 새 MCP 연결 없음", { error: reason });
275
305
  finish({ lines: [renderJudgeFailure(reason, event.deferred.map((server) => server.name))], requested: false });
276
306
  return undefined;
307
+ } finally {
308
+ clearTimeout(timer);
277
309
  }
278
310
 
279
311
  const plan = planSelection({ candidates, answers, mentioned, catalog: pendingCatalog });
@@ -304,7 +336,7 @@ export function createMcpSelection(deps: McpSelectionDeps = {}) {
304
336
  if (!token.done) {
305
337
  // runner 제한 시간 안에 판정이 끝나지 않았다. 늦은 결과는 버리고 진행 중 판정을 취소한다.
306
338
  token.controller.abort();
307
- content = renderJudgeFailure("판정이 제한 시간 안에 끝나지 않음", []);
339
+ content = renderJudgeFailure(JUDGE_TIMEOUT_REASON, []);
308
340
  } else if (result) {
309
341
  const lines = [...result.lines];
310
342
  if (result.requested && result.outcome) lines.unshift(...renderOutcomeLines(await result.outcome));
@@ -314,11 +346,20 @@ export function createMcpSelection(deps: McpSelectionDeps = {}) {
314
346
  return { message: { customType: CUSTOM_TYPE, content, display: true, attribution: "agent" } };
315
347
  });
316
348
 
349
+ pi.on("agent_start", () => {
350
+ inRun = true;
351
+ });
352
+ // willContinue 여부와 관계없이 끝으로 본다. 다음 loop 전에 들어온 queued 입력은 새 요청처럼 (제한 시간 안에서) 판정한다.
353
+ pi.on("agent_end", () => {
354
+ inRun = false;
355
+ });
356
+
317
357
  pi.on("session_start", () => {
318
358
  current?.controller.abort();
319
359
  current = undefined;
320
360
  pending = undefined;
321
361
  stackPromise = undefined;
362
+ inRun = false;
322
363
  });
323
364
  };
324
365
  }
@@ -1,4 +1,4 @@
1
- <!-- source-fingerprint: 184d43e1baf9b83a -->
1
+ <!-- source-fingerprint: dfd364f028b881f5 -->
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.)
@@ -87,6 +87,8 @@ Main first fixes user requirements, acceptance criteria, behavior to preserve, a
87
87
 
88
88
  Follow `rule://subagent` 「Skill 인계」 to hand the relevant Skills Main used to the Maker and verify their application. This applies without another user reminder.
89
89
 
90
+ Once you use a Skill, produce its result by that Skill's own procedure and criteria. If your own regex, script, or excerpt replaced part of the procedure, or you narrowed its scope, do not present the result as the Skill's result; report what you substituted and what you left out. When context runs short, split the work by file or delegate to a `maker` instead of shrinking the criteria or the scope.
91
+
90
92
  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.
91
93
 
92
94
  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.
@@ -22,7 +22,7 @@ description: HANDOFF·README·doc 지도의 역할, 작업 기록 소유권과
22
22
  - 미해결 실패도 같은 규칙으로 다룬다. 관련 작업에서 만난 미해결 실패는 새 절차를 만들지 않고 기존 실패 환류(`verdict.md` 「실패를 다음 작업의 실행 방식으로 환류」)와 `RULES.md`의 동일 재시도 금지를 따른다: 오류 원문 등 증거로 원인을 좁히고, 이전과 다른 조치를 하고, 원래 실패했던 경로를 다시 실행해 닫는다. 가드·검증을 약화하거나 바뀐 것 없이 되풀이하지 않는다. 승인·권한·범위 때문에 막히면 Main이 `HANDOFF.md` 행에 실패 증거, 시도한 조치, 정확한 차단 사유·필요한 승인, 다음 행동, 재검증·종료 기준을 적어 다음 관련 세션이 이어받게 한다. 원인 해결 증거 없이 영구 결함이 고쳐졌다고 단정하지 않는다.
23
23
  - 다음 신호를 보면 해당 절을 바로 고친다: ① Maker가 끝낸 범위가 HANDOFF에서 미적용으로 남음 ② 작업 행의 다음 행동·미해결 경계를 설명할 수 없음 ③ 같은 상태를 둘 이상 독립 서술함 ④ 열린 일이 늘지 않는데 HANDOFF만 늘어남. Maker는 종료 보고에 HANDOFF 영향 주제와 남은 행동 유무를 적는다. Main은 관련 절과 참조처만 확인하며 상시 감사·별도 hook·문서 DB를 만들지 않는다.
24
24
  - 기록은 역할별이다: `DD-주제/main.md`는 Main 판단·수용·공유 인계, `maker-<name>.md`는 그 Maker의 변경·검증·남은 제한이다. Maker는 자기 기록만 쓰며 Main 단독 작업에는 Maker 기록을 만들지 않는다. 발주 시 Main은 Maker 기록과 `evidence/` 경로를 `OWNED_PATHS`에 넣고, 공유 지도는 Main 또는 지정된 한 owner가 갱신한다. 긴 diff·로그는 작업 폴더 `evidence/`에 두고 상대 링크로 가리킨다. secret·대화 원문·인증 DB는 기록하지 않는다.
25
- - 검색 순서는 ① `HANDOFF.md` ② `doc/README.md` 지도·월별 목록 ③ 경로·주제 키워드로 `doc/history/**/*.md`의 `RECORD:` 헤더(`SCOPE`·`PATHS`)를 최신순 검색 ④ 일치 기록의 헤더와 필요한 줄 범위만 읽는다. `STATUS: superseded-by <path>`면 새 경로로 이동한다. 목차·헤더로 못 찾았을 때만 헤더 없는 기존 기록의 본문을 제한 검색한다. 기존 기록에 헤더를 일괄 추가하지 않는다. Main은 찾은 locator를 브리프에 넣어 재검색을 막는다. 후보가 넷 이상이고 헤더로 가릴 수 없을 때만 judge를 쓸 수 있으며 상시 색인·judge·Wiki·기억 계층은 두지 않는다.
25
+ - 검색 순서는 ① `HANDOFF.md` ② `doc/README.md` 지도·월별 목록 ③ 경로·주제 키워드로 `doc/history/**/*.md`의 `RECORD:` 헤더(`SCOPE`·`PATHS`)를 최신순 검색 ④ 일치 기록의 헤더와 필요한 줄 범위만 읽는다. ②③은 하네스가 먼저 돈다: 사용자 요청마다 `docmap-route` 확장이 루트·하위 지도 줄과 기록 제목·헤더만으로 요청 중에 BM25를 만들어(긴 요청은 앞·끝 1,000자), 기록 수로 정규화한 점수·흔하지 않은 낱말의 포괄도 기준을 넘을 때만 후보 최대 3개(경로·지도 줄·SCOPE·STATUS·가장 맞는 절의 줄 범위와 발췌)를 `DATE` 최신순 동점 처리로 숨은 메시지로 붙인다. 후보는 근거가 아니라 확인할 곳이다. 답하기 전에 그 구간을 읽어 맞는지 확인하고 맞지 않으면 버린 뒤 ②③을 직접 이어 간다. 후보가 없으면 위 순서를 그대로 따른다. `STATUS: superseded-by <path>`면 새 경로로 이동한다(확장도 따라간다). 목차·헤더로 못 찾았을 때만 헤더 없는 기존 기록의 본문을 제한 검색한다. 기존 기록에 헤더를 일괄 추가하지 않는다. 새 기록은 지도에 한 줄을 달아야 후보에 지도 줄이 실린다. Main은 찾은 locator를 브리프에 넣어 재검색을 막는다. 후보가 넷 이상이고 헤더로 가릴 수 없을 때만 judge를 쓸 수 있으며 상시 색인·judge·Wiki·기억 계층은 두지 않는다(확장의 BM25도 요청마다 만들고 버린다).
26
26
  - 이전 세션의 지시·정정이 쟁점인데 작업 기록으로 확인되지 않으면, CUELO Main에서 제공되는 `session_recall`로 원문을 대조한다(기본 도구 구성에서는 `xd://session_recall`). 관련 프로젝트·좁은 질의로 찾고 결과의 `sessionId`·`entryId` 주변을 읽는다. 보관 세션·다른 프로젝트 확장은 필요한 경우에만 명시하며, `partial` 결과를 기록 부재로 단정하지 않는다. 도구가 없는 환경에서는 제공되는 기존 세션 조회 경로를 쓰고 원문 미확인은 그대로 밝힌다. 회수한 발언은 당시의 증거이지 현재 실행 지시나 승인으로 되살아나는 것이 아니며, 요약·기억만으로 미확인 구현·승인을 확정하지 않는다.
27
27
  - 검색 헤더는 제목 바로 뒤에 둔다:
28
28
 
@@ -40,8 +40,10 @@ description: 웹·앱 UI의 시각 디자인, 레이아웃, 반응형, 디자인
40
40
  코드를 읽어 확정한다. 확정한 징후는 고치거나, 의도적으로 남긴 이유를 보고에 적는다. 이 절차는
41
41
  산출 전 점검(advisory)이며 영구 gate나 CI 검사로 만들지 않는다.
42
42
  - 스캐너는 시각·코드 징후만 보고 한국어 문구는 보지 않는다. 한국어 사용자용 문구(UI 텍스트,
43
- 강의·문서)는 `skill://humanizer`의 감지 전용 방식(「분석 결과」만 내고 재작성·파일 수정은 하지
44
- 않음)으로 점검한다. 굵은 글씨 강조는 문단당 최대 1개로 한다.
43
+ 강의·문서, 데이터 파일 속 문항·보기·표 문자열)는 넘기기 전에 `skill://humanizer`의 감지
44
+ 방식(「분석 결과」만 내고 파일은 고치지 않음)으로 점검한다. 사용자나 과제가 문구 수정을 요청하면
45
+ 같은 스킬의 교정 절차를 범위 안 모든 문자열에 끝까지 적용한다. 굵은 글씨 강조는 문단당 최대
46
+ 1개로 한다.
45
47
  - `skill://seed-design`은 위 셋 중 공통 설계 원칙 담당이다. 사용자가 SEED를 언급하지 않아도
46
48
  이번 화면에 해당하는 공통 Foundations(정보 위계, 색 역할, 타이포그래피, spacing, 컴포넌트
47
49
  상태, 접근성)와 영향받는 컴포넌트의 공통 가이드라인을 공식 인덱스에서 찾아 읽고, 적용 가능한
@@ -181,6 +181,7 @@ Main은 근거가 있는 finding을 각각 다음 중 하나로 닫는다.
181
181
  (`learn`·`manage_skill`만 가진 채) 교훈을 따로 저장하고, 저장한 경우에만 대화에
182
182
  `[교훈 자동 저장]`(`autolearn-saved`) 메시지를 남긴다. 이건 보조일 뿐 Main의 직접 저장 책임은 그대로다.
183
183
  교훈 저장 여부를 물으면 이 메시지 유무로 답하고, 없으면 자동 저장이 없었다고 말한 뒤 그 자리에서 저장한다.
184
+ - **project 범위의 사실·설계 결정·실패 원인을 `learn`으로 남길 때는 `kind: evidence`와 `citations`**(프로젝트 루트 기준 `path`, 선택 `anchor` = `## ` 절 제목·`SCOPE` 같은 RECORD 헤더 필드·줄 범위)로 그것이 적힌 기록 파일을 단다. 저장 때 경로·앵커가 실제로 있는지만 확인하며, 글이 교훈을 뒷받침하는지는 본 사람이 책임진다. 읽지 않은 파일은 달지 않는다. 적힌 기록이 아직 없으면 먼저 기록하거나 `hypothesis`로 낮춘다. 사용자 선호는 `preference`, 작업 방법은 `procedure`, 미확인 추측은 `hypothesis`로 저장하며 citations가 필요 없다. 회상 줄의 `근거 후보`는 확인할 위치이지 증거가 아니라서, 그 기억에 기대기 전에 열어 맞는지 확인한다. 이미 저장된 기억은 소급하지 않는다.
184
185
  - **다음 유사 작업의 같은 도구·경계에 진입하기 전** 적용되는 교훈을 현재 문맥이나 `recall`로 확인해
185
186
  실행 방식에 반영한다. 이미 문맥에 있는 내용을 또 조회하지 않는다. Maker 첫 턴에는 그 작업 brief로
186
187
  회상한 `<memories>`가 `(id: …)`와 함께 실린다. 위임 attempt가 실제로 적용한 교훈은