@auto-engineer/cli 0.8.4 → 0.8.6
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.
- package/CHANGELOG.md +17 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/plugin-loader.d.ts +1 -0
- package/dist/src/plugin-loader.d.ts.map +1 -1
- package/dist/src/plugin-loader.js +22 -29
- package/dist/src/plugin-loader.js.map +1 -1
- package/dist/src/server/dashboard.html +330 -52
- package/dist/src/server/event-processor.d.ts +21 -9
- package/dist/src/server/event-processor.d.ts.map +1 -1
- package/dist/src/server/event-processor.js +101 -25
- package/dist/src/server/event-processor.js.map +1 -1
- package/dist/src/server/file-syncer/discovery/bareImports.d.ts +3 -0
- package/dist/src/server/file-syncer/discovery/bareImports.d.ts.map +1 -0
- package/dist/src/server/file-syncer/discovery/bareImports.js +36 -0
- package/dist/src/server/file-syncer/discovery/bareImports.js.map +1 -0
- package/dist/src/server/file-syncer/discovery/dts.d.ts +11 -0
- package/dist/src/server/file-syncer/discovery/dts.d.ts.map +1 -0
- package/dist/src/server/file-syncer/discovery/dts.js +108 -0
- package/dist/src/server/file-syncer/discovery/dts.js.map +1 -0
- package/dist/src/server/file-syncer/index.d.ts +17 -0
- package/dist/src/server/file-syncer/index.d.ts.map +1 -0
- package/dist/src/server/file-syncer/index.js +210 -0
- package/dist/src/server/file-syncer/index.js.map +1 -0
- package/dist/src/server/file-syncer/sync/resolveSyncFileSet.d.ts +7 -0
- package/dist/src/server/file-syncer/sync/resolveSyncFileSet.d.ts.map +1 -0
- package/dist/src/server/file-syncer/sync/resolveSyncFileSet.js +76 -0
- package/dist/src/server/file-syncer/sync/resolveSyncFileSet.js.map +1 -0
- package/dist/src/server/file-syncer/types/wire.d.ts +14 -0
- package/dist/src/server/file-syncer/types/wire.d.ts.map +1 -0
- package/dist/src/server/file-syncer/types/wire.js +2 -0
- package/dist/src/server/file-syncer/types/wire.js.map +1 -0
- package/dist/src/server/file-syncer/utils/hash.d.ts +5 -0
- package/dist/src/server/file-syncer/utils/hash.d.ts.map +1 -0
- package/dist/src/server/file-syncer/utils/hash.js +20 -0
- package/dist/src/server/file-syncer/utils/hash.js.map +1 -0
- package/dist/src/server/file-syncer/utils/path.d.ts +15 -0
- package/dist/src/server/file-syncer/utils/path.d.ts.map +1 -0
- package/dist/src/server/file-syncer/utils/path.js +100 -0
- package/dist/src/server/file-syncer/utils/path.js.map +1 -0
- package/dist/src/server/http-routes.d.ts +4 -5
- package/dist/src/server/http-routes.d.ts.map +1 -1
- package/dist/src/server/http-routes.js +234 -31
- package/dist/src/server/http-routes.js.map +1 -1
- package/dist/src/server/server.d.ts +8 -10
- package/dist/src/server/server.d.ts.map +1 -1
- package/dist/src/server/server.js +21 -13
- package/dist/src/server/server.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -4
- package/dist/src/server/file-syncer.d.ts +0 -21
- package/dist/src/server/file-syncer.d.ts.map +0 -1
- package/dist/src/server/file-syncer.js +0 -101
- package/dist/src/server/file-syncer.js.map +0 -1
|
@@ -475,7 +475,7 @@
|
|
|
475
475
|
transition: background-color 0.3s ease;
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
-
.
|
|
478
|
+
.messages-header {
|
|
479
479
|
padding: 16px 20px;
|
|
480
480
|
background: var(--bg-tertiary);
|
|
481
481
|
border-bottom: 1px solid var(--border);
|
|
@@ -484,7 +484,7 @@
|
|
|
484
484
|
align-items: center;
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
-
.
|
|
487
|
+
.messages-title {
|
|
488
488
|
font-size: 11px;
|
|
489
489
|
font-weight: 600;
|
|
490
490
|
text-transform: uppercase;
|
|
@@ -494,17 +494,147 @@
|
|
|
494
494
|
align-items: center;
|
|
495
495
|
}
|
|
496
496
|
|
|
497
|
-
.
|
|
497
|
+
.messages-controls {
|
|
498
498
|
display: flex;
|
|
499
499
|
gap: 8px;
|
|
500
500
|
}
|
|
501
501
|
|
|
502
|
-
.
|
|
502
|
+
.message-filters {
|
|
503
|
+
padding: 12px 20px;
|
|
504
|
+
background: var(--bg-secondary);
|
|
505
|
+
border-bottom: 1px solid var(--border);
|
|
506
|
+
display: flex;
|
|
507
|
+
flex-direction: column;
|
|
508
|
+
gap: 8px;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
.filter-row {
|
|
512
|
+
display: flex;
|
|
513
|
+
gap: 8px;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
.filter-row select,
|
|
517
|
+
.filter-row input,
|
|
518
|
+
.filter-row textarea {
|
|
519
|
+
flex: 1;
|
|
520
|
+
padding: 6px 8px;
|
|
521
|
+
border: 1px solid var(--border);
|
|
522
|
+
border-radius: 4px;
|
|
523
|
+
background: var(--bg-primary);
|
|
524
|
+
color: var(--text-primary);
|
|
525
|
+
font-size: 11px;
|
|
526
|
+
font-family: 'SF Mono', 'Monaco', monospace;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
.filter-row textarea {
|
|
530
|
+
resize: vertical;
|
|
531
|
+
min-height: 32px;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
.filter-stats {
|
|
535
|
+
font-size: 10px;
|
|
536
|
+
color: var(--text-tertiary);
|
|
537
|
+
text-align: center;
|
|
538
|
+
padding: 4px 0;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
.messages-list {
|
|
503
542
|
flex: 1;
|
|
504
543
|
overflow-y: auto;
|
|
505
544
|
padding: 12px;
|
|
506
545
|
}
|
|
507
546
|
|
|
547
|
+
.message-item {
|
|
548
|
+
background: var(--bg-secondary);
|
|
549
|
+
border: 1px solid var(--border);
|
|
550
|
+
border-radius: 6px;
|
|
551
|
+
margin-bottom: 8px;
|
|
552
|
+
overflow: hidden;
|
|
553
|
+
transition: all 0.2s ease;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
.message-item:hover {
|
|
557
|
+
border-color: var(--accent);
|
|
558
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
.message-header {
|
|
562
|
+
padding: 8px 12px;
|
|
563
|
+
background: var(--bg-tertiary);
|
|
564
|
+
border-bottom: 1px solid var(--border);
|
|
565
|
+
display: flex;
|
|
566
|
+
justify-content: space-between;
|
|
567
|
+
align-items: center;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
.message-type {
|
|
571
|
+
display: flex;
|
|
572
|
+
align-items: center;
|
|
573
|
+
gap: 6px;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
.message-type-indicator {
|
|
577
|
+
width: 8px;
|
|
578
|
+
height: 8px;
|
|
579
|
+
border-radius: 2px;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
.message-type-indicator.command {
|
|
583
|
+
background: #42c3f7;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
.message-type-indicator.event {
|
|
587
|
+
background: #ff8a1d;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
.message-name {
|
|
591
|
+
font-family: 'SF Mono', 'Monaco', monospace;
|
|
592
|
+
font-size: 11px;
|
|
593
|
+
font-weight: 600;
|
|
594
|
+
color: var(--text-primary);
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.message-timestamp {
|
|
598
|
+
font-size: 9px;
|
|
599
|
+
color: var(--text-tertiary);
|
|
600
|
+
font-family: 'SF Mono', 'Monaco', monospace;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
.message-body {
|
|
604
|
+
padding: 12px;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
.message-ids {
|
|
608
|
+
display: flex;
|
|
609
|
+
gap: 12px;
|
|
610
|
+
margin-bottom: 8px;
|
|
611
|
+
font-size: 9px;
|
|
612
|
+
color: var(--text-tertiary);
|
|
613
|
+
font-family: 'SF Mono', 'Monaco', monospace;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.message-id {
|
|
617
|
+
display: flex;
|
|
618
|
+
gap: 4px;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
.message-id-label {
|
|
622
|
+
color: var(--text-secondary);
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.message-data {
|
|
626
|
+
background: var(--bg-primary);
|
|
627
|
+
border: 1px solid var(--border);
|
|
628
|
+
border-radius: 4px;
|
|
629
|
+
padding: 8px;
|
|
630
|
+
font-family: 'SF Mono', 'Monaco', monospace;
|
|
631
|
+
font-size: 10px;
|
|
632
|
+
line-height: 1.4;
|
|
633
|
+
color: var(--text-primary);
|
|
634
|
+
max-height: 200px;
|
|
635
|
+
overflow-y: auto;
|
|
636
|
+
}
|
|
637
|
+
|
|
508
638
|
/* Registry sections in left sidebar */
|
|
509
639
|
.handlers-section {
|
|
510
640
|
flex: 1;
|
|
@@ -1030,20 +1160,50 @@
|
|
|
1030
1160
|
</div>
|
|
1031
1161
|
</div>
|
|
1032
1162
|
|
|
1033
|
-
<!-- Right Sidebar:
|
|
1163
|
+
<!-- Right Sidebar: Messages -->
|
|
1034
1164
|
<div class="sidebar-right">
|
|
1035
|
-
<div class="
|
|
1036
|
-
<div class="
|
|
1037
|
-
<span class="tab-indicator
|
|
1038
|
-
|
|
1165
|
+
<div class="messages-header">
|
|
1166
|
+
<div class="messages-title">
|
|
1167
|
+
<span class="tab-indicator message"></span>
|
|
1168
|
+
Messages
|
|
1039
1169
|
</div>
|
|
1040
|
-
<div class="
|
|
1041
|
-
<button class="button button-small button-secondary" onclick="
|
|
1042
|
-
<button class="button button-small button-secondary" onclick="
|
|
1170
|
+
<div class="messages-controls">
|
|
1171
|
+
<button class="button button-small button-secondary" onclick="loadMessages()">↻</button>
|
|
1172
|
+
<button class="button button-small button-secondary" onclick="clearMessageFilters()">Clear Filters</button>
|
|
1043
1173
|
</div>
|
|
1044
1174
|
</div>
|
|
1045
|
-
|
|
1046
|
-
|
|
1175
|
+
|
|
1176
|
+
<!-- Message Filters -->
|
|
1177
|
+
<div class="message-filters">
|
|
1178
|
+
<div class="filter-row">
|
|
1179
|
+
<select id="messageTypeFilter" onchange="applyMessageFilters()">
|
|
1180
|
+
<option value="">All Types</option>
|
|
1181
|
+
<option value="command">Commands</option>
|
|
1182
|
+
<option value="event">Events</option>
|
|
1183
|
+
</select>
|
|
1184
|
+
|
|
1185
|
+
<select id="sessionFilter" onchange="applyMessageFilters()">
|
|
1186
|
+
<option value="">All Sessions</option>
|
|
1187
|
+
</select>
|
|
1188
|
+
</div>
|
|
1189
|
+
|
|
1190
|
+
<div class="filter-row">
|
|
1191
|
+
<input type="text" id="messageNameFilter" placeholder="Message name..." onchange="applyMessageFilters()" />
|
|
1192
|
+
<input type="text" id="correlationIdFilter" placeholder="Correlation ID..." onchange="applyMessageFilters()" />
|
|
1193
|
+
</div>
|
|
1194
|
+
|
|
1195
|
+
<div class="filter-row">
|
|
1196
|
+
<textarea id="jsonFilter" placeholder='JSON Filter (e.g., {"userId": "123"})'
|
|
1197
|
+
onchange="applyMessageFilters()" rows="2"></textarea>
|
|
1198
|
+
</div>
|
|
1199
|
+
|
|
1200
|
+
<div class="filter-stats" id="filterStats">
|
|
1201
|
+
Showing all messages
|
|
1202
|
+
</div>
|
|
1203
|
+
</div>
|
|
1204
|
+
|
|
1205
|
+
<div class="messages-list" id="messagesContainer">
|
|
1206
|
+
<div class="empty">No messages yet</div>
|
|
1047
1207
|
</div>
|
|
1048
1208
|
</div>
|
|
1049
1209
|
</div>
|
|
@@ -1051,7 +1211,9 @@
|
|
|
1051
1211
|
<script>
|
|
1052
1212
|
const API_BASE = window.location.origin;
|
|
1053
1213
|
let currentState = {};
|
|
1054
|
-
let
|
|
1214
|
+
let currentMessages = [];
|
|
1215
|
+
let filteredMessages = [];
|
|
1216
|
+
let availableSessions = [];
|
|
1055
1217
|
let responseStartTime;
|
|
1056
1218
|
let availableCommands = [];
|
|
1057
1219
|
let currentCommand = localStorage.getItem('lastCommand') || null;
|
|
@@ -1356,66 +1518,182 @@
|
|
|
1356
1518
|
}
|
|
1357
1519
|
}
|
|
1358
1520
|
|
|
1359
|
-
async function
|
|
1521
|
+
async function loadMessages() {
|
|
1360
1522
|
try {
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1523
|
+
// Load all messages
|
|
1524
|
+
const messagesResponse = await fetch(`${API_BASE}/messages?count=500`);
|
|
1525
|
+
currentMessages = await messagesResponse.json();
|
|
1526
|
+
|
|
1527
|
+
// Load available sessions for filter dropdown
|
|
1528
|
+
const sessionsResponse = await fetch(`${API_BASE}/sessions`);
|
|
1529
|
+
availableSessions = await sessionsResponse.json();
|
|
1530
|
+
updateSessionFilter();
|
|
1531
|
+
|
|
1532
|
+
applyMessageFilters();
|
|
1364
1533
|
} catch (error) {
|
|
1365
|
-
console.error('Failed to load
|
|
1366
|
-
document.getElementById('
|
|
1534
|
+
console.error('Failed to load messages:', error);
|
|
1535
|
+
document.getElementById('messagesContainer').innerHTML = '<div class="empty">Failed to load messages</div>';
|
|
1367
1536
|
}
|
|
1368
1537
|
}
|
|
1369
1538
|
|
|
1370
|
-
function
|
|
1371
|
-
const
|
|
1372
|
-
const
|
|
1539
|
+
function updateSessionFilter() {
|
|
1540
|
+
const sessionFilter = document.getElementById('sessionFilter');
|
|
1541
|
+
const currentValue = sessionFilter.value;
|
|
1373
1542
|
|
|
1374
|
-
|
|
1375
|
-
container.innerHTML = '<div class="empty">No events yet</div>';
|
|
1376
|
-
return;
|
|
1377
|
-
}
|
|
1543
|
+
sessionFilter.innerHTML = '<option value="">All Sessions</option>';
|
|
1378
1544
|
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
const
|
|
1383
|
-
|
|
1545
|
+
availableSessions
|
|
1546
|
+
.sort((a, b) => new Date(b.startedAt) - new Date(a.startedAt))
|
|
1547
|
+
.forEach(session => {
|
|
1548
|
+
const startTime = new Date(session.startedAt).toLocaleString();
|
|
1549
|
+
const option = document.createElement('option');
|
|
1550
|
+
option.value = session.sessionId;
|
|
1551
|
+
option.textContent = `${session.sessionId} (${startTime})`;
|
|
1552
|
+
sessionFilter.appendChild(option);
|
|
1384
1553
|
});
|
|
1554
|
+
|
|
1555
|
+
// Restore previous selection
|
|
1556
|
+
sessionFilter.value = currentValue;
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1559
|
+
function applyMessageFilters() {
|
|
1560
|
+
const messageTypeFilter = document.getElementById('messageTypeFilter').value;
|
|
1561
|
+
const sessionFilter = document.getElementById('sessionFilter').value;
|
|
1562
|
+
const messageNameFilter = document.getElementById('messageNameFilter').value.toLowerCase();
|
|
1563
|
+
const correlationIdFilter = document.getElementById('correlationIdFilter').value.toLowerCase();
|
|
1564
|
+
const jsonFilterText = document.getElementById('jsonFilter').value.trim();
|
|
1565
|
+
|
|
1566
|
+
let jsonFilterObj = null;
|
|
1567
|
+
if (jsonFilterText) {
|
|
1568
|
+
try {
|
|
1569
|
+
jsonFilterObj = JSON.parse(jsonFilterText);
|
|
1570
|
+
} catch (error) {
|
|
1571
|
+
console.warn('Invalid JSON filter:', error);
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
filteredMessages = currentMessages.filter(message => {
|
|
1576
|
+
// Message type filter
|
|
1577
|
+
if (messageTypeFilter && message.messageType !== messageTypeFilter) {
|
|
1578
|
+
return false;
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1581
|
+
// Session filter
|
|
1582
|
+
if (sessionFilter && message.sessionId !== sessionFilter) {
|
|
1583
|
+
return false;
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1586
|
+
// Message name filter
|
|
1587
|
+
if (messageNameFilter && !message.message.type.toLowerCase().includes(messageNameFilter)) {
|
|
1588
|
+
return false;
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
// Correlation ID filter
|
|
1592
|
+
if (correlationIdFilter) {
|
|
1593
|
+
const correlationId = message.message.correlationId || '';
|
|
1594
|
+
if (!correlationId.toLowerCase().includes(correlationIdFilter)) {
|
|
1595
|
+
return false;
|
|
1596
|
+
}
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
// JSON filter
|
|
1600
|
+
if (jsonFilterObj) {
|
|
1601
|
+
if (!matchesJsonFilter(message.message.data, jsonFilterObj)) {
|
|
1602
|
+
return false;
|
|
1603
|
+
}
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
return true;
|
|
1607
|
+
});
|
|
1608
|
+
|
|
1609
|
+
displayMessages();
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
function matchesJsonFilter(data, filterObj) {
|
|
1613
|
+
for (const [key, expectedValue] of Object.entries(filterObj)) {
|
|
1614
|
+
if (data[key] !== expectedValue) {
|
|
1615
|
+
return false;
|
|
1616
|
+
}
|
|
1385
1617
|
}
|
|
1618
|
+
return true;
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
function displayMessages() {
|
|
1622
|
+
const container = document.getElementById('messagesContainer');
|
|
1623
|
+
const statsElement = document.getElementById('filterStats');
|
|
1386
1624
|
|
|
1387
|
-
if (
|
|
1388
|
-
container.innerHTML = '<div class="empty">No
|
|
1625
|
+
if (filteredMessages.length === 0) {
|
|
1626
|
+
container.innerHTML = '<div class="empty">No messages match the current filters</div>';
|
|
1627
|
+
statsElement.textContent = `Showing 0 of ${currentMessages.length} messages`;
|
|
1389
1628
|
return;
|
|
1390
1629
|
}
|
|
1391
1630
|
|
|
1392
|
-
//
|
|
1393
|
-
const
|
|
1631
|
+
// Update stats
|
|
1632
|
+
const commandCount = filteredMessages.filter(m => m.messageType === 'command').length;
|
|
1633
|
+
const eventCount = filteredMessages.filter(m => m.messageType === 'event').length;
|
|
1634
|
+
statsElement.textContent = `Showing ${filteredMessages.length} of ${currentMessages.length} messages (${commandCount} commands, ${eventCount} events)`;
|
|
1635
|
+
|
|
1636
|
+
// Display messages in reverse chronological order (newest first)
|
|
1637
|
+
const messagesHtml = filteredMessages
|
|
1394
1638
|
.slice()
|
|
1395
1639
|
.reverse()
|
|
1396
|
-
.map((
|
|
1397
|
-
const time = new Date(
|
|
1640
|
+
.map((message) => {
|
|
1641
|
+
const time = new Date(message.timestamp).toLocaleTimeString();
|
|
1642
|
+
const date = new Date(message.timestamp).toLocaleDateString();
|
|
1643
|
+
|
|
1644
|
+
const correlationId = message.message.correlationId || 'none';
|
|
1645
|
+
const requestId = message.message.requestId || 'none';
|
|
1646
|
+
const sessionId = message.sessionId || 'none';
|
|
1647
|
+
|
|
1398
1648
|
return `
|
|
1399
|
-
<div class="
|
|
1400
|
-
<div class="
|
|
1401
|
-
<div class="
|
|
1402
|
-
|
|
1649
|
+
<div class="message-item">
|
|
1650
|
+
<div class="message-header">
|
|
1651
|
+
<div class="message-type">
|
|
1652
|
+
<div class="message-type-indicator ${message.messageType}"></div>
|
|
1653
|
+
<div class="message-name">${message.message.type}</div>
|
|
1654
|
+
</div>
|
|
1655
|
+
<div class="message-timestamp">${date} ${time}</div>
|
|
1656
|
+
</div>
|
|
1657
|
+
<div class="message-body">
|
|
1658
|
+
<div class="message-ids">
|
|
1659
|
+
<div class="message-id">
|
|
1660
|
+
<span class="message-id-label">Session:</span>
|
|
1661
|
+
<span>${sessionId.substring(0, 8)}...</span>
|
|
1662
|
+
</div>
|
|
1663
|
+
<div class="message-id">
|
|
1664
|
+
<span class="message-id-label">Correlation:</span>
|
|
1665
|
+
<span>${correlationId.substring(0, 8)}...</span>
|
|
1666
|
+
</div>
|
|
1667
|
+
<div class="message-id">
|
|
1668
|
+
<span class="message-id-label">Request:</span>
|
|
1669
|
+
<span>${requestId.substring(0, 8)}...</span>
|
|
1670
|
+
</div>
|
|
1671
|
+
</div>
|
|
1672
|
+
<div class="message-data">${JSON.stringify(message.message.data, null, 2)}</div>
|
|
1403
1673
|
</div>
|
|
1404
|
-
<div class="event-data">${JSON.stringify(item.event.data, null, 2)}</div>
|
|
1405
1674
|
</div>
|
|
1406
1675
|
`;
|
|
1407
1676
|
})
|
|
1408
1677
|
.join('');
|
|
1409
1678
|
|
|
1410
|
-
container.innerHTML =
|
|
1679
|
+
container.innerHTML = messagesHtml;
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1682
|
+
function clearMessageFilters() {
|
|
1683
|
+
document.getElementById('messageTypeFilter').value = '';
|
|
1684
|
+
document.getElementById('sessionFilter').value = '';
|
|
1685
|
+
document.getElementById('messageNameFilter').value = '';
|
|
1686
|
+
document.getElementById('correlationIdFilter').value = '';
|
|
1687
|
+
document.getElementById('jsonFilter').value = '';
|
|
1688
|
+
applyMessageFilters();
|
|
1411
1689
|
}
|
|
1412
1690
|
|
|
1413
1691
|
// Event search removed - no longer needed
|
|
1414
1692
|
// document.getElementById('eventSearch').addEventListener('input', displayEvents);
|
|
1415
1693
|
|
|
1694
|
+
// Legacy function - no longer needed with new message system
|
|
1416
1695
|
async function clearEvents() {
|
|
1417
|
-
|
|
1418
|
-
displayEvents();
|
|
1696
|
+
console.log('clearEvents is deprecated - use clearMessageFilters instead');
|
|
1419
1697
|
}
|
|
1420
1698
|
|
|
1421
1699
|
|
|
@@ -1439,8 +1717,8 @@
|
|
|
1439
1717
|
if (message.type === 'event' || message.type === 'state') {
|
|
1440
1718
|
// Reload state when events occur
|
|
1441
1719
|
loadState();
|
|
1442
|
-
// Also reload
|
|
1443
|
-
|
|
1720
|
+
// Also reload messages
|
|
1721
|
+
loadMessages();
|
|
1444
1722
|
} else if (message.type === 'commandError') {
|
|
1445
1723
|
// Show command error in response
|
|
1446
1724
|
document.getElementById('responseContent').textContent = JSON.stringify({
|
|
@@ -1468,15 +1746,15 @@
|
|
|
1468
1746
|
// Initial load
|
|
1469
1747
|
loadRegistry();
|
|
1470
1748
|
loadState();
|
|
1471
|
-
|
|
1749
|
+
loadMessages();
|
|
1472
1750
|
|
|
1473
1751
|
// Initial command will be restored when registry loads
|
|
1474
1752
|
|
|
1475
1753
|
// Refresh registry every 5 seconds
|
|
1476
1754
|
setInterval(loadRegistry, 5000);
|
|
1477
1755
|
|
|
1478
|
-
// Auto-refresh
|
|
1479
|
-
setInterval(
|
|
1756
|
+
// Auto-refresh messages every 2 seconds
|
|
1757
|
+
setInterval(loadMessages, 2000);
|
|
1480
1758
|
</script>
|
|
1481
1759
|
</body>
|
|
1482
1760
|
</html>
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import type { MessageBus, Event } from '@auto-engineer/message-bus';
|
|
1
|
+
import type { MessageBus, Event, Command } from '@auto-engineer/message-bus';
|
|
2
|
+
import type { IMessageStore } from '@auto-engineer/message-store';
|
|
2
3
|
import type { StateManager } from './state-manager';
|
|
3
4
|
import type { EventRegistration } from '../dsl/types';
|
|
4
5
|
export declare class EventProcessor {
|
|
5
6
|
private messageBus;
|
|
7
|
+
private messageStore;
|
|
6
8
|
private stateManager;
|
|
7
9
|
private onEventBroadcast;
|
|
8
10
|
private eventHandlers;
|
|
9
|
-
private
|
|
10
|
-
|
|
11
|
-
constructor(messageBus: MessageBus, stateManager: StateManager<Record<string, unknown>>, onEventBroadcast: (event: Event) => void);
|
|
11
|
+
private correlationContext;
|
|
12
|
+
constructor(messageBus: MessageBus, messageStore: IMessageStore, stateManager: StateManager<Record<string, unknown>>, onEventBroadcast: (event: Event) => void);
|
|
12
13
|
setupGlobalEventListener(): void;
|
|
13
14
|
registerEventHandler(registration: EventRegistration): void;
|
|
14
15
|
private processHandlerResult;
|
|
@@ -20,10 +21,21 @@ export declare class EventProcessor {
|
|
|
20
21
|
private handleSequentialDispatch;
|
|
21
22
|
private handleCustomDispatch;
|
|
22
23
|
getEventHandlers(): Map<string, Array<(event: Event) => void>>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Store a command in the message store
|
|
26
|
+
*/
|
|
27
|
+
storeCommand(command: Command): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Enhance command with proper request and correlation IDs
|
|
30
|
+
*/
|
|
31
|
+
private enhanceCommandWithIds;
|
|
32
|
+
/**
|
|
33
|
+
* Try to find a correlation ID to inherit from the current context
|
|
34
|
+
*/
|
|
35
|
+
private findInheritedCorrelationId;
|
|
36
|
+
/**
|
|
37
|
+
* Clear correlation context periodically to prevent memory leaks
|
|
38
|
+
*/
|
|
39
|
+
private cleanupCorrelationContext;
|
|
28
40
|
}
|
|
29
41
|
//# sourceMappingURL=event-processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-processor.d.ts","sourceRoot":"","sources":["../../../src/server/event-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"event-processor.d.ts","sourceRoot":"","sources":["../../../src/server/event-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,cAAc,CAAC;AAMtE,qBAAa,cAAc;IAKvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IAP1B,OAAO,CAAC,aAAa,CAAyD;IAC9E,OAAO,CAAC,kBAAkB,CAAkC;gBAGlD,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnD,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;IAGlD,wBAAwB,IAAI,IAAI;IAuChC,oBAAoB,CAAC,YAAY,EAAE,iBAAiB,GAAG,IAAI;YA+B7C,oBAAoB;YAUpB,mBAAmB;YAiBnB,sBAAsB;YAWtB,qBAAqB;YAiBrB,oBAAoB;YAQpB,sBAAsB;YAQtB,wBAAwB;YAUxB,oBAAoB;IAWlC,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;IAI9D;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0B7B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAclC;;OAEG;IACH,OAAO,CAAC,yBAAyB;CAYlC"}
|