@mindexec/cli 0.2.28 → 0.2.30
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/package.json +1 -1
- package/scripts/remote-fleet-render-smoke.mjs +29 -29
- package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +25 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +236 -24
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +0 -1
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.zczca3fsxz.dll → MindExecution.Plugins.Concept.faidxooqle.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.jpdwbefrh1.dll → MindExecution.Plugins.PlanMaster.xfcd3pwd7p.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.8nz4wv2nsj.dll → MindExecution.Plugins.YouTube.78s7dilkza.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.ihh8mkcn5x.dll → MindExecution.Shared.hse89ibcyq.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Web.0cs29v57jl.dll → MindExecution.Web.p1v0ug5h4f.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +11 -11
- package/wwwroot/index.html +1 -1
- package/wwwroot/service-worker-assets.js +16 -16
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -421,7 +421,7 @@ function buildMonitorNode(devices, hubStatus, latestTaskBatch = null, recentTask
|
|
|
421
421
|
: 'inactive';
|
|
422
422
|
return {
|
|
423
423
|
id: 'remote-fleet-render-smoke',
|
|
424
|
-
contentType: '
|
|
424
|
+
contentType: 'templateLauncher',
|
|
425
425
|
metadata: {
|
|
426
426
|
SemanticType: 'RemoteFleetMonitor',
|
|
427
427
|
RemoteFleetSchemaVersion: 'remote-fleet@1',
|
|
@@ -452,6 +452,32 @@ function buildMonitorNode(devices, hubStatus, latestTaskBatch = null, recentTask
|
|
|
452
452
|
};
|
|
453
453
|
}
|
|
454
454
|
|
|
455
|
+
function createRemoteFleetTemplateShell(document, focusDeviceId = '') {
|
|
456
|
+
const nodeShell = document.createElement('div');
|
|
457
|
+
nodeShell.setAttribute('class', 'map-node-template-card map-node-remote-fleet');
|
|
458
|
+
const shell = document.createElement('div');
|
|
459
|
+
shell.setAttribute('class', 'template-card__shell template-card__shell--remote-fleet');
|
|
460
|
+
const header = document.createElement('div');
|
|
461
|
+
header.setAttribute('class', 'template-card__header template-card__header--remote-fleet');
|
|
462
|
+
const icon = document.createElement('div');
|
|
463
|
+
icon.setAttribute('class', 'template-card__icon template-card__icon--remote-fleet');
|
|
464
|
+
const titleWrap = document.createElement('div');
|
|
465
|
+
titleWrap.setAttribute('class', 'template-card__title-block');
|
|
466
|
+
titleWrap.textContent = 'Remote Fleet Monitor';
|
|
467
|
+
header.appendChild(icon);
|
|
468
|
+
header.appendChild(titleWrap);
|
|
469
|
+
const bodyView = document.createElement('div');
|
|
470
|
+
bodyView.setAttribute('class', 'template-card__remote-fleet-body');
|
|
471
|
+
bodyView.dataset.remoteFleetAutoMonitor = 'false';
|
|
472
|
+
if (focusDeviceId) {
|
|
473
|
+
bodyView.dataset.remoteFleetFocusDeviceId = focusDeviceId;
|
|
474
|
+
}
|
|
475
|
+
shell.appendChild(header);
|
|
476
|
+
shell.appendChild(bodyView);
|
|
477
|
+
nodeShell.appendChild(shell);
|
|
478
|
+
return { nodeShell, bodyView };
|
|
479
|
+
}
|
|
480
|
+
|
|
455
481
|
function buildDeviceNode(device, hubStatus) {
|
|
456
482
|
const endpoint = hubStatus.agentEndpoint || '127.0.0.1:5197';
|
|
457
483
|
return {
|
|
@@ -666,25 +692,7 @@ try {
|
|
|
666
692
|
};
|
|
667
693
|
manager.setModuleForTest({ dotNetHelper });
|
|
668
694
|
|
|
669
|
-
const nodeShell = document.
|
|
670
|
-
nodeShell.setAttribute('class', 'map-node-remote-fleet map-node-memo');
|
|
671
|
-
const header = document.createElement('div');
|
|
672
|
-
header.setAttribute('class', 'map-node-memo__header');
|
|
673
|
-
const iconWrap = document.createElement('div');
|
|
674
|
-
iconWrap.setAttribute('class', 'map-node-memo__icon-wrap');
|
|
675
|
-
const iconButton = document.createElement('button');
|
|
676
|
-
iconButton.setAttribute('class', 'map-node-memo__icon-button');
|
|
677
|
-
iconWrap.appendChild(iconButton);
|
|
678
|
-
const titleWrap = document.createElement('div');
|
|
679
|
-
titleWrap.setAttribute('class', 'map-node-memo__title-wrap');
|
|
680
|
-
titleWrap.textContent = 'Remote Fleet Monitor';
|
|
681
|
-
header.appendChild(iconWrap);
|
|
682
|
-
header.appendChild(titleWrap);
|
|
683
|
-
const bodyView = document.createElement('div');
|
|
684
|
-
bodyView.dataset.remoteFleetAutoMonitor = 'false';
|
|
685
|
-
bodyView.dataset.remoteFleetFocusDeviceId = focusedDevice.DeviceId;
|
|
686
|
-
nodeShell.appendChild(header);
|
|
687
|
-
nodeShell.appendChild(bodyView);
|
|
695
|
+
const { nodeShell, bodyView } = createRemoteFleetTemplateShell(document, focusedDevice.DeviceId);
|
|
688
696
|
document.body.appendChild(nodeShell);
|
|
689
697
|
|
|
690
698
|
manager.renderRemoteFleetMonitorForTest(bodyView, buildMonitorNode(devices, hub.getStatus({ includeSecrets: true }), latestTaskBatch, recentTaskBatches));
|
|
@@ -789,15 +797,7 @@ try {
|
|
|
789
797
|
call.methodName === 'DispatchRemoteFleetTaskBatchFromJs'
|
|
790
798
|
|| call.methodName === 'DispatchRemoteFleetTaskFromJs'), false);
|
|
791
799
|
|
|
792
|
-
const emptyShell = document
|
|
793
|
-
emptyShell.setAttribute('class', 'map-node-remote-fleet map-node-memo');
|
|
794
|
-
const emptyHeader = document.createElement('div');
|
|
795
|
-
emptyHeader.setAttribute('class', 'map-node-memo__header');
|
|
796
|
-
emptyHeader.appendChild(document.createElement('div'));
|
|
797
|
-
emptyHeader.appendChild(document.createElement('div'));
|
|
798
|
-
const emptyBody = document.createElement('div');
|
|
799
|
-
emptyShell.appendChild(emptyHeader);
|
|
800
|
-
emptyShell.appendChild(emptyBody);
|
|
800
|
+
const { nodeShell: emptyShell, bodyView: emptyBody } = createRemoteFleetTemplateShell(document);
|
|
801
801
|
document.body.appendChild(emptyShell);
|
|
802
802
|
manager.renderRemoteFleetMonitorForTest(emptyBody, buildMonitorNode([], hub.getStatus({ includeSecrets: true })));
|
|
803
803
|
assert.equal(emptyBody.querySelectorAll('[data-remote-fleet-empty-screen="true"]').length, 6);
|
|
@@ -2480,6 +2480,31 @@ body.is-panning .mind-map-text-overlay-v2-card.is-passive .mind-map-text-overlay
|
|
|
2480
2480
|
white-space: nowrap;
|
|
2481
2481
|
}
|
|
2482
2482
|
|
|
2483
|
+
.map-node-template-card.map-node-remote-fleet .template-card__shell--remote-fleet {
|
|
2484
|
+
gap: 10px;
|
|
2485
|
+
padding: 14px;
|
|
2486
|
+
background: #f8fafc;
|
|
2487
|
+
}
|
|
2488
|
+
|
|
2489
|
+
.map-node-template-card.map-node-remote-fleet .template-card__header--remote-fleet {
|
|
2490
|
+
align-items: center;
|
|
2491
|
+
}
|
|
2492
|
+
|
|
2493
|
+
.map-node-template-card.map-node-remote-fleet .template-card__icon--remote-fleet {
|
|
2494
|
+
border-color: rgba(37, 99, 235, 0.22);
|
|
2495
|
+
background: #eff6ff;
|
|
2496
|
+
color: #2563eb;
|
|
2497
|
+
}
|
|
2498
|
+
|
|
2499
|
+
.map-node-template-card.map-node-remote-fleet .template-card__remote-fleet-body {
|
|
2500
|
+
flex: 1 1 auto;
|
|
2501
|
+
min-height: 0;
|
|
2502
|
+
overflow: hidden;
|
|
2503
|
+
border: 1px solid rgba(148, 163, 184, 0.28);
|
|
2504
|
+
border-radius: 8px;
|
|
2505
|
+
background: #ffffff;
|
|
2506
|
+
}
|
|
2507
|
+
|
|
2483
2508
|
.template-card__generate:hover {
|
|
2484
2509
|
background: #115e59;
|
|
2485
2510
|
}
|
|
@@ -3587,7 +3587,7 @@
|
|
|
3587
3587
|
}
|
|
3588
3588
|
|
|
3589
3589
|
function isBusinessAutomationContextSourceNode(nodeModel) {
|
|
3590
|
-
if (!nodeModel || isBusinessAutomationNode(nodeModel)) {
|
|
3590
|
+
if (!nodeModel || isBusinessAutomationNode(nodeModel) || isRemoteFleetNode(nodeModel)) {
|
|
3591
3591
|
return false;
|
|
3592
3592
|
}
|
|
3593
3593
|
|
|
@@ -3600,7 +3600,6 @@
|
|
|
3600
3600
|
return semanticType === 'MindCanvasAgent'
|
|
3601
3601
|
|| semanticType === 'AgentCommand'
|
|
3602
3602
|
|| semanticType === BUSINESS_AUTOMATION_SEMANTIC_TYPE
|
|
3603
|
-
|| semanticType === REMOTE_FLEET_SEMANTIC_TYPE
|
|
3604
3603
|
|| semanticType === REMOTE_FLEET_DEVICE_SEMANTIC_TYPE;
|
|
3605
3604
|
}
|
|
3606
3605
|
|
|
@@ -11644,6 +11643,10 @@
|
|
|
11644
11643
|
}
|
|
11645
11644
|
|
|
11646
11645
|
function createTemplateLauncherNodeElement(nodeModel) {
|
|
11646
|
+
if (isRemoteFleetMonitorNode(nodeModel)) {
|
|
11647
|
+
return createRemoteFleetTemplateNodeElement(nodeModel);
|
|
11648
|
+
}
|
|
11649
|
+
|
|
11647
11650
|
const width = Number(nodeModel.width ?? nodeModel.Width ?? 560);
|
|
11648
11651
|
const height = Number(nodeModel.height ?? nodeModel.Height ?? 620);
|
|
11649
11652
|
const config = getTemplateCardConfig(nodeModel);
|
|
@@ -11734,6 +11737,54 @@
|
|
|
11734
11737
|
return container;
|
|
11735
11738
|
}
|
|
11736
11739
|
|
|
11740
|
+
function createRemoteFleetTemplateNodeElement(nodeModel) {
|
|
11741
|
+
const width = Number(nodeModel.width ?? nodeModel.Width ?? 960);
|
|
11742
|
+
const height = Number(nodeModel.height ?? nodeModel.Height ?? 620);
|
|
11743
|
+
const title = String(nodeModel.prompt ?? nodeModel.Prompt ?? 'Remote Fleet Monitor').trim()
|
|
11744
|
+
|| 'Remote Fleet Monitor';
|
|
11745
|
+
|
|
11746
|
+
const container = document.createElement('div');
|
|
11747
|
+
container.id = `node-${nodeModel.id}`;
|
|
11748
|
+
container.className = 'map-node css3d-dynamic-node map-node-template-card map-node-remote-fleet';
|
|
11749
|
+
container.dataset.nodeId = nodeModel.id;
|
|
11750
|
+
container.dataset.contentType = 'templateLauncher';
|
|
11751
|
+
container.dataset.semanticType = getNodeSemanticType(nodeModel);
|
|
11752
|
+
container.style.cssText = `
|
|
11753
|
+
width: ${width}px;
|
|
11754
|
+
height: ${height}px;
|
|
11755
|
+
box-sizing: border-box;
|
|
11756
|
+
overflow: hidden;
|
|
11757
|
+
pointer-events: auto;
|
|
11758
|
+
`;
|
|
11759
|
+
|
|
11760
|
+
const shell = document.createElement('div');
|
|
11761
|
+
shell.className = 'template-card__shell template-card__shell--remote-fleet';
|
|
11762
|
+
|
|
11763
|
+
const header = document.createElement('div');
|
|
11764
|
+
header.className = 'template-card__header template-card__header--remote-fleet';
|
|
11765
|
+
|
|
11766
|
+
const icon = document.createElement('div');
|
|
11767
|
+
icon.className = 'template-card__icon template-card__icon--remote-fleet';
|
|
11768
|
+
icon.innerHTML = '<i class="fa-solid fa-network-wired" aria-hidden="true"></i>';
|
|
11769
|
+
header.appendChild(icon);
|
|
11770
|
+
|
|
11771
|
+
const titleBlock = document.createElement('div');
|
|
11772
|
+
titleBlock.className = 'template-card__title-block';
|
|
11773
|
+
titleBlock.appendChild(createTemplateCardText('div', 'template-card__eyebrow', 'Remote'));
|
|
11774
|
+
titleBlock.appendChild(createTemplateCardText('div', 'template-card__title', title));
|
|
11775
|
+
header.appendChild(titleBlock);
|
|
11776
|
+
shell.appendChild(header);
|
|
11777
|
+
|
|
11778
|
+
const bodyView = document.createElement('div');
|
|
11779
|
+
bodyView.className = 'template-card__remote-fleet-body markdown-body mind-map-text-scrollable-view';
|
|
11780
|
+
bodyView.dataset.nodeId = nodeModel.id;
|
|
11781
|
+
renderRemoteFleetMonitor(bodyView, nodeModel);
|
|
11782
|
+
shell.appendChild(bodyView);
|
|
11783
|
+
|
|
11784
|
+
container.appendChild(shell);
|
|
11785
|
+
return container;
|
|
11786
|
+
}
|
|
11787
|
+
|
|
11737
11788
|
function stopMemoEvent(event) {
|
|
11738
11789
|
if (event.button === 1 || event.button === 2) {
|
|
11739
11790
|
return;
|
|
@@ -12208,6 +12259,83 @@
|
|
|
12208
12259
|
return item;
|
|
12209
12260
|
}
|
|
12210
12261
|
|
|
12262
|
+
function createRemoteFleetStatusRail(items) {
|
|
12263
|
+
const rail = document.createElement('aside');
|
|
12264
|
+
rail.dataset.remoteFleetStatusRail = 'true';
|
|
12265
|
+
rail.style.cssText = `
|
|
12266
|
+
flex: 0 0 auto;
|
|
12267
|
+
align-self: flex-start;
|
|
12268
|
+
display: flex;
|
|
12269
|
+
flex-direction: column;
|
|
12270
|
+
gap: 3px;
|
|
12271
|
+
min-width: 132px;
|
|
12272
|
+
max-width: min(100%, 176px);
|
|
12273
|
+
padding: 5px 6px;
|
|
12274
|
+
border-radius: 7px;
|
|
12275
|
+
border: 1px solid rgba(148, 163, 184, 0.22);
|
|
12276
|
+
background: rgba(255, 255, 255, 0.70);
|
|
12277
|
+
`;
|
|
12278
|
+
|
|
12279
|
+
(items || []).forEach(item => {
|
|
12280
|
+
const tone = String(item?.tone || 'default');
|
|
12281
|
+
const row = document.createElement('div');
|
|
12282
|
+
row.dataset.remoteFleetStatusItem = item?.key || '';
|
|
12283
|
+
row.style.cssText = `
|
|
12284
|
+
display: grid;
|
|
12285
|
+
grid-template-columns: 7px minmax(0, 1fr) auto;
|
|
12286
|
+
align-items: center;
|
|
12287
|
+
gap: 5px;
|
|
12288
|
+
min-height: 16px;
|
|
12289
|
+
min-width: 0;
|
|
12290
|
+
`;
|
|
12291
|
+
|
|
12292
|
+
const dot = document.createElement('span');
|
|
12293
|
+
dot.style.cssText = `
|
|
12294
|
+
width: 7px;
|
|
12295
|
+
height: 7px;
|
|
12296
|
+
border-radius: 999px;
|
|
12297
|
+
background: ${tone === 'online' ? '#10b981' : tone === 'warn' ? '#f59e0b' : '#94a3b8'};
|
|
12298
|
+
box-shadow: ${tone === 'online' ? '0 0 0 3px rgba(16, 185, 129, 0.12)' : 'none'};
|
|
12299
|
+
`;
|
|
12300
|
+
|
|
12301
|
+
const labelEl = document.createElement('span');
|
|
12302
|
+
labelEl.textContent = item?.label || '';
|
|
12303
|
+
labelEl.style.cssText = `
|
|
12304
|
+
color: #64748b;
|
|
12305
|
+
font-size: 9px;
|
|
12306
|
+
font-weight: 850;
|
|
12307
|
+
line-height: 1;
|
|
12308
|
+
letter-spacing: 0;
|
|
12309
|
+
overflow: hidden;
|
|
12310
|
+
text-overflow: ellipsis;
|
|
12311
|
+
white-space: nowrap;
|
|
12312
|
+
text-transform: uppercase;
|
|
12313
|
+
`;
|
|
12314
|
+
|
|
12315
|
+
const valueEl = document.createElement('strong');
|
|
12316
|
+
valueEl.textContent = item?.value || '';
|
|
12317
|
+
valueEl.title = `${labelEl.textContent} ${valueEl.textContent}`.trim();
|
|
12318
|
+
valueEl.style.cssText = `
|
|
12319
|
+
color: ${tone === 'online' ? '#047857' : '#0f172a'};
|
|
12320
|
+
font-size: 10px;
|
|
12321
|
+
font-weight: 950;
|
|
12322
|
+
line-height: 1;
|
|
12323
|
+
letter-spacing: 0;
|
|
12324
|
+
max-width: 76px;
|
|
12325
|
+
overflow: hidden;
|
|
12326
|
+
text-overflow: ellipsis;
|
|
12327
|
+
white-space: nowrap;
|
|
12328
|
+
`;
|
|
12329
|
+
|
|
12330
|
+
row.appendChild(dot);
|
|
12331
|
+
row.appendChild(labelEl);
|
|
12332
|
+
row.appendChild(valueEl);
|
|
12333
|
+
rail.appendChild(row);
|
|
12334
|
+
});
|
|
12335
|
+
|
|
12336
|
+
return rail;
|
|
12337
|
+
}
|
|
12338
|
+
|
|
12211
12339
|
function createRemoteFleetButton(label, title, action) {
|
|
12212
12340
|
const button = document.createElement('button');
|
|
12213
12341
|
button.type = 'button';
|
|
@@ -12237,7 +12365,9 @@
|
|
|
12237
12365
|
|
|
12238
12366
|
function attachRemoteFleetTitleActions(bodyView, hostButton, stopHostButton, hostState) {
|
|
12239
12367
|
const container = bodyView?.closest?.('.map-node-remote-fleet');
|
|
12240
|
-
const header = container?.querySelector?.('.
|
|
12368
|
+
const header = container?.querySelector?.('.template-card__header')
|
|
12369
|
+
|| container?.querySelector?.('.map-node-memo__header')
|
|
12370
|
+
|| null;
|
|
12241
12371
|
const existingActions = header?.querySelector?.('[data-remote-fleet-title-actions="true"]') || null;
|
|
12242
12372
|
existingActions?.remove?.();
|
|
12243
12373
|
|
|
@@ -12274,7 +12404,9 @@
|
|
|
12274
12404
|
}
|
|
12275
12405
|
|
|
12276
12406
|
if (header) {
|
|
12277
|
-
header.style.gridTemplateColumns = '
|
|
12407
|
+
header.style.gridTemplateColumns = header.classList?.contains?.('template-card__header')
|
|
12408
|
+
? '42px minmax(0, 1fr) auto'
|
|
12409
|
+
: '46px minmax(0, 1fr) auto';
|
|
12278
12410
|
header.appendChild(titleActions);
|
|
12279
12411
|
} else {
|
|
12280
12412
|
titleActions.style.alignSelf = 'flex-end';
|
|
@@ -13306,18 +13438,32 @@
|
|
|
13306
13438
|
}
|
|
13307
13439
|
attachRemoteFleetTitleActions(bodyView, hostButton, stopHostButton, hostTargetState);
|
|
13308
13440
|
|
|
13309
|
-
const
|
|
13310
|
-
|
|
13311
|
-
|
|
13312
|
-
|
|
13313
|
-
|
|
13314
|
-
|
|
13315
|
-
|
|
13316
|
-
|
|
13317
|
-
|
|
13318
|
-
|
|
13319
|
-
|
|
13320
|
-
|
|
13441
|
+
const statusRail = createRemoteFleetStatusRail([
|
|
13442
|
+
{
|
|
13443
|
+
key: 'hub',
|
|
13444
|
+
label: 'Hub',
|
|
13445
|
+
value: hubStatus === 'online' ? 'Online' : 'Offline',
|
|
13446
|
+
tone: hubStatus === 'online' ? 'online' : 'default'
|
|
13447
|
+
},
|
|
13448
|
+
{
|
|
13449
|
+
key: 'connected',
|
|
13450
|
+
label: 'Connected',
|
|
13451
|
+
value: `${Number.isFinite(connected) ? connected : 0}/${Number.isFinite(total) ? total : devices.length}`,
|
|
13452
|
+
tone: connected > 0 ? 'online' : 'default'
|
|
13453
|
+
},
|
|
13454
|
+
{
|
|
13455
|
+
key: 'task',
|
|
13456
|
+
label: 'Task',
|
|
13457
|
+
value: String(taskCapableCount),
|
|
13458
|
+
tone: taskCapableCount > 0 ? 'online' : 'default'
|
|
13459
|
+
},
|
|
13460
|
+
{
|
|
13461
|
+
key: 'ai',
|
|
13462
|
+
label: 'AI',
|
|
13463
|
+
value: String(aiCapableCount),
|
|
13464
|
+
tone: aiCapableCount > 0 ? 'online' : 'default'
|
|
13465
|
+
}
|
|
13466
|
+
]);
|
|
13321
13467
|
|
|
13322
13468
|
const filterRow = document.createElement('div');
|
|
13323
13469
|
filterRow.style.cssText = `
|
|
@@ -14238,6 +14384,7 @@
|
|
|
14238
14384
|
monitorWorkspace.appendChild(createSelectedDevicePanel(selectedDevice));
|
|
14239
14385
|
}
|
|
14240
14386
|
bodyView.appendChild(monitorWorkspace);
|
|
14387
|
+
bodyView.appendChild(statusRail);
|
|
14241
14388
|
|
|
14242
14389
|
const setTaskFeedback = (message, tone = 'info') => {
|
|
14243
14390
|
taskFeedback.textContent = message || '';
|
|
@@ -15002,6 +15149,10 @@
|
|
|
15002
15149
|
}
|
|
15003
15150
|
|
|
15004
15151
|
function createMemoNodeElement(nodeModel) {
|
|
15152
|
+
if (isRemoteFleetMonitorNode(nodeModel)) {
|
|
15153
|
+
return createRemoteFleetTemplateNodeElement(nodeModel);
|
|
15154
|
+
}
|
|
15155
|
+
|
|
15005
15156
|
const width = Number(nodeModel.width || 320);
|
|
15006
15157
|
const height = Number(nodeModel.height || 240);
|
|
15007
15158
|
const title = nodeModel.prompt ?? nodeModel.Prompt ?? '';
|
|
@@ -17336,6 +17487,10 @@
|
|
|
17336
17487
|
const metadata = nodeModel.metadata ?? nodeModel.Metadata ?? {};
|
|
17337
17488
|
const agentId = metadata?.agentId ?? metadata?.AgentId;
|
|
17338
17489
|
const isAgentNode = nodeTypeLower.startsWith('agent_') || (agentId !== undefined && agentId !== null && String(agentId) !== '');
|
|
17490
|
+
if (isRemoteFleetMonitorNode(nodeModel)) {
|
|
17491
|
+
return createRemoteFleetTemplateNodeElement(nodeModel);
|
|
17492
|
+
}
|
|
17493
|
+
|
|
17339
17494
|
if (contentTypeLower === 'templatelauncher') {
|
|
17340
17495
|
return createTemplateLauncherNodeElement(nodeModel);
|
|
17341
17496
|
}
|
|
@@ -17761,7 +17916,10 @@
|
|
|
17761
17916
|
// ▼▼▼ [New] 템플릿이 없으면 동적으로 생성 (text/markdown 타입용) ▼▼▼
|
|
17762
17917
|
// [FIX] hybrid overlay가 기대하는 구조를 보장하기 위해 text/markdown/note/memo는 동적 DOM을 강제합니다.
|
|
17763
17918
|
const contentTypeLower = String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase();
|
|
17764
|
-
|
|
17919
|
+
const remoteFleetMonitor = isRemoteFleetMonitorNode(nodeModel);
|
|
17920
|
+
const visualContentTypeLower = remoteFleetMonitor ? 'templatelauncher' : contentTypeLower;
|
|
17921
|
+
if (remoteFleetMonitor
|
|
17922
|
+
|| contentTypeLower === 'text'
|
|
17765
17923
|
|| contentTypeLower === 'markdown'
|
|
17766
17924
|
|| contentTypeLower === 'note'
|
|
17767
17925
|
|| contentTypeLower === 'memo'
|
|
@@ -17780,8 +17938,8 @@
|
|
|
17780
17938
|
// But usually 'note' comes from Razor. If missing, we create it.
|
|
17781
17939
|
const dynamicTypes = ['text', 'markdown', 'code', 'note', 'memo', 'templatelauncher', 'image', 'video', 'embed'];
|
|
17782
17940
|
|
|
17783
|
-
if (dynamicTypes.includes(contentTypeLower)) {
|
|
17784
|
-
log(`[MindMapCss3DManager] Creating dynamic DOM element for ${contentTypeLower} node ${nodeModel.id}`);
|
|
17941
|
+
if (remoteFleetMonitor || dynamicTypes.includes(contentTypeLower)) {
|
|
17942
|
+
log(`[MindMapCss3DManager] Creating dynamic DOM element for ${visualContentTypeLower || contentTypeLower} node ${nodeModel.id}`);
|
|
17785
17943
|
templateElement = createDynamicNodeElement(nodeModel);
|
|
17786
17944
|
isDynamicallyCreated = true;
|
|
17787
17945
|
} else {
|
|
@@ -17879,7 +18037,7 @@
|
|
|
17879
18037
|
// ▲▲▲ [Perf] ▲▲▲
|
|
17880
18038
|
|
|
17881
18039
|
const wrapper = document.createElement('div');
|
|
17882
|
-
const wrapperTypeClass = `node-type-${
|
|
18040
|
+
const wrapperTypeClass = `node-type-${visualContentTypeLower || 'unknown'}`;
|
|
17883
18041
|
wrapper.className = `css3d-resolution-wrapper ${wrapperTypeClass}`;
|
|
17884
18042
|
wrapper.style.width = `${width * resolutionScale}px`; // ★ [Fix] Scale wrapper size
|
|
17885
18043
|
wrapper.style.height = `${height * resolutionScale}px`; // ★ [Fix] Scale wrapper size
|
|
@@ -17952,18 +18110,23 @@
|
|
|
17952
18110
|
});
|
|
17953
18111
|
}
|
|
17954
18112
|
|
|
17955
|
-
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() === 'memo'
|
|
18113
|
+
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() === 'memo'
|
|
18114
|
+
&& !isRemoteFleetMonitorNode(nodeModel)) {
|
|
17956
18115
|
bindMemoNodeEvents(clonedElement, nodeModel);
|
|
17957
18116
|
}
|
|
17958
|
-
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() === 'templatelauncher'
|
|
18117
|
+
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() === 'templatelauncher'
|
|
18118
|
+
&& !isRemoteFleetMonitorNode(nodeModel)) {
|
|
17959
18119
|
bindTemplateLauncherNodeEvents(clonedElement, nodeModel);
|
|
17960
18120
|
}
|
|
17961
18121
|
wrapper.appendChild(clonedElement);
|
|
17962
|
-
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() !== 'templatelauncher'
|
|
18122
|
+
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() !== 'templatelauncher'
|
|
18123
|
+
|| isRemoteFleetMonitorNode(nodeModel)) {
|
|
17963
18124
|
appendCss3dResizeHitZones(wrapper, nodeModel);
|
|
17964
18125
|
}
|
|
17965
18126
|
|
|
17966
|
-
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() === 'memo'
|
|
18127
|
+
if ((String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() === 'memo'
|
|
18128
|
+
&& !isRemoteFleetMonitorNode(nodeModel))
|
|
18129
|
+
|| isAgentStyledMemoNode(nodeModel)) {
|
|
17967
18130
|
applyMemoWrapperTheme(clonedElement, getMemoColorKey(nodeModel));
|
|
17968
18131
|
}
|
|
17969
18132
|
|
|
@@ -18142,6 +18305,55 @@
|
|
|
18142
18305
|
dividerEl.style.display = prompt ? (isLoading || hasContent ? 'block' : 'none') : 'none';
|
|
18143
18306
|
}
|
|
18144
18307
|
|
|
18308
|
+
if (isRemoteFleetMonitorNode(nodeModel)) {
|
|
18309
|
+
el.classList.remove('node-type-memo', 'has-context-source-pins');
|
|
18310
|
+
el.classList.add('node-type-templatelauncher');
|
|
18311
|
+
el.dataset.contentType = 'templateLauncher';
|
|
18312
|
+
el.style.overflow = 'hidden';
|
|
18313
|
+
|
|
18314
|
+
let card = el.querySelector('.map-node-template-card.map-node-remote-fleet');
|
|
18315
|
+
if (!card) {
|
|
18316
|
+
card = createRemoteFleetTemplateNodeElement(nodeModel);
|
|
18317
|
+
card.id = `css3d-node-${nodeId}`;
|
|
18318
|
+
card.style.display = '';
|
|
18319
|
+
card.style.position = 'absolute';
|
|
18320
|
+
card.style.left = '0px';
|
|
18321
|
+
card.style.top = '0px';
|
|
18322
|
+
card.style.transformOrigin = '0 0';
|
|
18323
|
+
card.style.transition = 'none';
|
|
18324
|
+
card.style.webkitTransition = 'none';
|
|
18325
|
+
const firstChild = el.firstElementChild;
|
|
18326
|
+
if (firstChild) {
|
|
18327
|
+
el.replaceChild(card, firstChild);
|
|
18328
|
+
} else {
|
|
18329
|
+
el.prepend(card);
|
|
18330
|
+
}
|
|
18331
|
+
}
|
|
18332
|
+
|
|
18333
|
+
card.dataset.nodeId = nodeId;
|
|
18334
|
+
card.dataset.semanticType = getNodeSemanticType(nodeModel);
|
|
18335
|
+
card.style.width = `${worldWidth}px`;
|
|
18336
|
+
card.style.height = `${worldHeight}px`;
|
|
18337
|
+
card.style.minWidth = `${worldWidth}px`;
|
|
18338
|
+
card.style.minHeight = `${worldHeight}px`;
|
|
18339
|
+
card.style.maxWidth = `${worldWidth}px`;
|
|
18340
|
+
card.style.maxHeight = `${worldHeight}px`;
|
|
18341
|
+
card.style.transform = `scale(${resolutionScale})`;
|
|
18342
|
+
card.style.transformOrigin = '0 0';
|
|
18343
|
+
|
|
18344
|
+
const titleEl = card.querySelector('.template-card__title');
|
|
18345
|
+
if (titleEl) {
|
|
18346
|
+
const nextTitle = String(prompt || 'Remote Fleet Monitor').trim() || 'Remote Fleet Monitor';
|
|
18347
|
+
if (titleEl.textContent !== nextTitle) {
|
|
18348
|
+
titleEl.textContent = nextTitle;
|
|
18349
|
+
}
|
|
18350
|
+
}
|
|
18351
|
+
|
|
18352
|
+
const bodyView = card.querySelector('.template-card__remote-fleet-body');
|
|
18353
|
+
renderRemoteFleetMonitor(bodyView, nodeModel);
|
|
18354
|
+
return;
|
|
18355
|
+
}
|
|
18356
|
+
|
|
18145
18357
|
if (contentTypeLower === 'memo') {
|
|
18146
18358
|
const memoEl = el.querySelector('.map-node-memo');
|
|
18147
18359
|
if (!memoEl) return;
|
|
@@ -104,7 +104,6 @@
|
|
|
104
104
|
return semanticType === 'MindCanvasAgent'
|
|
105
105
|
|| semanticType === 'AgentCommand'
|
|
106
106
|
|| semanticType === BUSINESS_AUTOMATION_SEMANTIC_TYPE
|
|
107
|
-
|| semanticType === REMOTE_FLEET_SEMANTIC_TYPE
|
|
108
107
|
|| semanticType === REMOTE_FLEET_DEVICE_SEMANTIC_TYPE;
|
|
109
108
|
}
|
|
110
109
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/wwwroot/_framework/{MindExecution.Web.0cs29v57jl.dll → MindExecution.Web.p1v0ug5h4f.dll}
RENAMED
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "MindExecution.Web",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-3BNGeO97GJzZPWJKcxft//YyUghoJWfEleoPXAWQph8=",
|
|
5
5
|
"fingerprinting": {
|
|
6
6
|
"Google.Protobuf.9h59ukbel7.dll": "Google.Protobuf.dll",
|
|
7
7
|
"Markdig.d1j7v41cl1.dll": "Markdig.dll",
|
|
@@ -127,12 +127,12 @@
|
|
|
127
127
|
"MindExecution.Kernel.z56elxihok.dll": "MindExecution.Kernel.dll",
|
|
128
128
|
"MindExecution.Plugins.Admin.p5cs4ap87v.dll": "MindExecution.Plugins.Admin.dll",
|
|
129
129
|
"MindExecution.Plugins.Business.s35og5uz44.dll": "MindExecution.Plugins.Business.dll",
|
|
130
|
-
"MindExecution.Plugins.Concept.
|
|
130
|
+
"MindExecution.Plugins.Concept.faidxooqle.dll": "MindExecution.Plugins.Concept.dll",
|
|
131
131
|
"MindExecution.Plugins.Directory.y74f55e8x3.dll": "MindExecution.Plugins.Directory.dll",
|
|
132
|
-
"MindExecution.Plugins.PlanMaster.
|
|
133
|
-
"MindExecution.Plugins.YouTube.
|
|
134
|
-
"MindExecution.Shared.
|
|
135
|
-
"MindExecution.Web.
|
|
132
|
+
"MindExecution.Plugins.PlanMaster.xfcd3pwd7p.dll": "MindExecution.Plugins.PlanMaster.dll",
|
|
133
|
+
"MindExecution.Plugins.YouTube.78s7dilkza.dll": "MindExecution.Plugins.YouTube.dll",
|
|
134
|
+
"MindExecution.Shared.hse89ibcyq.dll": "MindExecution.Shared.dll",
|
|
135
|
+
"MindExecution.Web.p1v0ug5h4f.dll": "MindExecution.Web.dll",
|
|
136
136
|
"dotnet.js": "dotnet.js",
|
|
137
137
|
"dotnet.native.qc8g39g30v.js": "dotnet.native.js",
|
|
138
138
|
"dotnet.native.boem75ye5i.wasm": "dotnet.native.wasm",
|
|
@@ -280,16 +280,16 @@
|
|
|
280
280
|
"netstandard.yvr3prsx0x.dll": "sha256-EksNn8Luo4bOWqJ6X7dIe9qG9oOqwOVzjH2xYyMNi+E=",
|
|
281
281
|
"MindExecution.Core.6rfnfdndxq.dll": "sha256-giL4rreoKsQoQ5gkLusNx7oL3w1l2UH52TYY1KBoIfQ=",
|
|
282
282
|
"MindExecution.Kernel.z56elxihok.dll": "sha256-STATJelRGcW9SDGgsw6YmQi6tkQje52dy4lyT3QU4qs=",
|
|
283
|
-
"MindExecution.Plugins.Concept.
|
|
284
|
-
"MindExecution.Plugins.PlanMaster.
|
|
285
|
-
"MindExecution.Shared.
|
|
286
|
-
"MindExecution.Web.
|
|
283
|
+
"MindExecution.Plugins.Concept.faidxooqle.dll": "sha256-177f2QdWAeNbJvUOInKfZ/A6AGWzRqbge3x6ePcBDpI=",
|
|
284
|
+
"MindExecution.Plugins.PlanMaster.xfcd3pwd7p.dll": "sha256-PaeGgCgIzD09cq0h3SywgwHpIOkmyZ9bV3ArDCOWbpo=",
|
|
285
|
+
"MindExecution.Shared.hse89ibcyq.dll": "sha256-HyIJGWol5LmyLiefR4XpyKXtgpidf6Vr4pN/0hPskHA=",
|
|
286
|
+
"MindExecution.Web.p1v0ug5h4f.dll": "sha256-07TGezQJ2CbX3lpW2Qou4T/rJi4GFWmBv545YHiXfVk="
|
|
287
287
|
},
|
|
288
288
|
"lazyAssembly": {
|
|
289
289
|
"MindExecution.Plugins.Admin.p5cs4ap87v.dll": "sha256-jahiJxaiE8hwMyRcg6rZGo4WBhBGFyAHYhOqlKjawWg=",
|
|
290
290
|
"MindExecution.Plugins.Business.s35og5uz44.dll": "sha256-KOyk9eC6E/Gyfz2uWucHQmAayMQbShhLTqEymZFleh4=",
|
|
291
291
|
"MindExecution.Plugins.Directory.y74f55e8x3.dll": "sha256-4gMuhIPLiX31U+jwhDT83rSPqZINONadmW+cvujfq1g=",
|
|
292
|
-
"MindExecution.Plugins.YouTube.
|
|
292
|
+
"MindExecution.Plugins.YouTube.78s7dilkza.dll": "sha256-p4/WQZuUrLU9A/tUFh4J9I5vw15MjWZ3Tvs0v1oPbhY="
|
|
293
293
|
}
|
|
294
294
|
},
|
|
295
295
|
"cacheBootResources": true,
|
package/wwwroot/index.html
CHANGED
|
@@ -558,7 +558,7 @@
|
|
|
558
558
|
}
|
|
559
559
|
|
|
560
560
|
const base = '_content/MindExecution.Shared/js/';
|
|
561
|
-
const scriptVersion = '20260613-
|
|
561
|
+
const scriptVersion = '20260613-remote-template-card-v497';
|
|
562
562
|
const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
|
|
563
563
|
console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
|
|
564
564
|
const criticalScripts = [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
self.assetsManifest = {
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "rlBXfYfF",
|
|
3
3
|
"assets": [
|
|
4
4
|
{
|
|
5
5
|
"hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"url": "_content/MindExecution.Shared/css/app.css"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
|
-
"hash": "sha256-
|
|
45
|
+
"hash": "sha256-SwiYCegnTRFedhTd9xEwvhhTJc7L4RbYTrP8KnQ+yjE=",
|
|
46
46
|
"url": "_content/MindExecution.Shared/css/mind-map-overrides.css"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"url": "_content/MindExecution.Shared/js/mind-map-core.js.backup"
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
|
-
"hash": "sha256-
|
|
89
|
+
"hash": "sha256-wFyeN3Nc8gLXo/cHEuXYwFvgBSy2cPUmdFsMNcTzSNg=",
|
|
90
90
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"url": "_content/MindExecution.Shared/js/mind-map-node-search-worker.js"
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
|
-
"hash": "sha256-
|
|
137
|
+
"hash": "sha256-tcCpe0R8MVaT0B7nTN9owN5u6Nv547c0UTMGKnfiXpo=",
|
|
138
138
|
"url": "_content/MindExecution.Shared/js/mind-map-nodes.js"
|
|
139
139
|
},
|
|
140
140
|
{
|
|
@@ -426,28 +426,28 @@
|
|
|
426
426
|
"url": "_framework/MindExecution.Plugins.Business.s35og5uz44.dll"
|
|
427
427
|
},
|
|
428
428
|
{
|
|
429
|
-
"hash": "sha256-
|
|
430
|
-
"url": "_framework/MindExecution.Plugins.Concept.
|
|
429
|
+
"hash": "sha256-177f2QdWAeNbJvUOInKfZ/A6AGWzRqbge3x6ePcBDpI=",
|
|
430
|
+
"url": "_framework/MindExecution.Plugins.Concept.faidxooqle.dll"
|
|
431
431
|
},
|
|
432
432
|
{
|
|
433
433
|
"hash": "sha256-4gMuhIPLiX31U+jwhDT83rSPqZINONadmW+cvujfq1g=",
|
|
434
434
|
"url": "_framework/MindExecution.Plugins.Directory.y74f55e8x3.dll"
|
|
435
435
|
},
|
|
436
436
|
{
|
|
437
|
-
"hash": "sha256-
|
|
438
|
-
"url": "_framework/MindExecution.Plugins.PlanMaster.
|
|
437
|
+
"hash": "sha256-PaeGgCgIzD09cq0h3SywgwHpIOkmyZ9bV3ArDCOWbpo=",
|
|
438
|
+
"url": "_framework/MindExecution.Plugins.PlanMaster.xfcd3pwd7p.dll"
|
|
439
439
|
},
|
|
440
440
|
{
|
|
441
|
-
"hash": "sha256-
|
|
442
|
-
"url": "_framework/MindExecution.Plugins.YouTube.
|
|
441
|
+
"hash": "sha256-p4/WQZuUrLU9A/tUFh4J9I5vw15MjWZ3Tvs0v1oPbhY=",
|
|
442
|
+
"url": "_framework/MindExecution.Plugins.YouTube.78s7dilkza.dll"
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
|
-
"hash": "sha256-
|
|
446
|
-
"url": "_framework/MindExecution.Shared.
|
|
445
|
+
"hash": "sha256-HyIJGWol5LmyLiefR4XpyKXtgpidf6Vr4pN/0hPskHA=",
|
|
446
|
+
"url": "_framework/MindExecution.Shared.hse89ibcyq.dll"
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
|
-
"hash": "sha256-
|
|
450
|
-
"url": "_framework/MindExecution.Web.
|
|
449
|
+
"hash": "sha256-07TGezQJ2CbX3lpW2Qou4T/rJi4GFWmBv545YHiXfVk=",
|
|
450
|
+
"url": "_framework/MindExecution.Web.p1v0ug5h4f.dll"
|
|
451
451
|
},
|
|
452
452
|
{
|
|
453
453
|
"hash": "sha256-IsZJ91/OW+fHzNqIgEc7Y072ns8z9dGritiSyvR9Wgc=",
|
|
@@ -770,7 +770,7 @@
|
|
|
770
770
|
"url": "_framework/Websocket.Client.vapounvmnl.dll"
|
|
771
771
|
},
|
|
772
772
|
{
|
|
773
|
-
"hash": "sha256-
|
|
773
|
+
"hash": "sha256-c2H0026f7tTv+gbbQCZt1/VMd200vEuF95yAiIZ1ydU=",
|
|
774
774
|
"url": "_framework/blazor.boot.json"
|
|
775
775
|
},
|
|
776
776
|
{
|
|
@@ -834,7 +834,7 @@
|
|
|
834
834
|
"url": "image-manifest.json"
|
|
835
835
|
},
|
|
836
836
|
{
|
|
837
|
-
"hash": "sha256-
|
|
837
|
+
"hash": "sha256-GqwKG61iKXWuVja2WDiaUhRcpii3CSqQbYVobOtWaIQ=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|