@mindexec/cli 0.2.159 → 0.2.160
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 +12 -1
- package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +11 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +210 -139
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +2 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +5 -3
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.4ncya2e794.dll → MindExecution.Plugins.Concept.9igh5dsuw9.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.0yfii1nh3p.dll → MindExecution.Plugins.PlanMaster.g9r2lbhihg.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.y4vxx807fo.dll → MindExecution.Plugins.YouTube.6ni889qas8.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.50ptsgk9eg.dll → MindExecution.Shared.xtnh42yedc.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Web.hucq2w2ism.dll → MindExecution.Web.cg3mse80dr.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +11 -11
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +17 -17
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -1328,10 +1328,21 @@ try {
|
|
|
1328
1328
|
const drawCountBeforeControlNode = document.canvasDrawCalls.length;
|
|
1329
1329
|
manager.renderRemoteFleetDeviceForTest(deviceBody, buildDeviceNode(focusedDevice, hub.getStatus()));
|
|
1330
1330
|
assert.ok(deviceBody.textContent.includes(focusedDevice.Name));
|
|
1331
|
+
assert.ok(deviceBody.querySelector('[data-remote-fleet-device-toolbar="true"]'));
|
|
1332
|
+
assert.ok(deviceBody.querySelector('[data-remote-fleet-device-actions="true"]'));
|
|
1333
|
+
assert.ok(deviceBody.querySelector('[data-remote-fleet-device-task-panel="true"]'));
|
|
1334
|
+
const deviceStatusBar = deviceBody.querySelector('[data-remote-fleet-device-status-bar="true"]')
|
|
1335
|
+
|| deviceBody.querySelector('[data-remote-fleet-device-statusbar="true"]');
|
|
1336
|
+
assert.ok(deviceStatusBar);
|
|
1331
1337
|
const deviceControlStage = deviceBody.querySelector('[data-remote-fleet-control-node-stage="true"]');
|
|
1332
1338
|
const deviceControlCanvas = deviceBody.querySelector('[data-remote-fleet-control-node-canvas="true"]');
|
|
1333
1339
|
assert.ok(deviceControlStage);
|
|
1334
1340
|
assert.ok(deviceControlCanvas);
|
|
1341
|
+
assert.equal(
|
|
1342
|
+
deviceControlStage.parentElement,
|
|
1343
|
+
deviceBody,
|
|
1344
|
+
'RemoteFleetDevice should spend its main body area on the control screen');
|
|
1345
|
+
assert.equal(deviceBody.querySelectorAll('[data-remote-fleet-status-card], [data-remote-fleet-stat]').length, 0);
|
|
1335
1346
|
assert.equal(document.activeElement, deviceControlStage);
|
|
1336
1347
|
await wait(30);
|
|
1337
1348
|
const deviceControlSubscribe = diagnostics.webSocketSends
|
|
@@ -1439,7 +1450,7 @@ try {
|
|
|
1439
1450
|
assert.ok(deviceBody.querySelector('[data-remote-fleet-action="refresh-device"]'));
|
|
1440
1451
|
assert.ok(deviceBody.querySelector('[data-remote-fleet-action="task-device"]'));
|
|
1441
1452
|
assert.ok(deviceBody.textContent.includes('Task timed out waiting for the agent response.'));
|
|
1442
|
-
assert.ok(
|
|
1453
|
+
assert.ok(deviceStatusBar.title.includes(focusedDevice.DeviceId));
|
|
1443
1454
|
const controlCanvasBeforeRerender = deviceControlCanvas;
|
|
1444
1455
|
manager.renderRemoteFleetDeviceForTest(deviceBody, buildDeviceNode(focusedDevice, hub.getStatus()));
|
|
1445
1456
|
await wait(30);
|
|
@@ -2585,6 +2585,17 @@ body.mindcanvas-is-dense .css3d-resolution-wrapper.node-type-templatelauncher.se
|
|
|
2585
2585
|
background: #ffffff;
|
|
2586
2586
|
}
|
|
2587
2587
|
|
|
2588
|
+
.map-node-template-card.map-node-remote-device .template-card__shell--remote-fleet {
|
|
2589
|
+
gap: 0;
|
|
2590
|
+
padding: 8px;
|
|
2591
|
+
}
|
|
2592
|
+
|
|
2593
|
+
.map-node-template-card.map-node-remote-device .template-card__remote-fleet-body {
|
|
2594
|
+
border: 0;
|
|
2595
|
+
border-radius: 0;
|
|
2596
|
+
background: transparent;
|
|
2597
|
+
}
|
|
2598
|
+
|
|
2588
2599
|
.template-card__generate:hover {
|
|
2589
2600
|
background: #115e59;
|
|
2590
2601
|
}
|
|
@@ -4008,7 +4008,9 @@
|
|
|
4008
4008
|
|
|
4009
4009
|
function isTemplateLauncherNode(nodeModel) {
|
|
4010
4010
|
const contentType = String(nodeModel?.contentType ?? nodeModel?.ContentType ?? '').trim().toLowerCase();
|
|
4011
|
-
return contentType === 'templatelauncher'
|
|
4011
|
+
return contentType === 'templatelauncher'
|
|
4012
|
+
|| isRemoteFleetMonitorNode(nodeModel)
|
|
4013
|
+
|| isRemoteFleetDeviceNode(nodeModel);
|
|
4012
4014
|
}
|
|
4013
4015
|
|
|
4014
4016
|
function isLiveOverlayPortalNode(nodeModel) {
|
|
@@ -4031,8 +4033,7 @@
|
|
|
4031
4033
|
const semanticType = getNodeSemanticType(nodeModel);
|
|
4032
4034
|
return semanticType === 'MindCanvasAgent'
|
|
4033
4035
|
|| semanticType === 'AgentCommand'
|
|
4034
|
-
|| semanticType === BUSINESS_AUTOMATION_SEMANTIC_TYPE
|
|
4035
|
-
|| semanticType === REMOTE_FLEET_DEVICE_SEMANTIC_TYPE;
|
|
4036
|
+
|| semanticType === BUSINESS_AUTOMATION_SEMANTIC_TYPE;
|
|
4036
4037
|
}
|
|
4037
4038
|
|
|
4038
4039
|
function allowsMemoExternalChrome(nodeModel) {
|
|
@@ -11977,8 +11978,7 @@
|
|
|
11977
11978
|
const isAgentStyled = element?.classList?.contains('map-node-agent')
|
|
11978
11979
|
|| semanticType === 'MindCanvasAgent'
|
|
11979
11980
|
|| semanticType === 'AgentCommand'
|
|
11980
|
-
|| semanticType === BUSINESS_AUTOMATION_SEMANTIC_TYPE
|
|
11981
|
-
|| semanticType === REMOTE_FLEET_DEVICE_SEMANTIC_TYPE;
|
|
11981
|
+
|| semanticType === BUSINESS_AUTOMATION_SEMANTIC_TYPE;
|
|
11982
11982
|
wrapper.classList.toggle('selection-style-agent', !!isAgentStyled);
|
|
11983
11983
|
const nextColorKey = MEMO_COLOR_THEMES[colorKey] ? colorKey : 'coral';
|
|
11984
11984
|
const theme = MEMO_COLOR_THEMES[nextColorKey] || MEMO_COLOR_THEMES.gray;
|
|
@@ -12264,8 +12264,13 @@
|
|
|
12264
12264
|
'[data-template-option-id]',
|
|
12265
12265
|
'[data-remote-fleet-action]',
|
|
12266
12266
|
'[data-remote-fleet-control-popup]',
|
|
12267
|
+
'[data-remote-fleet-control-node-stage]',
|
|
12268
|
+
'[data-remote-fleet-control-node-canvas]',
|
|
12269
|
+
'[data-remote-fleet-control-node-placeholder]',
|
|
12267
12270
|
'[data-remote-fleet-task-input]',
|
|
12271
|
+
'[data-remote-fleet-device-task-input]',
|
|
12268
12272
|
'[data-remote-fleet-ai-toggle]',
|
|
12273
|
+
'[data-remote-fleet-device-ai-toggle]',
|
|
12269
12274
|
'[data-remote-fleet-search]',
|
|
12270
12275
|
'.csv-table-scroll',
|
|
12271
12276
|
'.csv-table-header-button',
|
|
@@ -12426,7 +12431,7 @@
|
|
|
12426
12431
|
}
|
|
12427
12432
|
|
|
12428
12433
|
function createTemplateLauncherNodeElement(nodeModel) {
|
|
12429
|
-
if (
|
|
12434
|
+
if (isRemoteFleetNode(nodeModel)) {
|
|
12430
12435
|
return createRemoteFleetTemplateNodeElement(nodeModel);
|
|
12431
12436
|
}
|
|
12432
12437
|
|
|
@@ -12532,10 +12537,11 @@
|
|
|
12532
12537
|
const width = Number(nodeModel.width ?? nodeModel.Width ?? 960);
|
|
12533
12538
|
const height = Number(nodeModel.height ?? nodeModel.Height ?? 620);
|
|
12534
12539
|
const title = getRemoteFleetDisplayTitle(nodeModel.prompt ?? nodeModel.Prompt);
|
|
12540
|
+
const isDeviceNode = isRemoteFleetDeviceNode(nodeModel);
|
|
12535
12541
|
|
|
12536
12542
|
const container = document.createElement('div');
|
|
12537
12543
|
container.id = `node-${nodeModel.id}`;
|
|
12538
|
-
container.className =
|
|
12544
|
+
container.className = `map-node css3d-dynamic-node map-node-template-card map-node-remote-fleet${isDeviceNode ? ' map-node-remote-device' : ''}`;
|
|
12539
12545
|
container.dataset.nodeId = nodeModel.id;
|
|
12540
12546
|
container.dataset.contentType = 'templateLauncher';
|
|
12541
12547
|
container.dataset.semanticType = getNodeSemanticType(nodeModel);
|
|
@@ -12550,25 +12556,31 @@
|
|
|
12550
12556
|
const shell = document.createElement('div');
|
|
12551
12557
|
shell.className = 'template-card__shell template-card__shell--remote-fleet';
|
|
12552
12558
|
|
|
12553
|
-
|
|
12554
|
-
|
|
12559
|
+
if (!isDeviceNode) {
|
|
12560
|
+
const header = document.createElement('div');
|
|
12561
|
+
header.className = 'template-card__header template-card__header--remote-fleet';
|
|
12555
12562
|
|
|
12556
|
-
|
|
12557
|
-
|
|
12558
|
-
|
|
12559
|
-
|
|
12563
|
+
const icon = document.createElement('div');
|
|
12564
|
+
icon.className = 'template-card__icon template-card__icon--remote-fleet';
|
|
12565
|
+
icon.innerHTML = '<i class="fa-solid fa-network-wired" aria-hidden="true"></i>';
|
|
12566
|
+
header.appendChild(icon);
|
|
12560
12567
|
|
|
12561
|
-
|
|
12562
|
-
|
|
12563
|
-
|
|
12564
|
-
|
|
12565
|
-
|
|
12566
|
-
|
|
12568
|
+
const titleBlock = document.createElement('div');
|
|
12569
|
+
titleBlock.className = 'template-card__title-block';
|
|
12570
|
+
titleBlock.appendChild(createTemplateCardText('div', 'template-card__eyebrow', 'Remote'));
|
|
12571
|
+
titleBlock.appendChild(createTemplateCardText('div', 'template-card__title', title));
|
|
12572
|
+
header.appendChild(titleBlock);
|
|
12573
|
+
shell.appendChild(header);
|
|
12574
|
+
}
|
|
12567
12575
|
|
|
12568
12576
|
const bodyView = document.createElement('div');
|
|
12569
12577
|
bodyView.className = 'template-card__remote-fleet-body markdown-body mind-map-text-scrollable-view';
|
|
12570
12578
|
bodyView.dataset.nodeId = nodeModel.id;
|
|
12571
|
-
|
|
12579
|
+
if (isDeviceNode) {
|
|
12580
|
+
renderRemoteFleetDevice(bodyView, nodeModel);
|
|
12581
|
+
} else {
|
|
12582
|
+
renderRemoteFleetMonitor(bodyView, nodeModel);
|
|
12583
|
+
}
|
|
12572
12584
|
shell.appendChild(bodyView);
|
|
12573
12585
|
|
|
12574
12586
|
container.appendChild(shell);
|
|
@@ -17095,7 +17107,6 @@
|
|
|
17095
17107
|
const refreshedAt = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetLastRefreshAtUtc', '');
|
|
17096
17108
|
const lastError = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetLastError', '');
|
|
17097
17109
|
const deviceId = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetPinnedDeviceId', device ? getRemoteFleetDeviceId(device) : '');
|
|
17098
|
-
const endpoint = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetHubEndpoint', '127.0.0.1:5197');
|
|
17099
17110
|
|
|
17100
17111
|
bodyView.dataset.src = `remote-device:${deviceId}:${refreshedAt}`;
|
|
17101
17112
|
bodyView.classList.add('map-node-remote-fleet__body');
|
|
@@ -17104,12 +17115,13 @@
|
|
|
17104
17115
|
flex: 1 1 auto;
|
|
17105
17116
|
min-height: 0;
|
|
17106
17117
|
pointer-events: auto;
|
|
17118
|
+
position: relative;
|
|
17107
17119
|
display: flex;
|
|
17108
17120
|
flex-direction: column;
|
|
17109
|
-
gap:
|
|
17110
|
-
padding:
|
|
17121
|
+
gap: 6px;
|
|
17122
|
+
padding: 6px;
|
|
17111
17123
|
overflow: hidden;
|
|
17112
|
-
background:
|
|
17124
|
+
background: #ffffff;
|
|
17113
17125
|
`;
|
|
17114
17126
|
|
|
17115
17127
|
const feedback = document.createElement('div');
|
|
@@ -17228,42 +17240,82 @@
|
|
|
17228
17240
|
const release = String(getRemoteFleetDeviceField(device, 'release', 'Release', ''));
|
|
17229
17241
|
const latestTaskStatus = String(getRemoteFleetDeviceField(device, 'latestTaskStatus', 'LatestTaskStatus', ''));
|
|
17230
17242
|
const latestTaskTitle = String(getRemoteFleetDeviceField(device, 'latestTaskTitle', 'LatestTaskTitle', ''));
|
|
17231
|
-
const latestTaskApproval = String(getRemoteFleetDeviceField(device, 'latestTaskApprovalLevel', 'LatestTaskApprovalLevel', ''));
|
|
17232
17243
|
const latestTaskUpdatedAt = String(getRemoteFleetDeviceField(device, 'latestTaskUpdatedAt', 'LatestTaskUpdatedAt', ''));
|
|
17233
17244
|
const latestTaskError = String(getRemoteFleetDeviceField(device, 'latestTaskError', 'LatestTaskError', ''));
|
|
17234
17245
|
const latestTaskResultModel = String(getRemoteFleetDeviceField(device, 'latestTaskResultModel', 'LatestTaskResultModel', ''));
|
|
17235
17246
|
const latestTaskResultResponseId = String(getRemoteFleetDeviceField(device, 'latestTaskResultResponseId', 'LatestTaskResultResponseId', ''));
|
|
17236
17247
|
const latestTaskResult = String(getRemoteFleetDeviceField(device, 'latestTaskResultSummary', 'LatestTaskResultSummary', ''));
|
|
17237
17248
|
|
|
17238
|
-
const
|
|
17239
|
-
|
|
17240
|
-
|
|
17241
|
-
|
|
17249
|
+
const toolbar = document.createElement('div');
|
|
17250
|
+
toolbar.dataset.remoteFleetDeviceToolbar = 'true';
|
|
17251
|
+
toolbar.style.cssText = `
|
|
17252
|
+
flex: 0 0 32px;
|
|
17253
|
+
min-height: 32px;
|
|
17254
|
+
display: flex;
|
|
17255
|
+
align-items: center;
|
|
17256
|
+
gap: 8px;
|
|
17257
|
+
min-width: 0;
|
|
17258
|
+
padding: 0 2px;
|
|
17259
|
+
`;
|
|
17260
|
+
const deviceTitle = document.createElement('div');
|
|
17261
|
+
deviceTitle.style.cssText = `
|
|
17262
|
+
min-width: 0;
|
|
17263
|
+
flex: 1 1 auto;
|
|
17264
|
+
display: flex;
|
|
17265
|
+
align-items: center;
|
|
17266
|
+
gap: 7px;
|
|
17267
|
+
overflow: hidden;
|
|
17268
|
+
`;
|
|
17269
|
+
const stateDot = document.createElement('span');
|
|
17270
|
+
stateDot.title = connected ? 'Online' : 'Offline';
|
|
17271
|
+
stateDot.style.cssText = `
|
|
17272
|
+
width: 8px;
|
|
17273
|
+
height: 8px;
|
|
17274
|
+
border-radius: 50%;
|
|
17275
|
+
flex: 0 0 auto;
|
|
17276
|
+
background: ${connected ? '#10b981' : '#94a3b8'};
|
|
17277
|
+
box-shadow: 0 0 0 2px rgba(226, 232, 240, 0.9);
|
|
17278
|
+
`;
|
|
17242
17279
|
const title = document.createElement('strong');
|
|
17243
17280
|
title.textContent = name;
|
|
17244
17281
|
title.title = `${name} (${deviceId})`;
|
|
17245
|
-
title.style.cssText =
|
|
17246
|
-
|
|
17247
|
-
|
|
17248
|
-
|
|
17249
|
-
|
|
17250
|
-
|
|
17251
|
-
|
|
17252
|
-
|
|
17253
|
-
|
|
17254
|
-
|
|
17282
|
+
title.style.cssText = `
|
|
17283
|
+
min-width: 0;
|
|
17284
|
+
color: #0f172a;
|
|
17285
|
+
font-size: 13px;
|
|
17286
|
+
font-weight: 950;
|
|
17287
|
+
line-height: 1;
|
|
17288
|
+
overflow: hidden;
|
|
17289
|
+
text-overflow: ellipsis;
|
|
17290
|
+
white-space: nowrap;
|
|
17291
|
+
letter-spacing: 0;
|
|
17292
|
+
`;
|
|
17293
|
+
const titleStatus = document.createElement('span');
|
|
17294
|
+
titleStatus.textContent = liveActive ? 'Live' : (connected ? 'Ready' : 'Offline');
|
|
17295
|
+
titleStatus.style.cssText = `
|
|
17255
17296
|
flex: 0 0 auto;
|
|
17256
|
-
|
|
17257
|
-
border-radius: 999px;
|
|
17258
|
-
background: ${liveActive ? 'rgba(220, 38, 38, 0.12)' : connected ? 'rgba(16, 185, 129, 0.12)' : 'rgba(100, 116, 139, 0.12)'};
|
|
17259
|
-
color: ${liveActive ? '#b91c1c' : connected ? '#047857' : '#475569'};
|
|
17297
|
+
color: ${connected ? '#047857' : '#64748b'};
|
|
17260
17298
|
font-size: 10px;
|
|
17261
|
-
font-weight:
|
|
17299
|
+
font-weight: 900;
|
|
17300
|
+
line-height: 1;
|
|
17262
17301
|
letter-spacing: 0;
|
|
17263
17302
|
`;
|
|
17264
|
-
|
|
17265
|
-
|
|
17266
|
-
|
|
17303
|
+
deviceTitle.appendChild(stateDot);
|
|
17304
|
+
deviceTitle.appendChild(title);
|
|
17305
|
+
deviceTitle.appendChild(titleStatus);
|
|
17306
|
+
const actions = document.createElement('div');
|
|
17307
|
+
actions.dataset.remoteFleetDeviceActions = 'true';
|
|
17308
|
+
actions.style.cssText = `
|
|
17309
|
+
flex: 0 0 auto;
|
|
17310
|
+
display: flex;
|
|
17311
|
+
align-items: center;
|
|
17312
|
+
justify-content: flex-end;
|
|
17313
|
+
gap: 5px;
|
|
17314
|
+
min-width: 0;
|
|
17315
|
+
`;
|
|
17316
|
+
toolbar.appendChild(deviceTitle);
|
|
17317
|
+
toolbar.appendChild(actions);
|
|
17318
|
+
bodyView.appendChild(toolbar);
|
|
17267
17319
|
|
|
17268
17320
|
const controlStage = document.createElement('div');
|
|
17269
17321
|
controlStage.dataset.remoteFleetControlNodeStage = 'true';
|
|
@@ -17273,12 +17325,12 @@
|
|
|
17273
17325
|
controlStage.style.cssText = `
|
|
17274
17326
|
position: relative;
|
|
17275
17327
|
flex: 1 1 auto;
|
|
17276
|
-
min-height:
|
|
17328
|
+
min-height: 0;
|
|
17277
17329
|
width: 100%;
|
|
17278
17330
|
overflow: hidden;
|
|
17279
17331
|
border-radius: 0;
|
|
17280
17332
|
background: #020617;
|
|
17281
|
-
border: 1px solid rgba(15, 23, 42, 0.
|
|
17333
|
+
border: 1px solid rgba(15, 23, 42, 0.20);
|
|
17282
17334
|
cursor: crosshair;
|
|
17283
17335
|
touch-action: none;
|
|
17284
17336
|
outline: none;
|
|
@@ -17382,103 +17434,81 @@
|
|
|
17382
17434
|
}
|
|
17383
17435
|
}
|
|
17384
17436
|
|
|
17385
|
-
const stats = document.createElement('div');
|
|
17386
|
-
stats.style.cssText = 'display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;flex:0 0 auto;';
|
|
17387
|
-
stats.appendChild(createRemoteFleetStat('Seen', formatRemoteFleetAge(getRemoteFleetDeviceField(device, 'lastSeenAt', 'LastSeenAt', '')), connected ? 'online' : 'default'));
|
|
17388
|
-
stats.appendChild(createRemoteFleetStat('Uptime', formatRemoteFleetDuration(getRemoteFleetDeviceField(device, 'uptimeSec', 'UptimeSec', Number.NaN))));
|
|
17389
|
-
stats.appendChild(createRemoteFleetStat('Mem', formatRemoteFleetPercent(getRemoteFleetDeviceField(device, 'usedMemRatio', 'UsedMemRatio', Number.NaN))));
|
|
17390
|
-
stats.appendChild(createRemoteFleetStat('Load', formatRemoteFleetNumber(getRemoteFleetDeviceField(device, 'load1', 'Load1', Number.NaN), 2)));
|
|
17391
|
-
bodyView.appendChild(stats);
|
|
17392
|
-
|
|
17393
|
-
if (latestTaskStatus || latestTaskTitle || latestTaskResult || latestTaskError) {
|
|
17394
|
-
const taskBox = document.createElement('div');
|
|
17395
|
-
const taskTone = latestTaskError || latestTaskStatus === 'failed'
|
|
17396
|
-
? 'error'
|
|
17397
|
-
: (latestTaskStatus === 'completed' ? 'done' : 'pending');
|
|
17398
|
-
taskBox.style.cssText = `
|
|
17399
|
-
display: flex;
|
|
17400
|
-
flex-direction: column;
|
|
17401
|
-
gap: 3px;
|
|
17402
|
-
min-width: 0;
|
|
17403
|
-
padding: 8px 9px;
|
|
17404
|
-
border-radius: 8px;
|
|
17405
|
-
background: ${taskTone === 'error' ? 'rgba(248, 113, 113, 0.12)' : taskTone === 'done' ? 'rgba(16, 185, 129, 0.10)' : 'rgba(37, 99, 235, 0.08)'};
|
|
17406
|
-
border: 1px solid ${taskTone === 'error' ? 'rgba(248, 113, 113, 0.24)' : taskTone === 'done' ? 'rgba(16, 185, 129, 0.20)' : 'rgba(37, 99, 235, 0.16)'};
|
|
17407
|
-
flex: 0 0 auto;
|
|
17408
|
-
`;
|
|
17409
|
-
const taskLine = document.createElement('div');
|
|
17410
|
-
const taskModeLabel = latestTaskApproval === 'ai-assist' ? 'AI' : 'Task';
|
|
17411
|
-
taskLine.textContent = `${taskModeLabel} ${latestTaskStatus || 'task'}${latestTaskUpdatedAt ? ` - ${formatRemoteFleetAge(latestTaskUpdatedAt)}` : ''}${latestTaskResultModel ? ` - ${latestTaskResultModel}` : ''}`;
|
|
17412
|
-
taskLine.title = latestTaskResultResponseId
|
|
17413
|
-
? `${taskLine.textContent} (${latestTaskResultResponseId})`
|
|
17414
|
-
: taskLine.textContent;
|
|
17415
|
-
taskLine.style.cssText = `color:${taskTone === 'error' ? '#991b1b' : taskTone === 'done' ? '#047857' : '#1d4ed8'};font-size:10px;font-weight:900;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:0;`;
|
|
17416
|
-
const taskSummary = document.createElement('div');
|
|
17417
|
-
taskSummary.textContent = formatRemoteFleetTaskError(latestTaskError) || latestTaskResult || latestTaskTitle || 'Task queued';
|
|
17418
|
-
taskSummary.title = taskSummary.textContent;
|
|
17419
|
-
taskSummary.style.cssText = 'color:#334155;font-size:11px;font-weight:750;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;letter-spacing:0;';
|
|
17420
|
-
taskBox.appendChild(taskLine);
|
|
17421
|
-
taskBox.appendChild(taskSummary);
|
|
17422
|
-
bodyView.appendChild(taskBox);
|
|
17423
|
-
}
|
|
17424
|
-
|
|
17425
|
-
const taskInput = document.createElement('textarea');
|
|
17426
|
-
taskInput.dataset.remoteFleetDeviceTaskInput = 'true';
|
|
17427
|
-
taskInput.placeholder = 'Task for this computer';
|
|
17428
|
-
taskInput.rows = 2;
|
|
17429
|
-
taskInput.style.cssText = `
|
|
17430
|
-
width: 100%;
|
|
17431
|
-
min-width: 0;
|
|
17432
|
-
height: 50px;
|
|
17433
|
-
resize: none;
|
|
17434
|
-
border-radius: 8px;
|
|
17435
|
-
border: 1px solid rgba(148, 163, 184, 0.34);
|
|
17436
|
-
background: rgba(255, 255, 255, 0.92);
|
|
17437
|
-
color: #0f172a;
|
|
17438
|
-
padding: 8px 10px;
|
|
17439
|
-
font-size: 12px;
|
|
17440
|
-
line-height: 1.35;
|
|
17441
|
-
font-weight: 700;
|
|
17442
|
-
letter-spacing: 0;
|
|
17443
|
-
outline: none;
|
|
17444
|
-
pointer-events: auto;
|
|
17445
|
-
`;
|
|
17446
|
-
bodyView.appendChild(taskInput);
|
|
17447
|
-
|
|
17448
|
-
const actions = document.createElement('div');
|
|
17449
|
-
actions.style.cssText = 'display:flex;align-items:center;gap:7px;flex-wrap:wrap;flex:0 0 auto;';
|
|
17450
17437
|
const refreshButton = createRemoteFleetButton('Refresh', 'Refresh this remote control device', 'refresh-device');
|
|
17451
|
-
refreshButton.style.height = '
|
|
17438
|
+
refreshButton.style.height = '26px';
|
|
17452
17439
|
actions.appendChild(refreshButton);
|
|
17453
17440
|
if (connected && thumbnailEnabled) {
|
|
17454
17441
|
const shotButton = createRemoteFleetButton('Shot', 'Request thumbnail', 'thumbnail-device');
|
|
17455
17442
|
shotButton.dataset.deviceId = deviceId;
|
|
17456
|
-
shotButton.style.height = '
|
|
17443
|
+
shotButton.style.height = '26px';
|
|
17457
17444
|
actions.appendChild(shotButton);
|
|
17458
17445
|
}
|
|
17459
17446
|
if (connected && liveStreamEnabled) {
|
|
17460
17447
|
const liveButton = createRemoteFleetButton(liveActive ? 'Stop' : 'Live', liveActive ? 'Stop live stream' : 'Start live stream', liveActive ? 'live-stop' : 'live-start');
|
|
17461
17448
|
liveButton.dataset.deviceId = deviceId;
|
|
17462
17449
|
liveButton.dataset.streamId = liveStreamId;
|
|
17463
|
-
liveButton.style.height = '
|
|
17450
|
+
liveButton.style.height = '26px';
|
|
17464
17451
|
if (liveActive) {
|
|
17465
17452
|
liveButton.style.borderColor = 'rgba(220, 38, 38, 0.32)';
|
|
17466
17453
|
liveButton.style.color = '#b91c1c';
|
|
17467
17454
|
}
|
|
17468
17455
|
actions.appendChild(liveButton);
|
|
17469
17456
|
}
|
|
17457
|
+
let taskToggleButton = null;
|
|
17470
17458
|
if (connected && taskEnabled) {
|
|
17471
|
-
|
|
17472
|
-
|
|
17473
|
-
|
|
17474
|
-
actions.appendChild(
|
|
17459
|
+
taskToggleButton = createRemoteFleetButton(aiAssistEnabled ? 'Task/AI' : 'Task', 'Open task input for this device', 'task-open');
|
|
17460
|
+
taskToggleButton.dataset.deviceId = deviceId;
|
|
17461
|
+
taskToggleButton.style.height = '26px';
|
|
17462
|
+
actions.appendChild(taskToggleButton);
|
|
17475
17463
|
}
|
|
17476
17464
|
if (connected) {
|
|
17477
17465
|
const pingButton = createRemoteFleetButton('Ping', 'Ping device', 'ping-device');
|
|
17478
17466
|
pingButton.dataset.deviceId = deviceId;
|
|
17479
|
-
pingButton.style.height = '
|
|
17467
|
+
pingButton.style.height = '26px';
|
|
17480
17468
|
actions.appendChild(pingButton);
|
|
17481
17469
|
}
|
|
17470
|
+
|
|
17471
|
+
const taskPanel = document.createElement('div');
|
|
17472
|
+
taskPanel.dataset.remoteFleetDeviceTaskPanel = 'true';
|
|
17473
|
+
taskPanel.style.cssText = `
|
|
17474
|
+
position: absolute;
|
|
17475
|
+
right: 8px;
|
|
17476
|
+
top: 42px;
|
|
17477
|
+
z-index: 6;
|
|
17478
|
+
width: min(360px, calc(100% - 16px));
|
|
17479
|
+
display: none;
|
|
17480
|
+
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
17481
|
+
gap: 6px;
|
|
17482
|
+
align-items: stretch;
|
|
17483
|
+
padding: 7px;
|
|
17484
|
+
border-radius: 8px;
|
|
17485
|
+
border: 1px solid rgba(148, 163, 184, 0.30);
|
|
17486
|
+
background: rgba(255, 255, 255, 0.97);
|
|
17487
|
+
box-shadow: 0 16px 32px rgba(15, 23, 42, 0.18);
|
|
17488
|
+
pointer-events: auto;
|
|
17489
|
+
`;
|
|
17490
|
+
const taskInput = document.createElement('textarea');
|
|
17491
|
+
taskInput.dataset.remoteFleetDeviceTaskInput = 'true';
|
|
17492
|
+
taskInput.placeholder = 'Task for this computer';
|
|
17493
|
+
taskInput.rows = 2;
|
|
17494
|
+
taskInput.style.cssText = `
|
|
17495
|
+
width: 100%;
|
|
17496
|
+
min-width: 0;
|
|
17497
|
+
height: 42px;
|
|
17498
|
+
resize: none;
|
|
17499
|
+
border-radius: 7px;
|
|
17500
|
+
border: 1px solid rgba(148, 163, 184, 0.34);
|
|
17501
|
+
background: rgba(255, 255, 255, 0.94);
|
|
17502
|
+
color: #0f172a;
|
|
17503
|
+
padding: 6px 8px;
|
|
17504
|
+
font-size: 11px;
|
|
17505
|
+
line-height: 1.3;
|
|
17506
|
+
font-weight: 700;
|
|
17507
|
+
letter-spacing: 0;
|
|
17508
|
+
outline: none;
|
|
17509
|
+
pointer-events: auto;
|
|
17510
|
+
`;
|
|
17511
|
+
taskPanel.appendChild(taskInput);
|
|
17482
17512
|
const aiToggleLabel = document.createElement('label');
|
|
17483
17513
|
aiToggleLabel.title = 'Use AI assist when this agent exposes it';
|
|
17484
17514
|
aiToggleLabel.style.cssText = `
|
|
@@ -17486,7 +17516,7 @@
|
|
|
17486
17516
|
align-items: center;
|
|
17487
17517
|
justify-content: center;
|
|
17488
17518
|
gap: 6px;
|
|
17489
|
-
height:
|
|
17519
|
+
height: 42px;
|
|
17490
17520
|
padding: 0 9px;
|
|
17491
17521
|
border-radius: 7px;
|
|
17492
17522
|
border: 1px solid rgba(14, 165, 233, 0.28);
|
|
@@ -17507,37 +17537,73 @@
|
|
|
17507
17537
|
aiToggleText.textContent = 'AI';
|
|
17508
17538
|
aiToggleLabel.appendChild(aiToggle);
|
|
17509
17539
|
aiToggleLabel.appendChild(aiToggleText);
|
|
17510
|
-
|
|
17511
|
-
|
|
17540
|
+
taskPanel.appendChild(aiToggleLabel);
|
|
17541
|
+
const taskSendButton = createRemoteFleetButton('Send', 'Dispatch task to this device', 'task-device');
|
|
17542
|
+
taskSendButton.dataset.deviceId = deviceId;
|
|
17543
|
+
taskSendButton.style.height = '42px';
|
|
17544
|
+
taskPanel.appendChild(taskSendButton);
|
|
17545
|
+
bodyView.appendChild(taskPanel);
|
|
17512
17546
|
bodyView.appendChild(feedback);
|
|
17513
17547
|
|
|
17514
|
-
const
|
|
17515
|
-
|
|
17516
|
-
|
|
17517
|
-
|
|
17518
|
-
|
|
17548
|
+
const statusBar = document.createElement('div');
|
|
17549
|
+
statusBar.dataset.remoteFleetDeviceStatusBar = 'true';
|
|
17550
|
+
const latestTaskText = formatRemoteFleetTaskError(latestTaskError) || latestTaskResult || latestTaskTitle || '';
|
|
17551
|
+
const statusItems = [
|
|
17552
|
+
`${connected ? 'Online' : 'Offline'}`,
|
|
17553
|
+
`Seen ${formatRemoteFleetAge(getRemoteFleetDeviceField(device, 'lastSeenAt', 'LastSeenAt', ''))}`,
|
|
17554
|
+
`Uptime ${formatRemoteFleetDuration(getRemoteFleetDeviceField(device, 'uptimeSec', 'UptimeSec', Number.NaN))}`,
|
|
17555
|
+
`Mem ${formatRemoteFleetPercent(getRemoteFleetDeviceField(device, 'usedMemRatio', 'UsedMemRatio', Number.NaN))}`,
|
|
17556
|
+
`Load ${formatRemoteFleetNumber(getRemoteFleetDeviceField(device, 'load1', 'Load1', Number.NaN), 2)}`,
|
|
17557
|
+
release ? `${platform} ${release}` : platform,
|
|
17558
|
+
latestTaskStatus ? `Task ${latestTaskStatus}${latestTaskUpdatedAt ? ` ${formatRemoteFleetAge(latestTaskUpdatedAt)}` : ''}` : '',
|
|
17559
|
+
latestTaskText ? latestTaskText : ''
|
|
17560
|
+
].filter(text => String(text || '').trim());
|
|
17561
|
+
statusBar.textContent = statusItems.join(' | ');
|
|
17562
|
+
statusBar.title = `${name} (${deviceId}) - ${statusBar.textContent}${latestTaskResultModel ? ` - ${latestTaskResultModel}` : ''}${latestTaskResultResponseId ? ` - ${latestTaskResultResponseId}` : ''}`;
|
|
17563
|
+
statusBar.style.cssText = `
|
|
17519
17564
|
flex: 0 0 auto;
|
|
17520
|
-
|
|
17521
|
-
|
|
17565
|
+
min-height: 22px;
|
|
17566
|
+
display: flex;
|
|
17567
|
+
align-items: center;
|
|
17568
|
+
min-width: 0;
|
|
17569
|
+
padding: 0 6px;
|
|
17570
|
+
border-radius: 0;
|
|
17571
|
+
border: 1px solid rgba(148, 163, 184, 0.18);
|
|
17572
|
+
background: rgba(248, 250, 252, 0.92);
|
|
17573
|
+
color: #334155;
|
|
17574
|
+
font-size: 10.5px;
|
|
17522
17575
|
font-weight: 750;
|
|
17523
|
-
line-height: 1
|
|
17576
|
+
line-height: 1;
|
|
17524
17577
|
overflow: hidden;
|
|
17525
17578
|
text-overflow: ellipsis;
|
|
17526
17579
|
white-space: nowrap;
|
|
17580
|
+
letter-spacing: 0;
|
|
17527
17581
|
`;
|
|
17528
|
-
bodyView.appendChild(
|
|
17582
|
+
bodyView.appendChild(statusBar);
|
|
17529
17583
|
|
|
17530
17584
|
if (lastError.trim()) {
|
|
17531
17585
|
setFeedback(lastError, 'error');
|
|
17532
17586
|
}
|
|
17533
17587
|
|
|
17534
|
-
[taskInput, aiToggleLabel, aiToggle, ...Array.from(actions.querySelectorAll('button'))].forEach(control => {
|
|
17588
|
+
[taskPanel, taskInput, aiToggleLabel, aiToggle, ...Array.from(actions.querySelectorAll('button')), taskSendButton].forEach(control => {
|
|
17535
17589
|
if (!control) return;
|
|
17536
17590
|
['mousedown', 'mouseup', 'click', 'dblclick', 'keydown'].forEach(eventName => {
|
|
17537
17591
|
control.addEventListener(eventName, event => event.stopPropagation());
|
|
17538
17592
|
});
|
|
17539
17593
|
});
|
|
17540
17594
|
|
|
17595
|
+
if (taskToggleButton) {
|
|
17596
|
+
taskToggleButton.addEventListener('click', event => {
|
|
17597
|
+
event.preventDefault();
|
|
17598
|
+
event.stopPropagation();
|
|
17599
|
+
const nextVisible = taskPanel.style.display === 'none';
|
|
17600
|
+
taskPanel.style.display = nextVisible ? 'grid' : 'none';
|
|
17601
|
+
if (nextVisible) {
|
|
17602
|
+
taskInput.focus({ preventScroll: true });
|
|
17603
|
+
}
|
|
17604
|
+
});
|
|
17605
|
+
}
|
|
17606
|
+
|
|
17541
17607
|
refreshButton.addEventListener('click', async event => {
|
|
17542
17608
|
event.preventDefault();
|
|
17543
17609
|
event.stopPropagation();
|
|
@@ -17613,7 +17679,7 @@
|
|
|
17613
17679
|
});
|
|
17614
17680
|
});
|
|
17615
17681
|
|
|
17616
|
-
|
|
17682
|
+
bodyView.querySelectorAll('[data-remote-fleet-action="task-device"]').forEach(button => {
|
|
17617
17683
|
button.addEventListener('click', async event => {
|
|
17618
17684
|
event.preventDefault();
|
|
17619
17685
|
event.stopPropagation();
|
|
@@ -19422,7 +19488,7 @@
|
|
|
19422
19488
|
}
|
|
19423
19489
|
|
|
19424
19490
|
function createMemoNodeElement(nodeModel) {
|
|
19425
|
-
if (
|
|
19491
|
+
if (isRemoteFleetNode(nodeModel)) {
|
|
19426
19492
|
return createRemoteFleetTemplateNodeElement(nodeModel);
|
|
19427
19493
|
}
|
|
19428
19494
|
|
|
@@ -22612,7 +22678,7 @@
|
|
|
22612
22678
|
dividerEl.style.display = prompt ? (isLoading || hasContent ? 'block' : 'none') : 'none';
|
|
22613
22679
|
}
|
|
22614
22680
|
|
|
22615
|
-
if (
|
|
22681
|
+
if (isRemoteFleetNode(nodeModel)) {
|
|
22616
22682
|
el.classList.remove('node-type-memo', 'has-context-source-pins');
|
|
22617
22683
|
el.classList.add('node-type-templatelauncher');
|
|
22618
22684
|
el.dataset.contentType = 'templateLauncher';
|
|
@@ -22639,6 +22705,7 @@
|
|
|
22639
22705
|
|
|
22640
22706
|
card.dataset.nodeId = nodeId;
|
|
22641
22707
|
card.dataset.semanticType = getNodeSemanticType(nodeModel);
|
|
22708
|
+
card.classList.toggle('map-node-remote-device', isRemoteFleetDeviceNode(nodeModel));
|
|
22642
22709
|
card.style.width = `${worldWidth}px`;
|
|
22643
22710
|
card.style.height = `${worldHeight}px`;
|
|
22644
22711
|
card.style.minWidth = `${worldWidth}px`;
|
|
@@ -22657,7 +22724,11 @@
|
|
|
22657
22724
|
}
|
|
22658
22725
|
|
|
22659
22726
|
const bodyView = card.querySelector('.template-card__remote-fleet-body');
|
|
22660
|
-
|
|
22727
|
+
if (isRemoteFleetDeviceNode(nodeModel)) {
|
|
22728
|
+
renderRemoteFleetDevice(bodyView, nodeModel);
|
|
22729
|
+
} else {
|
|
22730
|
+
renderRemoteFleetMonitor(bodyView, nodeModel);
|
|
22731
|
+
}
|
|
22661
22732
|
bindTemplateCardCanvasNavigation(card, nodeModel);
|
|
22662
22733
|
return;
|
|
22663
22734
|
}
|
|
@@ -382,7 +382,8 @@
|
|
|
382
382
|
const contentType = getNodeContentType(model);
|
|
383
383
|
return isTemplateLauncherModel(model) ||
|
|
384
384
|
contentType === 'csv-table' ||
|
|
385
|
-
isBusinessAutomationModel(model)
|
|
385
|
+
isBusinessAutomationModel(model) ||
|
|
386
|
+
isRemoteFleetNodeModel(model);
|
|
386
387
|
}
|
|
387
388
|
|
|
388
389
|
function isRemoteFleetNodeModel(model) {
|
|
@@ -43,7 +43,10 @@
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
function isTemplateLauncherNodeModel(nodeModel) {
|
|
46
|
-
|
|
46
|
+
const semanticType = getNodeSemanticType(nodeModel);
|
|
47
|
+
return getNodeContentTypeLower(nodeModel) === 'templatelauncher'
|
|
48
|
+
|| semanticType === REMOTE_FLEET_SEMANTIC_TYPE
|
|
49
|
+
|| semanticType === REMOTE_FLEET_DEVICE_SEMANTIC_TYPE;
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
function getNodeMetadata(nodeModel) {
|
|
@@ -103,8 +106,7 @@
|
|
|
103
106
|
const semanticType = getNodeSemanticType(nodeModel);
|
|
104
107
|
return semanticType === 'MindCanvasAgent'
|
|
105
108
|
|| semanticType === 'AgentCommand'
|
|
106
|
-
|| semanticType === BUSINESS_AUTOMATION_SEMANTIC_TYPE
|
|
107
|
-
|| semanticType === REMOTE_FLEET_DEVICE_SEMANTIC_TYPE;
|
|
109
|
+
|| semanticType === BUSINESS_AUTOMATION_SEMANTIC_TYPE;
|
|
108
110
|
}
|
|
109
111
|
|
|
110
112
|
function isAgentNodeModel(nodeModel) {
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/wwwroot/_framework/{MindExecution.Web.hucq2w2ism.dll → MindExecution.Web.cg3mse80dr.dll}
RENAMED
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "MindExecution.Web",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-fuZfmnPbFwdls7P4hSQJc1lN5QGs/DTxCqcNmFrIMjs=",
|
|
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.3zom09ir6j.dll": "MindExecution.Kernel.dll",
|
|
128
128
|
"MindExecution.Plugins.Admin.bk23zzy6wc.dll": "MindExecution.Plugins.Admin.dll",
|
|
129
129
|
"MindExecution.Plugins.Business.zwcvc8wufe.dll": "MindExecution.Plugins.Business.dll",
|
|
130
|
-
"MindExecution.Plugins.Concept.
|
|
130
|
+
"MindExecution.Plugins.Concept.9igh5dsuw9.dll": "MindExecution.Plugins.Concept.dll",
|
|
131
131
|
"MindExecution.Plugins.Directory.jc0g7fvyzv.dll": "MindExecution.Plugins.Directory.dll",
|
|
132
|
-
"MindExecution.Plugins.PlanMaster.
|
|
133
|
-
"MindExecution.Plugins.YouTube.
|
|
134
|
-
"MindExecution.Shared.
|
|
135
|
-
"MindExecution.Web.
|
|
132
|
+
"MindExecution.Plugins.PlanMaster.g9r2lbhihg.dll": "MindExecution.Plugins.PlanMaster.dll",
|
|
133
|
+
"MindExecution.Plugins.YouTube.6ni889qas8.dll": "MindExecution.Plugins.YouTube.dll",
|
|
134
|
+
"MindExecution.Shared.xtnh42yedc.dll": "MindExecution.Shared.dll",
|
|
135
|
+
"MindExecution.Web.cg3mse80dr.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.asayb4hw1o.dll": "sha256-5gla4JTR/zbvkGpneSt6S7ItE51+MjWgjW6L+B6Yevk=",
|
|
282
282
|
"MindExecution.Kernel.3zom09ir6j.dll": "sha256-78vR2SNkF9FwdQv0fEItSyz4HzgyzwGUROJAnpripPA=",
|
|
283
|
-
"MindExecution.Plugins.Concept.
|
|
284
|
-
"MindExecution.Plugins.PlanMaster.
|
|
285
|
-
"MindExecution.Shared.
|
|
286
|
-
"MindExecution.Web.
|
|
283
|
+
"MindExecution.Plugins.Concept.9igh5dsuw9.dll": "sha256-L9kDRKc/l7qDyrpHv3nP2eZJFl3hiTKzobGq+1Ir1u4=",
|
|
284
|
+
"MindExecution.Plugins.PlanMaster.g9r2lbhihg.dll": "sha256-hMdypae7YThv34t4g0TL/iI1GF/vQsZVQgEehe1AXt8=",
|
|
285
|
+
"MindExecution.Shared.xtnh42yedc.dll": "sha256-GwFDvUKSi/L8U9L2QsvOVjOOZYAaQInM5CLVYhD0BFk=",
|
|
286
|
+
"MindExecution.Web.cg3mse80dr.dll": "sha256-BDF8hVymVem3X/dB9iKv2S6Vohz7y9CKSYMQOattgaA="
|
|
287
287
|
},
|
|
288
288
|
"lazyAssembly": {
|
|
289
289
|
"MindExecution.Plugins.Admin.bk23zzy6wc.dll": "sha256-uz7Nz0OZ8BBESp2Nr9YocyzV0dUrn7szPuD4/m/RWL8=",
|
|
290
290
|
"MindExecution.Plugins.Business.zwcvc8wufe.dll": "sha256-3YDsB2/uNI+feWqJk+cesLHgNt8s2/8hXxGPO6CRZZE=",
|
|
291
291
|
"MindExecution.Plugins.Directory.jc0g7fvyzv.dll": "sha256-PSe7135JPpTBmu4j+rGLF0Dc/6w/wDJNPi8zlfTmSMk=",
|
|
292
|
-
"MindExecution.Plugins.YouTube.
|
|
292
|
+
"MindExecution.Plugins.YouTube.6ni889qas8.dll": "sha256-ngO7cBhZwzW2Sx9TqcTZj/3TW3lOkcluXr76P2oH9X8="
|
|
293
293
|
}
|
|
294
294
|
},
|
|
295
295
|
"cacheBootResources": true,
|
package/wwwroot/index.html
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<title>MindExec | Run your ideas as AI task graphs</title>
|
|
8
8
|
<meta name="description" content="MindExec is an AI execution canvas for solo builders, researchers, developers, and creators. Start with free browser tools, then move serious work into saved MindCanvas projects." />
|
|
9
9
|
<base href="/" />
|
|
10
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-remote-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-remote-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-remote-control-screen-v593" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-remote-control-screen-v593" />
|
|
12
12
|
<!-- ?쇄뼹??Font Awesome (local) ?쇄뼹??-->
|
|
13
13
|
<link rel="stylesheet" href="_content/MindExecution.Shared/lib/font-awesome/css/all.min.css" />
|
|
14
14
|
<!-- ?꿎뼯??-->
|
|
@@ -579,7 +579,7 @@
|
|
|
579
579
|
}
|
|
580
580
|
|
|
581
581
|
const base = '_content/MindExecution.Shared/js/';
|
|
582
|
-
const scriptVersion = '20260617-remote-
|
|
582
|
+
const scriptVersion = '20260617-remote-control-screen-v593';
|
|
583
583
|
const scriptUrl = (script) => `${base}${script}?v=${scriptVersion}`;
|
|
584
584
|
console.log(`[Script Loader] Shared JS version: ${scriptVersion}`);
|
|
585
585
|
const criticalScripts = [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
self.assetsManifest = {
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "xi510uSd",
|
|
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-Qe8ZasFVu0/cCvryv6hkXRbNvdEQFO8yqiIOKN5w4G4=",
|
|
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-5NeWmkeG5tE20WMmpOO59SkGuCFv+yk/h6kOeYeOmJA=",
|
|
90
90
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"url": "_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js"
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
|
-
"hash": "sha256-
|
|
117
|
+
"hash": "sha256-pI3Kf/v2vRRR1SMDKCjMZcLtR8ACg7XAROlgwHBGg50=",
|
|
118
118
|
"url": "_content/MindExecution.Shared/js/mind-map-lod-renderer.js"
|
|
119
119
|
},
|
|
120
120
|
{
|
|
@@ -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-e1IsTR6acAA6OdptYbIJWTS3km0IJGh/VYBU75rDMXU=",
|
|
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.zwcvc8wufe.dll"
|
|
427
427
|
},
|
|
428
428
|
{
|
|
429
|
-
"hash": "sha256-
|
|
430
|
-
"url": "_framework/MindExecution.Plugins.Concept.
|
|
429
|
+
"hash": "sha256-L9kDRKc/l7qDyrpHv3nP2eZJFl3hiTKzobGq+1Ir1u4=",
|
|
430
|
+
"url": "_framework/MindExecution.Plugins.Concept.9igh5dsuw9.dll"
|
|
431
431
|
},
|
|
432
432
|
{
|
|
433
433
|
"hash": "sha256-PSe7135JPpTBmu4j+rGLF0Dc/6w/wDJNPi8zlfTmSMk=",
|
|
434
434
|
"url": "_framework/MindExecution.Plugins.Directory.jc0g7fvyzv.dll"
|
|
435
435
|
},
|
|
436
436
|
{
|
|
437
|
-
"hash": "sha256-
|
|
438
|
-
"url": "_framework/MindExecution.Plugins.PlanMaster.
|
|
437
|
+
"hash": "sha256-hMdypae7YThv34t4g0TL/iI1GF/vQsZVQgEehe1AXt8=",
|
|
438
|
+
"url": "_framework/MindExecution.Plugins.PlanMaster.g9r2lbhihg.dll"
|
|
439
439
|
},
|
|
440
440
|
{
|
|
441
|
-
"hash": "sha256-
|
|
442
|
-
"url": "_framework/MindExecution.Plugins.YouTube.
|
|
441
|
+
"hash": "sha256-ngO7cBhZwzW2Sx9TqcTZj/3TW3lOkcluXr76P2oH9X8=",
|
|
442
|
+
"url": "_framework/MindExecution.Plugins.YouTube.6ni889qas8.dll"
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
|
-
"hash": "sha256-
|
|
446
|
-
"url": "_framework/MindExecution.Shared.
|
|
445
|
+
"hash": "sha256-GwFDvUKSi/L8U9L2QsvOVjOOZYAaQInM5CLVYhD0BFk=",
|
|
446
|
+
"url": "_framework/MindExecution.Shared.xtnh42yedc.dll"
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
|
-
"hash": "sha256-
|
|
450
|
-
"url": "_framework/MindExecution.Web.
|
|
449
|
+
"hash": "sha256-BDF8hVymVem3X/dB9iKv2S6Vohz7y9CKSYMQOattgaA=",
|
|
450
|
+
"url": "_framework/MindExecution.Web.cg3mse80dr.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-1T/+tduwHalERbmteG+ZOkOPvGnie3dWjxoK9p0myto=",
|
|
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-tgf6hPsk0rfP/I8Wx88fu4cEJGVIRNrgAztKJfw35Ms=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|