@mindexec/cli 0.2.53 → 0.2.55
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 +24 -2
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +274 -11
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.j0zntvuecv.dll → MindExecution.Plugins.Concept.tggchun4s7.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.vml3qie2ji.dll → MindExecution.Plugins.PlanMaster.ffy1iht980.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.0gfbwq1jfg.dll → MindExecution.Plugins.YouTube.kqg5bcmjkz.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.f3bclzo6k4.dll → MindExecution.Shared.wb65y6ok9q.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Web.4jhsxoiqgz.dll → MindExecution.Web.nlrvrfkobr.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +11 -11
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +14 -14
- package/wwwroot/service-worker.js +1 -1
package/package.json
CHANGED
|
@@ -649,6 +649,7 @@ try {
|
|
|
649
649
|
const { manager, document } = await loadCss3DManager();
|
|
650
650
|
assert.equal(typeof manager?.renderRemoteFleetMonitorForTest, 'function');
|
|
651
651
|
assert.equal(typeof manager?.renderRemoteFleetDeviceForTest, 'function');
|
|
652
|
+
assert.equal(typeof manager?.applyRemoteFleetFramePatchesForTest, 'function');
|
|
652
653
|
assert.equal(typeof manager?.setModuleForTest, 'function');
|
|
653
654
|
|
|
654
655
|
const dotNetCalls = [];
|
|
@@ -683,7 +684,9 @@ try {
|
|
|
683
684
|
if (methodName === 'SetRemoteFleetHostFromJs') {
|
|
684
685
|
return {
|
|
685
686
|
success: true,
|
|
686
|
-
active: args[1] === true
|
|
687
|
+
active: args[1] === true,
|
|
688
|
+
registryStatus: args[1] === true ? 'local' : 'inactive',
|
|
689
|
+
registryReason: args[1] === true ? 'registry-render-smoke' : 'inactive'
|
|
687
690
|
};
|
|
688
691
|
}
|
|
689
692
|
|
|
@@ -712,7 +715,8 @@ try {
|
|
|
712
715
|
assert.ok(bodyChildOrder.endsWith('remoteFleetStatusRail'), bodyChildOrder);
|
|
713
716
|
assert.ok(statusFooter.style.cssText.includes('flex-direction: row'));
|
|
714
717
|
assert.match(statusFooter.style.cssText, /box-sizing:\s*border-box;/);
|
|
715
|
-
assert.equal(statusFooter.querySelectorAll('[data-remote-fleet-status-item]').length,
|
|
718
|
+
assert.equal(statusFooter.querySelectorAll('[data-remote-fleet-status-item]').length, 5);
|
|
719
|
+
assert.ok(statusFooter.querySelector('[data-remote-fleet-status-item="route"]'));
|
|
716
720
|
const initialDetailPanel = bodyView.querySelector('[data-remote-fleet-detail-panel="true"]');
|
|
717
721
|
assert.equal(initialDetailPanel?.dataset.deviceId, focusedDevice.DeviceId);
|
|
718
722
|
assert.equal(bodyView.querySelectorAll('[data-remote-fleet-action="pin-device"]').length, 1);
|
|
@@ -724,6 +728,24 @@ try {
|
|
|
724
728
|
assert.ok(initialDetailPanel?.textContent.includes('Load'));
|
|
725
729
|
assert.ok(cards[0]?.querySelector('[data-remote-fleet-device-preview="tile"]'));
|
|
726
730
|
assert.equal(/\b(Seen|Uptime|Mem|Load)\b/.test(cards[0]?.textContent || ''), false);
|
|
731
|
+
const patchTarget = devices.find(device => device.ThumbnailEnabled === true && device.LiveStreamActive !== true);
|
|
732
|
+
assert.ok(patchTarget);
|
|
733
|
+
const patchCard = Array.from(cards).find(card => card.dataset.deviceId === patchTarget.DeviceId);
|
|
734
|
+
const patchPreview = patchCard?.querySelector('[data-remote-fleet-device-preview="tile"]');
|
|
735
|
+
assert.ok(patchPreview);
|
|
736
|
+
const patchUrl = `/api/remote/devices/${encodeURIComponent(patchTarget.DeviceId)}/thumbnail?token=render-smoke-frame&seq=9999`;
|
|
737
|
+
const patchCount = manager.applyRemoteFleetFramePatchesForTest(bodyView, [{
|
|
738
|
+
deviceId: patchTarget.DeviceId,
|
|
739
|
+
kind: 'thumbnail',
|
|
740
|
+
frameSeq: 9999,
|
|
741
|
+
frameUrl: patchUrl,
|
|
742
|
+
receivedAt: new Date().toISOString()
|
|
743
|
+
}]);
|
|
744
|
+
assert.equal(patchCount, 1);
|
|
745
|
+
assert.equal(patchPreview.dataset.remoteFleetFrameSeq, '9999');
|
|
746
|
+
assert.equal(patchPreview.dataset.remoteFleetFrameUrl, patchUrl);
|
|
747
|
+
assert.equal(patchPreview.dataset.remoteFleetPendingFrameUrl || '', '');
|
|
748
|
+
assert.equal(patchPreview.querySelector('img[data-remote-fleet-frame-image="true"]')?.dataset.remoteFleetFrameUrl, patchUrl);
|
|
727
749
|
const alternateDevice = devices.find(device => device.DeviceId !== focusedDevice.DeviceId);
|
|
728
750
|
assert.ok(alternateDevice);
|
|
729
751
|
const alternateCard = Array.from(cards).find(card => card.dataset.deviceId === alternateDevice.DeviceId);
|
|
@@ -12541,6 +12541,7 @@
|
|
|
12541
12541
|
const tone = String(item?.tone || 'default');
|
|
12542
12542
|
const row = document.createElement('div');
|
|
12543
12543
|
row.dataset.remoteFleetStatusItem = item?.key || '';
|
|
12544
|
+
row.title = String(item?.title || '').trim();
|
|
12544
12545
|
row.style.cssText = `
|
|
12545
12546
|
flex: 0 0 auto;
|
|
12546
12547
|
display: inline-flex;
|
|
@@ -12580,7 +12581,8 @@
|
|
|
12580
12581
|
|
|
12581
12582
|
const valueEl = document.createElement('strong');
|
|
12582
12583
|
valueEl.textContent = item?.value || '';
|
|
12583
|
-
valueEl.title =
|
|
12584
|
+
valueEl.title = String(item?.title || '').trim()
|
|
12585
|
+
|| `${labelEl.textContent} ${valueEl.textContent}`.trim();
|
|
12584
12586
|
valueEl.style.cssText = `
|
|
12585
12587
|
color: ${tone === 'online' ? '#047857' : '#0f172a'};
|
|
12586
12588
|
font-size: 10px;
|
|
@@ -12602,6 +12604,75 @@
|
|
|
12602
12604
|
return rail;
|
|
12603
12605
|
}
|
|
12604
12606
|
|
|
12607
|
+
function getRemoteFleetRegistryRouteInfo(registryStatus, registryReason, hostTargetState) {
|
|
12608
|
+
const status = String(registryStatus || '').trim().toLowerCase();
|
|
12609
|
+
const reason = String(registryReason || '').trim();
|
|
12610
|
+
const hostState = String(hostTargetState || '').trim().toLowerCase();
|
|
12611
|
+
|
|
12612
|
+
if (hostState === 'other-monitor') {
|
|
12613
|
+
return {
|
|
12614
|
+
value: 'Other',
|
|
12615
|
+
tone: 'default',
|
|
12616
|
+
title: reason || 'Another monitor currently owns the host route.'
|
|
12617
|
+
};
|
|
12618
|
+
}
|
|
12619
|
+
|
|
12620
|
+
if (hostState !== 'hosting') {
|
|
12621
|
+
return {
|
|
12622
|
+
value: 'Idle',
|
|
12623
|
+
tone: 'default',
|
|
12624
|
+
title: reason || 'No active host route.'
|
|
12625
|
+
};
|
|
12626
|
+
}
|
|
12627
|
+
|
|
12628
|
+
if (status === 'account') {
|
|
12629
|
+
return {
|
|
12630
|
+
value: 'Account',
|
|
12631
|
+
tone: 'online',
|
|
12632
|
+
title: reason || 'Published to the account route registry for same-account agent pairing.'
|
|
12633
|
+
};
|
|
12634
|
+
}
|
|
12635
|
+
|
|
12636
|
+
if (status === 'blocked') {
|
|
12637
|
+
return {
|
|
12638
|
+
value: 'Blocked',
|
|
12639
|
+
tone: 'warn',
|
|
12640
|
+
title: reason || 'The local host is active, but account route publishing failed.'
|
|
12641
|
+
};
|
|
12642
|
+
}
|
|
12643
|
+
|
|
12644
|
+
return {
|
|
12645
|
+
value: 'Local',
|
|
12646
|
+
tone: 'warn',
|
|
12647
|
+
title: reason || 'The local host is active, but account route publishing is not available.'
|
|
12648
|
+
};
|
|
12649
|
+
}
|
|
12650
|
+
|
|
12651
|
+
function getRemoteFleetResultRegistryStatus(result) {
|
|
12652
|
+
return String(result?.registryStatus ?? result?.RegistryStatus ?? '').trim().toLowerCase();
|
|
12653
|
+
}
|
|
12654
|
+
|
|
12655
|
+
function getRemoteFleetHostFeedbackText(enabled, result) {
|
|
12656
|
+
if (enabled !== true) {
|
|
12657
|
+
return 'Host target stopped.';
|
|
12658
|
+
}
|
|
12659
|
+
|
|
12660
|
+
const status = getRemoteFleetResultRegistryStatus(result);
|
|
12661
|
+
if (status === 'account') {
|
|
12662
|
+
return 'Host target set.';
|
|
12663
|
+
}
|
|
12664
|
+
|
|
12665
|
+
if (status === 'local') {
|
|
12666
|
+
return 'Host set locally. Account route pending.';
|
|
12667
|
+
}
|
|
12668
|
+
|
|
12669
|
+
if (status === 'blocked') {
|
|
12670
|
+
return 'Host route blocked.';
|
|
12671
|
+
}
|
|
12672
|
+
|
|
12673
|
+
return 'Host target set.';
|
|
12674
|
+
}
|
|
12675
|
+
|
|
12605
12676
|
function createRemoteFleetButton(label, title, action) {
|
|
12606
12677
|
const button = document.createElement('button');
|
|
12607
12678
|
button.type = 'button';
|
|
@@ -13093,15 +13164,37 @@
|
|
|
13093
13164
|
image.loading = frame.kind === 'thumbnail' ? 'lazy' : 'eager';
|
|
13094
13165
|
image.decoding = 'async';
|
|
13095
13166
|
image.style.cssText = 'width:100%;height:100%;object-fit:cover;display:block;';
|
|
13096
|
-
|
|
13097
|
-
|
|
13098
|
-
|
|
13167
|
+
if (typeof preview?.insertBefore === 'function') {
|
|
13168
|
+
preview.insertBefore(image, preview.firstChild || null);
|
|
13169
|
+
} else {
|
|
13170
|
+
preview?.appendChild?.(image);
|
|
13099
13171
|
}
|
|
13100
|
-
preview?.insertBefore?.(image, preview.firstChild || null);
|
|
13101
13172
|
return image;
|
|
13102
13173
|
}
|
|
13103
13174
|
|
|
13104
|
-
function
|
|
13175
|
+
function getRemoteFleetFrameIdentity(frame) {
|
|
13176
|
+
return [
|
|
13177
|
+
String(frame?.deviceId || '').trim(),
|
|
13178
|
+
String(frame?.kind || '').trim().toLowerCase(),
|
|
13179
|
+
String(frame?.streamId || '').trim(),
|
|
13180
|
+
String(Number(frame?.frameSeq || 0) || 0),
|
|
13181
|
+
String(frame?.frameUrl || '').trim()
|
|
13182
|
+
].join('|');
|
|
13183
|
+
}
|
|
13184
|
+
|
|
13185
|
+
function cloneRemoteFleetFramePatch(frame) {
|
|
13186
|
+
return {
|
|
13187
|
+
deviceId: String(frame?.deviceId || '').trim(),
|
|
13188
|
+
kind: String(frame?.kind || 'thumbnail').trim().toLowerCase(),
|
|
13189
|
+
frameSeq: Number.isFinite(Number(frame?.frameSeq)) ? Math.floor(Number(frame.frameSeq)) : 0,
|
|
13190
|
+
frameUrl: String(frame?.frameUrl || '').trim(),
|
|
13191
|
+
receivedAt: String(frame?.receivedAt || '').trim(),
|
|
13192
|
+
capturedAt: String(frame?.capturedAt || '').trim(),
|
|
13193
|
+
streamId: String(frame?.streamId || '').trim()
|
|
13194
|
+
};
|
|
13195
|
+
}
|
|
13196
|
+
|
|
13197
|
+
function isRemoteFleetFrameNewerForPreview(preview, frame, comparePending = false) {
|
|
13105
13198
|
if (!preview || !frame || !isRemoteFleetFrameSource(frame.frameUrl)) {
|
|
13106
13199
|
return false;
|
|
13107
13200
|
}
|
|
@@ -13118,11 +13211,73 @@
|
|
|
13118
13211
|
return false;
|
|
13119
13212
|
}
|
|
13120
13213
|
|
|
13121
|
-
|
|
13122
|
-
|
|
13214
|
+
if (comparePending) {
|
|
13215
|
+
const pendingUrl = String(preview.dataset.remoteFleetPendingFrameUrl || '');
|
|
13216
|
+
const pendingKind = String(preview.dataset.remoteFleetPendingFrameKind || '').toLowerCase();
|
|
13217
|
+
const pendingSeq = Number(preview.dataset.remoteFleetPendingFrameSeq || '0');
|
|
13218
|
+
if (pendingUrl) {
|
|
13219
|
+
const samePending = pendingKind === frame.kind
|
|
13220
|
+
&& pendingSeq === nextSeq
|
|
13221
|
+
&& pendingUrl === frame.frameUrl;
|
|
13222
|
+
if (samePending) {
|
|
13223
|
+
return false;
|
|
13224
|
+
}
|
|
13225
|
+
|
|
13226
|
+
if (pendingKind === 'live' && frame.kind !== 'live') {
|
|
13227
|
+
return false;
|
|
13228
|
+
}
|
|
13229
|
+
|
|
13230
|
+
if (pendingKind === frame.kind
|
|
13231
|
+
&& Number.isFinite(pendingSeq)
|
|
13232
|
+
&& pendingSeq > 0
|
|
13233
|
+
&& Number.isFinite(nextSeq)
|
|
13234
|
+
&& nextSeq > 0
|
|
13235
|
+
&& nextSeq < pendingSeq) {
|
|
13236
|
+
return false;
|
|
13237
|
+
}
|
|
13238
|
+
}
|
|
13239
|
+
}
|
|
13240
|
+
|
|
13241
|
+
return true;
|
|
13242
|
+
}
|
|
13243
|
+
|
|
13244
|
+
function ensureRemoteFleetFrameBadge(preview, frame) {
|
|
13245
|
+
let badge = preview?.querySelector?.('[data-remote-fleet-frame-badge="true"]');
|
|
13246
|
+
if (badge) {
|
|
13247
|
+
return badge;
|
|
13248
|
+
}
|
|
13249
|
+
|
|
13250
|
+
badge = document.createElement('span');
|
|
13251
|
+
badge.dataset.remoteFleetFrameBadge = 'true';
|
|
13252
|
+
const previewMode = String(preview?.dataset?.remoteFleetDevicePreview || '');
|
|
13253
|
+
const isDetail = previewMode === 'detail';
|
|
13254
|
+
badge.style.cssText = `
|
|
13255
|
+
position: absolute;
|
|
13256
|
+
right: ${isDetail ? '9px' : '6px'};
|
|
13257
|
+
bottom: ${isDetail ? '9px' : '6px'};
|
|
13258
|
+
max-width: calc(100% - ${isDetail ? '18px' : '12px'});
|
|
13259
|
+
padding: ${isDetail ? '4px 7px' : '3px 6px'};
|
|
13260
|
+
border-radius: 999px;
|
|
13261
|
+
background: ${frame?.kind === 'live' ? 'rgba(220, 38, 38, 0.84)' : 'rgba(15, 23, 42, 0.72)'};
|
|
13262
|
+
color: #e2e8f0;
|
|
13263
|
+
font-size: ${isDetail ? '9px' : '8px'};
|
|
13264
|
+
font-weight: 950;
|
|
13265
|
+
line-height: 1;
|
|
13266
|
+
overflow: hidden;
|
|
13267
|
+
text-overflow: ellipsis;
|
|
13268
|
+
white-space: nowrap;
|
|
13269
|
+
letter-spacing: 0;
|
|
13270
|
+
`;
|
|
13271
|
+
preview?.appendChild?.(badge);
|
|
13272
|
+
return badge;
|
|
13273
|
+
}
|
|
13274
|
+
|
|
13275
|
+
function commitRemoteFleetFrameToPreview(preview, image, frame) {
|
|
13276
|
+
if (!preview || !image || !isRemoteFleetFrameNewerForPreview(preview, frame, false)) {
|
|
13123
13277
|
return false;
|
|
13124
13278
|
}
|
|
13125
13279
|
|
|
13280
|
+
const nextSeq = Number(frame.frameSeq || 0);
|
|
13126
13281
|
image.dataset.remoteFleetFrameKind = frame.kind;
|
|
13127
13282
|
image.dataset.remoteFleetFrameSeq = String(nextSeq || 0);
|
|
13128
13283
|
image.dataset.remoteFleetFrameUrl = frame.frameUrl;
|
|
@@ -13136,7 +13291,12 @@
|
|
|
13136
13291
|
preview.dataset.remoteFleetFrameUrl = frame.frameUrl;
|
|
13137
13292
|
preview.dataset.remoteFleetFrameAt = frame.receivedAt || frame.capturedAt || '';
|
|
13138
13293
|
|
|
13139
|
-
const
|
|
13294
|
+
const placeholder = preview.querySelector('[data-remote-fleet-screen-placeholder="true"]');
|
|
13295
|
+
if (placeholder) {
|
|
13296
|
+
placeholder.remove();
|
|
13297
|
+
}
|
|
13298
|
+
|
|
13299
|
+
const badge = ensureRemoteFleetFrameBadge(preview, frame);
|
|
13140
13300
|
if (badge) {
|
|
13141
13301
|
const at = frame.receivedAt || frame.capturedAt || '';
|
|
13142
13302
|
badge.textContent = frame.kind === 'live'
|
|
@@ -13151,6 +13311,96 @@
|
|
|
13151
13311
|
return true;
|
|
13152
13312
|
}
|
|
13153
13313
|
|
|
13314
|
+
function clearRemoteFleetPendingFrameDataset(preview, frame) {
|
|
13315
|
+
if (!preview) {
|
|
13316
|
+
return;
|
|
13317
|
+
}
|
|
13318
|
+
|
|
13319
|
+
if (!frame
|
|
13320
|
+
|| getRemoteFleetFrameIdentity(preview._remoteFleetPendingFrame) === getRemoteFleetFrameIdentity(frame)) {
|
|
13321
|
+
delete preview.dataset.remoteFleetPendingFrameKind;
|
|
13322
|
+
delete preview.dataset.remoteFleetPendingFrameSeq;
|
|
13323
|
+
delete preview.dataset.remoteFleetPendingFrameUrl;
|
|
13324
|
+
preview._remoteFleetPendingFrame = null;
|
|
13325
|
+
}
|
|
13326
|
+
}
|
|
13327
|
+
|
|
13328
|
+
function processRemoteFleetFrameQueue(preview, image) {
|
|
13329
|
+
if (!preview || !image || preview._remoteFleetFrameLoaderActive === true) {
|
|
13330
|
+
return;
|
|
13331
|
+
}
|
|
13332
|
+
|
|
13333
|
+
const frame = preview._remoteFleetPendingFrame;
|
|
13334
|
+
if (!frame || !isRemoteFleetFrameSource(frame.frameUrl)) {
|
|
13335
|
+
clearRemoteFleetPendingFrameDataset(preview, frame);
|
|
13336
|
+
return;
|
|
13337
|
+
}
|
|
13338
|
+
|
|
13339
|
+
preview._remoteFleetFrameLoaderActive = true;
|
|
13340
|
+
const frameIdentity = getRemoteFleetFrameIdentity(frame);
|
|
13341
|
+
const finish = loaded => {
|
|
13342
|
+
const currentPending = preview._remoteFleetPendingFrame;
|
|
13343
|
+
const stillLatest = getRemoteFleetFrameIdentity(currentPending) === frameIdentity;
|
|
13344
|
+
let committed = false;
|
|
13345
|
+
if (loaded && stillLatest) {
|
|
13346
|
+
committed = commitRemoteFleetFrameToPreview(preview, image, frame);
|
|
13347
|
+
window.RuntimeTrace?.emit?.('remote.frame.uiPatched', {
|
|
13348
|
+
count: committed ? 1 : 0,
|
|
13349
|
+
kind: frame.kind,
|
|
13350
|
+
seq: frame.frameSeq
|
|
13351
|
+
});
|
|
13352
|
+
}
|
|
13353
|
+
|
|
13354
|
+
if (stillLatest) {
|
|
13355
|
+
clearRemoteFleetPendingFrameDataset(preview, frame);
|
|
13356
|
+
}
|
|
13357
|
+
|
|
13358
|
+
preview._remoteFleetFrameLoaderActive = false;
|
|
13359
|
+
if (preview._remoteFleetPendingFrame) {
|
|
13360
|
+
processRemoteFleetFrameQueue(preview, image);
|
|
13361
|
+
}
|
|
13362
|
+
};
|
|
13363
|
+
|
|
13364
|
+
if (typeof Image !== 'function') {
|
|
13365
|
+
finish(true);
|
|
13366
|
+
return;
|
|
13367
|
+
}
|
|
13368
|
+
|
|
13369
|
+
const loader = new Image();
|
|
13370
|
+
loader.decoding = 'async';
|
|
13371
|
+
loader.onload = () => {
|
|
13372
|
+
const decoded = typeof loader.decode === 'function'
|
|
13373
|
+
? loader.decode().catch(() => undefined)
|
|
13374
|
+
: Promise.resolve();
|
|
13375
|
+
decoded.then(() => finish(true));
|
|
13376
|
+
};
|
|
13377
|
+
loader.onerror = () => finish(false);
|
|
13378
|
+
loader.src = frame.frameUrl;
|
|
13379
|
+
}
|
|
13380
|
+
|
|
13381
|
+
function queueRemoteFleetFrameImageSwap(preview, frame) {
|
|
13382
|
+
if (!preview || !frame || !isRemoteFleetFrameNewerForPreview(preview, frame, true)) {
|
|
13383
|
+
return false;
|
|
13384
|
+
}
|
|
13385
|
+
|
|
13386
|
+
const image = ensureRemoteFleetFrameImage(preview, frame);
|
|
13387
|
+
if (!image) {
|
|
13388
|
+
return false;
|
|
13389
|
+
}
|
|
13390
|
+
|
|
13391
|
+
const nextFrame = cloneRemoteFleetFramePatch(frame);
|
|
13392
|
+
preview._remoteFleetPendingFrame = nextFrame;
|
|
13393
|
+
preview.dataset.remoteFleetPendingFrameKind = nextFrame.kind;
|
|
13394
|
+
preview.dataset.remoteFleetPendingFrameSeq = String(nextFrame.frameSeq || 0);
|
|
13395
|
+
preview.dataset.remoteFleetPendingFrameUrl = nextFrame.frameUrl;
|
|
13396
|
+
processRemoteFleetFrameQueue(preview, image);
|
|
13397
|
+
return true;
|
|
13398
|
+
}
|
|
13399
|
+
|
|
13400
|
+
function applyRemoteFleetFramePatchToPreview(preview, frame) {
|
|
13401
|
+
return queueRemoteFleetFrameImageSwap(preview, frame);
|
|
13402
|
+
}
|
|
13403
|
+
|
|
13154
13404
|
function applyRemoteFleetFramePatches(bodyView, patches) {
|
|
13155
13405
|
if (!bodyView || !Array.isArray(patches) || patches.length === 0) {
|
|
13156
13406
|
return 0;
|
|
@@ -13178,7 +13428,7 @@
|
|
|
13178
13428
|
});
|
|
13179
13429
|
|
|
13180
13430
|
if (applied > 0) {
|
|
13181
|
-
window.RuntimeTrace?.emit?.('remote.frame.
|
|
13431
|
+
window.RuntimeTrace?.emit?.('remote.frame.uiQueued', {
|
|
13182
13432
|
count: applied
|
|
13183
13433
|
});
|
|
13184
13434
|
}
|
|
@@ -13956,6 +14206,9 @@
|
|
|
13956
14206
|
const refreshedAt = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetLastRefreshAtUtc', '');
|
|
13957
14207
|
const lastError = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetLastError', '');
|
|
13958
14208
|
const hostTargetState = String(getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetHostTargetState', 'inactive')).trim().toLowerCase();
|
|
14209
|
+
const registryStatus = String(getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetRegistryStatus', '')).trim().toLowerCase();
|
|
14210
|
+
const registryReason = String(getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetRegistryReason', '')).trim();
|
|
14211
|
+
const routeInfo = getRemoteFleetRegistryRouteInfo(registryStatus, registryReason, hostTargetState);
|
|
13959
14212
|
const isHostingTarget = hostTargetState === 'hosting';
|
|
13960
14213
|
|
|
13961
14214
|
if (!isHostingTarget) {
|
|
@@ -14024,6 +14277,13 @@
|
|
|
14024
14277
|
label: 'AI',
|
|
14025
14278
|
value: String(aiCapableCount),
|
|
14026
14279
|
tone: aiCapableCount > 0 ? 'online' : 'default'
|
|
14280
|
+
},
|
|
14281
|
+
{
|
|
14282
|
+
key: 'route',
|
|
14283
|
+
label: 'Route',
|
|
14284
|
+
value: routeInfo.value,
|
|
14285
|
+
tone: routeInfo.tone,
|
|
14286
|
+
title: routeInfo.title
|
|
14027
14287
|
}
|
|
14028
14288
|
], lastError);
|
|
14029
14289
|
|
|
@@ -15331,6 +15591,8 @@
|
|
|
15331
15591
|
renew: renew === true,
|
|
15332
15592
|
success: isRemoteFleetResultSuccess(result),
|
|
15333
15593
|
active: isRemoteFleetResultActive(result),
|
|
15594
|
+
registryStatus: result?.registryStatus || result?.RegistryStatus || '',
|
|
15595
|
+
registryReason: result?.registryReason || result?.RegistryReason || '',
|
|
15334
15596
|
error: result?.error || result?.Error || ''
|
|
15335
15597
|
});
|
|
15336
15598
|
rememberRemoteFleetLocalHostTarget(nodeId, enabled === true, result);
|
|
@@ -15345,7 +15607,7 @@
|
|
|
15345
15607
|
stopRemoteFleetHostLeaseTimer(nodeId);
|
|
15346
15608
|
}
|
|
15347
15609
|
if (isRemoteFleetResultSuccess(result)) {
|
|
15348
|
-
setTaskFeedback(enabled
|
|
15610
|
+
setTaskFeedback(getRemoteFleetHostFeedbackText(enabled, result), 'success');
|
|
15349
15611
|
} else {
|
|
15350
15612
|
setTaskFeedback(result?.error || result?.Error || 'Host target update failed.', 'error');
|
|
15351
15613
|
}
|
|
@@ -19565,6 +19827,7 @@
|
|
|
19565
19827
|
setModuleForTest: setModuleForTest,
|
|
19566
19828
|
renderRemoteFleetMonitorForTest: renderRemoteFleetMonitor,
|
|
19567
19829
|
renderRemoteFleetDeviceForTest: renderRemoteFleetDevice,
|
|
19830
|
+
applyRemoteFleetFramePatchesForTest: applyRemoteFleetFramePatches,
|
|
19568
19831
|
renderBusinessAutomationEdges: renderBusinessAutomationEdges,
|
|
19569
19832
|
scheduleBusinessAutomationEdgeRender: scheduleBusinessAutomationEdgeRender,
|
|
19570
19833
|
syncBusinessAutomationSelectionContext: syncBusinessAutomationSelectionContext,
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/wwwroot/_framework/{MindExecution.Web.4jhsxoiqgz.dll → MindExecution.Web.nlrvrfkobr.dll}
RENAMED
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "MindExecution.Web",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-Cmqf+RyAv8tEys9YULuN18p/g9CFkEKzpsawt4ia1As=",
|
|
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.cqcbagjpqb.dll": "MindExecution.Kernel.dll",
|
|
128
128
|
"MindExecution.Plugins.Admin.tsn0j478un.dll": "MindExecution.Plugins.Admin.dll",
|
|
129
129
|
"MindExecution.Plugins.Business.xg74dmn0vz.dll": "MindExecution.Plugins.Business.dll",
|
|
130
|
-
"MindExecution.Plugins.Concept.
|
|
130
|
+
"MindExecution.Plugins.Concept.tggchun4s7.dll": "MindExecution.Plugins.Concept.dll",
|
|
131
131
|
"MindExecution.Plugins.Directory.9i4bd043ia.dll": "MindExecution.Plugins.Directory.dll",
|
|
132
|
-
"MindExecution.Plugins.PlanMaster.
|
|
133
|
-
"MindExecution.Plugins.YouTube.
|
|
134
|
-
"MindExecution.Shared.
|
|
135
|
-
"MindExecution.Web.
|
|
132
|
+
"MindExecution.Plugins.PlanMaster.ffy1iht980.dll": "MindExecution.Plugins.PlanMaster.dll",
|
|
133
|
+
"MindExecution.Plugins.YouTube.kqg5bcmjkz.dll": "MindExecution.Plugins.YouTube.dll",
|
|
134
|
+
"MindExecution.Shared.wb65y6ok9q.dll": "MindExecution.Shared.dll",
|
|
135
|
+
"MindExecution.Web.nlrvrfkobr.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.fu1rl67yt3.dll": "sha256-6cDbehKdjX71zeL9Ro5GNupn7wqRYfb7yLW2w3Wp05g=",
|
|
282
282
|
"MindExecution.Kernel.cqcbagjpqb.dll": "sha256-zPB0tmwi/UKdJ//g0xMH1Y02ahDX5ii6ZKdB3yiQQz4=",
|
|
283
|
-
"MindExecution.Plugins.Concept.
|
|
284
|
-
"MindExecution.Plugins.PlanMaster.
|
|
285
|
-
"MindExecution.Shared.
|
|
286
|
-
"MindExecution.Web.
|
|
283
|
+
"MindExecution.Plugins.Concept.tggchun4s7.dll": "sha256-o8i4Fz1pef7TgTF7aag8edr4MdRsrTR1SEkGm62oLKI=",
|
|
284
|
+
"MindExecution.Plugins.PlanMaster.ffy1iht980.dll": "sha256-i6pAnXFj3WlRjMHtqgNslLm4oeXdH0gkewCReTcFmE8=",
|
|
285
|
+
"MindExecution.Shared.wb65y6ok9q.dll": "sha256-TGnCszDJ//ZUEVbqHFM8SRC0QtJJENOwpPBXP2PrPwI=",
|
|
286
|
+
"MindExecution.Web.nlrvrfkobr.dll": "sha256-e3TEkMbAHFkyRHYn1HRFL7wflpqIgLd0tilPfLN2Hwo="
|
|
287
287
|
},
|
|
288
288
|
"lazyAssembly": {
|
|
289
289
|
"MindExecution.Plugins.Admin.tsn0j478un.dll": "sha256-g5Q4Ihy2PJKx6EFB6k78dIszLgK4hZ3Xintjvso/zmw=",
|
|
290
290
|
"MindExecution.Plugins.Business.xg74dmn0vz.dll": "sha256-0bP/QgMyXSk9IlQVun63rnWvkwqqZmJcRe90QoPC6jw=",
|
|
291
291
|
"MindExecution.Plugins.Directory.9i4bd043ia.dll": "sha256-b+fpVz2RkQC8uL4dIvN6wMWWefoII84Jyfe85EU/URk=",
|
|
292
|
-
"MindExecution.Plugins.YouTube.
|
|
292
|
+
"MindExecution.Plugins.YouTube.kqg5bcmjkz.dll": "sha256-/J6Xgi2QF8Aaq4IHL6H6qkkhyFK/mk8gYF/ETHCNso4="
|
|
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=20260614-remote-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260614-remote-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260614-remote-route-status-v515" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260614-remote-route-status-v515" />
|
|
12
12
|
<!-- ?쇄뼹??Font Awesome (local) ?쇄뼹??-->
|
|
13
13
|
<link rel="stylesheet" href="_content/MindExecution.Shared/lib/font-awesome/css/all.min.css" />
|
|
14
14
|
<!-- ?꿎뼯??-->
|
|
@@ -558,7 +558,7 @@
|
|
|
558
558
|
}
|
|
559
559
|
|
|
560
560
|
const base = '_content/MindExecution.Shared/js/';
|
|
561
|
-
const scriptVersion = '20260614-remote-
|
|
561
|
+
const scriptVersion = '20260614-remote-route-status-v515';
|
|
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": "Go1009q7",
|
|
3
3
|
"assets": [
|
|
4
4
|
{
|
|
5
5
|
"hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
|
|
@@ -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-pfqJn3HbG2hf6mQB5J36TJM5Ko6Jj7R0B7EqxBnfo20=",
|
|
90
90
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -426,28 +426,28 @@
|
|
|
426
426
|
"url": "_framework/MindExecution.Plugins.Business.xg74dmn0vz.dll"
|
|
427
427
|
},
|
|
428
428
|
{
|
|
429
|
-
"hash": "sha256
|
|
430
|
-
"url": "_framework/MindExecution.Plugins.Concept.
|
|
429
|
+
"hash": "sha256-o8i4Fz1pef7TgTF7aag8edr4MdRsrTR1SEkGm62oLKI=",
|
|
430
|
+
"url": "_framework/MindExecution.Plugins.Concept.tggchun4s7.dll"
|
|
431
431
|
},
|
|
432
432
|
{
|
|
433
433
|
"hash": "sha256-b+fpVz2RkQC8uL4dIvN6wMWWefoII84Jyfe85EU/URk=",
|
|
434
434
|
"url": "_framework/MindExecution.Plugins.Directory.9i4bd043ia.dll"
|
|
435
435
|
},
|
|
436
436
|
{
|
|
437
|
-
"hash": "sha256-
|
|
438
|
-
"url": "_framework/MindExecution.Plugins.PlanMaster.
|
|
437
|
+
"hash": "sha256-i6pAnXFj3WlRjMHtqgNslLm4oeXdH0gkewCReTcFmE8=",
|
|
438
|
+
"url": "_framework/MindExecution.Plugins.PlanMaster.ffy1iht980.dll"
|
|
439
439
|
},
|
|
440
440
|
{
|
|
441
|
-
"hash": "sha256
|
|
442
|
-
"url": "_framework/MindExecution.Plugins.YouTube.
|
|
441
|
+
"hash": "sha256-/J6Xgi2QF8Aaq4IHL6H6qkkhyFK/mk8gYF/ETHCNso4=",
|
|
442
|
+
"url": "_framework/MindExecution.Plugins.YouTube.kqg5bcmjkz.dll"
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
|
-
"hash": "sha256-
|
|
446
|
-
"url": "_framework/MindExecution.Shared.
|
|
445
|
+
"hash": "sha256-TGnCszDJ//ZUEVbqHFM8SRC0QtJJENOwpPBXP2PrPwI=",
|
|
446
|
+
"url": "_framework/MindExecution.Shared.wb65y6ok9q.dll"
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
|
-
"hash": "sha256-
|
|
450
|
-
"url": "_framework/MindExecution.Web.
|
|
449
|
+
"hash": "sha256-e3TEkMbAHFkyRHYn1HRFL7wflpqIgLd0tilPfLN2Hwo=",
|
|
450
|
+
"url": "_framework/MindExecution.Web.nlrvrfkobr.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-WvZp/Otmujh/rLRTGQ5ChJh7Aqrz921nYaaoa05WuJQ=",
|
|
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-vpZAej4L7RfIPjq1j/sme3Zfc3tSwR3ezcT+P6sogrc=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|