@mindexec/cli 0.2.91 → 0.2.93
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 +2 -2
- package/remote-hub.js +79 -4
- package/server.js +78 -0
- package/wwwroot/_framework/MindExecution.Core.e31e775w23.dll +0 -0
- package/wwwroot/_framework/{MindExecution.Kernel.ksznt6ppyj.dll → MindExecution.Kernel.55q6x6zeoc.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Admin.ziclnsvcvi.dll → MindExecution.Plugins.Admin.peei1t6ncj.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Business.q32f5kgky1.dll → MindExecution.Plugins.Business.04t0oe4t4k.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.u0hltey7sr.dll → MindExecution.Plugins.Concept.f4gpqdzqwj.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Directory.3pet73jp0m.dll → MindExecution.Plugins.Directory.az6m63vnll.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.ljcyf2idce.dll → MindExecution.Plugins.PlanMaster.o2xcmf9i46.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.8tcrdoa4ev.dll → MindExecution.Plugins.YouTube.xnrrltoofq.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.by1sbz8phy.dll → MindExecution.Shared.6qq547u3iu.dll} +0 -0
- package/wwwroot/_framework/MindExecution.Web.nfbmmsf2rl.dll +0 -0
- package/wwwroot/_framework/blazor.boot.json +21 -21
- package/wwwroot/index.html +3 -3
- package/wwwroot/service-worker-assets.js +23 -23
- package/wwwroot/service-worker.js +1 -1
- package/wwwroot/_framework/MindExecution.Core.qprj2wqc9a.dll +0 -0
- package/wwwroot/_framework/MindExecution.Web.izoc1olp5m.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.93",
|
|
4
4
|
"description": "MindExec local runtime and bridge CLI",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"type": "module",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"node": ">=20"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@mindexec/remote": "^0.1.
|
|
50
|
+
"@mindexec/remote": "^0.1.15",
|
|
51
51
|
"@openai/codex-sdk": "^0.137.0",
|
|
52
52
|
"chokidar": "^3.6.0",
|
|
53
53
|
"cors": "^2.8.5",
|
package/remote-hub.js
CHANGED
|
@@ -77,7 +77,7 @@ function isPrivateIPv4(value) {
|
|
|
77
77
|
|| (parts[0] === 192 && parts[1] === 168);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
function
|
|
80
|
+
function getReachableIPv4Candidates() {
|
|
81
81
|
const candidates = [];
|
|
82
82
|
const interfaces = os.networkInterfaces();
|
|
83
83
|
for (const entries of Object.values(interfaces)) {
|
|
@@ -95,9 +95,53 @@ function getReachableIPv4Address() {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
return candidates
|
|
99
|
+
.sort((left, right) => Number(isPrivateIPv4(right)) - Number(isPrivateIPv4(left)))
|
|
100
|
+
.filter((address, index, all) => all.indexOf(address) === index);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function getReachableIPv4Address() {
|
|
104
|
+
const candidates = getReachableIPv4Candidates();
|
|
98
105
|
return candidates.find(isPrivateIPv4) || candidates[0] || '127.0.0.1';
|
|
99
106
|
}
|
|
100
107
|
|
|
108
|
+
function parseManagerEndpoint(value) {
|
|
109
|
+
const endpoint = safeString(value, 256);
|
|
110
|
+
const match = endpoint.match(/^(\[[^\]]+\]|[^:\s]+):(\d{1,5})$/);
|
|
111
|
+
if (!match) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const host = match[1].replace(/^\[|\]$/g, '');
|
|
116
|
+
const port = Number(match[2]);
|
|
117
|
+
if (!host || !Number.isInteger(port) || port <= 0 || port > 65535) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return { endpoint, host, port };
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function getAccountRouteEndpointReason(endpoint, context = {}) {
|
|
125
|
+
const parsed = parseManagerEndpoint(endpoint);
|
|
126
|
+
if (!parsed) {
|
|
127
|
+
return 'invalid-manager-endpoint';
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (isLoopbackHost(parsed.host)) {
|
|
131
|
+
return context.wildcardWithoutReachableAddress ? 'no-reachable-ipv4' : 'loopback-endpoint';
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (isWildcardHost(parsed.host)) {
|
|
135
|
+
return 'wildcard-endpoint';
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (/^169\.254\./.test(parsed.host)) {
|
|
139
|
+
return 'link-local-endpoint';
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return 'ok';
|
|
143
|
+
}
|
|
144
|
+
|
|
101
145
|
function safeText(value, maxLength = 1000) {
|
|
102
146
|
return String(value ?? '').replace(/\0/g, '').trim().slice(0, maxLength);
|
|
103
147
|
}
|
|
@@ -364,6 +408,26 @@ export function createRemoteHub(options = {}) {
|
|
|
364
408
|
return `${getAnnouncedHost()}:${boundPort || requestedPort}`;
|
|
365
409
|
}
|
|
366
410
|
|
|
411
|
+
function getAgentEndpointRouteInfo() {
|
|
412
|
+
const candidates = getReachableIPv4Candidates();
|
|
413
|
+
const endpoint = getAgentEndpoint();
|
|
414
|
+
const wildcardWithoutReachableAddress =
|
|
415
|
+
!publicEndpoint
|
|
416
|
+
&& !publicHost
|
|
417
|
+
&& isWildcardHost(host)
|
|
418
|
+
&& candidates.length === 0;
|
|
419
|
+
const reason = getAccountRouteEndpointReason(endpoint, { wildcardWithoutReachableAddress });
|
|
420
|
+
const parsed = parseManagerEndpoint(endpoint);
|
|
421
|
+
return {
|
|
422
|
+
endpoint,
|
|
423
|
+
host: parsed?.host || '',
|
|
424
|
+
port: parsed?.port || 0,
|
|
425
|
+
accountRouteReady: reason === 'ok',
|
|
426
|
+
reason,
|
|
427
|
+
candidates
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
|
|
367
431
|
function getActiveHostTarget() {
|
|
368
432
|
if (!hostTarget) {
|
|
369
433
|
return null;
|
|
@@ -460,11 +524,12 @@ export function createRemoteHub(options = {}) {
|
|
|
460
524
|
const leaseMs = clampNumber(options.leaseMs, 5000, 10 * 60 * 1000, DEFAULT_HOST_TARGET_LEASE_MS);
|
|
461
525
|
const previous = getActiveHostTarget();
|
|
462
526
|
const activeSameNode = previous?.nodeId === nodeId;
|
|
527
|
+
const routeInfo = getAgentEndpointRouteInfo();
|
|
463
528
|
hostTarget = {
|
|
464
529
|
nodeId,
|
|
465
530
|
leaseId: activeSameNode && previous?.leaseId ? previous.leaseId : crypto.randomUUID(),
|
|
466
531
|
hostInstanceId,
|
|
467
|
-
endpoint:
|
|
532
|
+
endpoint: routeInfo.endpoint,
|
|
468
533
|
activatedAt: activeSameNode && previous?.activatedAt ? previous.activatedAt : now.toISOString(),
|
|
469
534
|
updatedAt: now.toISOString(),
|
|
470
535
|
expiresAt: new Date(now.getTime() + leaseMs).toISOString()
|
|
@@ -474,6 +539,12 @@ export function createRemoteHub(options = {}) {
|
|
|
474
539
|
hostTarget: serializeHostTarget(hostTarget),
|
|
475
540
|
replacedNodeId: previous && previous.nodeId !== nodeId ? previous.nodeId : ''
|
|
476
541
|
});
|
|
542
|
+
if (!activeSameNode || !routeInfo.accountRouteReady) {
|
|
543
|
+
logEvent(
|
|
544
|
+
'remote',
|
|
545
|
+
`host target ${routeInfo.accountRouteReady ? 'account-ready' : 'local-only'} endpoint=${routeInfo.endpoint} reason=${routeInfo.reason}`,
|
|
546
|
+
'remote');
|
|
547
|
+
}
|
|
477
548
|
return {
|
|
478
549
|
ok: true,
|
|
479
550
|
active: true,
|
|
@@ -484,11 +555,12 @@ export function createRemoteHub(options = {}) {
|
|
|
484
555
|
function getStatus({ includeSecrets = false } = {}) {
|
|
485
556
|
const connectedDevices = [...devices.values()].filter(device => device.connected).length;
|
|
486
557
|
const activeHostTarget = serializeHostTarget();
|
|
558
|
+
const routeInfo = getAgentEndpointRouteInfo();
|
|
487
559
|
return {
|
|
488
560
|
enabled,
|
|
489
561
|
started,
|
|
490
562
|
host,
|
|
491
|
-
agentHost: getAnnouncedHost(),
|
|
563
|
+
agentHost: routeInfo.host || getAnnouncedHost(),
|
|
492
564
|
port: boundPort || requestedPort,
|
|
493
565
|
protocol: 'tcp-jsonl',
|
|
494
566
|
protocolVersion: REMOTE_PROTOCOL_VERSION,
|
|
@@ -498,7 +570,10 @@ export function createRemoteHub(options = {}) {
|
|
|
498
570
|
managerVersion,
|
|
499
571
|
hostInstanceId,
|
|
500
572
|
agentPackage: '@mindexec/remote',
|
|
501
|
-
agentEndpoint:
|
|
573
|
+
agentEndpoint: routeInfo.endpoint,
|
|
574
|
+
agentEndpointAccountRouteReady: routeInfo.accountRouteReady,
|
|
575
|
+
agentEndpointRouteReason: routeInfo.reason,
|
|
576
|
+
agentEndpointCandidates: routeInfo.candidates,
|
|
502
577
|
pairToken: includeSecrets ? pairToken : undefined,
|
|
503
578
|
pairTokenPreview: maskToken(pairToken),
|
|
504
579
|
deviceCount: devices.size,
|
package/server.js
CHANGED
|
@@ -2732,6 +2732,7 @@ const remoteHub = createRemoteHub({
|
|
|
2732
2732
|
});
|
|
2733
2733
|
|
|
2734
2734
|
const REMOTE_AGENT_STDIO_TAIL_CHARS = 12000;
|
|
2735
|
+
const REMOTE_AGENT_EARLY_EXIT_MS = 1200;
|
|
2735
2736
|
const REMOTE_AGENT_DEFAULT_ENGINE = 'auto';
|
|
2736
2737
|
let remoteAgentState = createRemoteAgentIdleState();
|
|
2737
2738
|
|
|
@@ -2778,6 +2779,71 @@ function appendRemoteAgentOutput(stream, chunk) {
|
|
|
2778
2779
|
remoteAgentState.updatedAt = new Date().toISOString();
|
|
2779
2780
|
}
|
|
2780
2781
|
|
|
2782
|
+
function summarizeRemoteAgentOutput(value, maxLength = 700) {
|
|
2783
|
+
const text = String(value || '').replace(/\s+/g, ' ').trim();
|
|
2784
|
+
if (text.length <= maxLength) {
|
|
2785
|
+
return text;
|
|
2786
|
+
}
|
|
2787
|
+
|
|
2788
|
+
return `...${text.slice(text.length - maxLength + 3)}`;
|
|
2789
|
+
}
|
|
2790
|
+
|
|
2791
|
+
function formatRemoteAgentFailureSummary(agent = remoteAgentState) {
|
|
2792
|
+
const details = [];
|
|
2793
|
+
if (agent.lastError) {
|
|
2794
|
+
details.push(agent.lastError);
|
|
2795
|
+
} else if (agent.signal) {
|
|
2796
|
+
details.push(`signal:${agent.signal}`);
|
|
2797
|
+
} else if (Number.isFinite(agent.exitCode)) {
|
|
2798
|
+
details.push(`exit:${agent.exitCode}`);
|
|
2799
|
+
}
|
|
2800
|
+
|
|
2801
|
+
const stderr = summarizeRemoteAgentOutput(agent.stderrTail);
|
|
2802
|
+
if (stderr) {
|
|
2803
|
+
details.push(`stderr=${stderr}`);
|
|
2804
|
+
}
|
|
2805
|
+
|
|
2806
|
+
const stdout = summarizeRemoteAgentOutput(agent.stdoutTail);
|
|
2807
|
+
if (stdout) {
|
|
2808
|
+
details.push(`stdout=${stdout}`);
|
|
2809
|
+
}
|
|
2810
|
+
|
|
2811
|
+
return details.join(' | ') || 'remote-agent-failed';
|
|
2812
|
+
}
|
|
2813
|
+
|
|
2814
|
+
function waitForRemoteAgentEarlyExit(child, settleMs = REMOTE_AGENT_EARLY_EXIT_MS) {
|
|
2815
|
+
return new Promise(resolve => {
|
|
2816
|
+
if (!child || child.exitCode !== null || child.killed) {
|
|
2817
|
+
resolve(true);
|
|
2818
|
+
return;
|
|
2819
|
+
}
|
|
2820
|
+
|
|
2821
|
+
let settled = false;
|
|
2822
|
+
let timer = null;
|
|
2823
|
+
const cleanup = () => {
|
|
2824
|
+
if (timer) {
|
|
2825
|
+
clearTimeout(timer);
|
|
2826
|
+
}
|
|
2827
|
+
child.off('exit', onExit);
|
|
2828
|
+
child.off('error', onError);
|
|
2829
|
+
};
|
|
2830
|
+
const finish = value => {
|
|
2831
|
+
if (settled) {
|
|
2832
|
+
return;
|
|
2833
|
+
}
|
|
2834
|
+
settled = true;
|
|
2835
|
+
cleanup();
|
|
2836
|
+
resolve(value);
|
|
2837
|
+
};
|
|
2838
|
+
const onExit = () => finish(true);
|
|
2839
|
+
const onError = () => finish(true);
|
|
2840
|
+
|
|
2841
|
+
child.once('exit', onExit);
|
|
2842
|
+
child.once('error', onError);
|
|
2843
|
+
timer = setTimeout(() => finish(false), settleMs);
|
|
2844
|
+
});
|
|
2845
|
+
}
|
|
2846
|
+
|
|
2781
2847
|
function normalizeRemoteAgentEngine(value) {
|
|
2782
2848
|
const engine = String(value || REMOTE_AGENT_DEFAULT_ENGINE).trim().toLowerCase();
|
|
2783
2849
|
if (engine === 'fast' || engine === 'csharp' || engine === 'c#') {
|
|
@@ -2961,6 +3027,7 @@ async function startRemoteAgentConnection(options = {}) {
|
|
|
2961
3027
|
remoteAgentState.status = 'failed';
|
|
2962
3028
|
remoteAgentState.lastError = err?.message || String(err);
|
|
2963
3029
|
remoteAgentState.updatedAt = new Date().toISOString();
|
|
3030
|
+
logWarn('remote', `managed RemoteAgent failed: ${formatRemoteAgentFailureSummary()}`);
|
|
2964
3031
|
emitBridgeEvent('RemoteAgentFailed', serializeRemoteAgentState());
|
|
2965
3032
|
});
|
|
2966
3033
|
child.once('exit', (code, signal) => {
|
|
@@ -2972,6 +3039,11 @@ async function startRemoteAgentConnection(options = {}) {
|
|
|
2972
3039
|
if (code !== 0 && !remoteAgentState.lastError) {
|
|
2973
3040
|
remoteAgentState.lastError = signal ? `signal:${signal}` : `exit:${code}`;
|
|
2974
3041
|
}
|
|
3042
|
+
if (remoteAgentState.status === 'failed') {
|
|
3043
|
+
logWarn('remote', `managed RemoteAgent failed: ${formatRemoteAgentFailureSummary()}`);
|
|
3044
|
+
} else {
|
|
3045
|
+
logEvent('remote', `managed RemoteAgent exited ${formatKeyValue('code', code ?? 0)}`, 'remote');
|
|
3046
|
+
}
|
|
2975
3047
|
emitBridgeEvent(remoteAgentState.status === 'exited' ? 'RemoteAgentExited' : 'RemoteAgentFailed', serializeRemoteAgentState());
|
|
2976
3048
|
});
|
|
2977
3049
|
|
|
@@ -2981,6 +3053,12 @@ async function startRemoteAgentConnection(options = {}) {
|
|
|
2981
3053
|
'remote');
|
|
2982
3054
|
emitBridgeEvent('RemoteAgentStarted', serializeRemoteAgentState());
|
|
2983
3055
|
|
|
3056
|
+
const exitedEarly = await waitForRemoteAgentEarlyExit(child);
|
|
3057
|
+
if (exitedEarly) {
|
|
3058
|
+
const error = formatRemoteAgentFailureSummary();
|
|
3059
|
+
return { ok: false, error, agent: serializeRemoteAgentState() };
|
|
3060
|
+
}
|
|
3061
|
+
|
|
2984
3062
|
return { ok: true, alreadyRunning: false, agent: serializeRemoteAgentState() };
|
|
2985
3063
|
}
|
|
2986
3064
|
|
|
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-En37ftP0ESJ05mTVQWmF9DLUneIu5kqMcNkEfGC06KA=",
|
|
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.e31e775w23.dll": "MindExecution.Core.dll",
|
|
127
|
+
"MindExecution.Kernel.55q6x6zeoc.dll": "MindExecution.Kernel.dll",
|
|
128
|
+
"MindExecution.Plugins.Admin.peei1t6ncj.dll": "MindExecution.Plugins.Admin.dll",
|
|
129
|
+
"MindExecution.Plugins.Business.04t0oe4t4k.dll": "MindExecution.Plugins.Business.dll",
|
|
130
|
+
"MindExecution.Plugins.Concept.f4gpqdzqwj.dll": "MindExecution.Plugins.Concept.dll",
|
|
131
|
+
"MindExecution.Plugins.Directory.az6m63vnll.dll": "MindExecution.Plugins.Directory.dll",
|
|
132
|
+
"MindExecution.Plugins.PlanMaster.o2xcmf9i46.dll": "MindExecution.Plugins.PlanMaster.dll",
|
|
133
|
+
"MindExecution.Plugins.YouTube.xnrrltoofq.dll": "MindExecution.Plugins.YouTube.dll",
|
|
134
|
+
"MindExecution.Shared.6qq547u3iu.dll": "MindExecution.Shared.dll",
|
|
135
|
+
"MindExecution.Web.nfbmmsf2rl.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.e31e775w23.dll": "sha256-CjA5yl5JfpYf6+7TuOwW4XZuBybv5Y6g5sAYXgoaq2M=",
|
|
282
|
+
"MindExecution.Kernel.55q6x6zeoc.dll": "sha256-2RLhrX3JMUc5g/mGCTwFB61ND7dgYYPaFFFPUAakdiU=",
|
|
283
|
+
"MindExecution.Plugins.Concept.f4gpqdzqwj.dll": "sha256-33uklvsdPqUhPHgnHxyQLPMNbo22Ztttf6r3foxoq7M=",
|
|
284
|
+
"MindExecution.Plugins.PlanMaster.o2xcmf9i46.dll": "sha256-kEtfwKXd/IeopHD65TdAZ+8RpdLvnRFJhJ5m2PXozYk=",
|
|
285
|
+
"MindExecution.Shared.6qq547u3iu.dll": "sha256-jrYtMJjsdd4gl1VIp/WvUr1j6xPzFcb6KsRP8gVxz9I=",
|
|
286
|
+
"MindExecution.Web.nfbmmsf2rl.dll": "sha256-neaU6eYk85SeylghFpeBWqjRvKdscMU7Rfx2aPgn9N4="
|
|
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.peei1t6ncj.dll": "sha256-cW6VWE09PF8oNMZ07w2mgGKAKt2tTWuGBvEvhG8ReFI=",
|
|
290
|
+
"MindExecution.Plugins.Business.04t0oe4t4k.dll": "sha256-YCPKCRRQ/Mhy8GKyovbWLGa1RV+RAdsX9ZqvTBztSpg=",
|
|
291
|
+
"MindExecution.Plugins.Directory.az6m63vnll.dll": "sha256-KtGyNwTSSCOz2ArDDURYQ9FZABwjPuD9Cf47ck0KH10=",
|
|
292
|
+
"MindExecution.Plugins.YouTube.xnrrltoofq.dll": "sha256-zQ2pUfGZpcRDKDvxrdKZ8YMSVts3fH2+Lz5j6HaUrTE="
|
|
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-mdm-host-route-v556" />
|
|
11
|
+
<link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260616-mdm-host-route-v556" />
|
|
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-mdm-host-route-v556';
|
|
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": "8tpj6Cb7",
|
|
3
3
|
"assets": [
|
|
4
4
|
{
|
|
5
5
|
"hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
|
|
@@ -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-CjA5yl5JfpYf6+7TuOwW4XZuBybv5Y6g5sAYXgoaq2M=",
|
|
414
|
+
"url": "_framework/MindExecution.Core.e31e775w23.dll"
|
|
415
415
|
},
|
|
416
416
|
{
|
|
417
|
-
"hash": "sha256-
|
|
418
|
-
"url": "_framework/MindExecution.Kernel.
|
|
417
|
+
"hash": "sha256-2RLhrX3JMUc5g/mGCTwFB61ND7dgYYPaFFFPUAakdiU=",
|
|
418
|
+
"url": "_framework/MindExecution.Kernel.55q6x6zeoc.dll"
|
|
419
419
|
},
|
|
420
420
|
{
|
|
421
|
-
"hash": "sha256-
|
|
422
|
-
"url": "_framework/MindExecution.Plugins.Admin.
|
|
421
|
+
"hash": "sha256-cW6VWE09PF8oNMZ07w2mgGKAKt2tTWuGBvEvhG8ReFI=",
|
|
422
|
+
"url": "_framework/MindExecution.Plugins.Admin.peei1t6ncj.dll"
|
|
423
423
|
},
|
|
424
424
|
{
|
|
425
|
-
"hash": "sha256-
|
|
426
|
-
"url": "_framework/MindExecution.Plugins.Business.
|
|
425
|
+
"hash": "sha256-YCPKCRRQ/Mhy8GKyovbWLGa1RV+RAdsX9ZqvTBztSpg=",
|
|
426
|
+
"url": "_framework/MindExecution.Plugins.Business.04t0oe4t4k.dll"
|
|
427
427
|
},
|
|
428
428
|
{
|
|
429
|
-
"hash": "sha256-
|
|
430
|
-
"url": "_framework/MindExecution.Plugins.Concept.
|
|
429
|
+
"hash": "sha256-33uklvsdPqUhPHgnHxyQLPMNbo22Ztttf6r3foxoq7M=",
|
|
430
|
+
"url": "_framework/MindExecution.Plugins.Concept.f4gpqdzqwj.dll"
|
|
431
431
|
},
|
|
432
432
|
{
|
|
433
|
-
"hash": "sha256-
|
|
434
|
-
"url": "_framework/MindExecution.Plugins.Directory.
|
|
433
|
+
"hash": "sha256-KtGyNwTSSCOz2ArDDURYQ9FZABwjPuD9Cf47ck0KH10=",
|
|
434
|
+
"url": "_framework/MindExecution.Plugins.Directory.az6m63vnll.dll"
|
|
435
435
|
},
|
|
436
436
|
{
|
|
437
|
-
"hash": "sha256
|
|
438
|
-
"url": "_framework/MindExecution.Plugins.PlanMaster.
|
|
437
|
+
"hash": "sha256-kEtfwKXd/IeopHD65TdAZ+8RpdLvnRFJhJ5m2PXozYk=",
|
|
438
|
+
"url": "_framework/MindExecution.Plugins.PlanMaster.o2xcmf9i46.dll"
|
|
439
439
|
},
|
|
440
440
|
{
|
|
441
|
-
"hash": "sha256-
|
|
442
|
-
"url": "_framework/MindExecution.Plugins.YouTube.
|
|
441
|
+
"hash": "sha256-zQ2pUfGZpcRDKDvxrdKZ8YMSVts3fH2+Lz5j6HaUrTE=",
|
|
442
|
+
"url": "_framework/MindExecution.Plugins.YouTube.xnrrltoofq.dll"
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
|
-
"hash": "sha256-
|
|
446
|
-
"url": "_framework/MindExecution.Shared.
|
|
445
|
+
"hash": "sha256-jrYtMJjsdd4gl1VIp/WvUr1j6xPzFcb6KsRP8gVxz9I=",
|
|
446
|
+
"url": "_framework/MindExecution.Shared.6qq547u3iu.dll"
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
|
-
"hash": "sha256-
|
|
450
|
-
"url": "_framework/MindExecution.Web.
|
|
449
|
+
"hash": "sha256-neaU6eYk85SeylghFpeBWqjRvKdscMU7Rfx2aPgn9N4=",
|
|
450
|
+
"url": "_framework/MindExecution.Web.nfbmmsf2rl.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-xRkkZYryfd2M9u7R9q8FWfp9HwacRvKIdqvSNyvTEik=",
|
|
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-CMNyRVOFnluZqvSs3T+1/tCH4AvEwjV6UNWBUvplyuA=",
|
|
838
838
|
"url": "index.html"
|
|
839
839
|
},
|
|
840
840
|
{
|
|
Binary file
|
|
Binary file
|