@tienne/gestalt 0.106.0 → 0.108.0

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 (271) hide show
  1. package/CLAUDE.md +1 -0
  2. package/README.ko.md +1 -0
  3. package/README.md +1 -0
  4. package/dist/package.json +1 -1
  5. package/dist/plugin/role-agents/lens-context/AGENT.md +94 -0
  6. package/dist/plugin/role-agents/lens-link/AGENT.md +83 -0
  7. package/dist/plugin/role-agents/lens-reader/AGENT.md +230 -0
  8. package/dist/plugin/skills/_shared/proactive-routing.md +1 -0
  9. package/dist/plugin/skills/interview/SKILL.md +47 -8
  10. package/dist/plugin/skills/lens/SKILL.md +375 -0
  11. package/dist/plugin/skills/solve/SKILL.md +3 -3
  12. package/dist/plugin/skills/spec/SKILL.md +4 -4
  13. package/dist/schemas/gestalt.schema.json +19 -0
  14. package/dist/src/agent/role-consensus-engine.d.ts.map +1 -1
  15. package/dist/src/agent/role-consensus-engine.js +1 -1
  16. package/dist/src/agent/role-consensus-engine.js.map +1 -1
  17. package/dist/src/agent/role-prompt-generator.d.ts.map +1 -1
  18. package/dist/src/agent/role-prompt-generator.js +1 -2
  19. package/dist/src/agent/role-prompt-generator.js.map +1 -1
  20. package/dist/src/cli/commands/digest.d.ts +2 -0
  21. package/dist/src/cli/commands/digest.d.ts.map +1 -1
  22. package/dist/src/cli/commands/digest.js +6 -0
  23. package/dist/src/cli/commands/digest.js.map +1 -1
  24. package/dist/src/cli/commands/interview.d.ts +1 -0
  25. package/dist/src/cli/commands/interview.d.ts.map +1 -1
  26. package/dist/src/cli/commands/interview.js +5 -3
  27. package/dist/src/cli/commands/interview.js.map +1 -1
  28. package/dist/src/cli/commands/lens.d.ts +27 -0
  29. package/dist/src/cli/commands/lens.d.ts.map +1 -0
  30. package/dist/src/cli/commands/lens.js +200 -0
  31. package/dist/src/cli/commands/lens.js.map +1 -0
  32. package/dist/src/cli/commands/spec.d.ts.map +1 -1
  33. package/dist/src/cli/commands/spec.js +2 -2
  34. package/dist/src/cli/commands/spec.js.map +1 -1
  35. package/dist/src/cli/index.d.ts.map +1 -1
  36. package/dist/src/cli/index.js +37 -0
  37. package/dist/src/cli/index.js.map +1 -1
  38. package/dist/src/core/config.d.ts +19 -0
  39. package/dist/src/core/config.d.ts.map +1 -1
  40. package/dist/src/core/config.js +23 -15
  41. package/dist/src/core/config.js.map +1 -1
  42. package/dist/src/core/constants.d.ts +5 -0
  43. package/dist/src/core/constants.d.ts.map +1 -1
  44. package/dist/src/core/constants.js +5 -0
  45. package/dist/src/core/constants.js.map +1 -1
  46. package/dist/src/core/errors.d.ts +3 -1
  47. package/dist/src/core/errors.d.ts.map +1 -1
  48. package/dist/src/core/errors.js +6 -2
  49. package/dist/src/core/errors.js.map +1 -1
  50. package/dist/src/core/types.d.ts +51 -2
  51. package/dist/src/core/types.d.ts.map +1 -1
  52. package/dist/src/digest/format.d.ts.map +1 -1
  53. package/dist/src/digest/format.js +1 -0
  54. package/dist/src/digest/format.js.map +1 -1
  55. package/dist/src/digest/frames.d.ts.map +1 -1
  56. package/dist/src/digest/frames.js +1 -1
  57. package/dist/src/digest/frames.js.map +1 -1
  58. package/dist/src/digest/ingest.d.ts +8 -1
  59. package/dist/src/digest/ingest.d.ts.map +1 -1
  60. package/dist/src/digest/ingest.js +2 -1
  61. package/dist/src/digest/ingest.js.map +1 -1
  62. package/dist/src/digest/lens-schema.d.ts +542 -0
  63. package/dist/src/digest/lens-schema.d.ts.map +1 -0
  64. package/dist/src/digest/lens-schema.js +108 -0
  65. package/dist/src/digest/lens-schema.js.map +1 -0
  66. package/dist/src/digest/lens-source.d.ts +260 -0
  67. package/dist/src/digest/lens-source.d.ts.map +1 -0
  68. package/dist/src/digest/lens-source.js +92 -0
  69. package/dist/src/digest/lens-source.js.map +1 -0
  70. package/dist/src/digest/lens-widget-schema.d.ts +1225 -0
  71. package/dist/src/digest/lens-widget-schema.d.ts.map +1 -0
  72. package/dist/src/digest/lens-widget-schema.js +80 -0
  73. package/dist/src/digest/lens-widget-schema.js.map +1 -0
  74. package/dist/src/digest/lens-widgets.d.ts +25 -0
  75. package/dist/src/digest/lens-widgets.d.ts.map +1 -0
  76. package/dist/src/digest/lens-widgets.js +225 -0
  77. package/dist/src/digest/lens-widgets.js.map +1 -0
  78. package/dist/src/digest/lint-lens-context.d.ts +102 -0
  79. package/dist/src/digest/lint-lens-context.d.ts.map +1 -0
  80. package/dist/src/digest/lint-lens-context.js +192 -0
  81. package/dist/src/digest/lint-lens-context.js.map +1 -0
  82. package/dist/src/digest/lint-lens.d.ts +17 -0
  83. package/dist/src/digest/lint-lens.d.ts.map +1 -0
  84. package/dist/src/digest/lint-lens.js +237 -0
  85. package/dist/src/digest/lint-lens.js.map +1 -0
  86. package/dist/src/digest/lint.d.ts +14 -0
  87. package/dist/src/digest/lint.d.ts.map +1 -1
  88. package/dist/src/digest/lint.js +156 -2
  89. package/dist/src/digest/lint.js.map +1 -1
  90. package/dist/src/digest/merge.d.ts.map +1 -1
  91. package/dist/src/digest/merge.js +11 -2
  92. package/dist/src/digest/merge.js.map +1 -1
  93. package/dist/src/digest/prose.d.ts.map +1 -1
  94. package/dist/src/digest/prose.js +8 -0
  95. package/dist/src/digest/prose.js.map +1 -1
  96. package/dist/src/digest/render-html.d.ts +5 -0
  97. package/dist/src/digest/render-html.d.ts.map +1 -1
  98. package/dist/src/digest/render-html.js +93 -18
  99. package/dist/src/digest/render-html.js.map +1 -1
  100. package/dist/src/digest/render-lens.d.ts +61 -0
  101. package/dist/src/digest/render-lens.d.ts.map +1 -0
  102. package/dist/src/digest/render-lens.js +273 -0
  103. package/dist/src/digest/render-lens.js.map +1 -0
  104. package/dist/src/digest/render-md.d.ts +5 -0
  105. package/dist/src/digest/render-md.d.ts.map +1 -1
  106. package/dist/src/digest/render-md.js +116 -7
  107. package/dist/src/digest/render-md.js.map +1 -1
  108. package/dist/src/digest/render-widgets.d.ts +13 -0
  109. package/dist/src/digest/render-widgets.d.ts.map +1 -0
  110. package/dist/src/digest/render-widgets.js +197 -0
  111. package/dist/src/digest/render-widgets.js.map +1 -0
  112. package/dist/src/digest/render.d.ts +2 -0
  113. package/dist/src/digest/render.d.ts.map +1 -1
  114. package/dist/src/digest/render.js +17 -3
  115. package/dist/src/digest/render.js.map +1 -1
  116. package/dist/src/digest/schema.d.ts +14683 -2022
  117. package/dist/src/digest/schema.d.ts.map +1 -1
  118. package/dist/src/digest/schema.js +67 -6
  119. package/dist/src/digest/schema.js.map +1 -1
  120. package/dist/src/digest/server.d.ts +2 -1
  121. package/dist/src/digest/server.d.ts.map +1 -1
  122. package/dist/src/digest/server.js +26 -11
  123. package/dist/src/digest/server.js.map +1 -1
  124. package/dist/src/digest/viewer-js.d.ts.map +1 -1
  125. package/dist/src/digest/viewer-js.js +120 -4
  126. package/dist/src/digest/viewer-js.js.map +1 -1
  127. package/dist/src/events/types.d.ts +2 -0
  128. package/dist/src/events/types.d.ts.map +1 -1
  129. package/dist/src/events/types.js +2 -0
  130. package/dist/src/events/types.js.map +1 -1
  131. package/dist/src/execute/orchestrators/evolution.d.ts.map +1 -1
  132. package/dist/src/execute/orchestrators/evolution.js +4 -0
  133. package/dist/src/execute/orchestrators/evolution.js.map +1 -1
  134. package/dist/src/execute/passthrough-engine.d.ts +6 -0
  135. package/dist/src/execute/passthrough-engine.d.ts.map +1 -1
  136. package/dist/src/execute/passthrough-engine.js +10 -0
  137. package/dist/src/execute/passthrough-engine.js.map +1 -1
  138. package/dist/src/execute/termination-detector.d.ts +3 -0
  139. package/dist/src/execute/termination-detector.d.ts.map +1 -1
  140. package/dist/src/execute/termination-detector.js +2 -3
  141. package/dist/src/execute/termination-detector.js.map +1 -1
  142. package/dist/src/gestalt/analyzer.d.ts +1 -1
  143. package/dist/src/gestalt/analyzer.d.ts.map +1 -1
  144. package/dist/src/gestalt/analyzer.js +3 -2
  145. package/dist/src/gestalt/analyzer.js.map +1 -1
  146. package/dist/src/gestalt/signals.d.ts +20 -0
  147. package/dist/src/gestalt/signals.d.ts.map +1 -0
  148. package/dist/src/gestalt/signals.js +112 -0
  149. package/dist/src/gestalt/signals.js.map +1 -0
  150. package/dist/src/interview/engine.d.ts +9 -1
  151. package/dist/src/interview/engine.d.ts.map +1 -1
  152. package/dist/src/interview/engine.js +40 -11
  153. package/dist/src/interview/engine.js.map +1 -1
  154. package/dist/src/interview/passthrough-engine.d.ts +31 -7
  155. package/dist/src/interview/passthrough-engine.d.ts.map +1 -1
  156. package/dist/src/interview/passthrough-engine.js +87 -28
  157. package/dist/src/interview/passthrough-engine.js.map +1 -1
  158. package/dist/src/interview/repository.d.ts +6 -1
  159. package/dist/src/interview/repository.d.ts.map +1 -1
  160. package/dist/src/interview/repository.js +20 -2
  161. package/dist/src/interview/repository.js.map +1 -1
  162. package/dist/src/interview/rescore.d.ts +35 -0
  163. package/dist/src/interview/rescore.d.ts.map +1 -0
  164. package/dist/src/interview/rescore.js +92 -0
  165. package/dist/src/interview/rescore.js.map +1 -0
  166. package/dist/src/interview/resolution.d.ts +5 -1
  167. package/dist/src/interview/resolution.d.ts.map +1 -1
  168. package/dist/src/interview/resolution.js +15 -4
  169. package/dist/src/interview/resolution.js.map +1 -1
  170. package/dist/src/interview/session.d.ts +12 -2
  171. package/dist/src/interview/session.d.ts.map +1 -1
  172. package/dist/src/interview/session.js +57 -5
  173. package/dist/src/interview/session.js.map +1 -1
  174. package/dist/src/lens/attach.d.ts +436 -0
  175. package/dist/src/lens/attach.d.ts.map +1 -0
  176. package/dist/src/lens/attach.js +46 -0
  177. package/dist/src/lens/attach.js.map +1 -0
  178. package/dist/src/lens/ingest.d.ts +75 -0
  179. package/dist/src/lens/ingest.d.ts.map +1 -0
  180. package/dist/src/lens/ingest.js +558 -0
  181. package/dist/src/lens/ingest.js.map +1 -0
  182. package/dist/src/lens/kind.d.ts +11 -0
  183. package/dist/src/lens/kind.d.ts.map +1 -0
  184. package/dist/src/lens/kind.js +59 -0
  185. package/dist/src/lens/kind.js.map +1 -0
  186. package/dist/src/lens/knowledge.d.ts +53 -0
  187. package/dist/src/lens/knowledge.d.ts.map +1 -0
  188. package/dist/src/lens/knowledge.js +202 -0
  189. package/dist/src/lens/knowledge.js.map +1 -0
  190. package/dist/src/lens/notes.d.ts +73 -0
  191. package/dist/src/lens/notes.d.ts.map +1 -0
  192. package/dist/src/lens/notes.js +276 -0
  193. package/dist/src/lens/notes.js.map +1 -0
  194. package/dist/src/lens/panels.d.ts +10 -0
  195. package/dist/src/lens/panels.d.ts.map +1 -0
  196. package/dist/src/lens/panels.js +25 -0
  197. package/dist/src/lens/panels.js.map +1 -0
  198. package/dist/src/lens/pdf-extract-py.d.ts +15 -0
  199. package/dist/src/lens/pdf-extract-py.d.ts.map +1 -0
  200. package/dist/src/lens/pdf-extract-py.js +414 -0
  201. package/dist/src/lens/pdf-extract-py.js.map +1 -0
  202. package/dist/src/lens/podcast.d.ts +36 -0
  203. package/dist/src/lens/podcast.d.ts.map +1 -0
  204. package/dist/src/lens/podcast.js +104 -0
  205. package/dist/src/lens/podcast.js.map +1 -0
  206. package/dist/src/lens/python.d.ts +33 -0
  207. package/dist/src/lens/python.d.ts.map +1 -0
  208. package/dist/src/lens/python.js +61 -0
  209. package/dist/src/lens/python.js.map +1 -0
  210. package/dist/src/lens/web-extract-py.d.ts +9 -0
  211. package/dist/src/lens/web-extract-py.d.ts.map +1 -0
  212. package/dist/src/lens/web-extract-py.js +114 -0
  213. package/dist/src/lens/web-extract-py.js.map +1 -0
  214. package/dist/src/llm/prompts.d.ts +8 -0
  215. package/dist/src/llm/prompts.d.ts.map +1 -1
  216. package/dist/src/llm/prompts.js +7 -0
  217. package/dist/src/llm/prompts.js.map +1 -1
  218. package/dist/src/mcp/schemas.d.ts +29 -20
  219. package/dist/src/mcp/schemas.d.ts.map +1 -1
  220. package/dist/src/mcp/schemas.js +15 -3
  221. package/dist/src/mcp/schemas.js.map +1 -1
  222. package/dist/src/mcp/server.d.ts.map +1 -1
  223. package/dist/src/mcp/server.js +11 -5
  224. package/dist/src/mcp/server.js.map +1 -1
  225. package/dist/src/mcp/tools/digest-passthrough.d.ts.map +1 -1
  226. package/dist/src/mcp/tools/digest-passthrough.js +5 -0
  227. package/dist/src/mcp/tools/digest-passthrough.js.map +1 -1
  228. package/dist/src/mcp/tools/execute/evaluate.d.ts.map +1 -1
  229. package/dist/src/mcp/tools/execute/evaluate.js +3 -3
  230. package/dist/src/mcp/tools/execute/evaluate.js.map +1 -1
  231. package/dist/src/mcp/tools/interview-passthrough.d.ts.map +1 -1
  232. package/dist/src/mcp/tools/interview-passthrough.js +40 -34
  233. package/dist/src/mcp/tools/interview-passthrough.js.map +1 -1
  234. package/dist/src/mcp/tools/spec-passthrough.d.ts.map +1 -1
  235. package/dist/src/mcp/tools/spec-passthrough.js +7 -0
  236. package/dist/src/mcp/tools/spec-passthrough.js.map +1 -1
  237. package/dist/src/mcp/tools/status.d.ts.map +1 -1
  238. package/dist/src/mcp/tools/status.js +6 -1
  239. package/dist/src/mcp/tools/status.js.map +1 -1
  240. package/dist/src/research/schema.d.ts +3 -3
  241. package/dist/src/research/source-create.d.ts +6 -1
  242. package/dist/src/research/source-create.d.ts.map +1 -1
  243. package/dist/src/research/source-create.js +41 -10
  244. package/dist/src/research/source-create.js.map +1 -1
  245. package/dist/src/spec/extractor.js +1 -1
  246. package/dist/src/spec/extractor.js.map +1 -1
  247. package/dist/src/spec/generator.d.ts +3 -1
  248. package/dist/src/spec/generator.d.ts.map +1 -1
  249. package/dist/src/spec/generator.js +6 -4
  250. package/dist/src/spec/generator.js.map +1 -1
  251. package/dist/src/spec/passthrough-generator.d.ts +3 -1
  252. package/dist/src/spec/passthrough-generator.d.ts.map +1 -1
  253. package/dist/src/spec/passthrough-generator.js +6 -4
  254. package/dist/src/spec/passthrough-generator.js.map +1 -1
  255. package/dist/src/spec/schema.d.ts +5 -5
  256. package/dist/src/spec/schema.js +1 -1
  257. package/dist/src/spec/schema.js.map +1 -1
  258. package/package.json +1 -1
  259. package/plugin/.codex-plugin/plugin.json +1 -1
  260. package/plugin/.mcp.json +1 -1
  261. package/plugin/commands/gestalt-interview.md +2 -1
  262. package/plugin/mcp.json +1 -1
  263. package/plugin/role-agents/lens-context/AGENT.md +94 -0
  264. package/plugin/role-agents/lens-link/AGENT.md +83 -0
  265. package/plugin/role-agents/lens-reader/AGENT.md +230 -0
  266. package/plugin/skills/_shared/proactive-routing.md +1 -0
  267. package/plugin/skills/interview/SKILL.md +47 -8
  268. package/plugin/skills/lens/SKILL.md +375 -0
  269. package/plugin/skills/solve/SKILL.md +3 -3
  270. package/plugin/skills/spec/SKILL.md +4 -4
  271. package/schemas/gestalt.schema.json +19 -0
@@ -0,0 +1,61 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ /** 렌즈 전용 가상환경. 시스템 파이썬의 pip가 오래돼 새 휠을 못 받는 머신에서 여기에 설치한다 */
5
+ export const LENS_VENV = join(homedir(), '.local', 'share', 'gestalt', 'lens-venv');
6
+ export const LENS_PY_INSTALL = `python3 -m venv ${LENS_VENV} && ${join(LENS_VENV, 'bin', 'python')} -m pip install --upgrade pip && ` +
7
+ `${join(LENS_VENV, 'bin', 'python')} -m pip install pdfplumber trafilatura faster-whisper sherpa-onnx`;
8
+ /**
9
+ * 렌즈 추출에 쓸 파이썬. GESTALT_LENS_PYTHON이 있으면 그 값을, 없으면 렌즈 가상환경을, 그것도 없으면 python3를 쓴다.
10
+ * 환경 변수는 절대 경로만 받는다. 상대 경로면 남의 레포 안 같은 이름 파일이 대신 돌 수 있다
11
+ */
12
+ export function lensPython(env = process.env) {
13
+ const fromEnv = env.GESTALT_LENS_PYTHON?.trim();
14
+ if (fromEnv) {
15
+ if (!fromEnv.startsWith('/')) {
16
+ throw new Error(`GESTALT_LENS_PYTHON은 절대 경로여야 해요: ${fromEnv}`);
17
+ }
18
+ return fromEnv;
19
+ }
20
+ const venv = join(LENS_VENV, 'bin', 'python');
21
+ return existsSync(venv) ? venv : 'python3';
22
+ }
23
+ /** 모듈이 없을 때 설치 안내. 어떤 모듈이 빠졌는지 stderr에서 읽는다 */
24
+ export function missingModuleHint(stderr) {
25
+ const m = /No module named ['"]([A-Za-z0-9_.]+)/.exec(stderr);
26
+ if (!m)
27
+ return null;
28
+ return `파이썬 모듈 ${m[1]}이 없어요. 아래 명령으로 렌즈 가상환경을 만든 뒤 다시 돌려 주세요.\n${LENS_PY_INSTALL}`;
29
+ }
30
+ /** 화자 구분 모델 자리. GESTALT_LENS_MODELS가 있으면 그 절대 경로를 쓴다 */
31
+ export function lensModelsDir(env = process.env) {
32
+ const fromEnv = env.GESTALT_LENS_MODELS?.trim();
33
+ if (fromEnv) {
34
+ if (!fromEnv.startsWith('/')) {
35
+ throw new Error(`GESTALT_LENS_MODELS는 절대 경로여야 해요: ${fromEnv}`);
36
+ }
37
+ return fromEnv;
38
+ }
39
+ return join(homedir(), '.local', 'share', 'gestalt', 'lens-models');
40
+ }
41
+ /**
42
+ * 화자 구분에 쓰는 두 모델. sherpa-onnx가 GitHub 릴리스로 내준 파일이라 토큰 없이 받는다.
43
+ * 구간 분할은 pyannote segmentation 3.0을 ONNX로 옮긴 것이고 화자 임베딩은 wespeaker ResNet34(VoxCeleb)다.
44
+ * 릴리스 태그가 버전으로 고정돼 있지 않아 받은 파일의 sha256을 여기 박아 둔 값과 맞춰 본다
45
+ */
46
+ export const DIARIZE_MODELS = {
47
+ segmentation: {
48
+ archive: 'https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-segmentation-models/sherpa-onnx-pyannote-segmentation-3-0.tar.bz2',
49
+ /** 압축 파일의 해시다. 풀린 model.onnx가 아니다 */
50
+ sha256: '24615ee884c897d9d2ba09bb4d30da6bb1b15e685065962db5b02e76e4996488',
51
+ bytes: 6_958_444,
52
+ file: join('sherpa-onnx-pyannote-segmentation-3-0', 'model.onnx'),
53
+ },
54
+ embedding: {
55
+ url: 'https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-recongition-models/wespeaker_en_voxceleb_resnet34.onnx',
56
+ sha256: '5ef208a9da1453335308a6b6f4e6dfbd7e183a38b604de0a57664f45d257fe94',
57
+ bytes: 26_534_365,
58
+ file: 'wespeaker_en_voxceleb_resnet34.onnx',
59
+ },
60
+ };
61
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/lens/python.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,eAAe,GAC1B,mBAAmB,SAAS,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,mCAAmC;IACtG,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,mEAAmE,CAAC;AAEzG;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,CAAC,GAAG,sCAAsC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,UAAU,CAAC,CAAC,CAAC,CAAE,4CAA4C,eAAe,EAAE,CAAC;AACtF,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,aAAa,CAAC,MAAyB,OAAO,CAAC,GAAG;IAChE,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY,EAAE;QACZ,OAAO,EACL,mIAAmI;QACrI,qCAAqC;QACrC,MAAM,EAAE,kEAAkE;QAC1E,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,IAAI,CAAC,uCAAuC,EAAE,YAAY,CAAC;KAClE;IACD,SAAS,EAAE;QACT,GAAG,EAAE,wHAAwH;QAC7H,MAAM,EAAE,kEAAkE;QAC1E,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,qCAAqC;KAC5C;CACO,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 웹 글 본문을 문단으로 뽑는 파이썬 스크립트. trafilatura로 광고와 메뉴를 걷어내고 XML로 받아(정밀 모드는 소제목을 버려서 기본 모드를 쓴다)
3
+ * 제목(head), 문단(p, quote, code), 목록(list), 표(table)를 순서대로 문단 단위로 낸다.
4
+ * 표는 칸 글자를 그대로 table-<n>으로 두고 그 자리에 캡션 문단을 하나 둔다.
5
+ * trafilatura가 링크 밀도 때문에 버린 목록은 ':'로 끝나는 문단 뒤에서 원문 HTML로 되살리고 rescued를 붙인다.
6
+ * 결과 JSON은 stdout 마지막 줄 하나다. 백틱과 달러 중괄호가 없어야 String.raw 안에 그대로 실린다
7
+ */
8
+ export declare const WEB_EXTRACT_PY: string;
9
+ //# sourceMappingURL=web-extract-py.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-extract-py.d.ts","sourceRoot":"","sources":["../../../src/lens/web-extract-py.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAyG1B,CAAC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * 웹 글 본문을 문단으로 뽑는 파이썬 스크립트. trafilatura로 광고와 메뉴를 걷어내고 XML로 받아(정밀 모드는 소제목을 버려서 기본 모드를 쓴다)
3
+ * 제목(head), 문단(p, quote, code), 목록(list), 표(table)를 순서대로 문단 단위로 낸다.
4
+ * 표는 칸 글자를 그대로 table-<n>으로 두고 그 자리에 캡션 문단을 하나 둔다.
5
+ * trafilatura가 링크 밀도 때문에 버린 목록은 ':'로 끝나는 문단 뒤에서 원문 HTML로 되살리고 rescued를 붙인다.
6
+ * 결과 JSON은 stdout 마지막 줄 하나다. 백틱과 달러 중괄호가 없어야 String.raw 안에 그대로 실린다
7
+ */
8
+ export const WEB_EXTRACT_PY = String.raw `import json, sys
9
+ import xml.etree.ElementTree as ET
10
+
11
+ # 신뢰할 수 없는 HTML이 메모리를 다 먹지 않게 주소 공간을 4GB로 묶는다. macOS는 RLIMIT_AS를 거부해서 Linux에서만 건다
12
+ if sys.platform.startswith("linux"):
13
+ try:
14
+ import resource
15
+ _, hard = resource.getrlimit(resource.RLIMIT_AS)
16
+ if hard == resource.RLIM_INFINITY or hard > (4 << 30):
17
+ resource.setrlimit(resource.RLIMIT_AS, (4 << 30, hard))
18
+ except (ImportError, OSError, ValueError):
19
+ pass
20
+
21
+ import trafilatura
22
+
23
+ html_path, url = sys.argv[1], sys.argv[2]
24
+ with open(html_path, "rb") as f:
25
+ raw = f.read()
26
+ html = raw.decode("utf-8", errors="replace")
27
+ meta = trafilatura.extract_metadata(html, default_url=url)
28
+ xml = trafilatura.extract(html, url=url, output_format="xml", include_tables=True, include_comments=False, include_links=False, include_images=False)
29
+ units, tables = [], []
30
+ if xml:
31
+ root = ET.fromstring(xml)
32
+ body = root.find("main")
33
+ if body is None:
34
+ body = root
35
+ def text_of(el):
36
+ return " ".join("".join(el.itertext()).split())
37
+ for el in body:
38
+ tag = el.tag
39
+ if tag == "head":
40
+ t = text_of(el)
41
+ if t:
42
+ units.append({"role": "heading", "text": t})
43
+ elif tag in ("p", "quote", "code"):
44
+ t = text_of(el)
45
+ if t:
46
+ units.append({"role": "para", "text": t})
47
+ elif tag == "list":
48
+ items = [text_of(i) for i in el.findall("item")]
49
+ items = [i for i in items if i]
50
+ if items:
51
+ units.append({"role": "para", "text": " / ".join(items)})
52
+ elif tag == "table":
53
+ rows = []
54
+ for row in el.findall("row"):
55
+ cells = [text_of(c) for c in row.findall("cell")]
56
+ if any(cells):
57
+ rows.append(cells)
58
+ if rows:
59
+ width = max(len(r) for r in rows)
60
+ rows = [r + [""] * (width - len(r)) for r in rows]
61
+ n = len(tables) + 1
62
+ tid = f"table-{n}"
63
+ caption = f"Table {n}: " + " | ".join(rows[0])[:120]
64
+ tables.append({"id": tid, "number": str(n), "caption": caption, "rows": rows, "grid": "ok" if width >= 2 else "loose", "ref_unit": len(units)})
65
+ units.append({"role": "caption", "ref": tid, "text": caption})
66
+ else:
67
+ t = text_of(el)
68
+ if t:
69
+ units.append({"role": "para", "text": t})
70
+ # trafilatura는 링크만으로 된 목록을 링크 밀도 때문에 버린다. ':'로 끝나는 문단 바로 뒤에 목록이 없으면
71
+ # 원문 HTML에서 그 문단 다음 목록을 찾아 항목을 되살린다
72
+ try:
73
+ import lxml.html
74
+ doc = lxml.html.fromstring(html)
75
+ paras = [(" ".join(p.text_content().split()), p) for p in doc.iter("p")]
76
+ rescued = []
77
+ for k, u in enumerate(units):
78
+ rescued.append(u)
79
+ if u["role"] != "para" or not u["text"].endswith(":"):
80
+ continue
81
+ nxt = units[k + 1] if k + 1 < len(units) else None
82
+ if nxt is not None and nxt["role"] == "para" and " / " in nxt["text"]:
83
+ continue
84
+ hit = next((el for t, el in paras if t == u["text"]), None)
85
+ sib = hit.getnext() if hit is not None else None
86
+ while sib is not None and not isinstance(sib.tag, str):
87
+ sib = sib.getnext()
88
+ if sib is None or sib.tag not in ("ul", "ol"):
89
+ continue
90
+ items = [" ".join(li.text_content().split()) for li in sib.findall("li")]
91
+ items = [i for i in items if i]
92
+ if items:
93
+ rescued.append({"role": "para", "text": " / ".join(items), "rescued": True})
94
+ units = rescued
95
+ except Exception:
96
+ pass
97
+ for i, u in enumerate(units):
98
+ u["i"] = i
99
+ out = {
100
+ "title": (meta.title if meta and meta.title else "") or "",
101
+ "author": (meta.author if meta and meta.author else "") or "",
102
+ "date": (meta.date if meta and meta.date else "") or "",
103
+ "site": (meta.sitename if meta and meta.sitename else "") or "",
104
+ "lang": (meta.language if meta and getattr(meta, "language", None) else "") or "",
105
+ "units": units,
106
+ "tables": tables,
107
+ }
108
+ # 목록을 되살리면 문단 번호가 밀려서 표 캡션 자리는 번호가 아니라 ref로 다시 찾는다
109
+ for t in tables:
110
+ t["unit"] = next(u["i"] for u in units if u.get("ref") == t["id"])
111
+ t.pop("ref_unit", None)
112
+ sys.stdout.write("\n" + json.dumps(out) + "\n")
113
+ `;
114
+ //# sourceMappingURL=web-extract-py.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-extract-py.js","sourceRoot":"","sources":["../../../src/lens/web-extract-py.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGvC,CAAC"}
@@ -9,6 +9,14 @@ export declare function buildResolutionPrompt(topic: string, rounds: {
9
9
  question: string;
10
10
  response: string | null;
11
11
  }[], projectType: 'greenfield' | 'brownfield'): string;
12
+ /**
13
+ * 다시 채점하기를 요청할 때 쓰는 프롬프트. 대화 기록만 담는다.
14
+ * 앞 점수나 판정을 보여주면 그 숫자를 따라가서 흔들림이 안 드러난다.
15
+ */
16
+ export declare function buildRescorePrompt(topic: string, rounds: {
17
+ question: string;
18
+ response: string | null;
19
+ }[], projectType: 'greenfield' | 'brownfield'): string;
12
20
  export declare function buildSpecPrompt(topic: string, rounds: {
13
21
  question: string;
14
22
  response: string;
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,eAAO,MAAM,iBAAiB,qtFAmB6B,CAAC;AAE5D,eAAO,MAAM,uBAAuB,ioHAiBf,CAAC;AAEtB,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,gBAAgB,EAC3B,cAAc,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,EAC/D,WAAW,EAAE,YAAY,GAAG,YAAY,GACvC,MAAM,CAkBR;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,EACvD,WAAW,EAAE,YAAY,GAAG,YAAY,GACvC,MAAM,CAwBR;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,EAChD,WAAW,EAAE,YAAY,GAAG,YAAY,GACvC,MAAM,CAuBR"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,eAAO,MAAM,iBAAiB,qtFAmB6B,CAAC;AAE5D,eAAO,MAAM,uBAAuB,ioHAiBf,CAAC;AAEtB,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,gBAAgB,EAC3B,cAAc,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,EAC/D,WAAW,EAAE,YAAY,GAAG,YAAY,GACvC,MAAM,CAkBR;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,EACvD,WAAW,EAAE,YAAY,GAAG,YAAY,GACvC,MAAM,CAwBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,EACvD,WAAW,EAAE,YAAY,GAAG,YAAY,GACvC,MAAM,CAER;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,EAChD,WAAW,EAAE,YAAY,GAAG,YAAY,GACvC,MAAM,CAuBR"}
@@ -79,6 +79,13 @@ Respond with ONLY a JSON object:
79
79
  "reasoning": "Brief analysis"
80
80
  }`;
81
81
  }
82
+ /**
83
+ * 다시 채점하기를 요청할 때 쓰는 프롬프트. 대화 기록만 담는다.
84
+ * 앞 점수나 판정을 보여주면 그 숫자를 따라가서 흔들림이 안 드러난다.
85
+ */
86
+ export function buildRescorePrompt(topic, rounds, projectType) {
87
+ return buildResolutionPrompt(topic, rounds, projectType);
88
+ }
82
89
  export function buildSpecPrompt(topic, rounds, projectType) {
83
90
  const history = rounds
84
91
  .map((r, i) => `Q${i + 1}: ${r.question}\nA${i + 1}: ${r.response}`)
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/llm/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;2DAmB0B,CAAC;AAE5D,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;EAiBrC,iBAAiB,EAAE,CAAC;AAEtB,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,SAA2B,EAC3B,cAA+D,EAC/D,WAAwC;IAExC,MAAM,QAAQ,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,cAAc;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;SACvF,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,WAAW,KAAK;gBACT,WAAW;yBACF,SAAS;YACtB,QAAQ;;EAElB,OAAO,CAAC,CAAC,CAAC,qBAAqB,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,mDAAmD,SAAS;;;;;qEAK1C,SAAS;EAC5E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,MAAuD,EACvD,WAAwC;IAExC,MAAM,OAAO,GAAG,MAAM;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,+CAA+C,KAAK,MAAM,WAAW;;;EAG5E,OAAO;;;;;;;;;;;IAWL,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE;;;EAGlE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,MAAgD,EAChD,WAAwC;IAExC,MAAM,OAAO,GAAG,MAAM;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,gFAAgF,KAAK,MAAM,WAAW;;;EAG7G,OAAO;;;;;;;;;;;;;;EAcP,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/llm/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;2DAmB0B,CAAC;AAE5D,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;EAiBrC,iBAAiB,EAAE,CAAC;AAEtB,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,SAA2B,EAC3B,cAA+D,EAC/D,WAAwC;IAExC,MAAM,QAAQ,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,cAAc;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;SACvF,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,WAAW,KAAK;gBACT,WAAW;yBACF,SAAS;YACtB,QAAQ;;EAElB,OAAO,CAAC,CAAC,CAAC,qBAAqB,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,mDAAmD,SAAS;;;;;qEAK1C,SAAS;EAC5E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,MAAuD,EACvD,WAAwC;IAExC,MAAM,OAAO,GAAG,MAAM;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,+CAA+C,KAAK,MAAM,WAAW;;;EAG5E,OAAO;;;;;;;;;;;IAWL,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE;;;EAGlE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,MAAuD,EACvD,WAAwC;IAExC,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,MAAgD,EAChD,WAAwC;IAExC,MAAM,OAAO,GAAG,MAAM;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,gFAAgF,KAAK,MAAM,WAAW;;;EAG7G,OAAO;;;;;;;;;;;;;;EAcP,CAAC;AACH,CAAC"}
@@ -28,11 +28,14 @@ export declare const interviewInputSchema: z.ZodObject<{
28
28
  contextClarity?: number | undefined;
29
29
  contradictions?: string[] | undefined;
30
30
  }>>;
31
+ rescore: z.ZodOptional<z.ZodBoolean>;
32
+ rescoreMode: z.ZodOptional<z.ZodEnum<["isolated", "same-context"]>>;
31
33
  compressedSummary: z.ZodOptional<z.ZodString>;
32
34
  force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
33
35
  }, "strip", z.ZodTypeAny, {
34
36
  force: boolean;
35
37
  action: "complete" | "start" | "respond" | "score" | "compress";
38
+ rescore?: boolean | undefined;
36
39
  sessionId?: string | undefined;
37
40
  response?: string | undefined;
38
41
  topic?: string | undefined;
@@ -46,9 +49,11 @@ export declare const interviewInputSchema: z.ZodObject<{
46
49
  } | undefined;
47
50
  cwd?: string | undefined;
48
51
  generatedQuestion?: string | undefined;
52
+ rescoreMode?: "isolated" | "same-context" | undefined;
49
53
  compressedSummary?: string | undefined;
50
54
  }, {
51
55
  action: "complete" | "start" | "respond" | "score" | "compress";
56
+ rescore?: boolean | undefined;
52
57
  sessionId?: string | undefined;
53
58
  response?: string | undefined;
54
59
  topic?: string | undefined;
@@ -63,6 +68,7 @@ export declare const interviewInputSchema: z.ZodObject<{
63
68
  } | undefined;
64
69
  cwd?: string | undefined;
65
70
  generatedQuestion?: string | undefined;
71
+ rescoreMode?: "isolated" | "same-context" | undefined;
66
72
  compressedSummary?: string | undefined;
67
73
  }>;
68
74
  export type InterviewInput = z.infer<typeof interviewInputSchema>;
@@ -785,15 +791,15 @@ export declare const executeInputSchema: z.ZodObject<{
785
791
  perspectives: z.ZodOptional<z.ZodArray<z.ZodObject<{
786
792
  agentName: z.ZodString;
787
793
  perspective: z.ZodString;
788
- confidence: z.ZodNumber;
794
+ confidence: z.ZodOptional<z.ZodNumber>;
789
795
  }, "strip", z.ZodTypeAny, {
790
- confidence: number;
791
796
  agentName: string;
792
797
  perspective: string;
798
+ confidence?: number | undefined;
793
799
  }, {
794
- confidence: number;
795
800
  agentName: string;
796
801
  perspective: string;
802
+ confidence?: number | undefined;
797
803
  }>, "many">>;
798
804
  consensus: z.ZodOptional<z.ZodObject<{
799
805
  consensus: z.ZodString;
@@ -801,31 +807,31 @@ export declare const executeInputSchema: z.ZodObject<{
801
807
  perspectives: z.ZodArray<z.ZodObject<{
802
808
  agentName: z.ZodString;
803
809
  perspective: z.ZodString;
804
- confidence: z.ZodNumber;
810
+ confidence: z.ZodOptional<z.ZodNumber>;
805
811
  }, "strip", z.ZodTypeAny, {
806
- confidence: number;
807
812
  agentName: string;
808
813
  perspective: string;
814
+ confidence?: number | undefined;
809
815
  }, {
810
- confidence: number;
811
816
  agentName: string;
812
817
  perspective: string;
818
+ confidence?: number | undefined;
813
819
  }>, "many">;
814
820
  }, "strip", z.ZodTypeAny, {
815
821
  consensus: string;
816
822
  conflictResolutions: string[];
817
823
  perspectives: {
818
- confidence: number;
819
824
  agentName: string;
820
825
  perspective: string;
826
+ confidence?: number | undefined;
821
827
  }[];
822
828
  }, {
823
829
  consensus: string;
824
830
  conflictResolutions: string[];
825
831
  perspectives: {
826
- confidence: number;
827
832
  agentName: string;
828
833
  perspective: string;
834
+ confidence?: number | undefined;
829
835
  }[];
830
836
  }>>;
831
837
  lateralResult: z.ZodOptional<z.ZodObject<{
@@ -1335,18 +1341,18 @@ export declare const executeInputSchema: z.ZodObject<{
1335
1341
  consensus: string;
1336
1342
  conflictResolutions: string[];
1337
1343
  perspectives: {
1338
- confidence: number;
1339
1344
  agentName: string;
1340
1345
  perspective: string;
1346
+ confidence?: number | undefined;
1341
1347
  }[];
1342
1348
  } | undefined;
1343
1349
  client?: "claude-code" | "codex" | "both" | "grok" | undefined;
1344
1350
  sessionId?: string | undefined;
1345
1351
  cwd?: string | undefined;
1346
1352
  perspectives?: {
1347
- confidence: number;
1348
1353
  agentName: string;
1349
1354
  perspective: string;
1355
+ confidence?: number | undefined;
1350
1356
  }[] | undefined;
1351
1357
  specPatch?: {
1352
1358
  constraints?: string[] | undefined;
@@ -1592,9 +1598,9 @@ export declare const executeInputSchema: z.ZodObject<{
1592
1598
  consensus: string;
1593
1599
  conflictResolutions: string[];
1594
1600
  perspectives: {
1595
- confidence: number;
1596
1601
  agentName: string;
1597
1602
  perspective: string;
1603
+ confidence?: number | undefined;
1598
1604
  }[];
1599
1605
  } | undefined;
1600
1606
  client?: "claude-code" | "codex" | "both" | "grok" | undefined;
@@ -1602,9 +1608,9 @@ export declare const executeInputSchema: z.ZodObject<{
1602
1608
  cwd?: string | undefined;
1603
1609
  verbose?: boolean | undefined;
1604
1610
  perspectives?: {
1605
- confidence: number;
1606
1611
  agentName: string;
1607
1612
  perspective: string;
1613
+ confidence?: number | undefined;
1608
1614
  }[] | undefined;
1609
1615
  specPatch?: {
1610
1616
  constraints?: string[] | undefined;
@@ -2362,15 +2368,15 @@ export declare const executeToolSchema: {
2362
2368
  perspectives: z.ZodOptional<z.ZodArray<z.ZodObject<{
2363
2369
  agentName: z.ZodString;
2364
2370
  perspective: z.ZodString;
2365
- confidence: z.ZodNumber;
2371
+ confidence: z.ZodOptional<z.ZodNumber>;
2366
2372
  }, "strip", z.ZodTypeAny, {
2367
- confidence: number;
2368
2373
  agentName: string;
2369
2374
  perspective: string;
2375
+ confidence?: number | undefined;
2370
2376
  }, {
2371
- confidence: number;
2372
2377
  agentName: string;
2373
2378
  perspective: string;
2379
+ confidence?: number | undefined;
2374
2380
  }>, "many">>;
2375
2381
  consensus: z.ZodOptional<z.ZodObject<{
2376
2382
  consensus: z.ZodString;
@@ -2378,31 +2384,31 @@ export declare const executeToolSchema: {
2378
2384
  perspectives: z.ZodArray<z.ZodObject<{
2379
2385
  agentName: z.ZodString;
2380
2386
  perspective: z.ZodString;
2381
- confidence: z.ZodNumber;
2387
+ confidence: z.ZodOptional<z.ZodNumber>;
2382
2388
  }, "strip", z.ZodTypeAny, {
2383
- confidence: number;
2384
2389
  agentName: string;
2385
2390
  perspective: string;
2391
+ confidence?: number | undefined;
2386
2392
  }, {
2387
- confidence: number;
2388
2393
  agentName: string;
2389
2394
  perspective: string;
2395
+ confidence?: number | undefined;
2390
2396
  }>, "many">;
2391
2397
  }, "strip", z.ZodTypeAny, {
2392
2398
  consensus: string;
2393
2399
  conflictResolutions: string[];
2394
2400
  perspectives: {
2395
- confidence: number;
2396
2401
  agentName: string;
2397
2402
  perspective: string;
2403
+ confidence?: number | undefined;
2398
2404
  }[];
2399
2405
  }, {
2400
2406
  consensus: string;
2401
2407
  conflictResolutions: string[];
2402
2408
  perspectives: {
2403
- confidence: number;
2404
2409
  agentName: string;
2405
2410
  perspective: string;
2411
+ confidence?: number | undefined;
2406
2412
  }[];
2407
2413
  }>>;
2408
2414
  lateralResult: z.ZodOptional<z.ZodObject<{
@@ -3517,6 +3523,7 @@ export declare const digestInputSchema: z.ZodObject<{
3517
3523
  slug: z.ZodString;
3518
3524
  repoRoot: z.ZodOptional<z.ZodString>;
3519
3525
  inlineFrames: z.ZodOptional<z.ZodBoolean>;
3526
+ omitCrops: z.ZodOptional<z.ZodBoolean>;
3520
3527
  items: z.ZodOptional<z.ZodArray<z.ZodObject<{
3521
3528
  path: z.ZodString;
3522
3529
  text: z.ZodString;
@@ -3542,6 +3549,7 @@ export declare const digestInputSchema: z.ZodObject<{
3542
3549
  repoRoot?: string | undefined;
3543
3550
  dryRun?: boolean | undefined;
3544
3551
  inlineFrames?: boolean | undefined;
3552
+ omitCrops?: boolean | undefined;
3545
3553
  }, {
3546
3554
  action: "validate" | "render" | "prose_extract" | "prose_apply";
3547
3555
  slug: string;
@@ -3553,6 +3561,7 @@ export declare const digestInputSchema: z.ZodObject<{
3553
3561
  repoRoot?: string | undefined;
3554
3562
  dryRun?: boolean | undefined;
3555
3563
  inlineFrames?: boolean | undefined;
3564
+ omitCrops?: boolean | undefined;
3556
3565
  }>;
3557
3566
  export type DigestInput = z.infer<typeof digestInputSchema>;
3558
3567
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/schemas.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,14 @@ export const interviewInputSchema = guardObject(z.object({
45
45
  })
46
46
  .optional()
47
47
  .describe('Resolution scores computed by the caller LLM (passthrough mode)'),
48
+ rescore: z
49
+ .boolean()
50
+ .optional()
51
+ .describe('score only: rescorePrompt로 다시 채점한 점수를 resolutionScore에 담아 보낼 때 true. 처음 기준값을 넘은 뒤 인터뷰마다 한 번만 받는다.'),
52
+ rescoreMode: z
53
+ .enum(['isolated', 'same-context'])
54
+ .optional()
55
+ .describe("rescore 전용. 인터뷰 맥락이 없는 서브에이전트가 채점했으면 'isolated', 같은 대화에서 다시 채점했으면 'same-context'. 생략하면 same-context로 남긴다."),
48
56
  compressedSummary: z
49
57
  .string()
50
58
  .optional()
@@ -53,7 +61,7 @@ export const interviewInputSchema = guardObject(z.object({
53
61
  .boolean()
54
62
  .optional()
55
63
  .default(false)
56
- .describe('complete only: 해상도가 임계값(0.8)에 못 미쳐도 완료한다. 사용자가 명시적으로 넘기기로 한 경우에만 쓴다. 세션과 이벤트에 forced로 남는다.'),
64
+ .describe('complete only: 해상도가 기준값(interview.resolutionThreshold, 기본 0.8)에 못 미치거나 gate의 다시 채점을 통과하지 못해도 완료한다. 사용자가 명시적으로 넘기기로 한 경우에만 쓴다. 세션과 이벤트에 forced로 남는다.'),
57
65
  }));
58
66
  // ─── Spec Tool ──────────────────────────────────────────────────
59
67
  export const specInputSchema = guardObject(z.object({
@@ -342,7 +350,7 @@ export const executeInputSchema = guardObject(z.object({
342
350
  .array(z.object({
343
351
  agentName: z.string(),
344
352
  perspective: z.string(),
345
- confidence: z.number().min(0).max(1),
353
+ confidence: z.number().min(0).max(1).optional(),
346
354
  }))
347
355
  .optional()
348
356
  .describe('Role perspectives from parallel LLM calls (for role_consensus action, call 1)'),
@@ -353,7 +361,7 @@ export const executeInputSchema = guardObject(z.object({
353
361
  perspectives: z.array(z.object({
354
362
  agentName: z.string(),
355
363
  perspective: z.string(),
356
- confidence: z.number().min(0).max(1),
364
+ confidence: z.number().min(0).max(1).optional(),
357
365
  })),
358
366
  })
359
367
  .optional()
@@ -975,6 +983,10 @@ export const digestInputSchema = guardObject(z.object({
975
983
  .boolean()
976
984
  .optional()
977
985
  .describe('render: 프레임을 HTML 안에 data URI로 넣는다. 한 장 5MB, 합계 15MB까지'),
986
+ omitCrops: z
987
+ .boolean()
988
+ .optional()
989
+ .describe('render: 읽기 렌즈 리포트에서 원문 쪽 그림과 표, 그림 크롭을 빼고 그린다. 남에게 공유할 HTML을 만들 때 쓴다'),
978
990
  items: z
979
991
  .array(z.object({
980
992
  path: z.string().describe('prose_extract가 준 path 그대로'),