@mindexec/cli 0.2.477 → 0.2.478

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 (145) hide show
  1. package/README.md +323 -323
  2. package/codex-model-catalog.js +202 -202
  3. package/codex-runtime.js +1608 -1608
  4. package/desktop-workspace-state.cjs +120 -120
  5. package/electron/main.cjs +517 -517
  6. package/electron/preload.cjs +17 -17
  7. package/electron/recurring-update-owner-smoke.mjs +55 -55
  8. package/electron/recurring-update-owner.cjs +97 -97
  9. package/electron/source-smoke.mjs +108 -108
  10. package/electron/update-feed-resolver.cjs +79 -79
  11. package/electron/update-feed.json +10 -10
  12. package/electron/update-manager-smoke.mjs +146 -146
  13. package/electron/update-manager.cjs +297 -297
  14. package/electron/windows-package-smoke.mjs +156 -156
  15. package/launch-bridge.cjs +236 -236
  16. package/lzo1x.js +110 -110
  17. package/mode4-atlas-worker.js +440 -440
  18. package/mode4-atlas.js +130 -130
  19. package/package.json +1 -1
  20. package/port-guard.cjs +285 -285
  21. package/remote-fast/osx-arm64/MacScreenCaptureKitH264.swift +339 -339
  22. package/remote-fast/osx-arm64/MacSystemAudioCapture.swift +214 -214
  23. package/remote-fast/osx-arm64/UnixRawCaptureHelper.mjs +80 -80
  24. package/remote-fast/osx-arm64/livedesk-raw-capture-resampler.mjs +73 -73
  25. package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
  26. package/remote-fast/osx-x64/MacScreenCaptureKitH264.swift +339 -339
  27. package/remote-fast/osx-x64/MacSystemAudioCapture.swift +214 -214
  28. package/remote-fast/osx-x64/UnixRawCaptureHelper.mjs +80 -80
  29. package/remote-fast/osx-x64/livedesk-raw-capture-resampler.mjs +73 -73
  30. package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
  31. package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
  32. package/remote-hub.js +3698 -3698
  33. package/scripts/auth-session-smoke.mjs +262 -262
  34. package/scripts/board-render-ownership-smoke.mjs +85 -85
  35. package/scripts/codex-model-catalog-smoke.mjs +150 -150
  36. package/scripts/codex-runtime-home-smoke.mjs +58 -58
  37. package/scripts/codex-sdk-image-live-smoke.mjs +43 -43
  38. package/scripts/codex-sdk-image-runtime-smoke.mjs +122 -122
  39. package/scripts/codex-sdk-runtime-smoke.mjs +89 -89
  40. package/scripts/desktop-update-publisher-smoke.mjs +89 -89
  41. package/scripts/desktop-update-worker-smoke.mjs +72 -72
  42. package/scripts/desktop-workspace-state-smoke.mjs +81 -81
  43. package/scripts/drive-installed-update-smoke.mjs +67 -67
  44. package/scripts/npm-fresh-install-smoke.mjs +216 -216
  45. package/scripts/publish-mindexec-desktop-updates.mjs +224 -224
  46. package/scripts/remote-agent-managed-smoke.mjs +318 -318
  47. package/scripts/remote-agent-package-smoke.mjs +64 -64
  48. package/scripts/remote-agent-ws-smoke.mjs +269 -269
  49. package/scripts/remote-fast-live-rate-smoke.mjs +343 -343
  50. package/scripts/remote-fast-mdm-browser-smoke.mjs +453 -453
  51. package/scripts/remote-fleet-render-smoke.mjs +1350 -1350
  52. package/scripts/remote-frame-ws-smoke.mjs +234 -234
  53. package/scripts/remote-http-smoke.mjs +592 -592
  54. package/scripts/remote-hub-identity-smoke.mjs +146 -146
  55. package/scripts/remote-hub-scale-smoke.mjs +124 -124
  56. package/scripts/remote-hub-smoke.mjs +699 -699
  57. package/scripts/remote-input-ws-smoke.mjs +263 -263
  58. package/scripts/remote-registry-follower-smoke.mjs +815 -815
  59. package/scripts/setup-tree-sitter-grammars.mjs +59 -59
  60. package/server.js +7690 -7690
  61. package/start-bridge.bat +32 -32
  62. package/start-bridge.sh +81 -81
  63. package/wwwroot/_content/MindExecution.Plugins.Admin/css/admin-dashboard.css +546 -546
  64. package/wwwroot/_content/MindExecution.Plugins.YouTube/css/youtube-search.css +251 -251
  65. package/wwwroot/_content/MindExecution.Shared/css/app.css +1 -1
  66. package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +3789 -3789
  67. package/wwwroot/_content/MindExecution.Shared/js/agent-visualization.js +27 -27
  68. package/wwwroot/_content/MindExecution.Shared/js/background-themes.js +1449 -1449
  69. package/wwwroot/_content/MindExecution.Shared/js/code-master.js +8316 -8316
  70. package/wwwroot/_content/MindExecution.Shared/js/file-system-helper.js +338 -338
  71. package/wwwroot/_content/MindExecution.Shared/js/marked.min.js +69 -69
  72. package/wwwroot/_content/MindExecution.Shared/js/mind-map-animated-image-preview.js +270 -270
  73. package/wwwroot/_content/MindExecution.Shared/js/mind-map-automation-edge-motion.js +170 -170
  74. package/wwwroot/_content/MindExecution.Shared/js/mind-map-board-render-ownership.js +81 -81
  75. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +10506 -10506
  76. package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-hotpath.js +902 -902
  77. package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +24637 -24637
  78. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dev-guards.js +325 -325
  79. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js +1491 -1491
  80. package/wwwroot/_content/MindExecution.Shared/js/mind-map-glow-shader.js +70 -70
  81. package/wwwroot/_content/MindExecution.Shared/js/mind-map-image-policy.js +218 -218
  82. package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +7065 -7065
  83. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js +160 -160
  84. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +9956 -9956
  85. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-video-placeholder.js +107 -107
  86. package/wwwroot/_content/MindExecution.Shared/js/mind-map-logic-workers.js +1004 -1004
  87. package/wwwroot/_content/MindExecution.Shared/js/mind-map-menu-manager.js +1351 -1351
  88. package/wwwroot/_content/MindExecution.Shared/js/mind-map-multi-select.js +865 -865
  89. package/wwwroot/_content/MindExecution.Shared/js/mind-map-node-search-worker.js +554 -554
  90. package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +4744 -4744
  91. package/wwwroot/_content/MindExecution.Shared/js/mind-map-normal-boundary-optimizer.js +624 -624
  92. package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js +241 -241
  93. package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +2290 -2290
  94. package/wwwroot/_content/MindExecution.Shared/js/mind-map-remote-codecs.js +202 -202
  95. package/wwwroot/_content/MindExecution.Shared/js/mind-map-render-plan.js +1971 -1971
  96. package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-lod-system.js +93 -93
  97. package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js +2391 -2391
  98. package/wwwroot/_content/MindExecution.Shared/js/mind-map-video-playback-controls.js +95 -95
  99. package/wwwroot/_content/MindExecution.Shared/js/mind-map-visibility-worker.js +895 -895
  100. package/wwwroot/_content/MindExecution.Shared/js/mindmap-toolbar.js +636 -636
  101. package/wwwroot/_content/MindExecution.Shared/js/native-drop-handler.js +45 -45
  102. package/wwwroot/_content/MindExecution.Shared/js/plan-master.js +117 -117
  103. package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +114 -114
  104. package/wwwroot/_content/MindExecution.Shared/js/texture-worker-manager.js +10 -10
  105. package/wwwroot/_content/MindExecution.Shared/js/three.min.js +6 -6
  106. package/wwwroot/_content/MindExecution.Shared/js/token-manager.js +7 -7
  107. package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js +6 -6
  108. package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js.map +2 -2
  109. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/css/all.min.css +8 -8
  110. package/wwwroot/_content/MindExecution.Shared/models/vocab.txt +30522 -30522
  111. package/wwwroot/_framework/{Google.Protobuf.9h59ukbel7.dll → Google.Protobuf.33g2gb5is0.dll} +0 -0
  112. package/wwwroot/_framework/{MindExecution.Core.ty1xewqp36.dll → MindExecution.Core.z100xo4mg0.dll} +0 -0
  113. package/wwwroot/_framework/{MindExecution.Kernel.h7rqjoo69o.dll → MindExecution.Kernel.i9cldrx8yc.dll} +0 -0
  114. package/wwwroot/_framework/{MindExecution.Plugins.Admin.wrfrcvhjde.dll → MindExecution.Plugins.Admin.48lzqddb0a.dll} +0 -0
  115. package/wwwroot/_framework/{MindExecution.Plugins.Business.csbcyjurdh.dll → MindExecution.Plugins.Business.7m8u1q142p.dll} +0 -0
  116. package/wwwroot/_framework/{MindExecution.Plugins.Concept.buomiysqjn.dll → MindExecution.Plugins.Concept.cl5wmr53od.dll} +0 -0
  117. package/wwwroot/_framework/{MindExecution.Plugins.Directory.7k00i2v769.dll → MindExecution.Plugins.Directory.slipi39041.dll} +0 -0
  118. package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.85i5ocraro.dll → MindExecution.Plugins.PlanMaster.qfge05l671.dll} +0 -0
  119. package/wwwroot/_framework/{MindExecution.Plugins.YouTube.nbolrfakte.dll → MindExecution.Plugins.YouTube.tn7v29ut77.dll} +0 -0
  120. package/wwwroot/_framework/{MindExecution.Shared.nqh4porv7x.dll → MindExecution.Shared.rjqlf0umjn.dll} +0 -0
  121. package/wwwroot/_framework/{MindExecution.Web.211q3bf4mr.dll → MindExecution.Web.rwawrxxk38.dll} +0 -0
  122. package/wwwroot/_framework/blazor.boot.json +23 -23
  123. package/wwwroot/_headers +40 -40
  124. package/wwwroot/_redirects +1 -1
  125. package/wwwroot/index.html +772 -772
  126. package/wwwroot/js/marketing-tool.js +180 -180
  127. package/wwwroot/manifest.webmanifest +23 -23
  128. package/wwwroot/service-worker-assets.js +78 -106
  129. package/wwwroot/service-worker.js +33 -33
  130. package/tree-sitter-grammars/README.md +0 -18
  131. package/tree-sitter-grammars/tree-sitter-c_sharp.wasm +0 -0
  132. package/tree-sitter-grammars/tree-sitter-go.wasm +0 -0
  133. package/tree-sitter-grammars/tree-sitter-java.wasm +0 -0
  134. package/tree-sitter-grammars/tree-sitter-javascript.wasm +0 -0
  135. package/tree-sitter-grammars/tree-sitter-python.wasm +0 -0
  136. package/tree-sitter-grammars/tree-sitter-rust.wasm +0 -0
  137. package/tree-sitter-grammars/tree-sitter-tsx.wasm +0 -0
  138. package/tree-sitter-grammars/tree-sitter-typescript.wasm +0 -0
  139. package/wwwroot/_content/MindExecution.Plugins.Directory/background.png +0 -0
  140. package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Bold.ttf +0 -0
  141. package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Regular.ttf +0 -0
  142. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js.backup +0 -1059
  143. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js.bak +0 -434
  144. package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js.backup +0 -372
  145. package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js.backup +0 -1258
package/mode4-atlas.js CHANGED
@@ -1,130 +1,130 @@
1
- import { fork } from 'node:child_process';
2
- import { fileURLToPath } from 'node:url';
3
-
4
- const workerPath = fileURLToPath(new URL('./mode4-atlas-worker.js', import.meta.url));
5
-
6
- export class Mode4AtlasSession {
7
- constructor(options = {}) {
8
- this.onFrame = typeof options.onFrame === 'function' ? options.onFrame : () => {};
9
- this.onLayout = typeof options.onLayout === 'function' ? options.onLayout : () => {};
10
- this.onStatus = typeof options.onStatus === 'function' ? options.onStatus : () => {};
11
- this.deviceIds = [];
12
- this.deviceSet = new Set();
13
- this.config = null;
14
- this.closed = false;
15
- this.worker = null;
16
- this.restartTimer = null;
17
- this.pendingFrames = new Map();
18
- this.frameSendsInFlight = new Set();
19
- this.workerGeneration = 0;
20
- this.startWorker();
21
- }
22
-
23
- startWorker() {
24
- if (this.closed || this.worker) return;
25
- const workerGeneration = ++this.workerGeneration;
26
- const worker = fork(workerPath, [], {
27
- env: { ...process.env },
28
- stdio: ['ignore', 'ignore', 'ignore', 'ipc'],
29
- serialization: 'advanced',
30
- windowsHide: true
31
- });
32
- this.worker = worker;
33
- worker.on('message', message => {
34
- if (message?.type === 'frame' && message.metadata && message.payload) {
35
- this.onFrame({
36
- metadata: { ...message.metadata, workerGeneration },
37
- payload: Buffer.from(message.payload)
38
- });
39
- } else if (message?.type === 'layout') {
40
- this.onLayout(message);
41
- } else if (message?.type === 'status' || message?.type === 'log') {
42
- this.onStatus(message);
43
- }
44
- });
45
- worker.on('exit', code => {
46
- if (this.worker === worker) this.worker = null;
47
- this.frameSendsInFlight.clear();
48
- if (this.closed) return;
49
- this.onStatus({ type: 'status', state: 'worker-restart', code });
50
- clearTimeout(this.restartTimer);
51
- this.restartTimer = setTimeout(() => {
52
- this.startWorker();
53
- if (this.config) this.worker?.send({ type: 'configure', ...this.config });
54
- }, 750);
55
- });
56
- worker.on('error', error => this.onStatus({ type: 'status', state: 'worker-error', error: error.message }));
57
- if (this.config) {
58
- worker.send({ type: 'configure', ...this.config }, () => {
59
- for (const deviceId of this.pendingFrames.keys()) this.pumpDeviceFrame(deviceId);
60
- });
61
- }
62
- }
63
-
64
- configure(options = {}) {
65
- this.deviceIds = [...new Set((Array.isArray(options.deviceIds) ? options.deviceIds : [])
66
- .map(value => String(value || '').trim()).filter(Boolean))].slice(0, 100);
67
- this.deviceSet = new Set(this.deviceIds);
68
- this.pendingFrames = new Map([...this.pendingFrames].filter(([deviceId]) => this.deviceSet.has(deviceId)));
69
- this.config = {
70
- deviceIds: this.deviceIds,
71
- width: Number(options.width || 1920),
72
- height: Number(options.height || 1080),
73
- tileWidth: Number(options.tileWidth || 320),
74
- tileHeight: Number(options.tileHeight || 180),
75
- fps: Number(options.fps || 20)
76
- };
77
- this.worker?.send({ type: 'configure', ...this.config });
78
- }
79
-
80
- pumpDeviceFrame(deviceId) {
81
- if (this.closed || !this.worker || this.frameSendsInFlight.has(deviceId)) return;
82
- const message = this.pendingFrames.get(deviceId);
83
- if (!message) return;
84
- this.pendingFrames.delete(deviceId);
85
- this.frameSendsInFlight.add(deviceId);
86
- try {
87
- this.worker.send(message, error => {
88
- this.frameSendsInFlight.delete(deviceId);
89
- if (error && !this.closed) {
90
- this.onStatus({ type: 'log', level: 'warn', message: `Mode 4 input ${deviceId}: ${error.message}` });
91
- }
92
- this.pumpDeviceFrame(deviceId);
93
- });
94
- } catch (error) {
95
- this.frameSendsInFlight.delete(deviceId);
96
- this.onStatus({ type: 'log', level: 'warn', message: `Mode 4 input ${deviceId}: ${error.message}` });
97
- }
98
- }
99
-
100
- ingest(frameEvent) {
101
- if (this.closed || !this.worker) return;
102
- const frame = frameEvent?.frame || {};
103
- const deviceId = String(frameEvent?.deviceId || frame.deviceId || '').trim();
104
- const mode = String(frame.frameMode || frame.mode || '').toLowerCase();
105
- if (!this.deviceSet.has(deviceId) || mode !== 'mode2-lzo' || !Buffer.isBuffer(frameEvent?.payload)) return;
106
- this.pendingFrames.set(deviceId, {
107
- type: 'frame',
108
- deviceId,
109
- frameSeq: Number(frame.frameSeq || 0),
110
- width: Number(frame.width || 0),
111
- height: Number(frame.height || 0),
112
- uncompressedByteLength: Number(frame.uncompressedByteLength || 0),
113
- payload: frameEvent.payload
114
- });
115
- this.pumpDeviceFrame(deviceId);
116
- }
117
-
118
- close() {
119
- if (this.closed) return;
120
- this.closed = true;
121
- clearTimeout(this.restartTimer);
122
- this.pendingFrames.clear();
123
- this.frameSendsInFlight.clear();
124
- const worker = this.worker;
125
- this.worker = null;
126
- try { worker?.send({ type: 'close' }); } catch {}
127
- setTimeout(() => { try { worker?.kill(); } catch {} }, 400).unref?.();
128
- }
129
- }
130
-
1
+ import { fork } from 'node:child_process';
2
+ import { fileURLToPath } from 'node:url';
3
+
4
+ const workerPath = fileURLToPath(new URL('./mode4-atlas-worker.js', import.meta.url));
5
+
6
+ export class Mode4AtlasSession {
7
+ constructor(options = {}) {
8
+ this.onFrame = typeof options.onFrame === 'function' ? options.onFrame : () => {};
9
+ this.onLayout = typeof options.onLayout === 'function' ? options.onLayout : () => {};
10
+ this.onStatus = typeof options.onStatus === 'function' ? options.onStatus : () => {};
11
+ this.deviceIds = [];
12
+ this.deviceSet = new Set();
13
+ this.config = null;
14
+ this.closed = false;
15
+ this.worker = null;
16
+ this.restartTimer = null;
17
+ this.pendingFrames = new Map();
18
+ this.frameSendsInFlight = new Set();
19
+ this.workerGeneration = 0;
20
+ this.startWorker();
21
+ }
22
+
23
+ startWorker() {
24
+ if (this.closed || this.worker) return;
25
+ const workerGeneration = ++this.workerGeneration;
26
+ const worker = fork(workerPath, [], {
27
+ env: { ...process.env },
28
+ stdio: ['ignore', 'ignore', 'ignore', 'ipc'],
29
+ serialization: 'advanced',
30
+ windowsHide: true
31
+ });
32
+ this.worker = worker;
33
+ worker.on('message', message => {
34
+ if (message?.type === 'frame' && message.metadata && message.payload) {
35
+ this.onFrame({
36
+ metadata: { ...message.metadata, workerGeneration },
37
+ payload: Buffer.from(message.payload)
38
+ });
39
+ } else if (message?.type === 'layout') {
40
+ this.onLayout(message);
41
+ } else if (message?.type === 'status' || message?.type === 'log') {
42
+ this.onStatus(message);
43
+ }
44
+ });
45
+ worker.on('exit', code => {
46
+ if (this.worker === worker) this.worker = null;
47
+ this.frameSendsInFlight.clear();
48
+ if (this.closed) return;
49
+ this.onStatus({ type: 'status', state: 'worker-restart', code });
50
+ clearTimeout(this.restartTimer);
51
+ this.restartTimer = setTimeout(() => {
52
+ this.startWorker();
53
+ if (this.config) this.worker?.send({ type: 'configure', ...this.config });
54
+ }, 750);
55
+ });
56
+ worker.on('error', error => this.onStatus({ type: 'status', state: 'worker-error', error: error.message }));
57
+ if (this.config) {
58
+ worker.send({ type: 'configure', ...this.config }, () => {
59
+ for (const deviceId of this.pendingFrames.keys()) this.pumpDeviceFrame(deviceId);
60
+ });
61
+ }
62
+ }
63
+
64
+ configure(options = {}) {
65
+ this.deviceIds = [...new Set((Array.isArray(options.deviceIds) ? options.deviceIds : [])
66
+ .map(value => String(value || '').trim()).filter(Boolean))].slice(0, 100);
67
+ this.deviceSet = new Set(this.deviceIds);
68
+ this.pendingFrames = new Map([...this.pendingFrames].filter(([deviceId]) => this.deviceSet.has(deviceId)));
69
+ this.config = {
70
+ deviceIds: this.deviceIds,
71
+ width: Number(options.width || 1920),
72
+ height: Number(options.height || 1080),
73
+ tileWidth: Number(options.tileWidth || 320),
74
+ tileHeight: Number(options.tileHeight || 180),
75
+ fps: Number(options.fps || 20)
76
+ };
77
+ this.worker?.send({ type: 'configure', ...this.config });
78
+ }
79
+
80
+ pumpDeviceFrame(deviceId) {
81
+ if (this.closed || !this.worker || this.frameSendsInFlight.has(deviceId)) return;
82
+ const message = this.pendingFrames.get(deviceId);
83
+ if (!message) return;
84
+ this.pendingFrames.delete(deviceId);
85
+ this.frameSendsInFlight.add(deviceId);
86
+ try {
87
+ this.worker.send(message, error => {
88
+ this.frameSendsInFlight.delete(deviceId);
89
+ if (error && !this.closed) {
90
+ this.onStatus({ type: 'log', level: 'warn', message: `Mode 4 input ${deviceId}: ${error.message}` });
91
+ }
92
+ this.pumpDeviceFrame(deviceId);
93
+ });
94
+ } catch (error) {
95
+ this.frameSendsInFlight.delete(deviceId);
96
+ this.onStatus({ type: 'log', level: 'warn', message: `Mode 4 input ${deviceId}: ${error.message}` });
97
+ }
98
+ }
99
+
100
+ ingest(frameEvent) {
101
+ if (this.closed || !this.worker) return;
102
+ const frame = frameEvent?.frame || {};
103
+ const deviceId = String(frameEvent?.deviceId || frame.deviceId || '').trim();
104
+ const mode = String(frame.frameMode || frame.mode || '').toLowerCase();
105
+ if (!this.deviceSet.has(deviceId) || mode !== 'mode2-lzo' || !Buffer.isBuffer(frameEvent?.payload)) return;
106
+ this.pendingFrames.set(deviceId, {
107
+ type: 'frame',
108
+ deviceId,
109
+ frameSeq: Number(frame.frameSeq || 0),
110
+ width: Number(frame.width || 0),
111
+ height: Number(frame.height || 0),
112
+ uncompressedByteLength: Number(frame.uncompressedByteLength || 0),
113
+ payload: frameEvent.payload
114
+ });
115
+ this.pumpDeviceFrame(deviceId);
116
+ }
117
+
118
+ close() {
119
+ if (this.closed) return;
120
+ this.closed = true;
121
+ clearTimeout(this.restartTimer);
122
+ this.pendingFrames.clear();
123
+ this.frameSendsInFlight.clear();
124
+ const worker = this.worker;
125
+ this.worker = null;
126
+ try { worker?.send({ type: 'close' }); } catch {}
127
+ setTimeout(() => { try { worker?.kill(); } catch {} }, 400).unref?.();
128
+ }
129
+ }
130
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.477",
3
+ "version": "0.2.478",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",