@tienne/gestalt 0.107.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 (159) 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/lens/SKILL.md +375 -0
  10. package/dist/schemas/gestalt.schema.json +13 -0
  11. package/dist/src/cli/commands/digest.d.ts +2 -0
  12. package/dist/src/cli/commands/digest.d.ts.map +1 -1
  13. package/dist/src/cli/commands/digest.js +6 -0
  14. package/dist/src/cli/commands/digest.js.map +1 -1
  15. package/dist/src/cli/commands/lens.d.ts +27 -0
  16. package/dist/src/cli/commands/lens.d.ts.map +1 -0
  17. package/dist/src/cli/commands/lens.js +200 -0
  18. package/dist/src/cli/commands/lens.js.map +1 -0
  19. package/dist/src/cli/index.d.ts.map +1 -1
  20. package/dist/src/cli/index.js +37 -0
  21. package/dist/src/cli/index.js.map +1 -1
  22. package/dist/src/digest/format.d.ts.map +1 -1
  23. package/dist/src/digest/format.js +1 -0
  24. package/dist/src/digest/format.js.map +1 -1
  25. package/dist/src/digest/frames.d.ts.map +1 -1
  26. package/dist/src/digest/frames.js +1 -1
  27. package/dist/src/digest/frames.js.map +1 -1
  28. package/dist/src/digest/ingest.d.ts +8 -1
  29. package/dist/src/digest/ingest.d.ts.map +1 -1
  30. package/dist/src/digest/ingest.js +2 -1
  31. package/dist/src/digest/ingest.js.map +1 -1
  32. package/dist/src/digest/lens-schema.d.ts +542 -0
  33. package/dist/src/digest/lens-schema.d.ts.map +1 -0
  34. package/dist/src/digest/lens-schema.js +108 -0
  35. package/dist/src/digest/lens-schema.js.map +1 -0
  36. package/dist/src/digest/lens-source.d.ts +260 -0
  37. package/dist/src/digest/lens-source.d.ts.map +1 -0
  38. package/dist/src/digest/lens-source.js +92 -0
  39. package/dist/src/digest/lens-source.js.map +1 -0
  40. package/dist/src/digest/lens-widget-schema.d.ts +1225 -0
  41. package/dist/src/digest/lens-widget-schema.d.ts.map +1 -0
  42. package/dist/src/digest/lens-widget-schema.js +80 -0
  43. package/dist/src/digest/lens-widget-schema.js.map +1 -0
  44. package/dist/src/digest/lens-widgets.d.ts +25 -0
  45. package/dist/src/digest/lens-widgets.d.ts.map +1 -0
  46. package/dist/src/digest/lens-widgets.js +225 -0
  47. package/dist/src/digest/lens-widgets.js.map +1 -0
  48. package/dist/src/digest/lint-lens-context.d.ts +102 -0
  49. package/dist/src/digest/lint-lens-context.d.ts.map +1 -0
  50. package/dist/src/digest/lint-lens-context.js +192 -0
  51. package/dist/src/digest/lint-lens-context.js.map +1 -0
  52. package/dist/src/digest/lint-lens.d.ts +17 -0
  53. package/dist/src/digest/lint-lens.d.ts.map +1 -0
  54. package/dist/src/digest/lint-lens.js +237 -0
  55. package/dist/src/digest/lint-lens.js.map +1 -0
  56. package/dist/src/digest/lint.d.ts +14 -0
  57. package/dist/src/digest/lint.d.ts.map +1 -1
  58. package/dist/src/digest/lint.js +156 -2
  59. package/dist/src/digest/lint.js.map +1 -1
  60. package/dist/src/digest/merge.d.ts.map +1 -1
  61. package/dist/src/digest/merge.js +11 -2
  62. package/dist/src/digest/merge.js.map +1 -1
  63. package/dist/src/digest/prose.d.ts.map +1 -1
  64. package/dist/src/digest/prose.js +8 -0
  65. package/dist/src/digest/prose.js.map +1 -1
  66. package/dist/src/digest/render-html.d.ts +5 -0
  67. package/dist/src/digest/render-html.d.ts.map +1 -1
  68. package/dist/src/digest/render-html.js +93 -18
  69. package/dist/src/digest/render-html.js.map +1 -1
  70. package/dist/src/digest/render-lens.d.ts +61 -0
  71. package/dist/src/digest/render-lens.d.ts.map +1 -0
  72. package/dist/src/digest/render-lens.js +273 -0
  73. package/dist/src/digest/render-lens.js.map +1 -0
  74. package/dist/src/digest/render-md.d.ts +5 -0
  75. package/dist/src/digest/render-md.d.ts.map +1 -1
  76. package/dist/src/digest/render-md.js +116 -7
  77. package/dist/src/digest/render-md.js.map +1 -1
  78. package/dist/src/digest/render-widgets.d.ts +13 -0
  79. package/dist/src/digest/render-widgets.d.ts.map +1 -0
  80. package/dist/src/digest/render-widgets.js +197 -0
  81. package/dist/src/digest/render-widgets.js.map +1 -0
  82. package/dist/src/digest/render.d.ts +2 -0
  83. package/dist/src/digest/render.d.ts.map +1 -1
  84. package/dist/src/digest/render.js +17 -3
  85. package/dist/src/digest/render.js.map +1 -1
  86. package/dist/src/digest/schema.d.ts +14683 -2022
  87. package/dist/src/digest/schema.d.ts.map +1 -1
  88. package/dist/src/digest/schema.js +67 -6
  89. package/dist/src/digest/schema.js.map +1 -1
  90. package/dist/src/digest/server.d.ts +2 -1
  91. package/dist/src/digest/server.d.ts.map +1 -1
  92. package/dist/src/digest/server.js +26 -11
  93. package/dist/src/digest/server.js.map +1 -1
  94. package/dist/src/digest/viewer-js.d.ts.map +1 -1
  95. package/dist/src/digest/viewer-js.js +120 -4
  96. package/dist/src/digest/viewer-js.js.map +1 -1
  97. package/dist/src/lens/attach.d.ts +436 -0
  98. package/dist/src/lens/attach.d.ts.map +1 -0
  99. package/dist/src/lens/attach.js +46 -0
  100. package/dist/src/lens/attach.js.map +1 -0
  101. package/dist/src/lens/ingest.d.ts +75 -0
  102. package/dist/src/lens/ingest.d.ts.map +1 -0
  103. package/dist/src/lens/ingest.js +558 -0
  104. package/dist/src/lens/ingest.js.map +1 -0
  105. package/dist/src/lens/kind.d.ts +11 -0
  106. package/dist/src/lens/kind.d.ts.map +1 -0
  107. package/dist/src/lens/kind.js +59 -0
  108. package/dist/src/lens/kind.js.map +1 -0
  109. package/dist/src/lens/knowledge.d.ts +53 -0
  110. package/dist/src/lens/knowledge.d.ts.map +1 -0
  111. package/dist/src/lens/knowledge.js +202 -0
  112. package/dist/src/lens/knowledge.js.map +1 -0
  113. package/dist/src/lens/notes.d.ts +73 -0
  114. package/dist/src/lens/notes.d.ts.map +1 -0
  115. package/dist/src/lens/notes.js +276 -0
  116. package/dist/src/lens/notes.js.map +1 -0
  117. package/dist/src/lens/panels.d.ts +10 -0
  118. package/dist/src/lens/panels.d.ts.map +1 -0
  119. package/dist/src/lens/panels.js +25 -0
  120. package/dist/src/lens/panels.js.map +1 -0
  121. package/dist/src/lens/pdf-extract-py.d.ts +15 -0
  122. package/dist/src/lens/pdf-extract-py.d.ts.map +1 -0
  123. package/dist/src/lens/pdf-extract-py.js +414 -0
  124. package/dist/src/lens/pdf-extract-py.js.map +1 -0
  125. package/dist/src/lens/podcast.d.ts +36 -0
  126. package/dist/src/lens/podcast.d.ts.map +1 -0
  127. package/dist/src/lens/podcast.js +104 -0
  128. package/dist/src/lens/podcast.js.map +1 -0
  129. package/dist/src/lens/python.d.ts +33 -0
  130. package/dist/src/lens/python.d.ts.map +1 -0
  131. package/dist/src/lens/python.js +61 -0
  132. package/dist/src/lens/python.js.map +1 -0
  133. package/dist/src/lens/web-extract-py.d.ts +9 -0
  134. package/dist/src/lens/web-extract-py.d.ts.map +1 -0
  135. package/dist/src/lens/web-extract-py.js +114 -0
  136. package/dist/src/lens/web-extract-py.js.map +1 -0
  137. package/dist/src/mcp/schemas.d.ts +3 -0
  138. package/dist/src/mcp/schemas.d.ts.map +1 -1
  139. package/dist/src/mcp/schemas.js +4 -0
  140. package/dist/src/mcp/schemas.js.map +1 -1
  141. package/dist/src/mcp/server.js +1 -1
  142. package/dist/src/mcp/server.js.map +1 -1
  143. package/dist/src/mcp/tools/digest-passthrough.d.ts.map +1 -1
  144. package/dist/src/mcp/tools/digest-passthrough.js +5 -0
  145. package/dist/src/mcp/tools/digest-passthrough.js.map +1 -1
  146. package/dist/src/research/source-create.d.ts +6 -1
  147. package/dist/src/research/source-create.d.ts.map +1 -1
  148. package/dist/src/research/source-create.js +41 -10
  149. package/dist/src/research/source-create.js.map +1 -1
  150. package/package.json +1 -1
  151. package/plugin/.codex-plugin/plugin.json +1 -1
  152. package/plugin/.mcp.json +1 -1
  153. package/plugin/mcp.json +1 -1
  154. package/plugin/role-agents/lens-context/AGENT.md +94 -0
  155. package/plugin/role-agents/lens-link/AGENT.md +83 -0
  156. package/plugin/role-agents/lens-reader/AGENT.md +230 -0
  157. package/plugin/skills/_shared/proactive-routing.md +1 -0
  158. package/plugin/skills/lens/SKILL.md +375 -0
  159. package/schemas/gestalt.schema.json +13 -0
@@ -0,0 +1,542 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * 읽기 렌즈(논문, 웹 글, 팟캐스트)가 리포트에 더하는 칸.
4
+ * 영상 리포트와 같은 reports[]에 들어가서 전부 선택 칸이고 자료 종류별로 반드시 있어야 하는 칸은 lint가 본다
5
+ */
6
+ /** 원문 표의 한 칸. row와 col은 머리줄까지 센 0부터의 자리다 */
7
+ export declare const cellRefSchema: z.ZodObject<{
8
+ table: z.ZodString;
9
+ row: z.ZodNumber;
10
+ col: z.ZodNumber;
11
+ }, "strip", z.ZodTypeAny, {
12
+ row: number;
13
+ col: number;
14
+ table: string;
15
+ }, {
16
+ row: number;
17
+ col: number;
18
+ table: string;
19
+ }>;
20
+ /** 의심 표시와 한계 단락의 근거. 원문 표 칸이나 원문 문단 범위다 */
21
+ export declare const evidenceSchema: z.ZodUnion<[z.ZodObject<{
22
+ table: z.ZodString;
23
+ row: z.ZodNumber;
24
+ col: z.ZodNumber;
25
+ }, "strip", z.ZodTypeAny, {
26
+ row: number;
27
+ col: number;
28
+ table: string;
29
+ }, {
30
+ row: number;
31
+ col: number;
32
+ table: string;
33
+ }>, z.ZodObject<{
34
+ cite: z.ZodEffects<z.ZodObject<{
35
+ key: z.ZodNumber;
36
+ from: z.ZodNumber;
37
+ to: z.ZodNumber;
38
+ }, "strip", z.ZodTypeAny, {
39
+ key: number;
40
+ from: number;
41
+ to: number;
42
+ }, {
43
+ key: number;
44
+ from: number;
45
+ to: number;
46
+ }>, {
47
+ key: number;
48
+ from: number;
49
+ to: number;
50
+ }, {
51
+ key: number;
52
+ from: number;
53
+ to: number;
54
+ }>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ cite: {
57
+ key: number;
58
+ from: number;
59
+ to: number;
60
+ };
61
+ }, {
62
+ cite: {
63
+ key: number;
64
+ from: number;
65
+ to: number;
66
+ };
67
+ }>]>;
68
+ /**
69
+ * 본문 문장의 주장과 같은 원문의 표나 다른 문단이 어긋나는 자리. 바깥 자료로 하는 반론은 여기 두지 않는다.
70
+ * 숫자끼리 어긋난 자리만 받는다. note의 숫자가 근거 칸이나 문단에 있는지 lint가 본다
71
+ */
72
+ export declare const doubtSchema: z.ZodObject<{
73
+ note: z.ZodString;
74
+ evidence: z.ZodArray<z.ZodUnion<[z.ZodObject<{
75
+ table: z.ZodString;
76
+ row: z.ZodNumber;
77
+ col: z.ZodNumber;
78
+ }, "strip", z.ZodTypeAny, {
79
+ row: number;
80
+ col: number;
81
+ table: string;
82
+ }, {
83
+ row: number;
84
+ col: number;
85
+ table: string;
86
+ }>, z.ZodObject<{
87
+ cite: z.ZodEffects<z.ZodObject<{
88
+ key: z.ZodNumber;
89
+ from: z.ZodNumber;
90
+ to: z.ZodNumber;
91
+ }, "strip", z.ZodTypeAny, {
92
+ key: number;
93
+ from: number;
94
+ to: number;
95
+ }, {
96
+ key: number;
97
+ from: number;
98
+ to: number;
99
+ }>, {
100
+ key: number;
101
+ from: number;
102
+ to: number;
103
+ }, {
104
+ key: number;
105
+ from: number;
106
+ to: number;
107
+ }>;
108
+ }, "strip", z.ZodTypeAny, {
109
+ cite: {
110
+ key: number;
111
+ from: number;
112
+ to: number;
113
+ };
114
+ }, {
115
+ cite: {
116
+ key: number;
117
+ from: number;
118
+ to: number;
119
+ };
120
+ }>]>, "many">;
121
+ }, "strip", z.ZodTypeAny, {
122
+ note: string;
123
+ evidence: ({
124
+ row: number;
125
+ col: number;
126
+ table: string;
127
+ } | {
128
+ cite: {
129
+ key: number;
130
+ from: number;
131
+ to: number;
132
+ };
133
+ })[];
134
+ }, {
135
+ note: string;
136
+ evidence: ({
137
+ row: number;
138
+ col: number;
139
+ table: string;
140
+ } | {
141
+ cite: {
142
+ key: number;
143
+ from: number;
144
+ to: number;
145
+ };
146
+ })[];
147
+ }>;
148
+ export declare const GLANCE_KINDS: readonly ["problem", "method", "result", "limit", "claim", "evidence", "topic"];
149
+ /** 한눈에 보기 한 칸. 자료 종류마다 들어가야 할 kind는 lint가 정한다 */
150
+ export declare const glanceSchema: z.ZodObject<{
151
+ kind: z.ZodEnum<["problem", "method", "result", "limit", "claim", "evidence", "topic"]>;
152
+ text: z.ZodString;
153
+ cite: z.ZodEffects<z.ZodObject<{
154
+ key: z.ZodNumber;
155
+ from: z.ZodNumber;
156
+ to: z.ZodNumber;
157
+ }, "strip", z.ZodTypeAny, {
158
+ key: number;
159
+ from: number;
160
+ to: number;
161
+ }, {
162
+ key: number;
163
+ from: number;
164
+ to: number;
165
+ }>, {
166
+ key: number;
167
+ from: number;
168
+ to: number;
169
+ }, {
170
+ key: number;
171
+ from: number;
172
+ to: number;
173
+ }>;
174
+ }, "strip", z.ZodTypeAny, {
175
+ text: string;
176
+ kind: "topic" | "evidence" | "limit" | "method" | "result" | "problem" | "claim";
177
+ cite: {
178
+ key: number;
179
+ from: number;
180
+ to: number;
181
+ };
182
+ }, {
183
+ text: string;
184
+ kind: "topic" | "evidence" | "limit" | "method" | "result" | "problem" | "claim";
185
+ cite: {
186
+ key: number;
187
+ from: number;
188
+ to: number;
189
+ };
190
+ }>;
191
+ /** 원문 표나 그림을 소섹션에 싣는다. 칸 내용은 source.json에서 렌더러가 옮겨서 모델이 숫자를 다시 적지 않는다 */
192
+ export declare const sourceRefSchema: z.ZodObject<{
193
+ ref: z.ZodString;
194
+ note: z.ZodOptional<z.ZodString>;
195
+ }, "strip", z.ZodTypeAny, {
196
+ ref: string;
197
+ note?: string | undefined;
198
+ }, {
199
+ ref: string;
200
+ note?: string | undefined;
201
+ }>;
202
+ /** 검증 안 된 부분 한 줄. 근거가 원문이면 evidence, 바깥 맥락 카드에서 나왔으면 card에 그 id를 적는다 */
203
+ export declare const limitSchema: z.ZodObject<{
204
+ text: z.ZodString;
205
+ evidence: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodObject<{
206
+ table: z.ZodString;
207
+ row: z.ZodNumber;
208
+ col: z.ZodNumber;
209
+ }, "strip", z.ZodTypeAny, {
210
+ row: number;
211
+ col: number;
212
+ table: string;
213
+ }, {
214
+ row: number;
215
+ col: number;
216
+ table: string;
217
+ }>, z.ZodObject<{
218
+ cite: z.ZodEffects<z.ZodObject<{
219
+ key: z.ZodNumber;
220
+ from: z.ZodNumber;
221
+ to: z.ZodNumber;
222
+ }, "strip", z.ZodTypeAny, {
223
+ key: number;
224
+ from: number;
225
+ to: number;
226
+ }, {
227
+ key: number;
228
+ from: number;
229
+ to: number;
230
+ }>, {
231
+ key: number;
232
+ from: number;
233
+ to: number;
234
+ }, {
235
+ key: number;
236
+ from: number;
237
+ to: number;
238
+ }>;
239
+ }, "strip", z.ZodTypeAny, {
240
+ cite: {
241
+ key: number;
242
+ from: number;
243
+ to: number;
244
+ };
245
+ }, {
246
+ cite: {
247
+ key: number;
248
+ from: number;
249
+ to: number;
250
+ };
251
+ }>]>, "many">>;
252
+ card: z.ZodOptional<z.ZodString>;
253
+ }, "strip", z.ZodTypeAny, {
254
+ text: string;
255
+ evidence: ({
256
+ row: number;
257
+ col: number;
258
+ table: string;
259
+ } | {
260
+ cite: {
261
+ key: number;
262
+ from: number;
263
+ to: number;
264
+ };
265
+ })[];
266
+ card?: string | undefined;
267
+ }, {
268
+ text: string;
269
+ evidence?: ({
270
+ row: number;
271
+ col: number;
272
+ table: string;
273
+ } | {
274
+ cite: {
275
+ key: number;
276
+ from: number;
277
+ to: number;
278
+ };
279
+ })[] | undefined;
280
+ card?: string | undefined;
281
+ }>;
282
+ export type CellRef = z.infer<typeof cellRefSchema>;
283
+ export type Evidence = z.infer<typeof evidenceSchema>;
284
+ export type Doubt = z.infer<typeof doubtSchema>;
285
+ export type Glance = z.infer<typeof glanceSchema>;
286
+ export type GlanceKind = (typeof GLANCE_KINDS)[number];
287
+ export type SourceRef = z.infer<typeof sourceRefSchema>;
288
+ export type Limit = z.infer<typeof limitSchema>;
289
+ export declare const isCellRef: (e: Evidence) => e is CellRef;
290
+ export declare const cardSourceSchema: z.ZodObject<{
291
+ id: z.ZodString;
292
+ url: z.ZodEffects<z.ZodString, string, string>;
293
+ title: z.ZodString;
294
+ publisher: z.ZodOptional<z.ZodString>;
295
+ year: z.ZodOptional<z.ZodString>;
296
+ }, "strip", z.ZodTypeAny, {
297
+ id: string;
298
+ title: string;
299
+ url: string;
300
+ publisher?: string | undefined;
301
+ year?: string | undefined;
302
+ }, {
303
+ id: string;
304
+ title: string;
305
+ url: string;
306
+ publisher?: string | undefined;
307
+ year?: string | undefined;
308
+ }>;
309
+ export declare const LINEAGE_ROLES: readonly ["foundation", "component", "baseline"];
310
+ /** 연구 계보 한 칸. 이 논문이 무엇을 가져오고 무엇을 바꿨는지 적는다 */
311
+ export declare const lineageSchema: z.ZodObject<{
312
+ year: z.ZodString;
313
+ title: z.ZodString;
314
+ role: z.ZodEnum<["foundation", "component", "baseline"]>;
315
+ took: z.ZodOptional<z.ZodString>;
316
+ changed: z.ZodOptional<z.ZodString>;
317
+ source: z.ZodString;
318
+ }, "strip", z.ZodTypeAny, {
319
+ source: string;
320
+ role: "component" | "baseline" | "foundation";
321
+ title: string;
322
+ year: string;
323
+ changed?: string | undefined;
324
+ took?: string | undefined;
325
+ }, {
326
+ source: string;
327
+ role: "component" | "baseline" | "foundation";
328
+ title: string;
329
+ year: string;
330
+ changed?: string | undefined;
331
+ took?: string | undefined;
332
+ }>;
333
+ export declare const CARD_KINDS: readonly ["lineage", "interpretation", "counter", "unverified"];
334
+ /**
335
+ * 바깥 맥락 카드. 선행 연구와 반론, 결과 해석처럼 원문 밖 자료로만 말할 수 있는 것을 담는다.
336
+ * 원문 안의 어긋남은 의심 표시 몫이라 여기 두지 않는다. 줄마다 바깥 출처 id를 단다
337
+ */
338
+ export declare const contextCardSchema: z.ZodObject<{
339
+ id: z.ZodString;
340
+ kind: z.ZodEnum<["lineage", "interpretation", "counter", "unverified"]>;
341
+ /** 붙일 대섹션 id */
342
+ section: z.ZodString;
343
+ /** 카드가 이야기하는 원문 자리 */
344
+ anchor: z.ZodEffects<z.ZodObject<{
345
+ key: z.ZodNumber;
346
+ from: z.ZodNumber;
347
+ to: z.ZodNumber;
348
+ }, "strip", z.ZodTypeAny, {
349
+ key: number;
350
+ from: number;
351
+ to: number;
352
+ }, {
353
+ key: number;
354
+ from: number;
355
+ to: number;
356
+ }>, {
357
+ key: number;
358
+ from: number;
359
+ to: number;
360
+ }, {
361
+ key: number;
362
+ from: number;
363
+ to: number;
364
+ }>;
365
+ title: z.ZodString;
366
+ lineage: z.ZodOptional<z.ZodArray<z.ZodObject<{
367
+ year: z.ZodString;
368
+ title: z.ZodString;
369
+ role: z.ZodEnum<["foundation", "component", "baseline"]>;
370
+ took: z.ZodOptional<z.ZodString>;
371
+ changed: z.ZodOptional<z.ZodString>;
372
+ source: z.ZodString;
373
+ }, "strip", z.ZodTypeAny, {
374
+ source: string;
375
+ role: "component" | "baseline" | "foundation";
376
+ title: string;
377
+ year: string;
378
+ changed?: string | undefined;
379
+ took?: string | undefined;
380
+ }, {
381
+ source: string;
382
+ role: "component" | "baseline" | "foundation";
383
+ title: string;
384
+ year: string;
385
+ changed?: string | undefined;
386
+ took?: string | undefined;
387
+ }>, "many">>;
388
+ points: z.ZodArray<z.ZodObject<{
389
+ text: z.ZodString;
390
+ sources: z.ZodArray<z.ZodString, "many">;
391
+ }, "strip", z.ZodTypeAny, {
392
+ text: string;
393
+ sources: string[];
394
+ }, {
395
+ text: string;
396
+ sources: string[];
397
+ }>, "many">;
398
+ sources: z.ZodArray<z.ZodObject<{
399
+ id: z.ZodString;
400
+ url: z.ZodEffects<z.ZodString, string, string>;
401
+ title: z.ZodString;
402
+ publisher: z.ZodOptional<z.ZodString>;
403
+ year: z.ZodOptional<z.ZodString>;
404
+ }, "strip", z.ZodTypeAny, {
405
+ id: string;
406
+ title: string;
407
+ url: string;
408
+ publisher?: string | undefined;
409
+ year?: string | undefined;
410
+ }, {
411
+ id: string;
412
+ title: string;
413
+ url: string;
414
+ publisher?: string | undefined;
415
+ year?: string | undefined;
416
+ }>, "many">;
417
+ }, "strip", z.ZodTypeAny, {
418
+ id: string;
419
+ kind: "unverified" | "interpretation" | "lineage" | "counter";
420
+ anchor: {
421
+ key: number;
422
+ from: number;
423
+ to: number;
424
+ };
425
+ title: string;
426
+ sources: {
427
+ id: string;
428
+ title: string;
429
+ url: string;
430
+ publisher?: string | undefined;
431
+ year?: string | undefined;
432
+ }[];
433
+ points: {
434
+ text: string;
435
+ sources: string[];
436
+ }[];
437
+ section: string;
438
+ lineage?: {
439
+ source: string;
440
+ role: "component" | "baseline" | "foundation";
441
+ title: string;
442
+ year: string;
443
+ changed?: string | undefined;
444
+ took?: string | undefined;
445
+ }[] | undefined;
446
+ }, {
447
+ id: string;
448
+ kind: "unverified" | "interpretation" | "lineage" | "counter";
449
+ anchor: {
450
+ key: number;
451
+ from: number;
452
+ to: number;
453
+ };
454
+ title: string;
455
+ sources: {
456
+ id: string;
457
+ title: string;
458
+ url: string;
459
+ publisher?: string | undefined;
460
+ year?: string | undefined;
461
+ }[];
462
+ points: {
463
+ text: string;
464
+ sources: string[];
465
+ }[];
466
+ section: string;
467
+ lineage?: {
468
+ source: string;
469
+ role: "component" | "baseline" | "foundation";
470
+ title: string;
471
+ year: string;
472
+ changed?: string | undefined;
473
+ took?: string | undefined;
474
+ }[] | undefined;
475
+ }>;
476
+ /**
477
+ * 내 지식 연결 카드. 사용자 노트나 레포 문서의 한 자리와 원문을 잇는다.
478
+ * quote는 그 파일에 글자 그대로 있어야 하고 path는 지식 소스 폴더 안이어야 한다
479
+ */
480
+ export declare const knowledgeLinkSchema: z.ZodObject<{
481
+ id: z.ZodString;
482
+ section: z.ZodString;
483
+ anchor: z.ZodEffects<z.ZodObject<{
484
+ key: z.ZodNumber;
485
+ from: z.ZodNumber;
486
+ to: z.ZodNumber;
487
+ }, "strip", z.ZodTypeAny, {
488
+ key: number;
489
+ from: number;
490
+ to: number;
491
+ }, {
492
+ key: number;
493
+ from: number;
494
+ to: number;
495
+ }>, {
496
+ key: number;
497
+ from: number;
498
+ to: number;
499
+ }, {
500
+ key: number;
501
+ from: number;
502
+ to: number;
503
+ }>;
504
+ title: z.ZodString;
505
+ note: z.ZodString;
506
+ path: z.ZodString;
507
+ line: z.ZodOptional<z.ZodNumber>;
508
+ quote: z.ZodString;
509
+ /** 노션처럼 원래 자리가 웹에 있는 노트면 그 주소. 스냅샷 파일 첫 줄의 source 주소를 옮긴다 */
510
+ url: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
511
+ }, "strip", z.ZodTypeAny, {
512
+ path: string;
513
+ id: string;
514
+ anchor: {
515
+ key: number;
516
+ from: number;
517
+ to: number;
518
+ };
519
+ note: string;
520
+ title: string;
521
+ section: string;
522
+ quote: string;
523
+ line?: number | undefined;
524
+ url?: string | undefined;
525
+ }, {
526
+ path: string;
527
+ id: string;
528
+ anchor: {
529
+ key: number;
530
+ from: number;
531
+ to: number;
532
+ };
533
+ note: string;
534
+ title: string;
535
+ section: string;
536
+ quote: string;
537
+ line?: number | undefined;
538
+ url?: string | undefined;
539
+ }>;
540
+ export type ContextCard = z.infer<typeof contextCardSchema>;
541
+ export type KnowledgeLink = z.infer<typeof knowledgeLinkSchema>;
542
+ //# sourceMappingURL=lens-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lens-schema.d.ts","sourceRoot":"","sources":["../../../src/digest/lens-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;GAGG;AAEH,4CAA4C;AAC5C,eAAO,MAAM,aAAa;;;;;;;;;;;;EAIxB,CAAC;AAEH,2CAA2C;AAC3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA2D,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtB,CAAC;AAEH,eAAO,MAAM,YAAY,iFAQf,CAAC;AAEX,iDAAiD;AACjD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIvB,CAAC;AAEH,yEAAyE;AACzE,eAAO,MAAM,eAAe;;;;;;;;;EAG1B,CAAC;AAEH,wEAAwE;AACxE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAItB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,SAAS,GAAI,GAAG,QAAQ,KAAG,CAAC,IAAI,OAAuB,CAAC;AAQrE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,aAAa,kDAAmD,CAAC;AAE9E,6CAA6C;AAC7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AAEH,eAAO,MAAM,UAAU,iEAAkE,CAAC;AAE1F;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;IAG5B,gBAAgB;;IAEhB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAStB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAS9B,6DAA6D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7D,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { z } from 'zod';
2
+ import { citeSchema, idSchema, textSchema } from './schema-base.js';
3
+ /**
4
+ * 읽기 렌즈(논문, 웹 글, 팟캐스트)가 리포트에 더하는 칸.
5
+ * 영상 리포트와 같은 reports[]에 들어가서 전부 선택 칸이고 자료 종류별로 반드시 있어야 하는 칸은 lint가 본다
6
+ */
7
+ /** 원문 표의 한 칸. row와 col은 머리줄까지 센 0부터의 자리다 */
8
+ export const cellRefSchema = z.object({
9
+ table: idSchema,
10
+ row: z.number().int().nonnegative(),
11
+ col: z.number().int().nonnegative(),
12
+ });
13
+ /** 의심 표시와 한계 단락의 근거. 원문 표 칸이나 원문 문단 범위다 */
14
+ export const evidenceSchema = z.union([cellRefSchema, z.object({ cite: citeSchema })]);
15
+ /**
16
+ * 본문 문장의 주장과 같은 원문의 표나 다른 문단이 어긋나는 자리. 바깥 자료로 하는 반론은 여기 두지 않는다.
17
+ * 숫자끼리 어긋난 자리만 받는다. note의 숫자가 근거 칸이나 문단에 있는지 lint가 본다
18
+ */
19
+ export const doubtSchema = z.object({
20
+ note: textSchema,
21
+ evidence: z.array(evidenceSchema).min(1),
22
+ });
23
+ export const GLANCE_KINDS = [
24
+ 'problem',
25
+ 'method',
26
+ 'result',
27
+ 'limit',
28
+ 'claim',
29
+ 'evidence',
30
+ 'topic',
31
+ ];
32
+ /** 한눈에 보기 한 칸. 자료 종류마다 들어가야 할 kind는 lint가 정한다 */
33
+ export const glanceSchema = z.object({
34
+ kind: z.enum(GLANCE_KINDS),
35
+ text: textSchema,
36
+ cite: citeSchema,
37
+ });
38
+ /** 원문 표나 그림을 소섹션에 싣는다. 칸 내용은 source.json에서 렌더러가 옮겨서 모델이 숫자를 다시 적지 않는다 */
39
+ export const sourceRefSchema = z.object({
40
+ ref: idSchema,
41
+ note: textSchema.optional(),
42
+ });
43
+ /** 검증 안 된 부분 한 줄. 근거가 원문이면 evidence, 바깥 맥락 카드에서 나왔으면 card에 그 id를 적는다 */
44
+ export const limitSchema = z.object({
45
+ text: textSchema,
46
+ evidence: z.array(evidenceSchema).default([]),
47
+ card: idSchema.optional(),
48
+ });
49
+ export const isCellRef = (e) => 'table' in e;
50
+ /** 바깥 자료 주소. 뷰어가 새 탭 링크로 싣는다. javascript: 같은 주소가 끼지 않게 http(s)만 받는다 */
51
+ const webUrl = z
52
+ .string()
53
+ .url()
54
+ .refine((u) => /^https?:\/\//i.test(u), 'http(s) 주소만 받는다');
55
+ export const cardSourceSchema = z.object({
56
+ id: idSchema,
57
+ url: webUrl,
58
+ title: textSchema,
59
+ publisher: z.string().optional(),
60
+ year: z.string().optional(),
61
+ });
62
+ export const LINEAGE_ROLES = ['foundation', 'component', 'baseline'];
63
+ /** 연구 계보 한 칸. 이 논문이 무엇을 가져오고 무엇을 바꿨는지 적는다 */
64
+ export const lineageSchema = z.object({
65
+ year: z.string().min(1),
66
+ title: textSchema,
67
+ role: z.enum(LINEAGE_ROLES),
68
+ took: z.string().optional(),
69
+ changed: z.string().optional(),
70
+ source: idSchema,
71
+ });
72
+ export const CARD_KINDS = ['lineage', 'interpretation', 'counter', 'unverified'];
73
+ /**
74
+ * 바깥 맥락 카드. 선행 연구와 반론, 결과 해석처럼 원문 밖 자료로만 말할 수 있는 것을 담는다.
75
+ * 원문 안의 어긋남은 의심 표시 몫이라 여기 두지 않는다. 줄마다 바깥 출처 id를 단다
76
+ */
77
+ export const contextCardSchema = z.object({
78
+ id: idSchema,
79
+ kind: z.enum(CARD_KINDS),
80
+ /** 붙일 대섹션 id */
81
+ section: idSchema,
82
+ /** 카드가 이야기하는 원문 자리 */
83
+ anchor: citeSchema,
84
+ title: textSchema,
85
+ lineage: z.array(lineageSchema).max(8).optional(),
86
+ points: z
87
+ .array(z.object({ text: textSchema, sources: z.array(idSchema).min(1) }))
88
+ .min(1)
89
+ .max(6),
90
+ sources: z.array(cardSourceSchema).min(1).max(10),
91
+ });
92
+ /**
93
+ * 내 지식 연결 카드. 사용자 노트나 레포 문서의 한 자리와 원문을 잇는다.
94
+ * quote는 그 파일에 글자 그대로 있어야 하고 path는 지식 소스 폴더 안이어야 한다
95
+ */
96
+ export const knowledgeLinkSchema = z.object({
97
+ id: idSchema,
98
+ section: idSchema,
99
+ anchor: citeSchema,
100
+ title: textSchema,
101
+ note: textSchema,
102
+ path: z.string().min(1),
103
+ line: z.number().int().positive().optional(),
104
+ quote: z.string().min(4).max(400),
105
+ /** 노션처럼 원래 자리가 웹에 있는 노트면 그 주소. 스냅샷 파일 첫 줄의 source 주소를 옮긴다 */
106
+ url: webUrl.optional(),
107
+ });
108
+ //# sourceMappingURL=lens-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lens-schema.js","sourceRoot":"","sources":["../../../src/digest/lens-schema.ts"],"names":[],"mappings":"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"}