proofscan 0.10.62 → 0.11.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 (199) hide show
  1. package/README.ja.md +1 -0
  2. package/README.md +2 -0
  3. package/dist/a2a/agent-card.d.ts +2 -0
  4. package/dist/a2a/agent-card.d.ts.map +1 -1
  5. package/dist/a2a/agent-card.js +2 -2
  6. package/dist/a2a/agent-card.js.map +1 -1
  7. package/dist/a2a/client.d.ts +74 -12
  8. package/dist/a2a/client.d.ts.map +1 -1
  9. package/dist/a2a/client.js +228 -29
  10. package/dist/a2a/client.js.map +1 -1
  11. package/dist/a2a/normalizer.d.ts +4 -0
  12. package/dist/a2a/normalizer.d.ts.map +1 -1
  13. package/dist/a2a/normalizer.js +7 -4
  14. package/dist/a2a/normalizer.js.map +1 -1
  15. package/dist/a2a/session-manager.d.ts +81 -0
  16. package/dist/a2a/session-manager.d.ts.map +1 -0
  17. package/dist/a2a/session-manager.js +176 -0
  18. package/dist/a2a/session-manager.js.map +1 -0
  19. package/dist/a2a/types.d.ts +60 -0
  20. package/dist/a2a/types.d.ts.map +1 -1
  21. package/dist/cli.d.ts +2 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +6 -3
  24. package/dist/cli.js.map +1 -1
  25. package/dist/commands/agent.d.ts.map +1 -1
  26. package/dist/commands/agent.js +35 -10
  27. package/dist/commands/agent.js.map +1 -1
  28. package/dist/commands/analyze.d.ts.map +1 -1
  29. package/dist/commands/analyze.js +12 -10
  30. package/dist/commands/analyze.js.map +1 -1
  31. package/dist/commands/connectors.js +2 -2
  32. package/dist/commands/connectors.js.map +1 -1
  33. package/dist/commands/index.d.ts +1 -0
  34. package/dist/commands/index.d.ts.map +1 -1
  35. package/dist/commands/index.js +1 -0
  36. package/dist/commands/index.js.map +1 -1
  37. package/dist/commands/plans.js +1 -1
  38. package/dist/commands/plans.js.map +1 -1
  39. package/dist/commands/record.js +5 -4
  40. package/dist/commands/record.js.map +1 -1
  41. package/dist/commands/rpc.d.ts.map +1 -1
  42. package/dist/commands/rpc.js +90 -28
  43. package/dist/commands/rpc.js.map +1 -1
  44. package/dist/commands/scan.d.ts.map +1 -1
  45. package/dist/commands/scan.js +8 -10
  46. package/dist/commands/scan.js.map +1 -1
  47. package/dist/commands/secrets.d.ts.map +1 -1
  48. package/dist/commands/secrets.js +11 -10
  49. package/dist/commands/secrets.js.map +1 -1
  50. package/dist/commands/sessions.js +2 -2
  51. package/dist/commands/sessions.js.map +1 -1
  52. package/dist/commands/summary.d.ts.map +1 -1
  53. package/dist/commands/summary.js +4 -2
  54. package/dist/commands/summary.js.map +1 -1
  55. package/dist/commands/task.d.ts +14 -0
  56. package/dist/commands/task.d.ts.map +1 -0
  57. package/dist/commands/task.js +520 -0
  58. package/dist/commands/task.js.map +1 -0
  59. package/dist/db/connection.d.ts.map +1 -1
  60. package/dist/db/connection.js +56 -1
  61. package/dist/db/connection.js.map +1 -1
  62. package/dist/db/events-store.d.ts +307 -8
  63. package/dist/db/events-store.d.ts.map +1 -1
  64. package/dist/db/events-store.js +620 -26
  65. package/dist/db/events-store.js.map +1 -1
  66. package/dist/db/proofs-store.d.ts +8 -1
  67. package/dist/db/proofs-store.d.ts.map +1 -1
  68. package/dist/db/proofs-store.js +18 -8
  69. package/dist/db/proofs-store.js.map +1 -1
  70. package/dist/db/schema.d.ts +15 -3
  71. package/dist/db/schema.d.ts.map +1 -1
  72. package/dist/db/schema.js +150 -5
  73. package/dist/db/schema.js.map +1 -1
  74. package/dist/db/tool-analysis.d.ts +15 -3
  75. package/dist/db/tool-analysis.d.ts.map +1 -1
  76. package/dist/db/tool-analysis.js +35 -17
  77. package/dist/db/tool-analysis.js.map +1 -1
  78. package/dist/db/types.d.ts +64 -1
  79. package/dist/db/types.d.ts.map +1 -1
  80. package/dist/filter/fields.d.ts.map +1 -1
  81. package/dist/filter/fields.js +22 -0
  82. package/dist/filter/fields.js.map +1 -1
  83. package/dist/filter/parser.js +2 -2
  84. package/dist/filter/parser.js.map +1 -1
  85. package/dist/filter/types.d.ts +1 -1
  86. package/dist/filter/types.d.ts.map +1 -1
  87. package/dist/html/analytics.test.ts +682 -0
  88. package/dist/html/analytics.ts +499 -0
  89. package/dist/html/browser.ts +39 -0
  90. package/dist/html/index.ts +97 -0
  91. package/dist/html/rpc-inspector.test.ts +529 -0
  92. package/dist/html/rpc-inspector.ts +1700 -0
  93. package/dist/html/templates.js +4 -4
  94. package/dist/html/templates.js.map +1 -1
  95. package/dist/html/templates.test.ts +861 -0
  96. package/dist/html/templates.ts +3163 -0
  97. package/dist/html/trace-viewer.html +624 -0
  98. package/dist/html/types.d.ts +3 -3
  99. package/dist/html/types.d.ts.map +1 -1
  100. package/dist/html/types.ts +491 -0
  101. package/dist/html/utils.ts +107 -0
  102. package/dist/monitor/data/connectors.d.ts.map +1 -1
  103. package/dist/monitor/data/connectors.js +113 -8
  104. package/dist/monitor/data/connectors.js.map +1 -1
  105. package/dist/monitor/data/popl.js +2 -2
  106. package/dist/monitor/data/popl.js.map +1 -1
  107. package/dist/monitor/routes/api.js +2 -2
  108. package/dist/monitor/routes/api.js.map +1 -1
  109. package/dist/monitor/routes/connectors.js +15 -15
  110. package/dist/monitor/routes/connectors.js.map +1 -1
  111. package/dist/monitor/routes/popl.js +5 -5
  112. package/dist/monitor/routes/popl.js.map +1 -1
  113. package/dist/monitor/templates/components.js +2 -2
  114. package/dist/monitor/templates/components.js.map +1 -1
  115. package/dist/monitor/templates/popl.js +4 -4
  116. package/dist/monitor/templates/popl.js.map +1 -1
  117. package/dist/monitor/types.d.ts +2 -2
  118. package/dist/monitor/types.d.ts.map +1 -1
  119. package/dist/proxy/bridge-utils.d.ts +41 -0
  120. package/dist/proxy/bridge-utils.d.ts.map +1 -0
  121. package/dist/proxy/bridge-utils.js +60 -0
  122. package/dist/proxy/bridge-utils.js.map +1 -0
  123. package/dist/proxy/ipc-client.d.ts.map +1 -1
  124. package/dist/proxy/ipc-client.js +1 -2
  125. package/dist/proxy/ipc-client.js.map +1 -1
  126. package/dist/proxy/ipc-server.d.ts.map +1 -1
  127. package/dist/proxy/ipc-server.js +4 -2
  128. package/dist/proxy/ipc-server.js.map +1 -1
  129. package/dist/proxy/mcp-server.d.ts +31 -0
  130. package/dist/proxy/mcp-server.d.ts.map +1 -1
  131. package/dist/proxy/mcp-server.js +393 -4
  132. package/dist/proxy/mcp-server.js.map +1 -1
  133. package/dist/proxy/types.d.ts +95 -0
  134. package/dist/proxy/types.d.ts.map +1 -1
  135. package/dist/secrets/management.d.ts +2 -2
  136. package/dist/secrets/management.d.ts.map +1 -1
  137. package/dist/secrets/management.js +7 -7
  138. package/dist/secrets/management.js.map +1 -1
  139. package/dist/shell/completer.d.ts.map +1 -1
  140. package/dist/shell/completer.js +16 -0
  141. package/dist/shell/completer.js.map +1 -1
  142. package/dist/shell/context-applicator.d.ts.map +1 -1
  143. package/dist/shell/context-applicator.js +32 -0
  144. package/dist/shell/context-applicator.js.map +1 -1
  145. package/dist/shell/filter-mappers.d.ts +5 -1
  146. package/dist/shell/filter-mappers.d.ts.map +1 -1
  147. package/dist/shell/filter-mappers.js +12 -0
  148. package/dist/shell/filter-mappers.js.map +1 -1
  149. package/dist/shell/find-command.js +13 -13
  150. package/dist/shell/find-command.js.map +1 -1
  151. package/dist/shell/inscribe-commands.js +5 -5
  152. package/dist/shell/inscribe-commands.js.map +1 -1
  153. package/dist/shell/pager/less-pager.d.ts +1 -1
  154. package/dist/shell/pager/less-pager.d.ts.map +1 -1
  155. package/dist/shell/pager/less-pager.js +5 -2
  156. package/dist/shell/pager/less-pager.js.map +1 -1
  157. package/dist/shell/pager/more-pager.d.ts +1 -1
  158. package/dist/shell/pager/more-pager.d.ts.map +1 -1
  159. package/dist/shell/pager/more-pager.js +3 -2
  160. package/dist/shell/pager/more-pager.js.map +1 -1
  161. package/dist/shell/pager/renderer.d.ts.map +1 -1
  162. package/dist/shell/pager/renderer.js +66 -15
  163. package/dist/shell/pager/renderer.js.map +1 -1
  164. package/dist/shell/pager/types.d.ts +5 -2
  165. package/dist/shell/pager/types.d.ts.map +1 -1
  166. package/dist/shell/pager/utils.d.ts +5 -2
  167. package/dist/shell/pager/utils.d.ts.map +1 -1
  168. package/dist/shell/pager/utils.js +14 -17
  169. package/dist/shell/pager/utils.js.map +1 -1
  170. package/dist/shell/pipeline-types.d.ts +12 -4
  171. package/dist/shell/pipeline-types.d.ts.map +1 -1
  172. package/dist/shell/ref-commands.js +7 -7
  173. package/dist/shell/ref-commands.js.map +1 -1
  174. package/dist/shell/ref-resolver.d.ts +15 -15
  175. package/dist/shell/ref-resolver.d.ts.map +1 -1
  176. package/dist/shell/ref-resolver.js +34 -20
  177. package/dist/shell/ref-resolver.js.map +1 -1
  178. package/dist/shell/repl.d.ts +25 -0
  179. package/dist/shell/repl.d.ts.map +1 -1
  180. package/dist/shell/repl.js +285 -51
  181. package/dist/shell/repl.js.map +1 -1
  182. package/dist/shell/router-commands.d.ts +30 -0
  183. package/dist/shell/router-commands.d.ts.map +1 -1
  184. package/dist/shell/router-commands.js +1011 -62
  185. package/dist/shell/router-commands.js.map +1 -1
  186. package/dist/shell/selector.d.ts +1 -1
  187. package/dist/shell/selector.d.ts.map +1 -1
  188. package/dist/shell/selector.js +1 -1
  189. package/dist/shell/selector.js.map +1 -1
  190. package/dist/shell/types.d.ts.map +1 -1
  191. package/dist/shell/types.js +3 -1
  192. package/dist/shell/types.js.map +1 -1
  193. package/dist/shell/where-command.d.ts.map +1 -1
  194. package/dist/shell/where-command.js +19 -3
  195. package/dist/shell/where-command.js.map +1 -1
  196. package/dist/utils/output.d.ts.map +1 -1
  197. package/dist/utils/output.js +7 -1
  198. package/dist/utils/output.js.map +1 -1
  199. package/package.json +2 -2
@@ -0,0 +1,624 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ ProofScan Trace Viewer MVP
4
+
5
+ TODO (follow-up):
6
+ - Add automated UI tests (Playwright/Puppeteer)
7
+ - Make sessionId configurable via URL parameter
8
+ - Add debouncing for scroll handler
9
+ - Implement LRU eviction for long sessions (>1000 events)
10
+ -->
11
+ <html lang="en">
12
+ <head>
13
+ <meta charset="UTF-8">
14
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
15
+ <meta http-equiv="Content-Security-Policy"
16
+ content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'">
17
+ <title>ProofScan Trace Viewer</title>
18
+ <style>
19
+ * {
20
+ margin: 0;
21
+ padding: 0;
22
+ box-sizing: border-box;
23
+ }
24
+
25
+ body {
26
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
27
+ background: #1a1a2e;
28
+ color: #eee;
29
+ min-height: 100vh;
30
+ display: flex;
31
+ flex-direction: column;
32
+ }
33
+
34
+ header {
35
+ background: #16213e;
36
+ padding: 16px 20px;
37
+ border-bottom: 1px solid #0f3460;
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: space-between;
41
+ position: sticky;
42
+ top: 0;
43
+ z-index: 100;
44
+ }
45
+
46
+ h1 {
47
+ font-size: 18px;
48
+ font-weight: 600;
49
+ color: #e94560;
50
+ }
51
+
52
+ #status {
53
+ display: flex;
54
+ align-items: center;
55
+ gap: 8px;
56
+ font-size: 14px;
57
+ }
58
+
59
+ .status-dot {
60
+ width: 10px;
61
+ height: 10px;
62
+ border-radius: 50%;
63
+ background: #555;
64
+ transition: background 0.3s ease;
65
+ }
66
+
67
+ .status-dot.connected {
68
+ background: #4ade80;
69
+ box-shadow: 0 0 10px #4ade80;
70
+ }
71
+
72
+ .status-dot.connecting {
73
+ background: #fbbf24;
74
+ animation: pulse 1s infinite;
75
+ }
76
+
77
+ .status-dot.error {
78
+ background: #ef4444;
79
+ }
80
+
81
+ @keyframes pulse {
82
+ 0%, 100% { opacity: 1; }
83
+ 50% { opacity: 0.5; }
84
+ }
85
+
86
+ main {
87
+ flex: 1;
88
+ display: flex;
89
+ flex-direction: column;
90
+ max-width: 1200px;
91
+ width: 100%;
92
+ margin: 0 auto;
93
+ padding: 16px;
94
+ overflow: hidden;
95
+ }
96
+
97
+ #message {
98
+ text-align: center;
99
+ font-size: 16px;
100
+ color: #aaa;
101
+ flex: 1;
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: center;
105
+ }
106
+
107
+ #content {
108
+ display: none;
109
+ flex: 1;
110
+ flex-direction: column;
111
+ overflow: hidden;
112
+ }
113
+
114
+ #loading {
115
+ text-align: center;
116
+ padding: 20px;
117
+ color: #aaa;
118
+ font-size: 14px;
119
+ }
120
+
121
+ #events-container {
122
+ flex: 1;
123
+ overflow-y: auto;
124
+ padding: 8px 0;
125
+ position: relative;
126
+ }
127
+
128
+ .event-card {
129
+ background: #16213e;
130
+ border-radius: 8px;
131
+ padding: 12px;
132
+ margin: 8px;
133
+ border-left: 4px solid #e94560;
134
+ font-size: 13px;
135
+ animation: fadeIn 0.2s ease;
136
+ }
137
+
138
+ .event-card.response {
139
+ border-left-color: #0f3460;
140
+ }
141
+
142
+ .event-card.hidden {
143
+ display: none;
144
+ }
145
+
146
+ @keyframes fadeIn {
147
+ from { opacity: 0; transform: translateY(-5px); }
148
+ to { opacity: 1; transform: translateY(0); }
149
+ }
150
+
151
+ .event-header {
152
+ display: flex;
153
+ align-items: center;
154
+ gap: 10px;
155
+ margin-bottom: 8px;
156
+ font-size: 12px;
157
+ color: #888;
158
+ }
159
+
160
+ .event-timestamp {
161
+ font-family: 'Monaco', 'Consolas', monospace;
162
+ color: #aaa;
163
+ }
164
+
165
+ .event-kind {
166
+ background: #0f3460;
167
+ padding: 2px 6px;
168
+ border-radius: 4px;
169
+ font-size: 11px;
170
+ color: #e94560;
171
+ }
172
+
173
+ .event-kind.response {
174
+ color: #4ade80;
175
+ }
176
+
177
+ .event-direction {
178
+ font-size: 11px;
179
+ color: #666;
180
+ }
181
+
182
+ .event-direction::before {
183
+ content: attr(data-icon);
184
+ margin-right: 4px;
185
+ }
186
+
187
+ .event-body {
188
+ font-family: 'Monaco', 'Consolas', monospace;
189
+ font-size: 12px;
190
+ color: #ccc;
191
+ background: #0a0a1a;
192
+ padding: 8px;
193
+ border-radius: 4px;
194
+ white-space: pre-wrap;
195
+ word-break: break-all;
196
+ max-height: 200px;
197
+ overflow-y: auto;
198
+ }
199
+
200
+ #load-more {
201
+ text-align: center;
202
+ padding: 12px;
203
+ color: #aaa;
204
+ font-size: 14px;
205
+ display: none;
206
+ }
207
+
208
+ #load-more.visible {
209
+ display: block;
210
+ }
211
+
212
+ .empty-state {
213
+ text-align: center;
214
+ padding: 40px;
215
+ color: #666;
216
+ font-size: 14px;
217
+ }
218
+
219
+ </style>
220
+ </head>
221
+ <body>
222
+ <header>
223
+ <h1>ProofScan Trace Viewer</h1>
224
+ <div id="status">
225
+ <div id="statusDot" class="status-dot"></div>
226
+ <span id="statusText">Initializing...</span>
227
+ </div>
228
+ </header>
229
+
230
+ <main>
231
+ <div id="message">Connecting to MCP host...</div>
232
+ <div id="content">
233
+ <div id="loading">Loading events...</div>
234
+ <div id="events-container">
235
+ <div id="events-list"></div>
236
+ </div>
237
+ <div id="load-more">Loading more...</div>
238
+ </div>
239
+ </main>
240
+
241
+ <script>
242
+ // MCP Apps UI - Phase 6.4 Trace Viewer MVP
243
+ (function() {
244
+ 'use strict';
245
+
246
+ // State
247
+ let sessionToken = null;
248
+ let currentRpcId = 1;
249
+ let trustedOrigin = null;
250
+ const pendingRequests = new Map();
251
+ const events = [];
252
+ const eventIds = new Set();
253
+ // TODO: Make sessionId configurable via URL parameter or initialization
254
+ const sessionId = 'test-session';
255
+ const pageSize = 50;
256
+ let isLoading = false;
257
+ let hasMore = true;
258
+
259
+ // DOM elements
260
+ const statusDot = document.getElementById('statusDot');
261
+ const statusText = document.getElementById('statusText');
262
+ const messageDiv = document.getElementById('message');
263
+ const contentDiv = document.getElementById('content');
264
+ const loadingDiv = document.getElementById('loading');
265
+ const eventsContainer = document.getElementById('events-container');
266
+ const eventsList = document.getElementById('events-list');
267
+ const loadMoreDiv = document.getElementById('load-more');
268
+
269
+ // Status helper
270
+ function setStatus(status, text) {
271
+ statusDot.className = 'status-dot ' + status;
272
+ statusText.textContent = text;
273
+ }
274
+
275
+ // Send JSON-RPC request
276
+ function sendRequest(method, params) {
277
+ const request = {
278
+ jsonrpc: '2.0',
279
+ id: currentRpcId++,
280
+ method: method,
281
+ params: params || {}
282
+ };
283
+ // Add session token
284
+ if (sessionToken) {
285
+ request.params._sessionToken = sessionToken;
286
+ }
287
+ console.log('[UI] Sending:', request);
288
+ const targetOrigin = trustedOrigin || '*';
289
+ window.parent.postMessage(request, targetOrigin);
290
+ pendingRequests.set(request.id, { method });
291
+ return request.id;
292
+ }
293
+
294
+ // Format timestamp
295
+ function formatTimestamp(ts) {
296
+ if (!ts) return '';
297
+ const date = new Date(ts);
298
+ if (isNaN(date.getTime())) return '';
299
+ return date.toLocaleTimeString() + '.' +
300
+ String(date.getMilliseconds()).padStart(3, '0');
301
+ }
302
+
303
+ // Format direction icon
304
+ function getDirectionIcon(direction) {
305
+ if (direction === 'client_to_server' || direction === 'request') {
306
+ return '↑';
307
+ } else if (direction === 'server_to_client' || direction === 'response') {
308
+ return '↓';
309
+ }
310
+ return '•';
311
+ }
312
+
313
+ // Create event card element
314
+ function createEventCard(event) {
315
+ const card = document.createElement('div');
316
+ card.className = 'event-card';
317
+ card.dataset.eventId = event.id || '';
318
+
319
+ const isResponse = event.kind === 'response' ||
320
+ event.direction === 'server_to_client' ||
321
+ (event._meta && event._meta.direction === 'server_to_client');
322
+
323
+ if (isResponse) {
324
+ card.classList.add('response');
325
+ }
326
+
327
+ const direction = event.direction || event._meta?.direction || '';
328
+ const icon = getDirectionIcon(direction);
329
+ const timestamp = event.timestamp || event._meta?.timestamp || '';
330
+ const kind = event.kind || event.type || 'unknown';
331
+
332
+ let html = '<div class="event-header">';
333
+ html += '<span class="event-timestamp">' + formatTimestamp(timestamp) + '</span>';
334
+ html += '<span class="event-kind' + (isResponse ? ' response' : '') + '">' + kind + '</span>';
335
+ html += '<span class="event-direction" data-icon="' + icon + '">' + direction + '</span>';
336
+ html += '</div>';
337
+
338
+ const body = event.data || event.content || event.payload || JSON.stringify(event, null, 2);
339
+ html += '<div class="event-body">' + escapeHtml(body) + '</div>';
340
+
341
+ card.innerHTML = html;
342
+ return card;
343
+ }
344
+
345
+ // Escape HTML
346
+ function escapeHtml(str) {
347
+ if (typeof str !== 'string') {
348
+ str = JSON.stringify(str, null, 2);
349
+ }
350
+ return str
351
+ .replace(/&/g, '&amp;')
352
+ .replace(/</g, '&lt;')
353
+ .replace(/>/g, '&gt;')
354
+ .replace(/"/g, '&quot;');
355
+ }
356
+
357
+ // Add event (idempotent)
358
+ function addEvent(event, prepend = false) {
359
+ const eventId = event.id || event._meta?.id || JSON.stringify(event);
360
+ if (eventIds.has(eventId)) {
361
+ return false; // Already exists
362
+ }
363
+
364
+ eventIds.add(eventId);
365
+
366
+ const card = createEventCard(event);
367
+ if (prepend) {
368
+ events.unshift(event);
369
+ eventsList.insertBefore(card, eventsList.firstChild);
370
+ } else {
371
+ events.push(event);
372
+ eventsList.appendChild(card);
373
+ }
374
+
375
+ return true;
376
+ }
377
+
378
+ // Show/hide events based on visible range (simple virtual scroll)
379
+ function updateVisibleEvents() {
380
+ const container = eventsContainer;
381
+ const scrollTop = container.scrollTop;
382
+ const viewportHeight = container.clientHeight;
383
+ const buffer = 100; // Buffer around viewport
384
+
385
+ const visibleStart = Math.floor((scrollTop - buffer) / 50) - 10;
386
+ const visibleEnd = Math.ceil((scrollTop + viewportHeight + buffer) / 50) + 10;
387
+
388
+ const cards = eventsList.querySelectorAll('.event-card');
389
+ cards.forEach((card, index) => {
390
+ if (index >= visibleStart && index < visibleEnd) {
391
+ card.classList.remove('hidden');
392
+ } else {
393
+ card.classList.add('hidden');
394
+ }
395
+ });
396
+ }
397
+
398
+ // Load events via proofscan_getEvents
399
+ function loadEvents(beforeCursor = null, prepend = false) {
400
+ if (isLoading) return;
401
+ isLoading = true;
402
+ loadMoreDiv.classList.add('visible');
403
+
404
+ const params = {
405
+ sessionId: sessionId,
406
+ limit: pageSize
407
+ };
408
+
409
+ if (beforeCursor) {
410
+ params.before = beforeCursor;
411
+ }
412
+
413
+ const requestId = sendRequest('tools/call', {
414
+ name: 'proofscan_getEvents',
415
+ arguments: params
416
+ });
417
+
418
+ pendingRequests.set(requestId, {
419
+ method: 'tools/call',
420
+ prepend: prepend,
421
+ beforeCursor: beforeCursor
422
+ });
423
+ }
424
+
425
+ // Handle tools/call response
426
+ function handleToolsCallResponse(msg, pending) {
427
+ const result = msg.result;
428
+
429
+ if (result && result.content && result.content.length > 0) {
430
+ const content = result.content[0];
431
+
432
+ if (content.type === 'text') {
433
+ try {
434
+ const data = JSON.parse(content.text);
435
+
436
+ if (data.events && Array.isArray(data.events)) {
437
+ let addedCount = 0;
438
+ data.events.forEach(event => {
439
+ if (addEvent(event, pending.prepend)) {
440
+ addedCount++;
441
+ }
442
+ });
443
+
444
+ console.log('[UI] Loaded', addedCount, 'events');
445
+
446
+ if (data._meta && data._meta.cursors) {
447
+ hasMore = !!data._meta.cursors.before;
448
+ } else {
449
+ hasMore = data.events.length >= pageSize;
450
+ }
451
+
452
+ loadingDiv.style.display = 'none';
453
+
454
+ // Only show empty state on initial load, not on pagination
455
+ if (events.length === 0 && !prepend) {
456
+ eventsList.innerHTML = '<div class="empty-state">No events found</div>';
457
+ }
458
+ }
459
+ } catch (e) {
460
+ console.error('[UI] Failed to parse events:', e);
461
+ eventsList.innerHTML = '<div class="empty-state">Failed to load events</div>';
462
+ hasMore = false; // Prevent retry on parse error
463
+ isLoading = false;
464
+ loadMoreDiv.classList.remove('visible');
465
+ return;
466
+ }
467
+ }
468
+ } else if (msg.error) {
469
+ console.error('[UI] Error loading events:', msg.error);
470
+ eventsList.innerHTML = '<div class="empty-state">Error: ' + escapeHtml(msg.error.message || 'Unknown error') + '</div>';
471
+ }
472
+
473
+ isLoading = false;
474
+ loadMoreDiv.classList.remove('visible');
475
+ }
476
+
477
+ // Handle incoming messages
478
+ function handleMessage(event) {
479
+ // Origin validation: lock to first origin that sends a message
480
+ if (!trustedOrigin && event.origin) {
481
+ trustedOrigin = event.origin;
482
+ console.log('[UI] Origin locked to:', trustedOrigin);
483
+ }
484
+ if (event.origin !== trustedOrigin) {
485
+ console.log('[UI] Origin mismatch - ignoring message from:', event.origin);
486
+ return;
487
+ }
488
+
489
+ const msg = event.data;
490
+
491
+ // Validate JSON-RPC structure
492
+ if (!msg || typeof msg !== 'object' || msg.jsonrpc !== '2.0') {
493
+ return;
494
+ }
495
+
496
+ // Token validation
497
+ if (msg.params && msg.params._sessionToken !== undefined) {
498
+ if (msg.params._sessionToken !== sessionToken) {
499
+ console.log('[UI] Token mismatch - ignoring message');
500
+ return;
501
+ }
502
+ }
503
+
504
+ console.log('[UI] Received:', msg);
505
+
506
+ // Handle response (has id)
507
+ if ('id' in msg && !msg.method) {
508
+ const pending = pendingRequests.get(msg.id);
509
+ if (pending) {
510
+ if (pending.method === 'ui/initialize') {
511
+ // Response to ui/initialize
512
+ if (msg.result && msg.result.sessionToken) {
513
+ sessionToken = msg.result.sessionToken;
514
+ setStatus('connected', 'Connected');
515
+ messageDiv.style.display = 'none';
516
+ contentDiv.style.display = 'flex';
517
+ console.log('[UI] Session token received:', sessionToken);
518
+
519
+ // Load initial events
520
+ loadEvents();
521
+ } else if (msg.error) {
522
+ setStatus('error', 'Error');
523
+ messageDiv.textContent = 'Error: ' + msg.error.message;
524
+ }
525
+ } else if (pending.method === 'tools/call') {
526
+ handleToolsCallResponse(msg, pending);
527
+ }
528
+ pendingRequests.delete(msg.id);
529
+ }
530
+ }
531
+
532
+ // Handle notifications (no id)
533
+ if (msg.method && !('id' in msg)) {
534
+ // Handle ui/notify
535
+ if (msg.method === 'ui/notify') {
536
+ const type = msg.params?.type;
537
+ const payload = msg.params?.payload;
538
+ console.log('[UI] Notification:', type, payload);
539
+
540
+ // If payload contains new events
541
+ if (payload && payload.events && Array.isArray(payload.events)) {
542
+ let addedCount = 0;
543
+ payload.events.forEach(event => {
544
+ if (addEvent(event, false)) {
545
+ addedCount++;
546
+ }
547
+ });
548
+
549
+ if (addedCount > 0) {
550
+ console.log('[UI] Added', addedCount, 'new events via notification');
551
+ updateVisibleEvents();
552
+ }
553
+ }
554
+ }
555
+ // Handle ui/notifications/*
556
+ else if (msg.method.startsWith('ui/notifications/')) {
557
+ const type = msg.method.replace('ui/notifications/', '');
558
+ console.log('[UI] Notification:', type, msg.params);
559
+
560
+ // Check if this is an event notification
561
+ const payload = msg.params;
562
+ if (payload && (payload.event || payload.events || payload.data)) {
563
+ const eventData = payload.event || payload.events || payload.data;
564
+
565
+ if (Array.isArray(eventData)) {
566
+ eventData.forEach(event => addEvent(event, false));
567
+ } else {
568
+ addEvent(eventData, false);
569
+ }
570
+
571
+ updateVisibleEvents();
572
+ }
573
+ }
574
+ }
575
+ }
576
+
577
+ // Scroll handler for pagination (debounced)
578
+ let scrollTimeout;
579
+ function handleScroll() {
580
+ // Debounce scroll events to avoid performance issues
581
+ clearTimeout(scrollTimeout);
582
+ scrollTimeout = setTimeout(() => {
583
+ const scrollTop = eventsContainer.scrollTop;
584
+
585
+ // Load more when scrolled near top
586
+ if (scrollTop < 100 && hasMore && !isLoading) {
587
+ const firstCard = eventsList.querySelector('.event-card');
588
+ const cursor = firstCard?.dataset?.eventId;
589
+ if (cursor && cursor !== '') {
590
+ loadEvents(cursor, true);
591
+ }
592
+ }
593
+
594
+ // Update visible events
595
+ updateVisibleEvents();
596
+ }, 100);
597
+ }
598
+
599
+ // Initialize
600
+ function init() {
601
+ setStatus('connecting', 'Connecting...');
602
+
603
+ // Listen for postMessage
604
+ window.addEventListener('message', handleMessage);
605
+
606
+ // Add scroll listener
607
+ eventsContainer.addEventListener('scroll', handleScroll);
608
+
609
+ // Send ui/initialize request
610
+ sendRequest('ui/initialize', {
611
+ protocolVersion: '2025-11-21'
612
+ });
613
+ }
614
+
615
+ // Start
616
+ if (document.readyState === 'loading') {
617
+ document.addEventListener('DOMContentLoaded', init);
618
+ } else {
619
+ init();
620
+ }
621
+ })();
622
+ </script>
623
+ </body>
624
+ </html>
@@ -73,7 +73,7 @@ export interface PayloadData {
73
73
  export interface HtmlRpcData {
74
74
  rpc_id: string;
75
75
  session_id: string;
76
- connector_id: string;
76
+ target_id: string;
77
77
  method: string;
78
78
  status: RpcStatus;
79
79
  latency_ms: number | null;
@@ -109,7 +109,7 @@ export interface SessionRpcDetail {
109
109
  */
110
110
  export interface HtmlSessionData {
111
111
  session_id: string;
112
- connector_id: string;
112
+ target_id: string;
113
113
  started_at: string;
114
114
  ended_at: string | null;
115
115
  exit_reason: string | null;
@@ -171,7 +171,7 @@ export interface HtmlMcpServerInfo {
171
171
  * Connector configuration info for HTML display
172
172
  */
173
173
  export interface HtmlConnectorInfo {
174
- connector_id: string;
174
+ target_id: string;
175
175
  enabled: boolean;
176
176
  transport: {
177
177
  type: 'stdio' | 'rpc-http' | 'rpc-sse';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/html/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/html/types.ts"],"names":[],"mappings":"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"}