@tienne/gestalt 0.112.0 → 0.114.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 (94) hide show
  1. package/CLAUDE.md +1 -1
  2. package/dist/package.json +1 -1
  3. package/dist/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +7 -4
  4. package/dist/src/cli/commands/peer.d.ts +1 -0
  5. package/dist/src/cli/commands/peer.d.ts.map +1 -1
  6. package/dist/src/cli/commands/peer.js +11 -2
  7. package/dist/src/cli/commands/peer.js.map +1 -1
  8. package/dist/src/cli/index.d.ts.map +1 -1
  9. package/dist/src/cli/index.js +1 -0
  10. package/dist/src/cli/index.js.map +1 -1
  11. package/dist/src/mcp/schemas.d.ts +13 -7
  12. package/dist/src/mcp/schemas.d.ts.map +1 -1
  13. package/dist/src/mcp/schemas.js +11 -2
  14. package/dist/src/mcp/schemas.js.map +1 -1
  15. package/dist/src/mcp/server.js +1 -1
  16. package/dist/src/mcp/server.js.map +1 -1
  17. package/dist/src/mcp/tools/peer.d.ts +6 -3
  18. package/dist/src/mcp/tools/peer.d.ts.map +1 -1
  19. package/dist/src/mcp/tools/peer.js +32 -0
  20. package/dist/src/mcp/tools/peer.js.map +1 -1
  21. package/dist/src/peer/codex.d.ts +8 -0
  22. package/dist/src/peer/codex.d.ts.map +1 -1
  23. package/dist/src/peer/codex.js +72 -9
  24. package/dist/src/peer/codex.js.map +1 -1
  25. package/dist/src/peer/daemon.d.ts +27 -3
  26. package/dist/src/peer/daemon.d.ts.map +1 -1
  27. package/dist/src/peer/daemon.js +166 -14
  28. package/dist/src/peer/daemon.js.map +1 -1
  29. package/dist/src/peer/errors.d.ts +3 -0
  30. package/dist/src/peer/errors.d.ts.map +1 -1
  31. package/dist/src/peer/errors.js +3 -0
  32. package/dist/src/peer/errors.js.map +1 -1
  33. package/dist/src/peer/excerpt.d.ts +47 -0
  34. package/dist/src/peer/excerpt.d.ts.map +1 -0
  35. package/dist/src/peer/excerpt.js +160 -0
  36. package/dist/src/peer/excerpt.js.map +1 -0
  37. package/dist/src/peer/feed.d.ts +11 -0
  38. package/dist/src/peer/feed.d.ts.map +1 -1
  39. package/dist/src/peer/feed.js +22 -0
  40. package/dist/src/peer/feed.js.map +1 -1
  41. package/dist/src/peer/inbox.d.ts +13 -2
  42. package/dist/src/peer/inbox.d.ts.map +1 -1
  43. package/dist/src/peer/inbox.js +19 -3
  44. package/dist/src/peer/inbox.js.map +1 -1
  45. package/dist/src/peer/locate.d.ts +2 -0
  46. package/dist/src/peer/locate.d.ts.map +1 -1
  47. package/dist/src/peer/locate.js +15 -0
  48. package/dist/src/peer/locate.js.map +1 -1
  49. package/dist/src/peer/message.d.ts +10 -1
  50. package/dist/src/peer/message.d.ts.map +1 -1
  51. package/dist/src/peer/message.js +17 -5
  52. package/dist/src/peer/message.js.map +1 -1
  53. package/dist/src/peer/network.d.ts +44 -63
  54. package/dist/src/peer/network.d.ts.map +1 -1
  55. package/dist/src/peer/network.js +110 -363
  56. package/dist/src/peer/network.js.map +1 -1
  57. package/dist/src/peer/peek.d.ts +79 -0
  58. package/dist/src/peer/peek.d.ts.map +1 -0
  59. package/dist/src/peer/peek.js +465 -0
  60. package/dist/src/peer/peek.js.map +1 -0
  61. package/dist/src/peer/peeks.d.ts +115 -0
  62. package/dist/src/peer/peeks.d.ts.map +1 -0
  63. package/dist/src/peer/peeks.js +262 -0
  64. package/dist/src/peer/peeks.js.map +1 -0
  65. package/dist/src/peer/protocol.d.ts +34 -2
  66. package/dist/src/peer/protocol.d.ts.map +1 -1
  67. package/dist/src/peer/protocol.js.map +1 -1
  68. package/dist/src/peer/questions.d.ts +168 -0
  69. package/dist/src/peer/questions.d.ts.map +1 -0
  70. package/dist/src/peer/questions.js +389 -0
  71. package/dist/src/peer/questions.js.map +1 -0
  72. package/dist/src/peer/share.js +6 -2
  73. package/dist/src/peer/share.js.map +1 -1
  74. package/dist/src/peer/state.d.ts +1 -1
  75. package/dist/src/peer/state.d.ts.map +1 -1
  76. package/dist/src/peer/state.js +1 -1
  77. package/dist/src/peer/state.js.map +1 -1
  78. package/dist/src/peer/transform.d.ts +5 -0
  79. package/dist/src/peer/transform.d.ts.map +1 -1
  80. package/dist/src/peer/transform.js +16 -1
  81. package/dist/src/peer/transform.js.map +1 -1
  82. package/dist/src/peer/viewer-html.d.ts +13 -1
  83. package/dist/src/peer/viewer-html.d.ts.map +1 -1
  84. package/dist/src/peer/viewer-html.js +178 -4
  85. package/dist/src/peer/viewer-html.js.map +1 -1
  86. package/dist/src/peer/viewer.d.ts +20 -1
  87. package/dist/src/peer/viewer.d.ts.map +1 -1
  88. package/dist/src/peer/viewer.js +35 -7
  89. package/dist/src/peer/viewer.js.map +1 -1
  90. package/package.json +1 -1
  91. package/plugin/.codex-plugin/plugin.json +1 -1
  92. package/plugin/.mcp.json +1 -1
  93. package/plugin/mcp.json +1 -1
  94. package/plugin/role-agents/_shared/references/ai-tell-quick-rules.md +7 -4
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/peer/transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/peer/transform.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,22 @@
1
1
  export declare const VIEWER_WARNING = "\uBE44\uBC00\uAC12 \uD328\uD134\uC740 \uAC00\uB9AC\uC9C0\uB9CC \uC804\uBD80 \uC7A1\uC9C0\uB294 \uBABB\uD574\uC694.";
2
+ /** 뷰어 화면에 그릴 입력. 원격 공유를 볼 때만 켜진다 */
3
+ export interface ViewerAbilities {
4
+ /** 주인 세션에 메시지 넣기 */
5
+ canSend?: boolean;
6
+ /** 주인 세션 모델의 질문에 답하기 */
7
+ canAnswer?: boolean;
8
+ /** 고른 줄을 내 세션에 발췌로 넘기기 */
9
+ canExcerpt?: boolean;
10
+ }
2
11
  /**
3
12
  * 뷰어 페이지. 바깥 자원을 하나도 안 끌어온다 — CSP가 `default-src 'none'`이라
4
13
  * 인라인 스크립트와 스타일도 nonce가 맞는 것만 돈다.
5
14
  *
6
15
  * 대화 내용은 전부 textContent로 넣는다. 마크다운을 HTML로 그리면 남의 도구 출력에
7
16
  * 든 태그가 이 페이지에서 실행될 길이 생긴다. localStorage나 IndexedDB도 안 쓴다.
17
+ *
18
+ * 발췌는 고른 줄의 번호와 펼쳤는지만 보낸다. 글자는 보는 쪽 데몬이 들고 있는 이벤트에서 다시 만든다.
19
+ * 32KB 검사는 여기서 한 번 하고 데몬이 정리한 본문으로 한 번 더 한다.
8
20
  */
9
- export declare function renderViewerHtml(nonce: string, maxViewers: number, canSend?: boolean, canAnswer?: boolean): string;
21
+ export declare function renderViewerHtml(nonce: string, maxViewers: number, { canSend, canAnswer, canExcerpt }?: ViewerAbilities): string;
10
22
  //# sourceMappingURL=viewer-html.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewer-html.d.ts","sourceRoot":"","sources":["../../../src/peer/viewer-html.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,uHAA6B,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,UAAQ,EACf,SAAS,UAAQ,GAChB,MAAM,CAmTR"}
1
+ {"version":3,"file":"viewer-html.d.ts","sourceRoot":"","sources":["../../../src/peer/viewer-html.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,uHAA6B,CAAC;AAEzD,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,EAAE,OAAe,EAAE,SAAiB,EAAE,UAAkB,EAAE,GAAE,eAAoB,GAC/E,MAAM,CAgeR"}
@@ -5,8 +5,11 @@ export const VIEWER_WARNING = '비밀값 패턴은 가리지만 전부 잡지는
5
5
  *
6
6
  * 대화 내용은 전부 textContent로 넣는다. 마크다운을 HTML로 그리면 남의 도구 출력에
7
7
  * 든 태그가 이 페이지에서 실행될 길이 생긴다. localStorage나 IndexedDB도 안 쓴다.
8
+ *
9
+ * 발췌는 고른 줄의 번호와 펼쳤는지만 보낸다. 글자는 보는 쪽 데몬이 들고 있는 이벤트에서 다시 만든다.
10
+ * 32KB 검사는 여기서 한 번 하고 데몬이 정리한 본문으로 한 번 더 한다.
8
11
  */
9
- export function renderViewerHtml(nonce, maxViewers, canSend = false, canAnswer = false) {
12
+ export function renderViewerHtml(nonce, maxViewers, { canSend = false, canAnswer = false, canExcerpt = false } = {}) {
10
13
  return `<!doctype html>
11
14
  <html lang="ko">
12
15
  <head>
@@ -46,6 +49,12 @@ export function renderViewerHtml(nonce, maxViewers, canSend = false, canAnswer =
46
49
  #mine { list-style: none; margin: 0 0 6px; padding: 0; font-size: 12px; color: var(--muted);
47
50
  max-width: 980px; max-height: 120px; overflow: auto; }
48
51
  #mine .rejected { color: #dc2626; }
52
+ .pick { float: left; margin: 3px 8px 0 0; }
53
+ .ev.picked { background: #2563eb14; }
54
+ #pickbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; font-size: 13px;
55
+ margin-top: 6px; }
56
+ #pickbar[hidden] { display: none; }
57
+ #pickbar .over { color: #dc2626; }
49
58
  </style>
50
59
  </head>
51
60
  <body>
@@ -56,6 +65,15 @@ export function renderViewerHtml(nonce, maxViewers, canSend = false, canAnswer =
56
65
  <span id="status">연결 중</span>
57
66
  <span id="unknown"></span>
58
67
  </div>
68
+ ${canExcerpt
69
+ ? ` <div id="pickbar" hidden>
70
+ <span id="picked"></span>
71
+ <select id="dest"><option value="">보낼 내 세션 고르기</option></select>
72
+ <button type="button" id="pick-send">내 세션으로 보내기</button>
73
+ <button type="button" id="pick-clear">고르기 해제</button>
74
+ <span id="pick-msg"></span>
75
+ </div>`
76
+ : ''}
59
77
  </header>
60
78
  <main id="log"></main>
61
79
  ${canSend
@@ -77,6 +95,11 @@ ${canSend
77
95
  const token = params.get('t') || '';
78
96
  const base = location.pathname.replace(/\\/$/, '');
79
97
  const results = new Map();
98
+ // 발췌 고르기. 번호(seq)마다 그 줄의 상자와 펼침 상태를 들고 있는다
99
+ const CAN_EXCERPT = ${canExcerpt ? 'true' : 'false'};
100
+ const MAX_EXCERPT = 32 * 1024;
101
+ const picks = new Map();
102
+ const calls = new Map();
80
103
 
81
104
  const el = (tag, cls, text) => {
82
105
  const n = document.createElement(tag);
@@ -103,7 +126,24 @@ ${canSend
103
126
  approval_timeout: '주인이 승인하지 않아 기다리다 끝났어요',
104
127
  };
105
128
 
106
- function render(ev) {
129
+ // 줄 상자 앞에 고르기 칸을 붙인다. entry는 그 줄을 발췌로 만들 때 볼 것들이다
130
+ function pickable(box, seq, entry) {
131
+ if (!CAN_EXCERPT || !seq) return;
132
+ const c = el('input', 'pick');
133
+ c.type = 'checkbox';
134
+ c.title = '발췌로 고르기';
135
+ c.addEventListener('change', () => {
136
+ if (c.checked) picks.set(seq, entry);
137
+ else picks.delete(seq);
138
+ box.classList.toggle('picked', c.checked);
139
+ updatePicks();
140
+ });
141
+ entry.check = c;
142
+ entry.box = box;
143
+ box.prepend(c);
144
+ }
145
+
146
+ function render(ev, seq) {
107
147
  const box = el('div', 'ev ' + ev.kind);
108
148
  if (ev.kind === 'prompt' || ev.kind === 'reply') {
109
149
  box.append(el('div', 'who', (ev.kind === 'prompt' ? '주인' : '모델') + ' ' + time(ev.at)));
@@ -116,14 +156,28 @@ ${canSend
116
156
  d.append(slot);
117
157
  if (ev.id) results.set(ev.id, slot);
118
158
  box.append(d);
159
+ const entry = { seq, details: d, name: ev.name, input: ev.input || '', results: [] };
160
+ if (ev.id) calls.set(ev.id, entry);
161
+ pickable(box, seq, entry);
162
+ log.append(box);
163
+ return;
119
164
  } else if (ev.kind === 'tool_result') {
120
165
  const d = el('details', ev.isError ? 'error' : '');
121
166
  const label = ev.hidden ? '결과 (주인이 숨김)' : ev.isError ? '결과 (에러)' : '결과';
122
167
  d.append(el('summary', '', label + (ev.truncated ? ' · 앞부분만' : '')));
123
168
  if (!ev.hidden) d.append(el('pre', '', ev.text || ''));
124
169
  const slot = ev.toolUseId ? results.get(ev.toolUseId) : undefined;
125
- if (slot) { slot.append(d); return; }
170
+ // 호출 상자 안에 든 결과는 호출을 고르면 같이 간다. 펼쳐 둔 것만 본문이 들어간다
171
+ if (slot) {
172
+ slot.append(d);
173
+ const call = calls.get(ev.toolUseId);
174
+ if (call) call.results.push({ seq, details: d, text: ev.hidden ? '' : ev.text || '' });
175
+ return;
176
+ }
126
177
  box.append(d);
178
+ pickable(box, seq, { seq, details: d, results: [], text: ev.hidden ? '' : ev.text || '' });
179
+ log.append(box);
180
+ return;
127
181
  } else if (ev.kind === 'title') {
128
182
  titleEl.textContent = ev.text;
129
183
  document.title = ev.text + ' · gestalt peer';
@@ -142,14 +196,134 @@ ${canSend
142
196
  } else {
143
197
  return;
144
198
  }
199
+ pickable(box, seq, { seq, text: ev.text || '' });
145
200
  log.append(box);
146
201
  }
147
202
 
203
+ const pickbar = document.getElementById('pickbar');
204
+ const pickedEl = document.getElementById('picked');
205
+ const dest = document.getElementById('dest');
206
+ const pickMsg = document.getElementById('pick-msg');
207
+
208
+ // 데몬에 보낼 고른 줄. 도구 호출은 펼쳐 둔 채 골랐을 때만 입력이 들어가고 그 안의 결과는 호출과 결과를
209
+ // 다 펼쳤을 때만 본문이 들어간다
210
+ // 줄마다 바이트 수는 처음 잴 때 한 번만 센다. 고르거나 접고 펼 때마다 다시 인코딩하지 않는다
211
+ const encoder = new TextEncoder();
212
+ const sizeOf = (o, key) => {
213
+ const k = key + 'Bytes';
214
+ if (o[k] === undefined) o[k] = encoder.encode(o[key] || '').length;
215
+ return o[k];
216
+ };
217
+ function pickedItems() {
218
+ const items = [];
219
+ let bytes = 0;
220
+ for (const seq of [...picks.keys()].sort((a, b) => a - b)) {
221
+ const e = picks.get(seq);
222
+ const open = e.details ? e.details.open : true;
223
+ items.push({ seq, open });
224
+ if (e.name !== undefined) bytes += sizeOf(e, 'name') + (open ? sizeOf(e, 'input') : 0);
225
+ else if (open) bytes += sizeOf(e, 'text');
226
+ for (const r of e.results || []) {
227
+ const ropen = open && r.details.open;
228
+ items.push({ seq: r.seq, open: ropen });
229
+ if (ropen) bytes += sizeOf(r, 'text');
230
+ }
231
+ }
232
+ return { items, bytes };
233
+ }
234
+
235
+ let overShown = false;
236
+ function updatePicks() {
237
+ if (!pickbar) return;
238
+ pickbar.hidden = picks.size === 0;
239
+ const { bytes } = pickedItems();
240
+ const over = bytes > MAX_EXCERPT;
241
+ pickedEl.textContent = picks.size + '줄 고름 · ' + Math.ceil(bytes / 1024) + 'KB';
242
+ pickedEl.className = over ? 'over' : '';
243
+ if (over) pickMsg.textContent = '발췌가 32KB를 넘어요. 더 좁게 골라 주세요';
244
+ else if (overShown) pickMsg.textContent = '';
245
+ overShown = over;
246
+ // 세션 목록은 처음 고를 때 한 번 읽고 그 뒤로는 목록을 열 때만 다시 읽는다
247
+ if (picks.size > 0 && !sessionsAsked) loadSessions();
248
+ }
249
+
250
+ let sessionsAsked = false;
251
+ let sessionsLoading = false;
252
+ function loadSessions() {
253
+ sessionsAsked = true;
254
+ if (sessionsLoading) return;
255
+ sessionsLoading = true;
256
+ fetch(base + '/sessions?t=' + encodeURIComponent(token), { cache: 'no-store' })
257
+ .finally(() => (sessionsLoading = false))
258
+ .then((r) => r.json())
259
+ .then((j) => {
260
+ const keep = dest.value;
261
+ while (dest.options.length > 1) dest.remove(1);
262
+ for (const s of j.sessions || []) {
263
+ const o = el('option', '', s.cwd + ' · ' + s.sessionId.slice(0, 8));
264
+ o.value = s.sessionId;
265
+ dest.append(o);
266
+ }
267
+ if (keep) dest.value = keep;
268
+ if ((j.sessions || []).length === 0) pickMsg.textContent = '발췌를 받을 내 세션이 안 보여요';
269
+ })
270
+ .catch(() => (pickMsg.textContent = '내 세션 목록을 못 읽었어요'));
271
+ }
272
+
273
+ function clearPicks() {
274
+ for (const e of picks.values()) {
275
+ e.check.checked = false;
276
+ e.box.classList.remove('picked');
277
+ }
278
+ picks.clear();
279
+ updatePicks();
280
+ }
281
+
282
+ if (pickbar) {
283
+ // 고른 줄 안의 상자를 접고 펼 때만 크기를 다시 잰다. toggle은 거품이 안 올라와서 캡처로 받는다.
284
+ // 고른 뒤에 도착한 결과도 그 줄 상자 안에 붙으므로 closest로 거른다
285
+ document.addEventListener(
286
+ 'toggle',
287
+ (ev) => ev.target.closest && ev.target.closest('.picked') && updatePicks(),
288
+ true,
289
+ );
290
+ dest.addEventListener('focus', loadSessions);
291
+ document.getElementById('pick-clear').addEventListener('click', clearPicks);
292
+ document.getElementById('pick-send').addEventListener('click', () => {
293
+ const { items, bytes } = pickedItems();
294
+ if (items.length === 0) return;
295
+ if (bytes > MAX_EXCERPT) {
296
+ pickMsg.textContent = '발췌가 32KB를 넘어요. 더 좁게 골라 주세요';
297
+ return;
298
+ }
299
+ if (!dest.value) {
300
+ pickMsg.textContent = '보낼 내 세션을 골라 주세요';
301
+ return;
302
+ }
303
+ fetch(base + '/excerpts?t=' + encodeURIComponent(token), {
304
+ method: 'POST',
305
+ headers: { 'Content-Type': 'application/json' },
306
+ body: JSON.stringify({ session: dest.value, items }),
307
+ cache: 'no-store',
308
+ })
309
+ .then((r) => r.json().then((j) => ({ ok: r.ok, j })))
310
+ .then(({ ok, j }) => {
311
+ if (!ok) {
312
+ pickMsg.textContent = '못 보냈어요: ' + (j.error || '');
313
+ return;
314
+ }
315
+ clearPicks();
316
+ pickMsg.textContent = '내 세션에 넣었어요. 그 세션의 수신 규칙에 따라 승인을 기다릴 수 있어요';
317
+ })
318
+ .catch(() => (pickMsg.textContent = '못 보냈어요'));
319
+ });
320
+ }
321
+
148
322
  const eventsUrl = base + '/events?t=' + encodeURIComponent(token);
149
323
  const es = new EventSource(eventsUrl);
150
324
  es.addEventListener('line', (m) => {
151
325
  const stick = atBottom();
152
- render(JSON.parse(m.data));
326
+ render(JSON.parse(m.data), Number(m.lastEventId) || 0);
153
327
  if (stick) window.scrollTo(0, document.body.scrollHeight);
154
328
  });
155
329
  es.addEventListener('trimmed', (m) => {
@@ -1 +1 @@
1
- {"version":3,"file":"viewer-html.js","sourceRoot":"","sources":["../../../src/peer/viewer-html.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,UAAkB,EAClB,OAAO,GAAG,KAAK,EACf,SAAS,GAAG,KAAK;IAEjB,OAAO;;;;;;;gBAOO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAqCC,cAAc;;;;;;;EAQlC,OAAO;QACL,CAAC,CAAC;;;;;;UAMI;QACN,CAAC,CAAC,EACN;iBACiB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwJV,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAkFO,UAAU;;;;;;;;;CASxD,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"viewer-html.js","sourceRoot":"","sources":["../../../src/peer/viewer-html.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAYzD;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,UAAkB,EAClB,EAAE,OAAO,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,KAAsB,EAAE;IAEhF,OAAO;;;;;;;gBAOO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA2CC,cAAc;;;;;EAMlC,UAAU;QACR,CAAC,CAAC;;;;;;SAMG;QACL,CAAC,CAAC,EACN;;;EAIE,OAAO;QACL,CAAC,CAAC;;;;;;UAMI;QACN,CAAC,CAAC,EACN;iBACiB,KAAK;;;;;;;;;;;wBAWE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAySzC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAkFO,UAAU;;;;;;;;;CASxD,CAAC;AACF,CAAC"}
@@ -12,7 +12,7 @@ export interface ViewerShare {
12
12
  }>;
13
13
  /**
14
14
  * 원격 공유를 보는 중이면 주인 세션 모델의 질문에 답할 수 있다. 내 공유에는 없다. 이 함수가
15
- * PeerNetwork.answer를 불러 기기 키로 서명한다
15
+ * QuestionDesk.answer를 불러 기기 키로 서명한다
16
16
  */
17
17
  answer?(question: string, text: string): Promise<{
18
18
  ok: true;
@@ -21,6 +21,23 @@ export interface ViewerShare {
21
21
  ok: false;
22
22
  error: string;
23
23
  }>;
24
+ /** 원격 공유를 보는 중이면 고른 줄을 넘길 내 세션 목록. 내 공유에는 없다 */
25
+ sessions?(): LocalSession[];
26
+ /** 고른 줄을 내 세션에 발췌로 넣는다. items는 브라우저가 보낸 그대로고 데몬이 꼴을 본다 */
27
+ excerpt?(session: string, items: unknown): Promise<{
28
+ ok: true;
29
+ bytes: number;
30
+ } | {
31
+ ok: false;
32
+ error: string;
33
+ }>;
34
+ }
35
+ /** 발췌를 넣을 수 있는 보는 사람 머신의 세션 하나 */
36
+ export interface LocalSession {
37
+ sessionId: string;
38
+ /** 홈 경로는 `~`로 바꾼 작업 디렉토리 */
39
+ cwd: string;
40
+ pid?: number;
24
41
  }
25
42
  export interface ViewerHooks {
26
43
  lookup(id: string): ViewerShare | undefined;
@@ -59,6 +76,8 @@ export interface ViewerServerOptions {
59
76
  * closed의 missed는 따라잡는 중에 공유가 종료돼 못 보낸 이벤트 수
60
77
  * POST /s/:id/messages?t=TOKEN → 원격 공유에 메시지 보내기. JSON `{text}`만 받고 Origin이 이 뷰어여야 한다
61
78
  * POST /s/:id/answers?t=TOKEN → 주인 세션 모델의 질문에 답하기. JSON `{question, text}`, 검사는 messages와 같다
79
+ * GET /s/:id/sessions?t=TOKEN → 발췌를 넣을 내 세션 목록. 원격 공유를 보는 중일 때만
80
+ * POST /s/:id/excerpts?t=TOKEN → 고른 줄을 내 세션에 발췌로 넣기. JSON `{session, items}`, 검사는 messages와 같다
62
81
  * * → 404
63
82
  */
64
83
  export declare class ViewerServer {
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../src/peer/viewer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAIvD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF;;;OAGG;IACH,MAAM,CAAC,CACL,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAaD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAEtD,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IAClC,iBAAiB;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IANxB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAG1B,KAAK,EAAE,WAAW,EACnC,OAAO,GAAE,mBAAwB;IAKnC,KAAK,CAAC,IAAI,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBhC,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAG7B;IAED,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrB,OAAO,CAAC,MAAM;IAyBd,OAAO,CAAC,WAAW;IAMnB;;;;OAIG;IACH,OAAO,CAAC,IAAI;IA4CZ,gEAAgE;IAChE,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,IAAI;IAkBZ,OAAO,CAAC,MAAM;CA4Ef"}
1
+ {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../src/peer/viewer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAIvD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF;;;OAGG;IACH,MAAM,CAAC,CACL,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1E,gDAAgD;IAChD,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,OAAO,CAAC,CACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAeD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAEtD,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IAClC,iBAAiB;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IANxB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAG1B,KAAK,EAAE,WAAW,EACnC,OAAO,GAAE,mBAAwB;IAKnC,KAAK,CAAC,IAAI,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBhC,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAG7B;IAED,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrB,OAAO,CAAC,MAAM;IAqCd,OAAO,CAAC,WAAW;IAMnB;;;;OAIG;IACH,OAAO,CAAC,IAAI;IA2DZ,gEAAgE;IAChE,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,IAAI;IAqBZ,OAAO,CAAC,MAAM;CA4Ef"}
@@ -6,7 +6,9 @@ const PAGE_PATH = /^\/s\/([A-Za-z0-9_-]{1,64})\/?$/;
6
6
  const EVENTS_PATH = /^\/s\/([A-Za-z0-9_-]{1,64})\/events$/;
7
7
  const MESSAGES_PATH = /^\/s\/([A-Za-z0-9_-]{1,64})\/messages$/;
8
8
  const ANSWERS_PATH = /^\/s\/([A-Za-z0-9_-]{1,64})\/answers$/;
9
- /** POST 본문 상한. 메시지 본문 16KB에 JSON 껍데기 여유를 둔다 */
9
+ const SESSIONS_PATH = /^\/s\/([A-Za-z0-9_-]{1,64})\/sessions$/;
10
+ const EXCERPTS_PATH = /^\/s\/([A-Za-z0-9_-]{1,64})\/excerpts$/;
11
+ /** POST 본문 상한. 메시지 본문 16KB와 발췌 번호 목록(2000줄)에 JSON 껍데기 여유를 둔다 */
10
12
  const MAX_POST_BYTES = 64 * 1024;
11
13
  /** SSE 연결이 프록시나 OS에서 놀다 끊기지 않게 보내는 빈 주석 간격 */
12
14
  const KEEPALIVE_MS = 15_000;
@@ -38,6 +40,8 @@ export const REPLAY_CHUNK_BYTES = 256 * 1024;
38
40
  * closed의 missed는 따라잡는 중에 공유가 종료돼 못 보낸 이벤트 수
39
41
  * POST /s/:id/messages?t=TOKEN → 원격 공유에 메시지 보내기. JSON `{text}`만 받고 Origin이 이 뷰어여야 한다
40
42
  * POST /s/:id/answers?t=TOKEN → 주인 세션 모델의 질문에 답하기. JSON `{question, text}`, 검사는 messages와 같다
43
+ * GET /s/:id/sessions?t=TOKEN → 발췌를 넣을 내 세션 목록. 원격 공유를 보는 중일 때만
44
+ * POST /s/:id/excerpts?t=TOKEN → 고른 줄을 내 세션에 발췌로 넣기. JSON `{session, items}`, 검사는 messages와 같다
41
45
  * * → 404
42
46
  */
43
47
  export class ViewerServer {
@@ -106,15 +110,26 @@ export class ViewerServer {
106
110
  return this.post(req, res, url);
107
111
  const page = PAGE_PATH.exec(url.pathname);
108
112
  const events = page ? null : EVENTS_PATH.exec(url.pathname);
109
- const id = page?.[1] ?? events?.[1];
113
+ const sessions = page || events ? null : SESSIONS_PATH.exec(url.pathname);
114
+ const id = page?.[1] ?? events?.[1] ?? sessions?.[1];
110
115
  if (!id)
111
116
  return plain(res, 404, 'Not Found');
112
117
  const share = this.hooks.lookup(id);
113
118
  if (!share || !tokenMatches(url.searchParams.get('t'), share.token)) {
114
119
  return plain(res, 401, 'Unauthorized');
115
120
  }
116
- if (page)
117
- return this.page(res, share.send !== undefined, share.answer !== undefined);
121
+ if (page) {
122
+ return this.page(res, {
123
+ canSend: share.send !== undefined,
124
+ canAnswer: share.answer !== undefined,
125
+ canExcerpt: share.excerpt !== undefined,
126
+ });
127
+ }
128
+ if (sessions) {
129
+ if (!share.sessions)
130
+ return json(res, 400, { error: '발췌를 넘길 수 없는 공유예요 (내 공유예요)' });
131
+ return json(res, 200, { sessions: share.sessions() });
132
+ }
118
133
  if ((this.viewers.get(id) ?? 0) >= MAX_VIEWERS_PER_SHARE) {
119
134
  return plain(res, 429, 'Too Many Viewers');
120
135
  }
@@ -134,7 +149,8 @@ export class ViewerServer {
134
149
  post(req, res, url) {
135
150
  const m = MESSAGES_PATH.exec(url.pathname);
136
151
  const a = m ? null : ANSWERS_PATH.exec(url.pathname);
137
- const id = m?.[1] ?? a?.[1];
152
+ const x = m || a ? null : EXCERPTS_PATH.exec(url.pathname);
153
+ const id = m?.[1] ?? a?.[1] ?? x?.[1];
138
154
  if (!id)
139
155
  return plain(res, 404, 'Not Found');
140
156
  const share = this.hooks.lookup(id);
@@ -146,6 +162,18 @@ export class ViewerServer {
146
162
  if (!String(req.headers['content-type'] ?? '').startsWith('application/json')) {
147
163
  return plain(res, 415, 'Unsupported Media Type');
148
164
  }
165
+ if (x) {
166
+ const excerpt = share.excerpt;
167
+ if (!excerpt)
168
+ return json(res, 400, { error: '발췌를 넘길 수 없는 공유예요 (내 공유예요)' });
169
+ return this.readJson(req, res, (parsed) => {
170
+ const { session, items } = parsed;
171
+ if (typeof session !== 'string' || !Array.isArray(items)) {
172
+ return json(res, 400, { error: 'session과 items가 필요해요' });
173
+ }
174
+ excerpt(session, items).then((r) => (r.ok ? json(res, 202, { bytes: r.bytes }) : json(res, 400, { error: r.error })), (err) => json(res, 500, { error: errMessage(err) }));
175
+ });
176
+ }
149
177
  if (a) {
150
178
  const answer = share.answer;
151
179
  if (!answer)
@@ -202,7 +230,7 @@ export class ViewerServer {
202
230
  onBody(parsed);
203
231
  });
204
232
  }
205
- page(res, canSend, canAnswer) {
233
+ page(res, can) {
206
234
  const nonce = randomBytes(16).toString('base64');
207
235
  res.writeHead(200, {
208
236
  'Content-Type': 'text/html; charset=utf-8',
@@ -217,7 +245,7 @@ export class ViewerServer {
217
245
  ].join('; '),
218
246
  ...PRIVATE_HEADERS,
219
247
  });
220
- res.end(renderViewerHtml(nonce, MAX_VIEWERS_PER_SHARE, canSend, canAnswer));
248
+ res.end(renderViewerHtml(nonce, MAX_VIEWERS_PER_SHARE, can));
221
249
  }
222
250
  stream(req, res, stream) {
223
251
  const lastId = Number.parseInt(String(req.headers['last-event-id'] ?? '0'), 10);
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../src/peer/viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../src/peer/viewer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tienne/gestalt",
3
- "version": "0.112.0",
3
+ "version": "0.114.0",
4
4
  "description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gestalt",
3
- "version": "0.112.0",
3
+ "version": "0.114.0",
4
4
  "description": "Gestalt psychology-driven AI development harness. Transforms scattered requirements into structured, validated specifications through interactive interviews.",
5
5
  "author": {
6
6
  "name": "tienne"
package/plugin/.mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "gestalt": {
4
4
  "command": "npx",
5
- "args": ["-y", "@tienne/gestalt@0.112.0", "serve"],
5
+ "args": ["-y", "@tienne/gestalt@0.114.0", "serve"],
6
6
  "startup_timeout_sec": 180,
7
7
  "tool_timeout_sec": 900
8
8
  }
package/plugin/mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "gestalt": {
4
4
  "command": "npx",
5
- "args": ["-y", "@tienne/gestalt@0.112.0", "serve"],
5
+ "args": ["-y", "@tienne/gestalt@0.114.0", "serve"],
6
6
  "startup_timeout_sec": 180,
7
7
  "tool_timeout_sec": 900
8
8
  }