@mindexec/cli 0.2.455 → 0.2.457

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 (23) hide show
  1. package/package.json +77 -77
  2. package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
  3. package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
  4. package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
  5. package/scripts/remote-fleet-render-smoke.mjs +24 -46
  6. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +4 -4
  7. package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +253 -261
  8. package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +1326 -1323
  9. package/wwwroot/_content/MindExecution.Shared/js/mind-map-render-plan.js +25 -6
  10. package/wwwroot/_framework/{MindExecution.Core.3y861y22o4.dll → MindExecution.Core.speado072l.dll} +0 -0
  11. package/wwwroot/_framework/{MindExecution.Kernel.182clfthnx.dll → MindExecution.Kernel.mjy31ssdac.dll} +0 -0
  12. package/wwwroot/_framework/{MindExecution.Plugins.Admin.ghxhrm0vf5.dll → MindExecution.Plugins.Admin.vbjjmdaao2.dll} +0 -0
  13. package/wwwroot/_framework/{MindExecution.Plugins.Business.doimlros51.dll → MindExecution.Plugins.Business.0cr5jc6wqe.dll} +0 -0
  14. package/wwwroot/_framework/{MindExecution.Plugins.Concept.hp54u7s3y5.dll → MindExecution.Plugins.Concept.m7p666e0jd.dll} +0 -0
  15. package/wwwroot/_framework/{MindExecution.Plugins.Directory.wjfnb1nk3b.dll → MindExecution.Plugins.Directory.kmdtirnljl.dll} +0 -0
  16. package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.447psj7gxo.dll → MindExecution.Plugins.PlanMaster.m1pfeozacj.dll} +0 -0
  17. package/wwwroot/_framework/{MindExecution.Plugins.YouTube.7f551zknhn.dll → MindExecution.Plugins.YouTube.nvsc9q4s6b.dll} +0 -0
  18. package/wwwroot/_framework/{MindExecution.Shared.aftyr3f4lo.dll → MindExecution.Shared.9jaznballd.dll} +0 -0
  19. package/wwwroot/_framework/{MindExecution.Web.tkj3z0fg8f.dll → MindExecution.Web.k5jxwawryl.dll} +0 -0
  20. package/wwwroot/_framework/blazor.boot.json +21 -21
  21. package/wwwroot/index.html +1 -1
  22. package/wwwroot/service-worker-assets.js +27 -27
  23. package/wwwroot/service-worker.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.455",
3
+ "version": "0.2.457",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -16,24 +16,24 @@
16
16
  "codex-runtime.js",
17
17
  "codex-model-catalog.js",
18
18
  "port-guard.cjs",
19
- "remote-fast/",
20
- "wwwroot/",
21
- "electron/",
22
- "scripts/",
19
+ "remote-fast/",
20
+ "wwwroot/",
21
+ "electron/",
22
+ "scripts/",
23
23
  "tree-sitter-grammars/",
24
24
  "README.md"
25
25
  ],
26
- "scripts": {
27
- "start": "node launch-bridge.cjs",
28
- "dev": "node launch-bridge.cjs --watch",
29
- "desktop:start": "electron electron/main.cjs",
30
- "desktop:build:win": "electron-builder --win --x64 --publish never",
31
- "test:desktop": "node electron/source-smoke.mjs",
32
- "test:desktop:win": "node electron/windows-package-smoke.mjs",
33
- "test:syntax": "node --check server.js && node --check remote-hub.js && node --check lzo1x.js && node --check mode4-atlas.js && node --check mode4-atlas-worker.js && node --check codex-runtime.js && node --check codex-model-catalog.js && node --check launch-bridge.cjs && node --check port-guard.cjs && node --check electron/main.cjs && node --check electron/source-smoke.mjs && node --check electron/windows-package-smoke.mjs && node --check scripts/setup-tree-sitter-grammars.mjs && node --check scripts/npm-fresh-install-smoke.mjs && node --check scripts/auth-session-smoke.mjs && node --check scripts/codex-model-catalog-smoke.mjs && node --check scripts/codex-sdk-runtime-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-input-ws-smoke.mjs && node --check scripts/remote-agent-ws-smoke.mjs && node --check scripts/remote-agent-managed-smoke.mjs && node --check scripts/remote-registry-follower-smoke.mjs && node --check scripts/remote-agent-package-smoke.mjs && node --check scripts/remote-fast-live-rate-smoke.mjs && node --check scripts/remote-fast-mdm-browser-smoke.mjs",
34
- "test:codex-sdk": "node scripts/codex-sdk-runtime-smoke.mjs",
35
- "test:codex-sdk:live": "node scripts/codex-sdk-runtime-smoke.mjs --live",
36
- "test:codex-sdk:live-tools": "node scripts/codex-sdk-runtime-smoke.mjs --live-tools",
26
+ "scripts": {
27
+ "start": "node launch-bridge.cjs",
28
+ "dev": "node launch-bridge.cjs --watch",
29
+ "desktop:start": "electron electron/main.cjs",
30
+ "desktop:build:win": "electron-builder --win --x64 --publish never",
31
+ "test:desktop": "node electron/source-smoke.mjs",
32
+ "test:desktop:win": "node electron/windows-package-smoke.mjs",
33
+ "test:syntax": "node --check server.js && node --check remote-hub.js && node --check lzo1x.js && node --check mode4-atlas.js && node --check mode4-atlas-worker.js && node --check codex-runtime.js && node --check codex-model-catalog.js && node --check launch-bridge.cjs && node --check port-guard.cjs && node --check electron/main.cjs && node --check electron/source-smoke.mjs && node --check electron/windows-package-smoke.mjs && node --check scripts/setup-tree-sitter-grammars.mjs && node --check scripts/npm-fresh-install-smoke.mjs && node --check scripts/auth-session-smoke.mjs && node --check scripts/codex-model-catalog-smoke.mjs && node --check scripts/codex-sdk-runtime-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-input-ws-smoke.mjs && node --check scripts/remote-agent-ws-smoke.mjs && node --check scripts/remote-agent-managed-smoke.mjs && node --check scripts/remote-registry-follower-smoke.mjs && node --check scripts/remote-agent-package-smoke.mjs && node --check scripts/remote-fast-live-rate-smoke.mjs && node --check scripts/remote-fast-mdm-browser-smoke.mjs",
34
+ "test:codex-sdk": "node scripts/codex-sdk-runtime-smoke.mjs",
35
+ "test:codex-sdk:live": "node scripts/codex-sdk-runtime-smoke.mjs --live",
36
+ "test:codex-sdk:live-tools": "node scripts/codex-sdk-runtime-smoke.mjs --live-tools",
37
37
  "test:codex-model-catalog": "node scripts/codex-model-catalog-smoke.mjs",
38
38
  "test:codex-model-catalog:live": "node scripts/codex-model-catalog-smoke.mjs --live",
39
39
  "test:auth": "node scripts/auth-session-smoke.mjs",
@@ -61,7 +61,7 @@
61
61
  "local",
62
62
  "ai"
63
63
  ],
64
- "author": "lovecrdm77",
64
+ "author": "lovecrdm77",
65
65
  "license": "MIT",
66
66
  "publishConfig": {
67
67
  "access": "public"
@@ -71,7 +71,7 @@
71
71
  },
72
72
  "dependencies": {
73
73
  "@ffmpeg-installer/ffmpeg": "^1.1.0",
74
- "@mindexec/remote": "^0.1.18",
74
+ "@mindexec/remote": "^0.1.18",
75
75
  "@openai/codex-sdk": "^0.144.1",
76
76
  "chokidar": "^3.6.0",
77
77
  "cors": "^2.8.5",
@@ -90,62 +90,62 @@
90
90
  "mindexec": "launch-bridge.cjs",
91
91
  "mind-bridge": "launch-bridge.cjs"
92
92
  },
93
- "devDependencies": {
94
- "electron": "43.2.0",
95
- "electron-builder": "26.15.3",
96
- "tree-sitter-wasms": "^0.1.13"
97
- },
98
- "build": {
99
- "appId": "com.mindexec.desktop",
100
- "productName": "MindExec",
101
- "copyright": "Copyright © 2026 lovecrdm77",
102
- "asar": false,
103
- "extraMetadata": {
104
- "main": "electron/main.cjs"
105
- },
106
- "directories": {
107
- "output": "../artifacts/electron"
108
- },
109
- "files": [
110
- "*.js",
111
- "*.cjs",
112
- "*.json",
113
- "electron/main.cjs",
114
- "remote-fast/**/*",
115
- "scripts/**/*",
116
- "tree-sitter-grammars/**/*",
117
- "wwwroot/**/*",
118
- "node_modules/**/*"
119
- ],
120
- "win": {
121
- "icon": "../MindExecution.Web/wwwroot/app-icon-1024.png",
122
- "executableName": "MindExec",
123
- "target": [
124
- {
125
- "target": "nsis",
126
- "arch": [
127
- "x64"
128
- ]
129
- },
130
- {
131
- "target": "portable",
132
- "arch": [
133
- "x64"
134
- ]
135
- }
136
- ]
137
- },
138
- "nsis": {
139
- "artifactName": "MindExec-Setup-${version}-${arch}.${ext}",
140
- "oneClick": false,
141
- "perMachine": false,
142
- "allowToChangeInstallationDirectory": true,
143
- "createDesktopShortcut": true,
144
- "createStartMenuShortcut": true,
145
- "shortcutName": "MindExec"
146
- },
147
- "portable": {
148
- "artifactName": "MindExec-Portable-${version}-${arch}.${ext}"
149
- }
150
- }
151
- }
93
+ "devDependencies": {
94
+ "electron": "43.2.0",
95
+ "electron-builder": "26.15.3",
96
+ "tree-sitter-wasms": "^0.1.13"
97
+ },
98
+ "build": {
99
+ "appId": "com.mindexec.desktop",
100
+ "productName": "MindExec",
101
+ "copyright": "Copyright © 2026 lovecrdm77",
102
+ "asar": false,
103
+ "extraMetadata": {
104
+ "main": "electron/main.cjs"
105
+ },
106
+ "directories": {
107
+ "output": "../artifacts/electron"
108
+ },
109
+ "files": [
110
+ "*.js",
111
+ "*.cjs",
112
+ "*.json",
113
+ "electron/main.cjs",
114
+ "remote-fast/**/*",
115
+ "scripts/**/*",
116
+ "tree-sitter-grammars/**/*",
117
+ "wwwroot/**/*",
118
+ "node_modules/**/*"
119
+ ],
120
+ "win": {
121
+ "icon": "../MindExecution.Web/wwwroot/app-icon-1024.png",
122
+ "executableName": "MindExec",
123
+ "target": [
124
+ {
125
+ "target": "nsis",
126
+ "arch": [
127
+ "x64"
128
+ ]
129
+ },
130
+ {
131
+ "target": "portable",
132
+ "arch": [
133
+ "x64"
134
+ ]
135
+ }
136
+ ]
137
+ },
138
+ "nsis": {
139
+ "artifactName": "MindExec-Setup-${version}-${arch}.${ext}",
140
+ "oneClick": false,
141
+ "perMachine": false,
142
+ "allowToChangeInstallationDirectory": true,
143
+ "createDesktopShortcut": true,
144
+ "createStartMenuShortcut": true,
145
+ "shortcutName": "MindExec"
146
+ },
147
+ "portable": {
148
+ "artifactName": "MindExec-Portable-${version}-${arch}.${ext}"
149
+ }
150
+ }
151
+ }
@@ -950,9 +950,11 @@ try {
950
950
 
951
951
  let cards = bodyView.querySelectorAll('article[data-device-id]');
952
952
  assert.equal(cards.length, connectedCount);
953
- assert.equal(bodyView.querySelector('[data-remote-fleet-match-count="true"]'), null);
954
- assert.equal(bodyView.querySelector('[data-remote-fleet-search="true"]'), null);
955
- assert.equal(bodyView.querySelectorAll('select').length, 0);
953
+ assert.ok(bodyView.querySelector('[data-remote-fleet-match-count="true"]'));
954
+ assert.ok(bodyView.querySelector('[data-remote-fleet-search="true"]'));
955
+ assert.equal(bodyView.querySelectorAll('select').length, 4);
956
+ assert.ok(bodyView.querySelector('[data-remote-fleet-task-composer="visible"]'));
957
+ assert.ok(bodyView.querySelector('[data-remote-fleet-task-input="true"]'));
956
958
  const deviceGrid = bodyView.querySelector('[data-remote-fleet-device-grid="true"]');
957
959
  assert.ok(deviceGrid);
958
960
  assert.match(deviceGrid.style.cssText, /padding:\s*0 4px;/);
@@ -1206,7 +1208,7 @@ try {
1206
1208
  call.methodName === 'AddRemoteFleetDeviceNodeFromJs'
1207
1209
  && call.args[0] === 'remote-fleet-render-smoke'
1208
1210
  && call.args[1] === patchTarget.DeviceId);
1209
- assert.ok(addControlNodeCall, 'double-clicking an MDM tile should create a remote-control canvas node');
1211
+ assert.ok(addControlNodeCall, 'double-clicking a screen tile should create a remote workstation canvas node');
1210
1212
 
1211
1213
  const alternateDevice = devices.find(device =>
1212
1214
  device.Connected === true
@@ -1222,10 +1224,10 @@ try {
1222
1224
  assert.equal(selectedAfterClick?.querySelector('[data-remote-fleet-selected-indicator="true"]'), null);
1223
1225
  const livePanel = bodyView.querySelector('[data-remote-fleet-live-panel="true"]');
1224
1226
  assert.equal(livePanel, null);
1225
- assert.equal(bodyView.querySelector('[data-remote-fleet-action="task-visible"]'), null);
1226
- assert.equal(bodyView.querySelector('[data-remote-fleet-action="task-connected"]'), null);
1227
- assert.equal(bodyView.querySelector('[data-remote-fleet-task-input="true"]'), null);
1228
- assert.equal(bodyView.querySelector('[data-remote-fleet-ai-toggle="true"]'), null);
1227
+ assert.ok(bodyView.querySelector('[data-remote-fleet-action="task-visible"]'));
1228
+ assert.ok(bodyView.querySelector('[data-remote-fleet-action="task-connected"]'));
1229
+ assert.ok(bodyView.querySelector('[data-remote-fleet-task-input="true"]'));
1230
+ assert.ok(bodyView.querySelector('[data-remote-fleet-ai-toggle="true"]'));
1229
1231
  assert.equal(bodyView.textContent.includes('all devices, no paging'), false);
1230
1232
  assert.equal(bodyView.textContent.includes('Host: Inactive'), false);
1231
1233
  assert.equal(bodyView.textContent.includes('No screen'), false);
@@ -1276,14 +1278,14 @@ try {
1276
1278
  assert.equal(bodyView.querySelector('[data-remote-fleet-action="copy-command"]'), null);
1277
1279
  assert.equal(bodyView.querySelector('[data-remote-fleet-action="refresh"]'), null);
1278
1280
  assert.equal(bodyView.querySelector('[data-remote-fleet-auto-toggle="true"]'), null);
1279
- assert.equal(bodyView.textContent.includes('synthetic-render-ai'), false);
1280
- assert.equal(bodyView.textContent.includes('Task timed out waiting for the agent response.'), false);
1281
+ assert.equal(bodyView.textContent.includes('synthetic-render-ai'), true);
1282
+ assert.equal(bodyView.textContent.includes('Task timed out waiting for the agent response.'), true);
1281
1283
  const batchSummary = bodyView.querySelector('[data-remote-fleet-task-batch="true"]');
1282
- assert.equal(batchSummary, null);
1284
+ assert.ok(batchSummary);
1283
1285
  const batchHistory = bodyView.querySelector('[data-remote-fleet-task-history="true"]');
1284
- assert.equal(batchHistory, null);
1286
+ assert.ok(batchHistory);
1285
1287
  const resultPanel = bodyView.querySelector('[data-remote-fleet-task-results="true"]');
1286
- assert.equal(resultPanel, null);
1288
+ assert.ok(resultPanel);
1287
1289
  assert.ok(devices.some(device => /^synthetic-response-/.test(device.LatestTaskResultResponseId)));
1288
1290
  await wait(20);
1289
1291
  const liveStartCalls = dotNetCalls
@@ -1302,7 +1304,7 @@ try {
1302
1304
  assert.ok(diagnostics.fetchCalls.some(call => call.url.includes('/api/status?remoteFrames=ws')));
1303
1305
  assert.ok(diagnostics.webSocketConnections.length >= 1, 'expected MDM render to open Mode 4 Atlas WebSocket');
1304
1306
  assert.ok(atlasConfigure, 'expected MDM render to configure the Mode 4 Atlas WebSocket');
1305
- assert.equal(atlasConfigure.fps, 20);
1307
+ assert.equal(atlasConfigure.fps, 2);
1306
1308
  assert.equal(atlasConfigure.width, 1920);
1307
1309
  assert.equal(atlasConfigure.height, 1080);
1308
1310
  assert.equal(atlasConfigure.tileWidth, 320);
@@ -1318,7 +1320,7 @@ try {
1318
1320
  const feedback = bodyView.querySelector('[data-remote-fleet-task-feedback="true"]');
1319
1321
  assert.ok(feedback);
1320
1322
 
1321
- assert.equal(bodyView.querySelector('[data-remote-fleet-ai-toggle="true"]'), null);
1323
+ assert.ok(bodyView.querySelector('[data-remote-fleet-ai-toggle="true"]'));
1322
1324
  assert.equal(dotNetCalls.some(call =>
1323
1325
  call.methodName === 'DispatchRemoteFleetTaskBatchFromJs'
1324
1326
  || call.methodName === 'DispatchRemoteFleetTaskFromJs'), false);
@@ -1409,12 +1411,12 @@ try {
1409
1411
  && message.type === 'subscribe'
1410
1412
  && message.nodeId === 'remote-device-render-smoke'
1411
1413
  && message.autoStartLive === true
1412
- && message.fps === 30
1413
- && message.mode === 'mode3-h264-hw'
1414
- && message.streamPurpose === 'control'
1414
+ && message.fps === 2
1415
+ && message.mode === 'mode2-lzo'
1416
+ && message.streamPurpose === 'wall'
1415
1417
  && Array.isArray(message.deviceIds)
1416
1418
  && message.deviceIds.includes(focusedDevice.DeviceId));
1417
- assert.ok(deviceControlSubscribe, 'RemoteFleetDevice node should subscribe to 30fps Mode 3 control frames');
1419
+ assert.ok(deviceControlSubscribe, 'Remote workstation should subscribe to a 2fps view-only observation stream');
1418
1420
  const deviceControlWs = diagnostics.webSocketConnections
1419
1421
  .filter(ws => ws.url.includes('/api/remote/frames/ws'))
1420
1422
  .at(-1);
@@ -1469,36 +1471,12 @@ try {
1469
1471
  });
1470
1472
  await wait(50);
1471
1473
  const inputWsSends = diagnostics.webSocketSends
1472
- .filter(send => send.url.includes('/api/remote/input/ws'))
1473
- .map(send => {
1474
- try {
1475
- return JSON.parse(send.payload);
1476
- } catch {
1477
- return null;
1478
- }
1479
- })
1480
- .filter(Boolean);
1481
- assert.ok(inputWsSends.length >= 3, 'RemoteFleetDevice node should send pointer and keyboard input over the input WebSocket');
1482
- const pointerDown = inputWsSends.find(message => message.input?.type === 'pointerDown');
1483
- const keyDown = inputWsSends.find(message => message.input?.type === 'keyDown');
1484
- const keyUp = inputWsSends.find(message => message.input?.type === 'keyUp');
1485
- assert.ok(pointerDown);
1486
- assert.ok(keyDown);
1487
- assert.ok(keyUp);
1488
- assert.equal(pointerDown.nodeId, 'remote-device-render-smoke');
1489
- assert.equal(pointerDown.deviceId, focusedDevice.DeviceId);
1490
- assert.equal(pointerDown.input.button, 'left');
1491
- assert.ok(pointerDown.input.controlLeaseId);
1492
- assert.ok(pointerDown.input.normalizedX >= 0 && pointerDown.input.normalizedX <= 1);
1493
- assert.ok(pointerDown.input.normalizedY >= 0 && pointerDown.input.normalizedY <= 1);
1494
- assert.equal(keyDown.input.key, 'A');
1495
- assert.equal(keyDown.input.code, 'KeyA');
1496
- assert.equal(keyUp.input.key, 'A');
1497
- assert.equal(keyUp.input.code, 'KeyA');
1474
+ .filter(send => send.url.includes('/api/remote/input/ws'));
1475
+ assert.equal(inputWsSends.length, 0, 'Remote workstation must remain view-only and send no pointer or keyboard input');
1498
1476
  assert.equal(
1499
1477
  dotNetCalls.filter(call => call.methodName === 'SendRemoteFleetInputFromJs').length,
1500
1478
  0,
1501
- 'WebSocket input path should not use the slower DotNet input fallback in the happy path');
1479
+ 'View-only workstation must not use the DotNet input fallback');
1502
1480
  assert.ok(deviceBody.querySelector('[data-remote-fleet-action="refresh-device"]'));
1503
1481
  assert.ok(deviceBody.querySelector('[data-remote-fleet-action="task-device"]'));
1504
1482
  assert.ok(deviceBody.textContent.includes('Task timed out waiting for the agent response.'));
@@ -5,7 +5,7 @@
5
5
  const DEBUG = false;
6
6
  const FPS_DEBUG = false;
7
7
  const FRAME_PERF_DEBUG = false;
8
- const MINDMAP_CORE_BUILD_ID = '20260728-camera-render-policy-v865';
8
+ const MINDMAP_CORE_BUILD_ID = '20260801-wheel-dpr-stable-v866';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -6597,13 +6597,13 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
6597
6597
  this._preserveVisibleSetThisFrame = true;
6598
6598
  }
6599
6599
  // ?�▲??[Perf] ?�▲?? _profileSection('pipelineVisibilityPlan');
6600
- const isCameraNavigationActive =
6601
- window.MindMapRenderPlan?.isRendererDprInteractionActive?.(this, {
6600
+ const shouldUseInteractiveCameraDpr =
6601
+ window.MindMapRenderPlan?.shouldUseInteractiveRendererDpr?.(this, {
6602
6602
  isCameraMoving
6603
6603
  }) === true;
6604
6604
  const shouldUseInteractiveDpr =
6605
6605
  isNodeInteracting === true ||
6606
- isCameraNavigationActive ||
6606
+ shouldUseInteractiveCameraDpr ||
6607
6607
  this.isWindowResizing === true;
6608
6608
  this._applyRendererPixelRatio(shouldUseInteractiveDpr);
6609
6609
  _profileSection('pipelinePixelRatio');