@mindexec/cli 0.2.148 → 0.2.149

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.148",
3
+ "version": "0.2.149",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -1216,6 +1216,10 @@ try {
1216
1216
  assert.equal(bodyView.textContent.includes('No screen'), false);
1217
1217
  assert.equal(bodyView.textContent.includes('@mindexec/cli'), false);
1218
1218
  assert.equal(nodeShell.querySelector('[data-remote-fleet-host-indicator="true"]')?.dataset.remoteFleetHostActive, 'false');
1219
+ const { nodeShell: hostMirrorShell, bodyView: hostMirrorBodyView } = createRemoteFleetTemplateShell(document, focusedDevice.DeviceId);
1220
+ document.body.appendChild(hostMirrorShell);
1221
+ manager.renderRemoteFleetMonitorForTest(hostMirrorBodyView, monitorNode);
1222
+ assert.equal(hostMirrorShell.querySelector('[data-remote-fleet-host-indicator="true"]')?.dataset.remoteFleetHostActive, 'false');
1219
1223
  const initialHostButton = nodeShell.querySelector('[data-remote-fleet-action="set-host"]');
1220
1224
  assert.equal(initialHostButton?.textContent, 'Set Host');
1221
1225
  initialHostButton.dispatchEvent({ type: 'click' });
@@ -1227,6 +1231,17 @@ try {
1227
1231
  const hostFeedback = bodyView.querySelector('[data-remote-fleet-task-feedback="true"]');
1228
1232
  assert.equal(hostFeedback?.style.display, 'none');
1229
1233
  assert.equal(hostFeedback?.textContent, '');
1234
+ assert.equal(nodeShell.querySelector('[data-remote-fleet-host-indicator="true"]')?.dataset.remoteFleetHostActive, 'true');
1235
+ assert.equal(hostMirrorShell.querySelector('[data-remote-fleet-host-indicator="true"]')?.dataset.remoteFleetHostActive, 'true');
1236
+ assert.ok(diagnostics.textOverlayInvalidations.some(entry =>
1237
+ entry.nodeId === 'remote-fleet-render-smoke'
1238
+ && entry.reason === 'remote-monitor-host'));
1239
+ assert.ok(diagnostics.runtimeTrace.some(entry =>
1240
+ entry.type === 'remote.monitor.projectionInvalidated'
1241
+ && entry.nodeId === 'remote-fleet-render-smoke'
1242
+ && entry.reason === 'host'
1243
+ && entry.overlayInvalidated === true));
1244
+ hostMirrorShell.remove();
1230
1245
 
1231
1246
  hub.setHostTarget({
1232
1247
  nodeId: 'remote-fleet-render-smoke',
@@ -13652,6 +13652,52 @@
13652
13652
  return nodeState;
13653
13653
  }
13654
13654
 
13655
+ function applyRemoteFleetHostTargetResultToNodeModel(nodeModel, nodeId, enabled, result) {
13656
+ const id = String(nodeId || '').trim();
13657
+ if (!nodeModel || !id || !isRemoteFleetResultSuccess(result)) {
13658
+ return false;
13659
+ }
13660
+
13661
+ const metadata = ensureNodeMetadata(nodeModel);
13662
+ if (!metadata) {
13663
+ return false;
13664
+ }
13665
+
13666
+ const registryStatus = String(result?.registryStatus || result?.RegistryStatus || '').trim();
13667
+ const registryReason = String(result?.registryReason || result?.RegistryReason || '').trim();
13668
+ if (registryStatus) {
13669
+ metadata.RemoteFleetRegistryStatus = registryStatus;
13670
+ }
13671
+ if (registryReason) {
13672
+ metadata.RemoteFleetRegistryReason = registryReason;
13673
+ }
13674
+
13675
+ const active = enabled === true && isRemoteFleetResultActive(result);
13676
+ if (active) {
13677
+ applyRemoteFleetLocalHostTarget(nodeModel);
13678
+ metadata.RemoteFleetHostTargetState = 'hosting';
13679
+ metadata.RemoteFleetHostTargetNodeId = id;
13680
+ const hostTarget = result?.hostTarget || result?.HostTarget || {};
13681
+ const now = new Date().toISOString();
13682
+ metadata.RemoteFleetHostTargetLeaseId = String(readRemoteFleetObjectField(hostTarget, 'leaseId', 'LeaseId', metadata.RemoteFleetHostTargetLeaseId || '') || '').trim();
13683
+ metadata.RemoteFleetHostTargetEndpoint = String(readRemoteFleetObjectField(hostTarget, 'endpoint', 'Endpoint', metadata.RemoteFleetHostTargetEndpoint || metadata.RemoteFleetHubEndpoint || '') || '').trim();
13684
+ metadata.RemoteFleetHostTargetActivatedAtUtc = String(readRemoteFleetObjectField(hostTarget, 'activatedAt', 'ActivatedAt', metadata.RemoteFleetHostTargetActivatedAtUtc || now) || '').trim();
13685
+ metadata.RemoteFleetHostTargetUpdatedAtUtc = String(readRemoteFleetObjectField(hostTarget, 'updatedAt', 'UpdatedAt', now) || '').trim();
13686
+ metadata.RemoteFleetHostTargetExpiresAtUtc = String(readRemoteFleetObjectField(hostTarget, 'expiresAt', 'ExpiresAt', metadata.RemoteFleetHostTargetExpiresAtUtc || '') || '').trim();
13687
+ } else if (enabled !== true || isRemoteFleetResultExplicitlyInactive(result)) {
13688
+ metadata.RemoteFleetHostTargetState = 'inactive';
13689
+ metadata.RemoteFleetHostTargetNodeId = '';
13690
+ metadata.RemoteFleetHostTargetLeaseId = '';
13691
+ metadata.RemoteFleetHostTargetActivatedAtUtc = '';
13692
+ metadata.RemoteFleetHostTargetUpdatedAtUtc = '';
13693
+ metadata.RemoteFleetHostTargetExpiresAtUtc = '';
13694
+ }
13695
+
13696
+ nodeModel.metadata = metadata;
13697
+ nodeModel.Metadata = metadata;
13698
+ return true;
13699
+ }
13700
+
13655
13701
  function clearRemoteFleetTimers(bodyView, options = {}) {
13656
13702
  if (!bodyView) return;
13657
13703
  if (options.keepBinaryFrameSocket !== true) {
@@ -13925,6 +13971,35 @@
13925
13971
  return synced;
13926
13972
  }
13927
13973
 
13974
+ function renderRemoteFleetMonitorSurfaces(nodeId, nodeModel, sourceBodyView = null) {
13975
+ const id = String(nodeId || '').trim();
13976
+ if (!id || !nodeModel) {
13977
+ return 0;
13978
+ }
13979
+
13980
+ const escapedId = cssEscapeValue(id);
13981
+ const bodies = new Set([
13982
+ ...Array.from(document.querySelectorAll(`.template-card__remote-fleet-body[data-node-id="${escapedId}"]`)),
13983
+ ...Array.from(document.querySelectorAll(`.template-card__remote-fleet-body[data-remote-fleet-monitor-node-id="${escapedId}"]`))
13984
+ ]);
13985
+
13986
+ if (sourceBodyView) {
13987
+ bodies.add(sourceBodyView);
13988
+ }
13989
+
13990
+ let rendered = 0;
13991
+ bodies.forEach(body => {
13992
+ if (!body) {
13993
+ return;
13994
+ }
13995
+
13996
+ renderRemoteFleetMonitor(body, nodeModel);
13997
+ rendered += 1;
13998
+ });
13999
+
14000
+ return rendered;
14001
+ }
14002
+
13928
14003
  function invalidateRemoteFleetMonitorProjection(nodeId, sizeState, reason = 'size') {
13929
14004
  const id = String(nodeId || '').trim();
13930
14005
  if (!_module || !id) {
@@ -13944,11 +14019,16 @@
13944
14019
  _module._css3dVisualChangedThisFrame = true;
13945
14020
  _module._css3dVisualChangedSinceLastRender = true;
13946
14021
  wakeRemoteFleetModuleAnimation(_module, `remote-monitor-${reason}`);
13947
- window.RuntimeTrace?.emit?.('remote.monitor.sizeChanged', {
14022
+ const tracePayload = {
13948
14023
  nodeId: id,
13949
14024
  density: normalizeRemoteFleetMonitorSize(sizeState),
14025
+ reason: String(reason || 'projection'),
13950
14026
  overlayInvalidated: invalidated
13951
- });
14027
+ };
14028
+ window.RuntimeTrace?.emit?.('remote.monitor.projectionInvalidated', tracePayload);
14029
+ if (reason === 'size') {
14030
+ window.RuntimeTrace?.emit?.('remote.monitor.sizeChanged', tracePayload);
14031
+ }
13952
14032
  return invalidated;
13953
14033
  }
13954
14034
 
@@ -18117,6 +18197,10 @@
18117
18197
  rememberRemoteFleetLocalHostTarget(nodeId, enabled === true, result);
18118
18198
  if (isRemoteFleetResultSuccess(result)) {
18119
18199
  rememberRemoteFleetAutoHostPreference(nodeId, enabled === true && isRemoteFleetResultActive(result));
18200
+ if (applyRemoteFleetHostTargetResultToNodeModel(nodeModel, nodeId, enabled === true, result)) {
18201
+ renderRemoteFleetMonitorSurfaces(nodeId, nodeModel, bodyView);
18202
+ invalidateRemoteFleetMonitorProjection(nodeId, bodyView.dataset.remoteFleetDensity || densityState, 'host');
18203
+ }
18120
18204
  }
18121
18205
  if (quiet) {
18122
18206
  if (!isRemoteFleetResultSuccess(result) || !isRemoteFleetResultActive(result)) {
@@ -7,8 +7,8 @@
7
7
  <title>MindExec | Run your ideas as AI task graphs</title>
8
8
  <meta name="description" content="MindExec is an AI execution canvas for solo builders, researchers, developers, and creators. Start with free browser tools, then move serious work into saved MindCanvas projects." />
9
9
  <base href="/" />
10
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-mdm-size-sync-v583" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-mdm-size-sync-v583" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260617-mdm-host-lamp-v584" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260617-mdm-host-lamp-v584" />
12
12
  <!-- ?쇄뼹??Font Awesome (local) ?쇄뼹??-->
13
13
  <link rel="stylesheet" href="_content/MindExecution.Shared/lib/font-awesome/css/all.min.css" />
14
14
  <!-- ?꿎뼯??-->
@@ -579,7 +579,7 @@
579
579
  }
580
580
 
581
581
  const base = '_content/MindExecution.Shared/js/';
582
- const scriptVersion = '20260617-mdm-size-sync-v583';
582
+ const scriptVersion = '20260617-mdm-host-lamp-v584';
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": "2KqIRZaB",
2
+ "version": "D5pcdHTt",
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-jDvRb/lyHSbYOYjqGqyc0m3AIRkOtfL144gqEyAGHOM=",
89
+ "hash": "sha256-RSQ+302zp4KqLtkoQdqlFYULUOqzi/VO90NwHsGKcl8=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-TJzGANRJXvjZ2Tpohu7NwDaJqYaNRaaVMNDegpwN3GI=",
837
+ "hash": "sha256-cQP7X8qq+FUS4hnGN9p8Gya3DsWc9dEG/9XlQWuu1Ms=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: 2KqIRZaB */
1
+ /* Manifest version: D5pcdHTt */
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