@mindexec/cli 0.2.117 → 0.2.119
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 +3 -3
- package/server.js +77 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +177 -2
- package/wwwroot/_framework/MindExecution.Core.asayb4hw1o.dll +0 -0
- package/wwwroot/_framework/{MindExecution.Kernel.pbzp3jfync.dll → MindExecution.Kernel.3zom09ir6j.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Admin.gxzwlji1cf.dll → MindExecution.Plugins.Admin.bk23zzy6wc.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Business.vtaey8c59y.dll → MindExecution.Plugins.Business.zwcvc8wufe.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.85y7un1ks6.dll → MindExecution.Plugins.Concept.lxunwcdjgq.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Directory.zc8ffaoknd.dll → MindExecution.Plugins.Directory.jc0g7fvyzv.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.ylooagumgh.dll → MindExecution.Plugins.PlanMaster.2sugb66h95.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.azfozpumhv.dll → MindExecution.Plugins.YouTube.vy0nsbcoo4.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.mppf8quyau.dll → MindExecution.Shared.e8lipb57xv.dll} +0 -0
- package/wwwroot/_framework/MindExecution.Web.994sb3nzuy.dll +0 -0
- package/wwwroot/_framework/blazor.boot.json +21 -21
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +24 -24
- package/wwwroot/service-worker.js +1 -1
- package/wwwroot/_framework/MindExecution.Core.fc9cjbjplq.dll +0 -0
- package/wwwroot/_framework/MindExecution.Web.tln762tijf.dll +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindexec/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.119",
|
|
4
4
|
"description": "MindExec local runtime and bridge CLI",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"type": "module",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"scripts": {
|
|
21
21
|
"start": "node launch-bridge.cjs",
|
|
22
22
|
"dev": "node launch-bridge.cjs --watch",
|
|
23
|
-
"test:syntax": "node --check server.js && node --check remote-hub.js && node --check codex-runtime.js && node --check launch-bridge.cjs && node --check port-guard.cjs && node --check scripts/setup-tree-sitter-grammars.mjs && node --check scripts/auth-session-smoke.mjs && node --check scripts/remote-hub-smoke.mjs && node --check scripts/remote-hub-scale-smoke.mjs && node --check scripts/remote-fleet-render-smoke.mjs && node --check scripts/remote-http-smoke.mjs && node --check scripts/remote-frame-ws-smoke.mjs && node --check scripts/remote-agent-ws-smoke.mjs",
|
|
23
|
+
"test:syntax": "node --check server.js && node --check remote-hub.js && node --check codex-runtime.js && node --check launch-bridge.cjs && node --check port-guard.cjs && node --check scripts/setup-tree-sitter-grammars.mjs && node --check scripts/auth-session-smoke.mjs && node --check scripts/remote-hub-smoke.mjs && node --check scripts/remote-hub-scale-smoke.mjs && node --check scripts/remote-fleet-render-smoke.mjs && node --check scripts/remote-http-smoke.mjs && node --check scripts/remote-frame-ws-smoke.mjs && node --check scripts/remote-agent-ws-smoke.mjs",
|
|
24
24
|
"test:auth": "node scripts/auth-session-smoke.mjs",
|
|
25
25
|
"test:remote": "node scripts/remote-hub-smoke.mjs",
|
|
26
26
|
"test:remote:scale": "node scripts/remote-hub-scale-smoke.mjs",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"node": ">=20"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@mindexec/remote": "^0.1.17",
|
|
50
|
+
"@mindexec/remote": "^0.1.17",
|
|
51
51
|
"@openai/codex-sdk": "^0.137.0",
|
|
52
52
|
"chokidar": "^3.6.0",
|
|
53
53
|
"cors": "^2.8.5",
|
package/server.js
CHANGED
|
@@ -2906,7 +2906,11 @@ const REMOTE_AGENT_STDIO_TAIL_CHARS = 12000;
|
|
|
2906
2906
|
const REMOTE_AGENT_EARLY_EXIT_MS = 1200;
|
|
2907
2907
|
const REMOTE_AGENT_READY_TIMEOUT_MS = 5000;
|
|
2908
2908
|
const REMOTE_AGENT_DEFAULT_ENGINE = 'auto';
|
|
2909
|
+
const REMOTE_AGENT_SYNC_REPORT_LOG_REPEAT_MS = 30000;
|
|
2909
2910
|
let remoteAgentState = createRemoteAgentIdleState();
|
|
2911
|
+
let remoteAgentSyncReportState = null;
|
|
2912
|
+
let remoteAgentSyncReportLogKey = '';
|
|
2913
|
+
let remoteAgentSyncReportLogAt = 0;
|
|
2910
2914
|
|
|
2911
2915
|
function createRemoteAgentIdleState(overrides = {}) {
|
|
2912
2916
|
return {
|
|
@@ -2940,6 +2944,7 @@ function serializeRemoteAgentState() {
|
|
|
2940
2944
|
const { proc, ...publicState } = remoteAgentState;
|
|
2941
2945
|
return {
|
|
2942
2946
|
...publicState,
|
|
2947
|
+
registrySync: remoteAgentSyncReportState,
|
|
2943
2948
|
running: remoteAgentState.status === 'running'
|
|
2944
2949
|
&& !!remoteAgentState.proc
|
|
2945
2950
|
&& remoteAgentState.proc.exitCode === null
|
|
@@ -2947,6 +2952,71 @@ function serializeRemoteAgentState() {
|
|
|
2947
2952
|
};
|
|
2948
2953
|
}
|
|
2949
2954
|
|
|
2955
|
+
function createRemoteAgentSyncReport(body = {}) {
|
|
2956
|
+
const normalizeList = value => Array.isArray(value)
|
|
2957
|
+
? value.map(item => safeRemoteAgentField(item, 160)).filter(Boolean).slice(0, 12)
|
|
2958
|
+
: [];
|
|
2959
|
+
return {
|
|
2960
|
+
ok: body.ok === true || body.Ok === true,
|
|
2961
|
+
attempted: body.attempted === true || body.Attempted === true,
|
|
2962
|
+
connected: body.connected === true || body.Connected === true,
|
|
2963
|
+
disconnected: body.disconnected === true || body.Disconnected === true,
|
|
2964
|
+
skipped: body.skipped === true || body.Skipped === true,
|
|
2965
|
+
reason: safeRemoteAgentField(body.reason || body.Reason, 160),
|
|
2966
|
+
error: safeRemoteAgentField(body.error || body.Error, 240),
|
|
2967
|
+
trigger: safeRemoteAgentField(body.trigger || body.Trigger, 80),
|
|
2968
|
+
authenticated: body.authenticated === true || body.Authenticated === true,
|
|
2969
|
+
localHostTargetActive: body.localHostTargetActive === true || body.LocalHostTargetActive === true,
|
|
2970
|
+
localHostTargetLeaseId: safeRemoteAgentField(body.localHostTargetLeaseId || body.LocalHostTargetLeaseId, 128),
|
|
2971
|
+
localHostTargetNodeId: safeRemoteAgentField(body.localHostTargetNodeId || body.LocalHostTargetNodeId, 128),
|
|
2972
|
+
targetActive: body.targetActive === true || body.TargetActive === true,
|
|
2973
|
+
targetEndpoint: normalizeRemoteManagerEndpoint(body.targetEndpoint || body.TargetEndpoint),
|
|
2974
|
+
targetEndpointCandidates: normalizeList(body.targetEndpointCandidates || body.TargetEndpointCandidates),
|
|
2975
|
+
targetLeaseId: safeRemoteAgentField(body.targetLeaseId || body.TargetLeaseId, 128),
|
|
2976
|
+
targetNodeId: safeRemoteAgentField(body.targetNodeId || body.TargetNodeId, 128),
|
|
2977
|
+
targetExpiresAt: safeRemoteAgentField(body.targetExpiresAt || body.TargetExpiresAt, 80),
|
|
2978
|
+
updatedAt: new Date().toISOString()
|
|
2979
|
+
};
|
|
2980
|
+
}
|
|
2981
|
+
|
|
2982
|
+
function rememberRemoteAgentSyncReport(report) {
|
|
2983
|
+
remoteAgentSyncReportState = report;
|
|
2984
|
+
const reason = report.reason || report.error || (report.ok ? 'ok' : 'failed');
|
|
2985
|
+
const status = report.connected
|
|
2986
|
+
? 'connected'
|
|
2987
|
+
: report.disconnected
|
|
2988
|
+
? 'disconnected'
|
|
2989
|
+
: report.attempted
|
|
2990
|
+
? 'attempted'
|
|
2991
|
+
: report.skipped
|
|
2992
|
+
? 'skipped'
|
|
2993
|
+
: report.ok
|
|
2994
|
+
? 'ok'
|
|
2995
|
+
: 'failed';
|
|
2996
|
+
const key = [
|
|
2997
|
+
status,
|
|
2998
|
+
reason,
|
|
2999
|
+
report.targetEndpoint || '',
|
|
3000
|
+
report.targetLeaseId || '',
|
|
3001
|
+
report.localHostTargetActive ? 'local-host' : ''
|
|
3002
|
+
].join('|');
|
|
3003
|
+
const now = Date.now();
|
|
3004
|
+
if (reason === 'throttled') {
|
|
3005
|
+
return;
|
|
3006
|
+
}
|
|
3007
|
+
if (key === remoteAgentSyncReportLogKey
|
|
3008
|
+
&& now - remoteAgentSyncReportLogAt < REMOTE_AGENT_SYNC_REPORT_LOG_REPEAT_MS) {
|
|
3009
|
+
return;
|
|
3010
|
+
}
|
|
3011
|
+
|
|
3012
|
+
remoteAgentSyncReportLogKey = key;
|
|
3013
|
+
remoteAgentSyncReportLogAt = now;
|
|
3014
|
+
logEvent(
|
|
3015
|
+
'remote',
|
|
3016
|
+
`registry sync ${status} ${formatKeyValue('reason', reason)} ${formatKeyValue('target', report.targetEndpoint || '-')} ${formatKeyValue('auth', report.authenticated ? 'yes' : 'no')}`,
|
|
3017
|
+
'remote');
|
|
3018
|
+
}
|
|
3019
|
+
|
|
2950
3020
|
function appendRemoteAgentOutput(stream, chunk, stateConnectionKey = '') {
|
|
2951
3021
|
if (stateConnectionKey && remoteAgentState.connectionKey !== stateConnectionKey) {
|
|
2952
3022
|
return;
|
|
@@ -8066,6 +8136,13 @@ app.get('/api/remote/agent/status', (req, res) => {
|
|
|
8066
8136
|
res.json(serializeRemoteAgentState());
|
|
8067
8137
|
});
|
|
8068
8138
|
|
|
8139
|
+
app.post('/api/remote/agent/sync-report', (req, res) => {
|
|
8140
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
8141
|
+
const report = createRemoteAgentSyncReport(req.body || {});
|
|
8142
|
+
rememberRemoteAgentSyncReport(report);
|
|
8143
|
+
res.json({ ok: true, report });
|
|
8144
|
+
});
|
|
8145
|
+
|
|
8069
8146
|
app.post('/api/remote/agent/connect', async (req, res) => {
|
|
8070
8147
|
res.setHeader('Cache-Control', 'no-store');
|
|
8071
8148
|
try {
|
|
@@ -12221,11 +12221,119 @@
|
|
|
12221
12221
|
}
|
|
12222
12222
|
}
|
|
12223
12223
|
|
|
12224
|
+
function isTemplateCardCanvasControlTarget(target) {
|
|
12225
|
+
return !!target?.closest?.([
|
|
12226
|
+
'button',
|
|
12227
|
+
'a',
|
|
12228
|
+
'input',
|
|
12229
|
+
'textarea',
|
|
12230
|
+
'select',
|
|
12231
|
+
'[contenteditable="true"]',
|
|
12232
|
+
'[data-template-card-interactive="true"]',
|
|
12233
|
+
'[data-template-card-action]',
|
|
12234
|
+
'[data-template-option-id]',
|
|
12235
|
+
'[data-remote-fleet-action]',
|
|
12236
|
+
'[data-remote-fleet-control-popup]',
|
|
12237
|
+
'[data-remote-fleet-task-input]',
|
|
12238
|
+
'[data-remote-fleet-ai-toggle]',
|
|
12239
|
+
'[data-remote-fleet-search]',
|
|
12240
|
+
'.csv-table-scroll',
|
|
12241
|
+
'.csv-table-header-button',
|
|
12242
|
+
'.csv-table-cell'
|
|
12243
|
+
].join(', '));
|
|
12244
|
+
}
|
|
12245
|
+
|
|
12246
|
+
function routeTemplateCardWheelToCanvas(event) {
|
|
12247
|
+
if (!_module || !event) {
|
|
12248
|
+
return false;
|
|
12249
|
+
}
|
|
12250
|
+
|
|
12251
|
+
if (typeof window.MindMapInteractions?.routeCanvasWheelEvent === 'function') {
|
|
12252
|
+
window.MindMapInteractions.routeCanvasWheelEvent(_module, event);
|
|
12253
|
+
return true;
|
|
12254
|
+
}
|
|
12255
|
+
|
|
12256
|
+
if (window.MindMapInteractions?.shouldTreatWheelAsZoom?.(_module, event) === true) {
|
|
12257
|
+
window.MindMapInteractions?.routeWheelEventToZoom?.(_module, event);
|
|
12258
|
+
} else {
|
|
12259
|
+
window.MindMapInteractions?.routeCtrlWheelEventToVerticalScroll?.(_module, event);
|
|
12260
|
+
}
|
|
12261
|
+
return true;
|
|
12262
|
+
}
|
|
12263
|
+
|
|
12264
|
+
function bindTemplateCardCanvasNavigation(container, nodeModel) {
|
|
12265
|
+
const card = container?.classList?.contains?.('map-node-template-card')
|
|
12266
|
+
? container
|
|
12267
|
+
: container?.querySelector?.('.map-node-template-card');
|
|
12268
|
+
if (!card || typeof card.addEventListener !== 'function') {
|
|
12269
|
+
return;
|
|
12270
|
+
}
|
|
12271
|
+
|
|
12272
|
+
if (card._templateCardCanvasNavigationModule === _module
|
|
12273
|
+
&& card._templateCardWheelNavigationHandler
|
|
12274
|
+
&& card._templateCardPanNavigationHandler) {
|
|
12275
|
+
return;
|
|
12276
|
+
}
|
|
12277
|
+
|
|
12278
|
+
if (card._templateCardWheelNavigationHandler) {
|
|
12279
|
+
card.removeEventListener('wheel', card._templateCardWheelNavigationHandler, true);
|
|
12280
|
+
}
|
|
12281
|
+
if (card._templateCardPanNavigationHandler) {
|
|
12282
|
+
card.removeEventListener('mousedown', card._templateCardPanNavigationHandler, true);
|
|
12283
|
+
}
|
|
12284
|
+
|
|
12285
|
+
const nodeId = String(getNodeId(nodeModel) || card.dataset?.nodeId || '').trim();
|
|
12286
|
+
const isRemoteFleetCard = isRemoteFleetMonitorNode(nodeModel);
|
|
12287
|
+
|
|
12288
|
+
const wheelHandler = event => {
|
|
12289
|
+
routeTemplateCardWheelToCanvas(event);
|
|
12290
|
+
};
|
|
12291
|
+
|
|
12292
|
+
const panHandler = event => {
|
|
12293
|
+
const button = Number(event?.button);
|
|
12294
|
+
if (button === 1 || button === 2) {
|
|
12295
|
+
const started = window.MindMapInteractions?.beginPanFromMouseEvent?.(
|
|
12296
|
+
_module,
|
|
12297
|
+
event,
|
|
12298
|
+
card
|
|
12299
|
+
) === true;
|
|
12300
|
+
if (started) {
|
|
12301
|
+
event.stopImmediatePropagation?.();
|
|
12302
|
+
}
|
|
12303
|
+
return;
|
|
12304
|
+
}
|
|
12305
|
+
|
|
12306
|
+
if (button !== 0 || isRemoteFleetCard || !nodeId || isTemplateCardCanvasControlTarget(event.target)) {
|
|
12307
|
+
return;
|
|
12308
|
+
}
|
|
12309
|
+
|
|
12310
|
+
const started = window.MindMapInteractions?.startNodeDragFromDom?.(
|
|
12311
|
+
_module,
|
|
12312
|
+
event,
|
|
12313
|
+
nodeId,
|
|
12314
|
+
{ source: 'template-card' }
|
|
12315
|
+
) === true;
|
|
12316
|
+
if (started) {
|
|
12317
|
+
event.stopImmediatePropagation?.();
|
|
12318
|
+
}
|
|
12319
|
+
};
|
|
12320
|
+
|
|
12321
|
+
card._templateCardCanvasNavigationModule = _module;
|
|
12322
|
+
card._templateCardWheelNavigationHandler = wheelHandler;
|
|
12323
|
+
card._templateCardPanNavigationHandler = panHandler;
|
|
12324
|
+
card.addEventListener('wheel', wheelHandler, { passive: false, capture: true });
|
|
12325
|
+
card.addEventListener('mousedown', panHandler, { passive: false, capture: true });
|
|
12326
|
+
}
|
|
12327
|
+
|
|
12224
12328
|
function bindTemplateLauncherNodeEvents(container, nodeModel) {
|
|
12225
12329
|
const card = container?.classList?.contains?.('map-node-template-card')
|
|
12226
12330
|
? container
|
|
12227
12331
|
: container?.querySelector?.('.map-node-template-card');
|
|
12228
|
-
if (!card
|
|
12332
|
+
if (!card) return;
|
|
12333
|
+
|
|
12334
|
+
bindTemplateCardCanvasNavigation(card, nodeModel);
|
|
12335
|
+
|
|
12336
|
+
if (card.dataset.templateCardEventsBound === 'true') return;
|
|
12229
12337
|
|
|
12230
12338
|
card.dataset.templateCardEventsBound = 'true';
|
|
12231
12339
|
card._templateCardConfig = getTemplateCardConfig(nodeModel);
|
|
@@ -13359,6 +13467,8 @@
|
|
|
13359
13467
|
const REMOTE_FLEET_TASK_FOLLOW_REFRESH_MS = 2000;
|
|
13360
13468
|
const REMOTE_FLEET_TASK_FOLLOW_MAX_TICKS = 60;
|
|
13361
13469
|
const REMOTE_FLEET_HOST_LEASE_REFRESH_MS = 10000;
|
|
13470
|
+
const REMOTE_FLEET_AUTO_HOST_STORAGE_KEY = 'MindExec.RemoteFleet.AutoHost';
|
|
13471
|
+
const REMOTE_FLEET_AUTO_HOST_NODE_STORAGE_KEY = 'MindExec.RemoteFleet.AutoHostNodeId';
|
|
13362
13472
|
const remoteFleetHostLeaseTimers = new Map();
|
|
13363
13473
|
const remoteFleetLocalHostTargets = new Map();
|
|
13364
13474
|
const remoteFleetBinaryFrameSessions = new Map();
|
|
@@ -13445,6 +13555,31 @@
|
|
|
13445
13555
|
return result?.active === false || result?.Active === false;
|
|
13446
13556
|
}
|
|
13447
13557
|
|
|
13558
|
+
function isRemoteFleetAutoHostEnabled(nodeId) {
|
|
13559
|
+
try {
|
|
13560
|
+
const enabled = String(localStorage.getItem(REMOTE_FLEET_AUTO_HOST_STORAGE_KEY) || '').trim().toLowerCase();
|
|
13561
|
+
if (enabled !== 'true') return false;
|
|
13562
|
+
const storedNodeId = String(localStorage.getItem(REMOTE_FLEET_AUTO_HOST_NODE_STORAGE_KEY) || '').trim();
|
|
13563
|
+
return !storedNodeId || storedNodeId === String(nodeId || '').trim();
|
|
13564
|
+
} catch {
|
|
13565
|
+
return false;
|
|
13566
|
+
}
|
|
13567
|
+
}
|
|
13568
|
+
|
|
13569
|
+
function rememberRemoteFleetAutoHostPreference(nodeId, enabled) {
|
|
13570
|
+
try {
|
|
13571
|
+
if (enabled === true) {
|
|
13572
|
+
localStorage.setItem(REMOTE_FLEET_AUTO_HOST_STORAGE_KEY, 'true');
|
|
13573
|
+
localStorage.setItem(REMOTE_FLEET_AUTO_HOST_NODE_STORAGE_KEY, String(nodeId || '').trim());
|
|
13574
|
+
} else {
|
|
13575
|
+
localStorage.removeItem(REMOTE_FLEET_AUTO_HOST_STORAGE_KEY);
|
|
13576
|
+
localStorage.removeItem(REMOTE_FLEET_AUTO_HOST_NODE_STORAGE_KEY);
|
|
13577
|
+
}
|
|
13578
|
+
} catch {
|
|
13579
|
+
// localStorage may be unavailable in restricted browser modes.
|
|
13580
|
+
}
|
|
13581
|
+
}
|
|
13582
|
+
|
|
13448
13583
|
function rememberRemoteFleetLocalHostTarget(nodeId, enabled, result) {
|
|
13449
13584
|
const id = String(nodeId || '').trim();
|
|
13450
13585
|
if (!id) return;
|
|
@@ -16229,6 +16364,15 @@
|
|
|
16229
16364
|
if (bodyView._remoteFleetNodeSelectionBound !== true) {
|
|
16230
16365
|
bodyView._remoteFleetNodeSelectionBound = true;
|
|
16231
16366
|
bodyView.addEventListener('mousedown', event => {
|
|
16367
|
+
if (event.button === 1 || event.button === 2) {
|
|
16368
|
+
window.MindMapInteractions?.beginPanFromMouseEvent?.(_module, event, bodyView);
|
|
16369
|
+
return;
|
|
16370
|
+
}
|
|
16371
|
+
|
|
16372
|
+
if (event.button !== 0) {
|
|
16373
|
+
return;
|
|
16374
|
+
}
|
|
16375
|
+
|
|
16232
16376
|
const controlTarget = event.target?.closest?.('button, input, textarea, select, [contenteditable="true"]');
|
|
16233
16377
|
if (controlTarget) {
|
|
16234
16378
|
return;
|
|
@@ -17270,7 +17414,16 @@
|
|
|
17270
17414
|
});
|
|
17271
17415
|
getDeviceCards().forEach(card => {
|
|
17272
17416
|
['mousedown', 'mouseup', 'dblclick'].forEach(eventName => {
|
|
17273
|
-
card.addEventListener(eventName, event =>
|
|
17417
|
+
card.addEventListener(eventName, event => {
|
|
17418
|
+
if (event.button === 1 || event.button === 2) {
|
|
17419
|
+
if (eventName === 'mousedown') {
|
|
17420
|
+
window.MindMapInteractions?.beginPanFromMouseEvent?.(_module, event, card);
|
|
17421
|
+
}
|
|
17422
|
+
return;
|
|
17423
|
+
}
|
|
17424
|
+
|
|
17425
|
+
event.stopPropagation();
|
|
17426
|
+
});
|
|
17274
17427
|
});
|
|
17275
17428
|
card.addEventListener('dblclick', event => {
|
|
17276
17429
|
event.preventDefault();
|
|
@@ -17371,6 +17524,7 @@
|
|
|
17371
17524
|
const setRemoteFleetHostTarget = async (enabled, options = {}) => {
|
|
17372
17525
|
const quiet = options?.quiet === true;
|
|
17373
17526
|
const renew = options?.renew === true || quiet;
|
|
17527
|
+
const syncNodeState = quiet !== true || options?.sync === true;
|
|
17374
17528
|
const activeButton = enabled ? hostButton : null;
|
|
17375
17529
|
if (!quiet && activeButton) {
|
|
17376
17530
|
activeButton.disabled = true;
|
|
@@ -17389,10 +17543,16 @@
|
|
|
17389
17543
|
error: result?.error || result?.Error || ''
|
|
17390
17544
|
});
|
|
17391
17545
|
rememberRemoteFleetLocalHostTarget(nodeId, enabled === true, result);
|
|
17546
|
+
if (isRemoteFleetResultSuccess(result)) {
|
|
17547
|
+
rememberRemoteFleetAutoHostPreference(nodeId, enabled === true && isRemoteFleetResultActive(result));
|
|
17548
|
+
}
|
|
17392
17549
|
if (quiet) {
|
|
17393
17550
|
if (!isRemoteFleetResultSuccess(result) || !isRemoteFleetResultActive(result)) {
|
|
17394
17551
|
stopRemoteFleetHostLeaseTimer(nodeId);
|
|
17395
17552
|
}
|
|
17553
|
+
if (syncNodeState) {
|
|
17554
|
+
await syncRemoteFleetNodeStateFromResult(result);
|
|
17555
|
+
}
|
|
17396
17556
|
return result;
|
|
17397
17557
|
}
|
|
17398
17558
|
await syncRemoteFleetNodeStateFromResult(result);
|
|
@@ -17577,6 +17737,17 @@
|
|
|
17577
17737
|
|
|
17578
17738
|
if (isHostingTarget) {
|
|
17579
17739
|
startRemoteFleetHostLeaseTimer(nodeId, () => setRemoteFleetHostTarget(true, { quiet: true, renew: true }));
|
|
17740
|
+
} else if (isRemoteFleetAutoHostEnabled(nodeId) && bodyView._remoteFleetAutoHostRestoreStarted !== true) {
|
|
17741
|
+
bodyView._remoteFleetAutoHostRestoreStarted = true;
|
|
17742
|
+
setTimeout(() => {
|
|
17743
|
+
if (!document.body.contains(bodyView)) return;
|
|
17744
|
+
setRemoteFleetHostTarget(true, { quiet: true, renew: true, sync: true }).catch(error => {
|
|
17745
|
+
window.RuntimeTrace?.emit?.('remote.hostTarget.autoRestoreFailed', {
|
|
17746
|
+
nodeId,
|
|
17747
|
+
error: error?.message || String(error || '')
|
|
17748
|
+
});
|
|
17749
|
+
});
|
|
17750
|
+
}, 250);
|
|
17580
17751
|
}
|
|
17581
17752
|
|
|
17582
17753
|
const hasVisibleLiveTarget = getVisibleLiveFrameDeviceIds().length > 0
|
|
@@ -20837,6 +21008,9 @@
|
|
|
20837
21008
|
&& !isRemoteFleetMonitorNode(nodeModel)) {
|
|
20838
21009
|
bindTemplateLauncherNodeEvents(clonedElement, nodeModel);
|
|
20839
21010
|
}
|
|
21011
|
+
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() === 'templatelauncher') {
|
|
21012
|
+
bindTemplateCardCanvasNavigation(clonedElement, nodeModel);
|
|
21013
|
+
}
|
|
20840
21014
|
wrapper.appendChild(clonedElement);
|
|
20841
21015
|
if (String(nodeModel.contentType ?? nodeModel.ContentType ?? '').toLowerCase() !== 'templatelauncher'
|
|
20842
21016
|
|| isRemoteFleetMonitorNode(nodeModel)) {
|
|
@@ -21070,6 +21244,7 @@
|
|
|
21070
21244
|
|
|
21071
21245
|
const bodyView = card.querySelector('.template-card__remote-fleet-body');
|
|
21072
21246
|
renderRemoteFleetMonitor(bodyView, nodeModel);
|
|
21247
|
+
bindTemplateCardCanvasNavigation(card, nodeModel);
|
|
21073
21248
|
return;
|
|
21074
21249
|
}
|
|
21075
21250
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "MindExecution.Web",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-Sm5LEcaIEbOQMLRdM7FmN29gN1AP1yTcQOVH+E/ZgGY=",
|
|
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.brmz7yk5qh.dll": "System.dll",
|
|
124
124
|
"netstandard.yvr3prsx0x.dll": "netstandard.dll",
|
|
125
125
|
"System.Private.CoreLib.c1dbswx1b2.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.asayb4hw1o.dll": "MindExecution.Core.dll",
|
|
127
|
+
"MindExecution.Kernel.3zom09ir6j.dll": "MindExecution.Kernel.dll",
|
|
128
|
+
"MindExecution.Plugins.Admin.bk23zzy6wc.dll": "MindExecution.Plugins.Admin.dll",
|
|
129
|
+
"MindExecution.Plugins.Business.zwcvc8wufe.dll": "MindExecution.Plugins.Business.dll",
|
|
130
|
+
"MindExecution.Plugins.Concept.lxunwcdjgq.dll": "MindExecution.Plugins.Concept.dll",
|
|
131
|
+
"MindExecution.Plugins.Directory.jc0g7fvyzv.dll": "MindExecution.Plugins.Directory.dll",
|
|
132
|
+
"MindExecution.Plugins.PlanMaster.2sugb66h95.dll": "MindExecution.Plugins.PlanMaster.dll",
|
|
133
|
+
"MindExecution.Plugins.YouTube.vy0nsbcoo4.dll": "MindExecution.Plugins.YouTube.dll",
|
|
134
|
+
"MindExecution.Shared.e8lipb57xv.dll": "MindExecution.Shared.dll",
|
|
135
|
+
"MindExecution.Web.994sb3nzuy.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",
|
|
@@ -278,18 +278,18 @@
|
|
|
278
278
|
"System.Xml.XDocument.sn51jas17n.dll": "sha256-GNI2kFgFmPTwzuzwUn8gxK+AzGLUWRJFdg9JzIbrybQ=",
|
|
279
279
|
"System.brmz7yk5qh.dll": "sha256-CfM2miyj1KHApFmqMdLYWio3S/jrdON2pW9Xr2nTwlo=",
|
|
280
280
|
"netstandard.yvr3prsx0x.dll": "sha256-EksNn8Luo4bOWqJ6X7dIe9qG9oOqwOVzjH2xYyMNi+E=",
|
|
281
|
-
"MindExecution.Core.
|
|
282
|
-
"MindExecution.Kernel.
|
|
283
|
-
"MindExecution.Plugins.Concept.
|
|
284
|
-
"MindExecution.Plugins.PlanMaster.
|
|
285
|
-
"MindExecution.Shared.
|
|
286
|
-
"MindExecution.Web.
|
|
281
|
+
"MindExecution.Core.asayb4hw1o.dll": "sha256-5gla4JTR/zbvkGpneSt6S7ItE51+MjWgjW6L+B6Yevk=",
|
|
282
|
+
"MindExecution.Kernel.3zom09ir6j.dll": "sha256-78vR2SNkF9FwdQv0fEItSyz4HzgyzwGUROJAnpripPA=",
|
|
283
|
+
"MindExecution.Plugins.Concept.lxunwcdjgq.dll": "sha256-WVyvjaxW6UoGQvGW0icChLsXwYVCcdn0BLTftzlkCKc=",
|
|
284
|
+
"MindExecution.Plugins.PlanMaster.2sugb66h95.dll": "sha256-Lp0AieRHDo2H4Yl0Il1pPruy9nFUHJsX9t1AblXGD6Y=",
|
|
285
|
+
"MindExecution.Shared.e8lipb57xv.dll": "sha256-Au9QMwnm9MaP2+xzdldeQYtj4tRXzwOBWYOxmYR8spM=",
|
|
286
|
+
"MindExecution.Web.994sb3nzuy.dll": "sha256-jQshtLmhEC4xenzdD9PqHjaCuKvJf/frzaKBi2weDAg="
|
|
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.bk23zzy6wc.dll": "sha256-uz7Nz0OZ8BBESp2Nr9YocyzV0dUrn7szPuD4/m/RWL8=",
|
|
290
|
+
"MindExecution.Plugins.Business.zwcvc8wufe.dll": "sha256-3YDsB2/uNI+feWqJk+cesLHgNt8s2/8hXxGPO6CRZZE=",
|
|
291
|
+
"MindExecution.Plugins.Directory.jc0g7fvyzv.dll": "sha256-PSe7135JPpTBmu4j+rGLF0Dc/6w/wDJNPi8zlfTmSMk=",
|
|
292
|
+
"MindExecution.Plugins.YouTube.vy0nsbcoo4.dll": "sha256-p8w1TI9Ri41EAG/j0MJCiuEcJdr4x/Hr5Spd2oluZjM="
|
|
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=20260616-
|
|
11
|
-
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260616-
|
|
10
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260616-template-mdm-input-routing-v574" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260616-template-mdm-input-routing-v574" />
|
|
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 = '20260616-
|
|
582
|
+
const scriptVersion = '20260616-template-mdm-input-routing-v574';
|
|
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": "j2+Rgs1I",
|
|
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-x6IqfFnk+HJevHd67L05oQLv68rKhUOs+PFwvnpYjp4=",
|
|
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-5gla4JTR/zbvkGpneSt6S7ItE51+MjWgjW6L+B6Yevk=",
|
|
414
|
+
"url": "_framework/MindExecution.Core.asayb4hw1o.dll"
|
|
415
415
|
},
|
|
416
416
|
{
|
|
417
|
-
"hash": "sha256-
|
|
418
|
-
"url": "_framework/MindExecution.Kernel.
|
|
417
|
+
"hash": "sha256-78vR2SNkF9FwdQv0fEItSyz4HzgyzwGUROJAnpripPA=",
|
|
418
|
+
"url": "_framework/MindExecution.Kernel.3zom09ir6j.dll"
|
|
419
419
|
},
|
|
420
420
|
{
|
|
421
|
-
"hash": "sha256-
|
|
422
|
-
"url": "_framework/MindExecution.Plugins.Admin.
|
|
421
|
+
"hash": "sha256-uz7Nz0OZ8BBESp2Nr9YocyzV0dUrn7szPuD4/m/RWL8=",
|
|
422
|
+
"url": "_framework/MindExecution.Plugins.Admin.bk23zzy6wc.dll"
|
|
423
423
|
},
|
|
424
424
|
{
|
|
425
|
-
"hash": "sha256-
|
|
426
|
-
"url": "_framework/MindExecution.Plugins.Business.
|
|
425
|
+
"hash": "sha256-3YDsB2/uNI+feWqJk+cesLHgNt8s2/8hXxGPO6CRZZE=",
|
|
426
|
+
"url": "_framework/MindExecution.Plugins.Business.zwcvc8wufe.dll"
|
|
427
427
|
},
|
|
428
428
|
{
|
|
429
|
-
"hash": "sha256-
|
|
430
|
-
"url": "_framework/MindExecution.Plugins.Concept.
|
|
429
|
+
"hash": "sha256-WVyvjaxW6UoGQvGW0icChLsXwYVCcdn0BLTftzlkCKc=",
|
|
430
|
+
"url": "_framework/MindExecution.Plugins.Concept.lxunwcdjgq.dll"
|
|
431
431
|
},
|
|
432
432
|
{
|
|
433
|
-
"hash": "sha256-
|
|
434
|
-
"url": "_framework/MindExecution.Plugins.Directory.
|
|
433
|
+
"hash": "sha256-PSe7135JPpTBmu4j+rGLF0Dc/6w/wDJNPi8zlfTmSMk=",
|
|
434
|
+
"url": "_framework/MindExecution.Plugins.Directory.jc0g7fvyzv.dll"
|
|
435
435
|
},
|
|
436
436
|
{
|
|
437
|
-
"hash": "sha256-
|
|
438
|
-
"url": "_framework/MindExecution.Plugins.PlanMaster.
|
|
437
|
+
"hash": "sha256-Lp0AieRHDo2H4Yl0Il1pPruy9nFUHJsX9t1AblXGD6Y=",
|
|
438
|
+
"url": "_framework/MindExecution.Plugins.PlanMaster.2sugb66h95.dll"
|
|
439
439
|
},
|
|
440
440
|
{
|
|
441
|
-
"hash": "sha256-
|
|
442
|
-
"url": "_framework/MindExecution.Plugins.YouTube.
|
|
441
|
+
"hash": "sha256-p8w1TI9Ri41EAG/j0MJCiuEcJdr4x/Hr5Spd2oluZjM=",
|
|
442
|
+
"url": "_framework/MindExecution.Plugins.YouTube.vy0nsbcoo4.dll"
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
|
-
"hash": "sha256-
|
|
446
|
-
"url": "_framework/MindExecution.Shared.
|
|
445
|
+
"hash": "sha256-Au9QMwnm9MaP2+xzdldeQYtj4tRXzwOBWYOxmYR8spM=",
|
|
446
|
+
"url": "_framework/MindExecution.Shared.e8lipb57xv.dll"
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
|
-
"hash": "sha256-
|
|
450
|
-
"url": "_framework/MindExecution.Web.
|
|
449
|
+
"hash": "sha256-jQshtLmhEC4xenzdD9PqHjaCuKvJf/frzaKBi2weDAg=",
|
|
450
|
+
"url": "_framework/MindExecution.Web.994sb3nzuy.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-XSS0rv+S2JAW90BVDbFUd23REh87EAC1P5aFjXSMAGo=",
|
|
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-A1rOSgC5wEjKNEOppREqJ/PkL33qbguPos0pVcG6L/4=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|
|
Binary file
|
|
Binary file
|