@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.
Files changed (19) hide show
  1. package/package.json +2 -2
  2. package/remote-hub.js +79 -4
  3. package/server.js +78 -0
  4. package/wwwroot/_framework/MindExecution.Core.e31e775w23.dll +0 -0
  5. package/wwwroot/_framework/{MindExecution.Kernel.ksznt6ppyj.dll → MindExecution.Kernel.55q6x6zeoc.dll} +0 -0
  6. package/wwwroot/_framework/{MindExecution.Plugins.Admin.ziclnsvcvi.dll → MindExecution.Plugins.Admin.peei1t6ncj.dll} +0 -0
  7. package/wwwroot/_framework/{MindExecution.Plugins.Business.q32f5kgky1.dll → MindExecution.Plugins.Business.04t0oe4t4k.dll} +0 -0
  8. package/wwwroot/_framework/{MindExecution.Plugins.Concept.u0hltey7sr.dll → MindExecution.Plugins.Concept.f4gpqdzqwj.dll} +0 -0
  9. package/wwwroot/_framework/{MindExecution.Plugins.Directory.3pet73jp0m.dll → MindExecution.Plugins.Directory.az6m63vnll.dll} +0 -0
  10. package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.ljcyf2idce.dll → MindExecution.Plugins.PlanMaster.o2xcmf9i46.dll} +0 -0
  11. package/wwwroot/_framework/{MindExecution.Plugins.YouTube.8tcrdoa4ev.dll → MindExecution.Plugins.YouTube.xnrrltoofq.dll} +0 -0
  12. package/wwwroot/_framework/{MindExecution.Shared.by1sbz8phy.dll → MindExecution.Shared.6qq547u3iu.dll} +0 -0
  13. package/wwwroot/_framework/MindExecution.Web.nfbmmsf2rl.dll +0 -0
  14. package/wwwroot/_framework/blazor.boot.json +21 -21
  15. package/wwwroot/index.html +3 -3
  16. package/wwwroot/service-worker-assets.js +23 -23
  17. package/wwwroot/service-worker.js +1 -1
  18. package/wwwroot/_framework/MindExecution.Core.qprj2wqc9a.dll +0 -0
  19. 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.91",
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.14",
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 getReachableIPv4Address() {
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: getAgentEndpoint(),
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: getAgentEndpoint(),
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
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "mainAssemblyName": "MindExecution.Web",
3
3
  "resources": {
4
- "hash": "sha256-zdSjwRM1ORMx5hrt6pXtqT7exNKT7p1T4b/a+wIB6Nk=",
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.qprj2wqc9a.dll": "MindExecution.Core.dll",
127
- "MindExecution.Kernel.ksznt6ppyj.dll": "MindExecution.Kernel.dll",
128
- "MindExecution.Plugins.Admin.ziclnsvcvi.dll": "MindExecution.Plugins.Admin.dll",
129
- "MindExecution.Plugins.Business.q32f5kgky1.dll": "MindExecution.Plugins.Business.dll",
130
- "MindExecution.Plugins.Concept.u0hltey7sr.dll": "MindExecution.Plugins.Concept.dll",
131
- "MindExecution.Plugins.Directory.3pet73jp0m.dll": "MindExecution.Plugins.Directory.dll",
132
- "MindExecution.Plugins.PlanMaster.ljcyf2idce.dll": "MindExecution.Plugins.PlanMaster.dll",
133
- "MindExecution.Plugins.YouTube.8tcrdoa4ev.dll": "MindExecution.Plugins.YouTube.dll",
134
- "MindExecution.Shared.by1sbz8phy.dll": "MindExecution.Shared.dll",
135
- "MindExecution.Web.izoc1olp5m.dll": "MindExecution.Web.dll",
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.qprj2wqc9a.dll": "sha256-DnXZk8i9ukptBPjChSubsbWJIarYNileavZA4hihKJY=",
282
- "MindExecution.Kernel.ksznt6ppyj.dll": "sha256-DAZ9Pzryh17vEhPOjVeFe+eCs/lgH5S0vxP9WFiTI2U=",
283
- "MindExecution.Plugins.Concept.u0hltey7sr.dll": "sha256-bl5nRrvhNXYSc4+5wargkpJYd+Akm5IIQ5FLjyExZds=",
284
- "MindExecution.Plugins.PlanMaster.ljcyf2idce.dll": "sha256-/3Q149k481vGA8iTEpjfauUfyleP18xmbmdwOF80+6s=",
285
- "MindExecution.Shared.by1sbz8phy.dll": "sha256-4w+4j4AP38xdKILmTlpMsWKOpe5CbpvIV5JT5sR3DYo=",
286
- "MindExecution.Web.izoc1olp5m.dll": "sha256-fppfKdHapYtlQ0WVWrTZhypVsGaMmuDBWkH1cjXixuQ="
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.ziclnsvcvi.dll": "sha256-VXbkR7uhooOS62ea02JNcfj2EpKxtIF4ZYRSvdO74kM=",
290
- "MindExecution.Plugins.Business.q32f5kgky1.dll": "sha256-Zq3jwQKoz28lRtaqbPJgZenoBwrknjYBccYJhLOhYd4=",
291
- "MindExecution.Plugins.Directory.3pet73jp0m.dll": "sha256-p7KSnHrHR4xFgP4WwKX0edQZgAhSsWqOcNRq4/oiH1I=",
292
- "MindExecution.Plugins.YouTube.8tcrdoa4ev.dll": "sha256-ZFmWAVJI8+SHvoyvDQqb8LToWTR5GZ3PE3CWyx2s5nU="
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,
@@ -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-flow-visible-text-v555" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260616-flow-visible-text-v555" />
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-flow-visible-text-v555';
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": "r7u1aDF7",
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-DnXZk8i9ukptBPjChSubsbWJIarYNileavZA4hihKJY=",
414
- "url": "_framework/MindExecution.Core.qprj2wqc9a.dll"
413
+ "hash": "sha256-CjA5yl5JfpYf6+7TuOwW4XZuBybv5Y6g5sAYXgoaq2M=",
414
+ "url": "_framework/MindExecution.Core.e31e775w23.dll"
415
415
  },
416
416
  {
417
- "hash": "sha256-DAZ9Pzryh17vEhPOjVeFe+eCs/lgH5S0vxP9WFiTI2U=",
418
- "url": "_framework/MindExecution.Kernel.ksznt6ppyj.dll"
417
+ "hash": "sha256-2RLhrX3JMUc5g/mGCTwFB61ND7dgYYPaFFFPUAakdiU=",
418
+ "url": "_framework/MindExecution.Kernel.55q6x6zeoc.dll"
419
419
  },
420
420
  {
421
- "hash": "sha256-VXbkR7uhooOS62ea02JNcfj2EpKxtIF4ZYRSvdO74kM=",
422
- "url": "_framework/MindExecution.Plugins.Admin.ziclnsvcvi.dll"
421
+ "hash": "sha256-cW6VWE09PF8oNMZ07w2mgGKAKt2tTWuGBvEvhG8ReFI=",
422
+ "url": "_framework/MindExecution.Plugins.Admin.peei1t6ncj.dll"
423
423
  },
424
424
  {
425
- "hash": "sha256-Zq3jwQKoz28lRtaqbPJgZenoBwrknjYBccYJhLOhYd4=",
426
- "url": "_framework/MindExecution.Plugins.Business.q32f5kgky1.dll"
425
+ "hash": "sha256-YCPKCRRQ/Mhy8GKyovbWLGa1RV+RAdsX9ZqvTBztSpg=",
426
+ "url": "_framework/MindExecution.Plugins.Business.04t0oe4t4k.dll"
427
427
  },
428
428
  {
429
- "hash": "sha256-bl5nRrvhNXYSc4+5wargkpJYd+Akm5IIQ5FLjyExZds=",
430
- "url": "_framework/MindExecution.Plugins.Concept.u0hltey7sr.dll"
429
+ "hash": "sha256-33uklvsdPqUhPHgnHxyQLPMNbo22Ztttf6r3foxoq7M=",
430
+ "url": "_framework/MindExecution.Plugins.Concept.f4gpqdzqwj.dll"
431
431
  },
432
432
  {
433
- "hash": "sha256-p7KSnHrHR4xFgP4WwKX0edQZgAhSsWqOcNRq4/oiH1I=",
434
- "url": "_framework/MindExecution.Plugins.Directory.3pet73jp0m.dll"
433
+ "hash": "sha256-KtGyNwTSSCOz2ArDDURYQ9FZABwjPuD9Cf47ck0KH10=",
434
+ "url": "_framework/MindExecution.Plugins.Directory.az6m63vnll.dll"
435
435
  },
436
436
  {
437
- "hash": "sha256-/3Q149k481vGA8iTEpjfauUfyleP18xmbmdwOF80+6s=",
438
- "url": "_framework/MindExecution.Plugins.PlanMaster.ljcyf2idce.dll"
437
+ "hash": "sha256-kEtfwKXd/IeopHD65TdAZ+8RpdLvnRFJhJ5m2PXozYk=",
438
+ "url": "_framework/MindExecution.Plugins.PlanMaster.o2xcmf9i46.dll"
439
439
  },
440
440
  {
441
- "hash": "sha256-ZFmWAVJI8+SHvoyvDQqb8LToWTR5GZ3PE3CWyx2s5nU=",
442
- "url": "_framework/MindExecution.Plugins.YouTube.8tcrdoa4ev.dll"
441
+ "hash": "sha256-zQ2pUfGZpcRDKDvxrdKZ8YMSVts3fH2+Lz5j6HaUrTE=",
442
+ "url": "_framework/MindExecution.Plugins.YouTube.xnrrltoofq.dll"
443
443
  },
444
444
  {
445
- "hash": "sha256-4w+4j4AP38xdKILmTlpMsWKOpe5CbpvIV5JT5sR3DYo=",
446
- "url": "_framework/MindExecution.Shared.by1sbz8phy.dll"
445
+ "hash": "sha256-jrYtMJjsdd4gl1VIp/WvUr1j6xPzFcb6KsRP8gVxz9I=",
446
+ "url": "_framework/MindExecution.Shared.6qq547u3iu.dll"
447
447
  },
448
448
  {
449
- "hash": "sha256-fppfKdHapYtlQ0WVWrTZhypVsGaMmuDBWkH1cjXixuQ=",
450
- "url": "_framework/MindExecution.Web.izoc1olp5m.dll"
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-cb18iWoC6f5A14h+5TnErUNQyLE/uZFsSLcb3GHJJBA=",
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-xjCLoe1+86gJtGEkt7WpDeUeSh0ZjVObvWPiQSkshu8=",
837
+ "hash": "sha256-CMNyRVOFnluZqvSs3T+1/tCH4AvEwjV6UNWBUvplyuA=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: r7u1aDF7 */
1
+ /* Manifest version: 8tpj6Cb7 */
2
2
  // Hosted deployments should prefer the network over stale offline caches.
3
3
  // This service worker immediately clears old Blazor offline caches and unregisters itself.
4
4