@mindexec/cli 0.2.22 → 0.2.24
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/remote-hub.js +4 -0
- package/scripts/remote-fleet-render-smoke.mjs +61 -1
- package/scripts/remote-http-smoke.mjs +31 -3
- package/scripts/remote-hub-scale-smoke.mjs +3 -3
- package/server.js +25 -4
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +20 -0
- package/wwwroot/_framework/MindExecution.Core.ri6sjbi2qk.dll +0 -0
- package/wwwroot/_framework/{MindExecution.Kernel.badrt1tkvv.dll → MindExecution.Kernel.qt0p5apeu2.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Admin.73w1bvz4r1.dll → MindExecution.Plugins.Admin.i9eswmhltm.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Business.dvd82y422m.dll → MindExecution.Plugins.Business.1eayoj2kvc.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.m3ukc0xvom.dll → MindExecution.Plugins.Concept.a3850nmm3d.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Directory.23tm2uvfvu.dll → MindExecution.Plugins.Directory.l3rmdlu7o7.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.8nrc7ge4ob.dll → MindExecution.Plugins.PlanMaster.2x5gsi74yi.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.3ox59073d8.dll → MindExecution.Plugins.YouTube.vbl462eegw.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.va1gxp0crd.dll → MindExecution.Shared.l2w05i7sd6.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Web.jmawk7z8d3.dll → MindExecution.Web.i4ojmz00kp.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +21 -21
- package/wwwroot/index.html +1 -1
- package/wwwroot/service-worker-assets.js +24 -24
- package/wwwroot/service-worker.js +1 -1
- package/wwwroot/_framework/MindExecution.Core.c9fyqe953v.dll +0 -0
package/package.json
CHANGED
package/remote-hub.js
CHANGED
|
@@ -205,6 +205,8 @@ export function createRemoteHub(options = {}) {
|
|
|
205
205
|
50,
|
|
206
206
|
30 * 60 * 1000,
|
|
207
207
|
DEFAULT_AGENT_TASK_TIMEOUT_MS);
|
|
208
|
+
const managerPackage = safeString(options.managerPackage ?? env.MINDEXEC_MANAGER_PACKAGE ?? '@mindexec/cli', 128);
|
|
209
|
+
const managerVersion = safeString(options.managerVersion ?? env.MINDEXEC_MANAGER_VERSION ?? '', 64);
|
|
208
210
|
const pairToken = safeString(
|
|
209
211
|
env.REMOTE_HUB_PAIR_TOKEN || env.MINDEXEC_REMOTE_PAIR_TOKEN || crypto.randomBytes(6).toString('hex'),
|
|
210
212
|
256);
|
|
@@ -229,6 +231,8 @@ export function createRemoteHub(options = {}) {
|
|
|
229
231
|
protocolVersion: REMOTE_PROTOCOL_VERSION,
|
|
230
232
|
heartbeatMs,
|
|
231
233
|
taskTimeoutMs,
|
|
234
|
+
managerPackage,
|
|
235
|
+
managerVersion,
|
|
232
236
|
agentPackage: '@mindexec/remote',
|
|
233
237
|
agentEndpoint: `${host}:${boundPort || requestedPort}`,
|
|
234
238
|
pairToken: includeSecrets ? pairToken : undefined,
|
|
@@ -7,7 +7,7 @@ import vm from 'node:vm';
|
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
8
8
|
import { createRemoteHub } from '../remote-hub.js';
|
|
9
9
|
|
|
10
|
-
const SYNTHETIC_COUNT = Number(process.env.REMOTE_FLEET_RENDER_SMOKE_COUNT ||
|
|
10
|
+
const SYNTHETIC_COUNT = Number(process.env.REMOTE_FLEET_RENDER_SMOKE_COUNT || 500);
|
|
11
11
|
|
|
12
12
|
function dataAttributeToDatasetKey(name) {
|
|
13
13
|
return String(name || '').replace(/^data-/, '').replace(/-([a-z])/g, (_, char) => char.toUpperCase());
|
|
@@ -426,6 +426,8 @@ function buildMonitorNode(devices, hubStatus, latestTaskBatch = null, recentTask
|
|
|
426
426
|
RemoteFleetLastRefreshAtUtc: new Date().toISOString(),
|
|
427
427
|
RemoteFleetHubStatus: 'online',
|
|
428
428
|
RemoteFleetHubEndpoint: endpoint,
|
|
429
|
+
RemoteFleetManagerPackage: hubStatus.managerPackage || '@mindexec/cli',
|
|
430
|
+
RemoteFleetManagerVersion: hubStatus.managerVersion || 'render-smoke-manager',
|
|
429
431
|
RemoteFleetAgentPackage: '@mindexec/remote',
|
|
430
432
|
RemoteFleetPairTokenPreview: '<pair-token>',
|
|
431
433
|
RemoteFleetConnectCommand: `npx @mindexec/remote connect --manager ${endpoint} --pair ${pairToken}`,
|
|
@@ -452,6 +454,8 @@ function buildDeviceNode(device, hubStatus) {
|
|
|
452
454
|
RemoteFleetLastRefreshAtUtc: new Date().toISOString(),
|
|
453
455
|
RemoteFleetHubStatus: 'online',
|
|
454
456
|
RemoteFleetHubEndpoint: endpoint,
|
|
457
|
+
RemoteFleetManagerPackage: hubStatus.managerPackage || '@mindexec/cli',
|
|
458
|
+
RemoteFleetManagerVersion: hubStatus.managerVersion || 'render-smoke-manager',
|
|
455
459
|
RemoteFleetAgentPackage: '@mindexec/remote',
|
|
456
460
|
RemoteFleetPinnedDeviceId: device.DeviceId,
|
|
457
461
|
RemoteFleetPinnedDeviceJson: JSON.stringify(device),
|
|
@@ -495,6 +499,8 @@ function createThreeStub() {
|
|
|
495
499
|
}
|
|
496
500
|
|
|
497
501
|
const hub = createRemoteHub({
|
|
502
|
+
managerPackage: '@mindexec/cli',
|
|
503
|
+
managerVersion: 'render-smoke-manager',
|
|
498
504
|
env: {
|
|
499
505
|
MINDEXEC_REMOTE_HUB: '1',
|
|
500
506
|
REMOTE_HUB_HOST: '127.0.0.1',
|
|
@@ -627,6 +633,18 @@ try {
|
|
|
627
633
|
};
|
|
628
634
|
}
|
|
629
635
|
|
|
636
|
+
if (methodName === 'DispatchRemoteFleetTaskFromJs') {
|
|
637
|
+
const useAiAssist = args[3] === true;
|
|
638
|
+
const total = useAiAssist ? aiCount : connectedCount;
|
|
639
|
+
return {
|
|
640
|
+
success: true,
|
|
641
|
+
total,
|
|
642
|
+
queued: total,
|
|
643
|
+
failed: 0,
|
|
644
|
+
approvalLevel: useAiAssist ? 'ai-assist' : 'task-only'
|
|
645
|
+
};
|
|
646
|
+
}
|
|
647
|
+
|
|
630
648
|
return { success: true };
|
|
631
649
|
}
|
|
632
650
|
};
|
|
@@ -649,6 +667,7 @@ try {
|
|
|
649
667
|
assert.equal(livePanel?.dataset.deviceId, focusedDevice.DeviceId);
|
|
650
668
|
assert.equal(bodyView.querySelector('[data-remote-fleet-action="task-visible"]')?.disabled, false);
|
|
651
669
|
assert.ok(bodyView.textContent.includes('all devices, no paging'));
|
|
670
|
+
assert.match(bodyView.querySelector('[data-remote-fleet-manager-version="true"]')?.textContent || '', /^@mindexec\/cli render-smoke-manager - 127\.0\.0\.1:\d+$/);
|
|
652
671
|
assert.ok(livePanel?.textContent.includes('RemoteFast 20 fps'), livePanel?.textContent || bodyView.textContent);
|
|
653
672
|
assert.ok(bodyView.querySelector('code')?.textContent.includes('npx @mindexec/remote connect'));
|
|
654
673
|
assert.ok(bodyView.textContent.includes('synthetic-render-ai'));
|
|
@@ -717,6 +736,47 @@ try {
|
|
|
717
736
|
assert.match(feedback.textContent, new RegExp(`Queued ${connectedCount - 1}/${connectedCount} visible remote task\\(s\\); 1 failed`));
|
|
718
737
|
assert.match(feedback.textContent, /device-ai-assist-unavailable/);
|
|
719
738
|
|
|
739
|
+
const activeSelects = bodyView.querySelectorAll('select');
|
|
740
|
+
assert.equal(activeSelects.length, 4);
|
|
741
|
+
const [aiFilterSelect] = activeSelects;
|
|
742
|
+
const aiToggle = bodyView.querySelector('[data-remote-fleet-ai-toggle="true"]');
|
|
743
|
+
assert.ok(aiToggle);
|
|
744
|
+
aiFilterSelect.value = 'ai';
|
|
745
|
+
aiFilterSelect.dispatchEvent({ type: 'change' });
|
|
746
|
+
aiToggle.checked = true;
|
|
747
|
+
aiToggle.dispatchEvent({ type: 'change' });
|
|
748
|
+
assert.equal(bodyView.querySelector('[data-remote-fleet-match-count="true"]')?.textContent, `${aiCount}/${SYNTHETIC_COUNT}`);
|
|
749
|
+
assert.equal(sendVisibleButton.disabled, false);
|
|
750
|
+
taskInput.value = 'Dispatch visible AI smoke';
|
|
751
|
+
const aiDispatchCallStart = dotNetCalls.length;
|
|
752
|
+
sendVisibleButton.dispatchEvent({ type: 'click' });
|
|
753
|
+
await wait();
|
|
754
|
+
const aiBatchCall = dotNetCalls
|
|
755
|
+
.slice(aiDispatchCallStart)
|
|
756
|
+
.find(call => call.methodName === 'DispatchRemoteFleetTaskBatchFromJs');
|
|
757
|
+
assert.ok(aiBatchCall);
|
|
758
|
+
const aiTargetIds = Array.isArray(aiBatchCall.args[1]) ? aiBatchCall.args[1] : [];
|
|
759
|
+
const expectedAiTargetIds = devices
|
|
760
|
+
.filter(device => device.Connected && device.AiAssistEnabled)
|
|
761
|
+
.map(device => device.DeviceId)
|
|
762
|
+
.sort();
|
|
763
|
+
assert.deepEqual([...aiTargetIds].sort(), expectedAiTargetIds);
|
|
764
|
+
assert.equal(aiBatchCall.args[3], true);
|
|
765
|
+
|
|
766
|
+
const sendConnectedButton = bodyView.querySelector('[data-remote-fleet-action="task-connected"]');
|
|
767
|
+
assert.ok(sendConnectedButton);
|
|
768
|
+
taskInput.value = 'Dispatch all AI smoke';
|
|
769
|
+
const allAiDispatchCallStart = dotNetCalls.length;
|
|
770
|
+
sendConnectedButton.dispatchEvent({ type: 'click' });
|
|
771
|
+
await wait();
|
|
772
|
+
const allAiCall = dotNetCalls
|
|
773
|
+
.slice(allAiDispatchCallStart)
|
|
774
|
+
.find(call => call.methodName === 'DispatchRemoteFleetTaskFromJs');
|
|
775
|
+
assert.ok(allAiCall);
|
|
776
|
+
assert.equal(allAiCall.args[1], '');
|
|
777
|
+
assert.equal(allAiCall.args[3], true);
|
|
778
|
+
assert.match(feedback.textContent, new RegExp(`Queued ${aiCount}/${aiCount} AI task\\(s\\)`));
|
|
779
|
+
|
|
720
780
|
const deviceBody = document.createElement('div');
|
|
721
781
|
document.body.appendChild(deviceBody);
|
|
722
782
|
manager.renderRemoteFleetDeviceForTest(deviceBody, buildDeviceNode(focusedDevice, hub.getStatus()));
|
|
@@ -8,7 +8,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
8
8
|
|
|
9
9
|
const BRIDGE_TOKEN = 'remote-http-smoke-token';
|
|
10
10
|
const PAIR_TOKEN = 'remote-http-pair-token';
|
|
11
|
-
const SYNTHETIC_COUNT = Number(process.env.REMOTE_HTTP_SMOKE_COUNT ||
|
|
11
|
+
const SYNTHETIC_COUNT = Number(process.env.REMOTE_HTTP_SMOKE_COUNT || 500);
|
|
12
12
|
|
|
13
13
|
function wait(ms) {
|
|
14
14
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
@@ -108,6 +108,8 @@ try {
|
|
|
108
108
|
const status = await waitForBridge(baseUrl, details);
|
|
109
109
|
assert.equal(status.started, true);
|
|
110
110
|
assert.equal(status.port, remoteHubPort);
|
|
111
|
+
assert.equal(status.managerPackage, '@mindexec/cli');
|
|
112
|
+
assert.equal(status.managerVersion, '0.2.24');
|
|
111
113
|
assert.equal(status.agentPackage, '@mindexec/remote');
|
|
112
114
|
assert.equal(status.canvasPagination, 'none');
|
|
113
115
|
assert.equal(status.canvasDeviceListMode, 'all-devices');
|
|
@@ -148,9 +150,9 @@ try {
|
|
|
148
150
|
|
|
149
151
|
const connectedTargets = devicesResult.payload.devices
|
|
150
152
|
.filter(device => device.connected && device.capabilities?.taskDispatch)
|
|
151
|
-
.slice(0,
|
|
153
|
+
.slice(0, 500)
|
|
152
154
|
.map(device => device.deviceId);
|
|
153
|
-
assert.ok(connectedTargets.length >=
|
|
155
|
+
assert.ok(connectedTargets.length >= 400);
|
|
154
156
|
|
|
155
157
|
const batch = await fetchJson(`${baseUrl}/api/remote/tasks`, {
|
|
156
158
|
method: 'POST',
|
|
@@ -171,6 +173,32 @@ try {
|
|
|
171
173
|
assert.equal(batch.payload?.batch?.failed, 0);
|
|
172
174
|
assert.equal(batch.payload?.batch?.status, 'completed');
|
|
173
175
|
|
|
176
|
+
const aiTargets = devicesResult.payload.devices
|
|
177
|
+
.filter(device => device.connected && device.capabilities?.taskDispatch && device.capabilities?.aiAssist)
|
|
178
|
+
.map(device => device.deviceId);
|
|
179
|
+
assert.ok(aiTargets.length >= 200);
|
|
180
|
+
const allAiBatch = await fetchJson(`${baseUrl}/api/remote/tasks`, {
|
|
181
|
+
method: 'POST',
|
|
182
|
+
token: BRIDGE_TOKEN,
|
|
183
|
+
body: JSON.stringify({
|
|
184
|
+
allConnected: true,
|
|
185
|
+
title: 'HTTP smoke all AI task batch',
|
|
186
|
+
instruction: 'HTTP smoke AI batch: summarize fleet condition only on AI-capable agents.',
|
|
187
|
+
approvalLevel: 'ai-assist'
|
|
188
|
+
})
|
|
189
|
+
});
|
|
190
|
+
assert.equal(allAiBatch.ok, true, JSON.stringify(allAiBatch.payload));
|
|
191
|
+
assert.equal(allAiBatch.payload?.ok, true);
|
|
192
|
+
assert.equal(allAiBatch.payload?.approvalLevel, 'ai-assist');
|
|
193
|
+
assert.equal(allAiBatch.payload?.total, aiTargets.length);
|
|
194
|
+
assert.equal(allAiBatch.payload?.queued, aiTargets.length);
|
|
195
|
+
assert.equal(allAiBatch.payload?.batch?.completed, aiTargets.length);
|
|
196
|
+
assert.equal(allAiBatch.payload?.batch?.failed, 0);
|
|
197
|
+
assert.equal(allAiBatch.payload?.batch?.status, 'completed');
|
|
198
|
+
assert.deepEqual(
|
|
199
|
+
[...(allAiBatch.payload?.results || []).map(result => result.deviceId)].sort(),
|
|
200
|
+
[...aiTargets].sort());
|
|
201
|
+
|
|
174
202
|
const aiTarget = devicesResult.payload.devices.find(device =>
|
|
175
203
|
device.connected && device.capabilities?.taskDispatch && device.capabilities?.aiAssist);
|
|
176
204
|
assert.ok(aiTarget);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import assert from 'assert/strict';
|
|
4
4
|
import { createRemoteHub } from '../remote-hub.js';
|
|
5
5
|
|
|
6
|
-
const SYNTHETIC_COUNT = Number(process.env.REMOTE_HUB_SCALE_SMOKE_COUNT ||
|
|
6
|
+
const SYNTHETIC_COUNT = Number(process.env.REMOTE_HUB_SCALE_SMOKE_COUNT || 500);
|
|
7
7
|
|
|
8
8
|
const hub = createRemoteHub({
|
|
9
9
|
env: {
|
|
@@ -76,8 +76,8 @@ try {
|
|
|
76
76
|
|
|
77
77
|
const connectedTargets = hub.listDevices()
|
|
78
78
|
.filter(device => device.connected && device.capabilities?.taskDispatch)
|
|
79
|
-
.slice(0,
|
|
80
|
-
assert.ok(connectedTargets.length >=
|
|
79
|
+
.slice(0, 500);
|
|
80
|
+
assert.ok(connectedTargets.length >= 400);
|
|
81
81
|
const scaleBatch = hub.requestAgentTaskBatch(connectedTargets.map(device => device.deviceId), {
|
|
82
82
|
instruction: 'Synthetic scale task: report current status to the manager.',
|
|
83
83
|
title: 'Scale task batch'
|
package/server.js
CHANGED
|
@@ -2464,7 +2464,9 @@ const remoteHub = createRemoteHub({
|
|
|
2464
2464
|
logEvent,
|
|
2465
2465
|
logWarn,
|
|
2466
2466
|
logError,
|
|
2467
|
-
emitEvent: emitBridgeEvent
|
|
2467
|
+
emitEvent: emitBridgeEvent,
|
|
2468
|
+
managerPackage: BRIDGE_PACKAGE_NAME,
|
|
2469
|
+
managerVersion: BRIDGE_VERSION
|
|
2468
2470
|
});
|
|
2469
2471
|
|
|
2470
2472
|
function trimShellOutput(value, maxLength) {
|
|
@@ -7038,15 +7040,21 @@ app.post('/api/remote/tasks', (req, res) => {
|
|
|
7038
7040
|
? req.body.deviceIds.map(value => String(value || '').trim()).filter(Boolean)
|
|
7039
7041
|
: [];
|
|
7040
7042
|
const allConnected = req.body?.allConnected !== false;
|
|
7043
|
+
const approvalLevel = req.body?.approvalLevel === 'ai-assist' ? 'ai-assist' : 'task-only';
|
|
7041
7044
|
const devices = remoteHub.listDevices();
|
|
7042
7045
|
const targetIds = requestedDeviceIds.length > 0
|
|
7043
7046
|
? requestedDeviceIds
|
|
7044
|
-
: (allConnected
|
|
7047
|
+
: (allConnected
|
|
7048
|
+
? devices
|
|
7049
|
+
.filter(device => device.connected)
|
|
7050
|
+
.filter(device => approvalLevel !== 'ai-assist' || isRemoteCapabilityEnabled(device, 'aiAssist'))
|
|
7051
|
+
.map(device => device.deviceId)
|
|
7052
|
+
: []);
|
|
7045
7053
|
const uniqueTargetIds = [...new Set(targetIds)].slice(0, 500);
|
|
7046
7054
|
const result = remoteHub.requestAgentTaskBatch(uniqueTargetIds, {
|
|
7047
7055
|
instruction: req.body?.instruction,
|
|
7048
7056
|
title: req.body?.title,
|
|
7049
|
-
approvalLevel
|
|
7057
|
+
approvalLevel,
|
|
7050
7058
|
model: req.body?.model,
|
|
7051
7059
|
batchId: req.body?.batchId
|
|
7052
7060
|
});
|
|
@@ -7055,11 +7063,24 @@ app.post('/api/remote/tasks', (req, res) => {
|
|
|
7055
7063
|
ok: result.ok === true,
|
|
7056
7064
|
total: uniqueTargetIds.length,
|
|
7057
7065
|
queued: result.queued || 0,
|
|
7058
|
-
approvalLevel
|
|
7066
|
+
approvalLevel,
|
|
7059
7067
|
error: result.ok === true ? undefined : (uniqueTargetIds.length === 0 ? 'no-target-devices' : (result.error || 'no-task-queued'))
|
|
7060
7068
|
});
|
|
7061
7069
|
});
|
|
7062
7070
|
|
|
7071
|
+
function isRemoteCapabilityEnabled(device, key) {
|
|
7072
|
+
const value = device?.capabilities?.[key];
|
|
7073
|
+
if (typeof value === 'boolean') {
|
|
7074
|
+
return value;
|
|
7075
|
+
}
|
|
7076
|
+
|
|
7077
|
+
if (typeof value === 'number') {
|
|
7078
|
+
return value !== 0;
|
|
7079
|
+
}
|
|
7080
|
+
|
|
7081
|
+
return /^(1|true|yes|on)$/i.test(String(value || '').trim());
|
|
7082
|
+
}
|
|
7083
|
+
|
|
7063
7084
|
app.get('/api/remote/devices/:deviceId/thumbnail', (req, res) => {
|
|
7064
7085
|
res.setHeader('Cache-Control', 'no-store');
|
|
7065
7086
|
const thumbnail = remoteHub.getDeviceThumbnail(req.params.deviceId);
|
|
@@ -13005,6 +13005,8 @@
|
|
|
13005
13005
|
const taskCapableCount = devices.filter(device => isRemoteFleetDeviceConnected(device) && isRemoteFleetDeviceTaskCapable(device)).length;
|
|
13006
13006
|
const aiCapableCount = devices.filter(device => isRemoteFleetDeviceConnected(device) && isRemoteFleetDeviceAiCapable(device)).length;
|
|
13007
13007
|
const endpoint = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetHubEndpoint', '127.0.0.1:5197');
|
|
13008
|
+
const managerPackage = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetManagerPackage', '@mindexec/cli');
|
|
13009
|
+
const managerVersion = getRemoteFleetMetadataValue(nodeModel, 'RemoteFleetManagerVersion', '');
|
|
13008
13010
|
const command = getRemoteFleetMetadataValue(
|
|
13009
13011
|
nodeModel,
|
|
13010
13012
|
'RemoteFleetConnectCommand',
|
|
@@ -13041,6 +13043,24 @@
|
|
|
13041
13043
|
top.appendChild(createRemoteFleetStat('AI', String(aiCapableCount), aiCapableCount > 0 ? 'online' : 'default'));
|
|
13042
13044
|
bodyView.appendChild(top);
|
|
13043
13045
|
|
|
13046
|
+
const managerRow = document.createElement('div');
|
|
13047
|
+
managerRow.dataset.remoteFleetManagerVersion = 'true';
|
|
13048
|
+
managerRow.textContent = `${managerPackage}${managerVersion ? ` ${managerVersion}` : ''} - ${endpoint}`;
|
|
13049
|
+
managerRow.title = managerRow.textContent;
|
|
13050
|
+
managerRow.style.cssText = `
|
|
13051
|
+
flex: 0 0 auto;
|
|
13052
|
+
min-width: 0;
|
|
13053
|
+
overflow: hidden;
|
|
13054
|
+
text-overflow: ellipsis;
|
|
13055
|
+
white-space: nowrap;
|
|
13056
|
+
color: #475569;
|
|
13057
|
+
font-size: 10px;
|
|
13058
|
+
font-weight: 850;
|
|
13059
|
+
line-height: 1.2;
|
|
13060
|
+
letter-spacing: 0;
|
|
13061
|
+
`;
|
|
13062
|
+
bodyView.appendChild(managerRow);
|
|
13063
|
+
|
|
13044
13064
|
const commandRow = document.createElement('div');
|
|
13045
13065
|
commandRow.style.cssText = `
|
|
13046
13066
|
display: grid;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/wwwroot/_framework/{MindExecution.Web.jmawk7z8d3.dll → MindExecution.Web.i4ojmz00kp.dll}
RENAMED
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "MindExecution.Web",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-TBrdo/L5p3Cw2s6LRukBbwjM9LHR4+ESnUYrHifvIvk=",
|
|
5
5
|
"fingerprinting": {
|
|
6
6
|
"Google.Protobuf.9h59ukbel7.dll": "Google.Protobuf.dll",
|
|
7
7
|
"Markdig.d1j7v41cl1.dll": "Markdig.dll",
|
|
@@ -123,16 +123,16 @@
|
|
|
123
123
|
"System.m05i39uvk9.dll": "System.dll",
|
|
124
124
|
"netstandard.0xet7jg7ky.dll": "netstandard.dll",
|
|
125
125
|
"System.Private.CoreLib.rkafq04oma.dll": "System.Private.CoreLib.dll",
|
|
126
|
-
"MindExecution.Core.
|
|
127
|
-
"MindExecution.Kernel.
|
|
128
|
-
"MindExecution.Plugins.Admin.
|
|
129
|
-
"MindExecution.Plugins.Business.
|
|
130
|
-
"MindExecution.Plugins.Concept.
|
|
131
|
-
"MindExecution.Plugins.Directory.
|
|
132
|
-
"MindExecution.Plugins.PlanMaster.
|
|
133
|
-
"MindExecution.Plugins.YouTube.
|
|
134
|
-
"MindExecution.Shared.
|
|
135
|
-
"MindExecution.Web.
|
|
126
|
+
"MindExecution.Core.ri6sjbi2qk.dll": "MindExecution.Core.dll",
|
|
127
|
+
"MindExecution.Kernel.qt0p5apeu2.dll": "MindExecution.Kernel.dll",
|
|
128
|
+
"MindExecution.Plugins.Admin.i9eswmhltm.dll": "MindExecution.Plugins.Admin.dll",
|
|
129
|
+
"MindExecution.Plugins.Business.1eayoj2kvc.dll": "MindExecution.Plugins.Business.dll",
|
|
130
|
+
"MindExecution.Plugins.Concept.a3850nmm3d.dll": "MindExecution.Plugins.Concept.dll",
|
|
131
|
+
"MindExecution.Plugins.Directory.l3rmdlu7o7.dll": "MindExecution.Plugins.Directory.dll",
|
|
132
|
+
"MindExecution.Plugins.PlanMaster.2x5gsi74yi.dll": "MindExecution.Plugins.PlanMaster.dll",
|
|
133
|
+
"MindExecution.Plugins.YouTube.vbl462eegw.dll": "MindExecution.Plugins.YouTube.dll",
|
|
134
|
+
"MindExecution.Shared.l2w05i7sd6.dll": "MindExecution.Shared.dll",
|
|
135
|
+
"MindExecution.Web.i4ojmz00kp.dll": "MindExecution.Web.dll",
|
|
136
136
|
"dotnet.js": "dotnet.js",
|
|
137
137
|
"dotnet.native.xsn1d6x2kd.js": "dotnet.native.js",
|
|
138
138
|
"dotnet.native.vz0adxojrz.wasm": "dotnet.native.wasm",
|
|
@@ -278,18 +278,18 @@
|
|
|
278
278
|
"System.Xml.XDocument.c539ki6cuq.dll": "sha256-MPTRJkptrL9nGa2tl4kF46+wErNUYRPCGblX3ANoKoY=",
|
|
279
279
|
"System.m05i39uvk9.dll": "sha256-5jDfIdbYAigw7/Q/lMzt5W/+cayGbW9ko9FvuaN1GsQ=",
|
|
280
280
|
"netstandard.0xet7jg7ky.dll": "sha256-xENDv620uJ8fHwLJ2bdhrTHz4QPjvqXOztnk2a4wr0c=",
|
|
281
|
-
"MindExecution.Core.
|
|
282
|
-
"MindExecution.Kernel.
|
|
283
|
-
"MindExecution.Plugins.Concept.
|
|
284
|
-
"MindExecution.Plugins.PlanMaster.
|
|
285
|
-
"MindExecution.Shared.
|
|
286
|
-
"MindExecution.Web.
|
|
281
|
+
"MindExecution.Core.ri6sjbi2qk.dll": "sha256-A69V9d0kzCp+iY+KnM7eHOv/27i9bfe2wtxlFOxm8Kk=",
|
|
282
|
+
"MindExecution.Kernel.qt0p5apeu2.dll": "sha256-kpJt0Eht2tGK6ktrORK+3/hqw7SeMflvlcpGbDnajlE=",
|
|
283
|
+
"MindExecution.Plugins.Concept.a3850nmm3d.dll": "sha256-yqv7m/QtIKalEkjNw4A7Ksk9/Ciy6jDx87gIwttVONk=",
|
|
284
|
+
"MindExecution.Plugins.PlanMaster.2x5gsi74yi.dll": "sha256-Cur6A51vfwizKh8ZploBOcFLdnRu70ZH/LIlegZOelw=",
|
|
285
|
+
"MindExecution.Shared.l2w05i7sd6.dll": "sha256-Xb89XTFwyGt7N0yWSr/WkKSK7ForWYQbrlDe8OJAgvo=",
|
|
286
|
+
"MindExecution.Web.i4ojmz00kp.dll": "sha256-Hr2hEAVt7gvf6c5PGgE3niNlycDnfyzuNuOjMsnZQ3g="
|
|
287
287
|
},
|
|
288
288
|
"lazyAssembly": {
|
|
289
|
-
"MindExecution.Plugins.Admin.
|
|
290
|
-
"MindExecution.Plugins.Business.
|
|
291
|
-
"MindExecution.Plugins.Directory.
|
|
292
|
-
"MindExecution.Plugins.YouTube.
|
|
289
|
+
"MindExecution.Plugins.Admin.i9eswmhltm.dll": "sha256-Nr8CJnrJlr1DjTXzYCNpcoL8o7749jo/5FTUhMCnFAU=",
|
|
290
|
+
"MindExecution.Plugins.Business.1eayoj2kvc.dll": "sha256-5zJsPlmobzX35e+/HNwVnYIC4p+96/1+NrWFjgHKdGI=",
|
|
291
|
+
"MindExecution.Plugins.Directory.l3rmdlu7o7.dll": "sha256-T4yX6p+2KVC9dZ0VPDCigulg7chN5A4fqEP6Y6Ikkbg=",
|
|
292
|
+
"MindExecution.Plugins.YouTube.vbl462eegw.dll": "sha256-+7IsoWyR315sxA+mdYwO0rANkjsJlEiuqVmw8KvVCzs="
|
|
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 = '20260612-remote-
|
|
561
|
+
const scriptVersion = '20260612-remote-manager-version-v480';
|
|
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": "1HroJ9IY",
|
|
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-QedRf7v7YnCte6Sd32UIRL0HQWCsdyUKwOCozszPrGs=",
|
|
90
90
|
"url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
@@ -410,44 +410,44 @@
|
|
|
410
410
|
"url": "_framework/MimeMapping.og9ys58ylm.dll"
|
|
411
411
|
},
|
|
412
412
|
{
|
|
413
|
-
"hash": "sha256-
|
|
414
|
-
"url": "_framework/MindExecution.Core.
|
|
413
|
+
"hash": "sha256-A69V9d0kzCp+iY+KnM7eHOv/27i9bfe2wtxlFOxm8Kk=",
|
|
414
|
+
"url": "_framework/MindExecution.Core.ri6sjbi2qk.dll"
|
|
415
415
|
},
|
|
416
416
|
{
|
|
417
|
-
"hash": "sha256-
|
|
418
|
-
"url": "_framework/MindExecution.Kernel.
|
|
417
|
+
"hash": "sha256-kpJt0Eht2tGK6ktrORK+3/hqw7SeMflvlcpGbDnajlE=",
|
|
418
|
+
"url": "_framework/MindExecution.Kernel.qt0p5apeu2.dll"
|
|
419
419
|
},
|
|
420
420
|
{
|
|
421
|
-
"hash": "sha256-
|
|
422
|
-
"url": "_framework/MindExecution.Plugins.Admin.
|
|
421
|
+
"hash": "sha256-Nr8CJnrJlr1DjTXzYCNpcoL8o7749jo/5FTUhMCnFAU=",
|
|
422
|
+
"url": "_framework/MindExecution.Plugins.Admin.i9eswmhltm.dll"
|
|
423
423
|
},
|
|
424
424
|
{
|
|
425
|
-
"hash": "sha256-
|
|
426
|
-
"url": "_framework/MindExecution.Plugins.Business.
|
|
425
|
+
"hash": "sha256-5zJsPlmobzX35e+/HNwVnYIC4p+96/1+NrWFjgHKdGI=",
|
|
426
|
+
"url": "_framework/MindExecution.Plugins.Business.1eayoj2kvc.dll"
|
|
427
427
|
},
|
|
428
428
|
{
|
|
429
|
-
"hash": "sha256-
|
|
430
|
-
"url": "_framework/MindExecution.Plugins.Concept.
|
|
429
|
+
"hash": "sha256-yqv7m/QtIKalEkjNw4A7Ksk9/Ciy6jDx87gIwttVONk=",
|
|
430
|
+
"url": "_framework/MindExecution.Plugins.Concept.a3850nmm3d.dll"
|
|
431
431
|
},
|
|
432
432
|
{
|
|
433
|
-
"hash": "sha256-
|
|
434
|
-
"url": "_framework/MindExecution.Plugins.Directory.
|
|
433
|
+
"hash": "sha256-T4yX6p+2KVC9dZ0VPDCigulg7chN5A4fqEP6Y6Ikkbg=",
|
|
434
|
+
"url": "_framework/MindExecution.Plugins.Directory.l3rmdlu7o7.dll"
|
|
435
435
|
},
|
|
436
436
|
{
|
|
437
|
-
"hash": "sha256-
|
|
438
|
-
"url": "_framework/MindExecution.Plugins.PlanMaster.
|
|
437
|
+
"hash": "sha256-Cur6A51vfwizKh8ZploBOcFLdnRu70ZH/LIlegZOelw=",
|
|
438
|
+
"url": "_framework/MindExecution.Plugins.PlanMaster.2x5gsi74yi.dll"
|
|
439
439
|
},
|
|
440
440
|
{
|
|
441
|
-
"hash": "sha256
|
|
442
|
-
"url": "_framework/MindExecution.Plugins.YouTube.
|
|
441
|
+
"hash": "sha256-+7IsoWyR315sxA+mdYwO0rANkjsJlEiuqVmw8KvVCzs=",
|
|
442
|
+
"url": "_framework/MindExecution.Plugins.YouTube.vbl462eegw.dll"
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
|
-
"hash": "sha256-
|
|
446
|
-
"url": "_framework/MindExecution.Shared.
|
|
445
|
+
"hash": "sha256-Xb89XTFwyGt7N0yWSr/WkKSK7ForWYQbrlDe8OJAgvo=",
|
|
446
|
+
"url": "_framework/MindExecution.Shared.l2w05i7sd6.dll"
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
|
-
"hash": "sha256-
|
|
450
|
-
"url": "_framework/MindExecution.Web.
|
|
449
|
+
"hash": "sha256-Hr2hEAVt7gvf6c5PGgE3niNlycDnfyzuNuOjMsnZQ3g=",
|
|
450
|
+
"url": "_framework/MindExecution.Web.i4ojmz00kp.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-kWM7D8ztulFtIBvyTggeZrTU4K9z6TNVgEBfC0OsUGw=",
|
|
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-V1c/38AnYBUof00rr3qeKPcgRTdH+0yfa26Igec5DT0=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|
|
Binary file
|