@mindexec/cli 0.2.145 → 0.2.146
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
CHANGED
|
@@ -856,12 +856,41 @@ try {
|
|
|
856
856
|
return { success: true };
|
|
857
857
|
}
|
|
858
858
|
};
|
|
859
|
-
|
|
859
|
+
const moduleRef = {
|
|
860
|
+
dotNetHelper,
|
|
861
|
+
nodeObjectsById: new Map(),
|
|
862
|
+
_visibleIds: new Set(['remote-fleet-render-smoke']),
|
|
863
|
+
_prevVisibleIds: new Set(['remote-fleet-render-smoke']),
|
|
864
|
+
_forceUpdateFrames: 0,
|
|
865
|
+
_textOverlayV2State: {
|
|
866
|
+
cards: new Map(),
|
|
867
|
+
passiveCandidateIds: new Set(['remote-fleet-render-smoke']),
|
|
868
|
+
layer: document.createElement('div')
|
|
869
|
+
},
|
|
870
|
+
requestAnimationWake(reason) {
|
|
871
|
+
this._lastAnimationWakeReason = reason;
|
|
872
|
+
this._animationWakeCount = Number(this._animationWakeCount || 0) + 1;
|
|
873
|
+
},
|
|
874
|
+
isAnimationLoopActive() {
|
|
875
|
+
return true;
|
|
876
|
+
}
|
|
877
|
+
};
|
|
878
|
+
manager.setModuleForTest(moduleRef);
|
|
860
879
|
|
|
861
880
|
const { nodeShell, bodyView } = createRemoteFleetTemplateShell(document, focusedDevice.DeviceId);
|
|
862
881
|
document.body.appendChild(nodeShell);
|
|
882
|
+
const monitorNode = buildMonitorNode(devices, hub.getStatus({ includeSecrets: true }), latestTaskBatch, recentTaskBatches);
|
|
883
|
+
moduleRef.nodeObjectsById.set('remote-fleet-render-smoke', {
|
|
884
|
+
model: monitorNode,
|
|
885
|
+
currentType: 'CSS',
|
|
886
|
+
cssObject: {
|
|
887
|
+
visible: true,
|
|
888
|
+
element: nodeShell
|
|
889
|
+
}
|
|
890
|
+
});
|
|
891
|
+
document.body.appendChild(moduleRef._textOverlayV2State.layer);
|
|
863
892
|
|
|
864
|
-
manager.renderRemoteFleetMonitorForTest(bodyView,
|
|
893
|
+
manager.renderRemoteFleetMonitorForTest(bodyView, monitorNode);
|
|
865
894
|
|
|
866
895
|
let cards = bodyView.querySelectorAll('article[data-device-id]');
|
|
867
896
|
assert.equal(cards.length, connectedCount);
|
|
@@ -963,6 +992,16 @@ try {
|
|
|
963
992
|
false,
|
|
964
993
|
'binary Blob frame paint must not clear/fill the canvas before drawing');
|
|
965
994
|
|
|
995
|
+
const liveOverlayCard = document.createElement('div');
|
|
996
|
+
liveOverlayCard.dataset.nodeId = 'remote-fleet-render-smoke';
|
|
997
|
+
liveOverlayCard.dataset.sourceKind = 'live';
|
|
998
|
+
liveOverlayCard.dataset.liveInteractive = 'true';
|
|
999
|
+
liveOverlayCard.style.display = 'block';
|
|
1000
|
+
moduleRef._textOverlayV2State.cards.set('selection:remote-fleet-render-smoke', liveOverlayCard);
|
|
1001
|
+
moduleRef._forceUpdateFrames = 0;
|
|
1002
|
+
moduleRef._animationWakeCount = 0;
|
|
1003
|
+
moduleRef._lastAnimationWakeReason = '';
|
|
1004
|
+
|
|
966
1005
|
await wait(20);
|
|
967
1006
|
const liveWs = diagnostics.webSocketConnections[0];
|
|
968
1007
|
assert.ok(liveWs, 'expected MDM render to open the binary frame WebSocket');
|
|
@@ -990,6 +1029,14 @@ try {
|
|
|
990
1029
|
patchPreview.dataset.remoteFleetFrameSeq,
|
|
991
1030
|
String(websocketFrameSeq),
|
|
992
1031
|
JSON.stringify(diagnostics.runtimeTrace.slice(-12)));
|
|
1032
|
+
await wait(10);
|
|
1033
|
+
assert.ok(
|
|
1034
|
+
Number(moduleRef._forceUpdateFrames || 0) >= 2,
|
|
1035
|
+
'binary live frame commits must wake the passive MDM overlay frame loop');
|
|
1036
|
+
assert.equal(moduleRef._lastAnimationWakeReason, 'remote-live-overlay-frame');
|
|
1037
|
+
assert.ok(
|
|
1038
|
+
diagnostics.runtimeTrace.some(event => event.type === 'remote.frame.overlayWake'),
|
|
1039
|
+
'binary live frame commits must trace the MDM overlay wake path');
|
|
993
1040
|
|
|
994
1041
|
manager.renderRemoteFleetMonitorForTest(bodyView, buildMonitorNode(devices, hub.getStatus({ includeSecrets: true }), latestTaskBatch, recentTaskBatches));
|
|
995
1042
|
await wait(30);
|
|
@@ -13877,6 +13877,145 @@
|
|
|
13877
13877
|
: 0;
|
|
13878
13878
|
}
|
|
13879
13879
|
|
|
13880
|
+
function getRemoteFleetBodyNodeId(bodyView) {
|
|
13881
|
+
return String(
|
|
13882
|
+
bodyView?.dataset?.nodeId
|
|
13883
|
+
|| bodyView?.dataset?.remoteFleetMonitorNodeId
|
|
13884
|
+
|| bodyView?.closest?.('.map-node-remote-fleet__body[data-node-id]')?.dataset?.nodeId
|
|
13885
|
+
|| bodyView?.closest?.('[data-node-id]')?.dataset?.nodeId
|
|
13886
|
+
|| ''
|
|
13887
|
+
).trim();
|
|
13888
|
+
}
|
|
13889
|
+
|
|
13890
|
+
function getRemoteFleetBodyFromPreview(preview) {
|
|
13891
|
+
if (!preview) {
|
|
13892
|
+
return null;
|
|
13893
|
+
}
|
|
13894
|
+
|
|
13895
|
+
return preview.closest?.('.map-node-remote-fleet__body[data-node-id]')
|
|
13896
|
+
|| preview.closest?.('.map-node-remote-fleet__body[data-remote-fleet-monitor-node-id]')
|
|
13897
|
+
|| null;
|
|
13898
|
+
}
|
|
13899
|
+
|
|
13900
|
+
function wakeRemoteFleetModuleAnimation(module, reason) {
|
|
13901
|
+
if (!module) {
|
|
13902
|
+
return;
|
|
13903
|
+
}
|
|
13904
|
+
|
|
13905
|
+
if (typeof module.requestAnimationWake === 'function') {
|
|
13906
|
+
module.requestAnimationWake(reason);
|
|
13907
|
+
}
|
|
13908
|
+
|
|
13909
|
+
if (typeof module.isAnimationLoopActive === 'function'
|
|
13910
|
+
&& module.isAnimationLoopActive() !== true
|
|
13911
|
+
&& typeof module.animate === 'function') {
|
|
13912
|
+
module.animate();
|
|
13913
|
+
}
|
|
13914
|
+
}
|
|
13915
|
+
|
|
13916
|
+
function flushRemoteFleetLiveOverlayWake(module) {
|
|
13917
|
+
const state = module?._remoteFleetLiveOverlayWakeState || null;
|
|
13918
|
+
if (!module || !state || !(state.nodeIds instanceof Set)) {
|
|
13919
|
+
return;
|
|
13920
|
+
}
|
|
13921
|
+
|
|
13922
|
+
state.raf = 0;
|
|
13923
|
+
let woke = false;
|
|
13924
|
+
const overlayState = module._textOverlayV2State || null;
|
|
13925
|
+
state.nodeIds.forEach(nodeId => {
|
|
13926
|
+
const normalizedNodeId = String(nodeId || '').trim();
|
|
13927
|
+
if (!normalizedNodeId) {
|
|
13928
|
+
return;
|
|
13929
|
+
}
|
|
13930
|
+
|
|
13931
|
+
const entry = module.nodeObjectsById?.get?.(normalizedNodeId) || null;
|
|
13932
|
+
if (!entry?.model || !isRemoteFleetMonitorNode(entry.model)) {
|
|
13933
|
+
return;
|
|
13934
|
+
}
|
|
13935
|
+
|
|
13936
|
+
const card = overlayState?.cards?.get?.(`selection:${normalizedNodeId}`) || null;
|
|
13937
|
+
const hasLiveOverlayCard =
|
|
13938
|
+
!!card &&
|
|
13939
|
+
card.style?.display !== 'none' &&
|
|
13940
|
+
card.dataset?.sourceKind === 'live' &&
|
|
13941
|
+
card.dataset?.liveInteractive === 'true';
|
|
13942
|
+
const mayCreatePassiveOverlay =
|
|
13943
|
+
window.MindMapTextOverlayV2?.shouldRenderPassiveDomOverlays?.(module) === true &&
|
|
13944
|
+
(
|
|
13945
|
+
overlayState?.passiveCandidateIds?.has?.(normalizedNodeId) === true ||
|
|
13946
|
+
module._visibleIds?.has?.(normalizedNodeId) === true ||
|
|
13947
|
+
module._prevVisibleIds?.has?.(normalizedNodeId) === true ||
|
|
13948
|
+
String(module.selectedNodeIdJs || '').trim() === normalizedNodeId
|
|
13949
|
+
);
|
|
13950
|
+
|
|
13951
|
+
if (!hasLiveOverlayCard && !mayCreatePassiveOverlay) {
|
|
13952
|
+
return;
|
|
13953
|
+
}
|
|
13954
|
+
|
|
13955
|
+
if (hasLiveOverlayCard) {
|
|
13956
|
+
if (overlayState?.layer?.style && module._suppressPassiveDomOverlayDuringZoom !== true) {
|
|
13957
|
+
overlayState.layer.style.display = '';
|
|
13958
|
+
}
|
|
13959
|
+
card.style.display = 'block';
|
|
13960
|
+
} else {
|
|
13961
|
+
window.MindMapTextOverlayV2?.invalidateNode?.(module, normalizedNodeId, 'remote-live-frame');
|
|
13962
|
+
module._overlayDirty = true;
|
|
13963
|
+
module._lastOverlayKey = '';
|
|
13964
|
+
}
|
|
13965
|
+
|
|
13966
|
+
woke = true;
|
|
13967
|
+
});
|
|
13968
|
+
state.nodeIds.clear();
|
|
13969
|
+
|
|
13970
|
+
if (!woke) {
|
|
13971
|
+
return;
|
|
13972
|
+
}
|
|
13973
|
+
|
|
13974
|
+
module._forceUpdateFrames = Math.max(Number(module._forceUpdateFrames || 0), 2);
|
|
13975
|
+
module._css3dVisualChangedThisFrame = true;
|
|
13976
|
+
module._css3dVisualChangedSinceLastRender = true;
|
|
13977
|
+
wakeRemoteFleetModuleAnimation(module, 'remote-live-overlay-frame');
|
|
13978
|
+
|
|
13979
|
+
const now = getRemoteFleetFrameNow();
|
|
13980
|
+
if (now - Number(module._remoteFleetLiveOverlayWakeLastTraceAt || 0) >= 1000) {
|
|
13981
|
+
module._remoteFleetLiveOverlayWakeLastTraceAt = now;
|
|
13982
|
+
window.RuntimeTrace?.emit?.('remote.frame.overlayWake', {
|
|
13983
|
+
nodes: state.lastWakeCount || 0
|
|
13984
|
+
});
|
|
13985
|
+
}
|
|
13986
|
+
}
|
|
13987
|
+
|
|
13988
|
+
function requestRemoteFleetLiveOverlayWake(bodyView, frame) {
|
|
13989
|
+
if (!_module || !bodyView || String(frame?.kind || '').toLowerCase() !== 'live') {
|
|
13990
|
+
return false;
|
|
13991
|
+
}
|
|
13992
|
+
|
|
13993
|
+
const nodeId = getRemoteFleetBodyNodeId(bodyView);
|
|
13994
|
+
if (!nodeId) {
|
|
13995
|
+
return false;
|
|
13996
|
+
}
|
|
13997
|
+
|
|
13998
|
+
const state = _module._remoteFleetLiveOverlayWakeState || {
|
|
13999
|
+
nodeIds: new Set(),
|
|
14000
|
+
raf: 0,
|
|
14001
|
+
lastWakeCount: 0
|
|
14002
|
+
};
|
|
14003
|
+
_module._remoteFleetLiveOverlayWakeState = state;
|
|
14004
|
+
state.nodeIds.add(nodeId);
|
|
14005
|
+
state.lastWakeCount = state.nodeIds.size;
|
|
14006
|
+
|
|
14007
|
+
if (!state.raf) {
|
|
14008
|
+
state.raf = requestRemoteFleetFrameLoopFrame(() => flushRemoteFleetLiveOverlayWake(_module));
|
|
14009
|
+
}
|
|
14010
|
+
|
|
14011
|
+
return true;
|
|
14012
|
+
}
|
|
14013
|
+
|
|
14014
|
+
function requestRemoteFleetLiveOverlayWakeFromPreview(preview, frame) {
|
|
14015
|
+
const bodyView = getRemoteFleetBodyFromPreview(preview);
|
|
14016
|
+
return requestRemoteFleetLiveOverlayWake(bodyView, frame);
|
|
14017
|
+
}
|
|
14018
|
+
|
|
13880
14019
|
function refreshRemoteFleetBinaryFrameSubscription(session, force = false) {
|
|
13881
14020
|
if (!session?.ws || session.ws.readyState !== WebSocket.OPEN) {
|
|
13882
14021
|
return false;
|
|
@@ -14701,7 +14840,11 @@
|
|
|
14701
14840
|
canvas.style.display = 'none';
|
|
14702
14841
|
}
|
|
14703
14842
|
|
|
14704
|
-
|
|
14843
|
+
const committed = commitRemoteFleetFrameMetadata(preview, frame);
|
|
14844
|
+
if (committed) {
|
|
14845
|
+
requestRemoteFleetLiveOverlayWakeFromPreview(preview, frame);
|
|
14846
|
+
}
|
|
14847
|
+
return committed;
|
|
14705
14848
|
}
|
|
14706
14849
|
|
|
14707
14850
|
function commitRemoteFleetFrameToCanvas(preview, canvas, image, bitmap, frame) {
|
|
@@ -14722,7 +14865,11 @@
|
|
|
14722
14865
|
image.style.display = 'none';
|
|
14723
14866
|
}
|
|
14724
14867
|
|
|
14725
|
-
|
|
14868
|
+
const committed = commitRemoteFleetFrameMetadata(preview, frame);
|
|
14869
|
+
if (committed) {
|
|
14870
|
+
requestRemoteFleetLiveOverlayWakeFromPreview(preview, frame);
|
|
14871
|
+
}
|
|
14872
|
+
return committed;
|
|
14726
14873
|
}
|
|
14727
14874
|
|
|
14728
14875
|
function clearRemoteFleetPendingFrameDataset(preview, frame) {
|
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-mdm-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-mdm-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-mdm-overlay-live-v581" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-mdm-overlay-live-v581" />
|
|
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-mdm-
|
|
582
|
+
const scriptVersion = '20260617-mdm-overlay-live-v581';
|
|
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": "oR91p21X",
|
|
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-+Y65YIk5GcFioFxM72xcAvkC2+vdx+B90L2qlalXrhw=",
|
|
90
90
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -834,7 +834,7 @@
|
|
|
834
834
|
"url": "image-manifest.json"
|
|
835
835
|
},
|
|
836
836
|
{
|
|
837
|
-
"hash": "sha256-
|
|
837
|
+
"hash": "sha256-6kgfFKKW8vB1esatu6Iq0af4n6evMTxQfK5SCVpyq5k=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|