@mindexec/cli 0.2.438 → 0.2.439

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.438",
3
+ "version": "0.2.439",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -106,12 +106,13 @@ function startFakeSupabase(getTarget, setTarget = null) {
106
106
  req.on('end', () => resolve(body));
107
107
  });
108
108
  const parsed = new URL(req.url || '/', 'http://127.0.0.1');
109
- requests.push({
109
+ const requestRecord = {
110
110
  method: req.method,
111
111
  pathname: parsed.pathname,
112
112
  authorization: req.headers.authorization || '',
113
113
  apikey: req.headers.apikey || ''
114
- });
114
+ };
115
+ requests.push(requestRecord);
115
116
 
116
117
  if (req.method === 'GET' && parsed.pathname === '/rest/v1/remote_host_targets') {
117
118
  assertRegistryAuth(req);
@@ -127,7 +128,7 @@ function startFakeSupabase(getTarget, setTarget = null) {
127
128
  if (req.method === 'POST' && parsed.pathname === '/rest/v1/rpc/set_remote_host_target') {
128
129
  assertRegistryAuth(req);
129
130
  const body = JSON.parse(await readBody() || '{}');
130
- requests[requests.length - 1].body = body;
131
+ requestRecord.body = body;
131
132
  const now = Date.now();
132
133
  const existing = getTarget();
133
134
  const sameLease = existing
@@ -24229,7 +24229,6 @@
24229
24229
  return css3dObj;
24230
24230
  }
24231
24231
 
24232
- // ▼▼▼ [New] Sync CSS3D DOM content from model ▼▼▼
24233
24232
  function syncCss3dContent(nodeModel, cssObject) {
24234
24233
  if (!nodeModel || !cssObject || !cssObject.element) return;
24235
24234
  const nodeId = String(getNodeId(nodeModel) || '').trim();
@@ -24319,9 +24318,7 @@
24319
24318
  restoreCss3dMediaOverlayState(nodeModel, cssObject);
24320
24319
  }
24321
24320
  let content = getPreferredCssMediaSource(nodeModel, contentTypeLower)
24322
- || nodeModel.response
24323
- || nodeModel.Response
24324
- || '';
24321
+ || (nodeModel.response ?? nodeModel.Response ?? '');
24325
24322
  const isLoading = !!(nodeModel.isLoading ?? nodeModel.IsLoading ?? false);
24326
24323
  let hasContent = !!(`${content}`.trim());
24327
24324
  const displayPrompt = getDisplayPrompt(nodeModel, prompt);
@@ -24594,23 +24591,26 @@
24594
24591
  return;
24595
24592
  }
24596
24593
 
24597
- // 2. Handle Textarea (Note Input)
24598
- // Prefer existing textarea content if model is empty
24594
+ const responseEl = el.querySelector(`[id^="node-response-"]`) || el.querySelector('.node-response');
24595
+ const ownsInlineEditor = !!responseEl?.querySelector('.note-textarea, [id^="node-textarea-"]');
24596
+ const hasPendingMarkdownContent = Object.prototype.hasOwnProperty.call(cssObject.userData, 'pendingMarkdownContent');
24597
+ if (!ownsInlineEditor && hasPendingMarkdownContent) {
24598
+ content = String(cssObject.userData.pendingMarkdownContent ?? '');
24599
+ hasContent = !!content.trim();
24600
+ delete cssObject.userData.pendingMarkdownContent;
24601
+ }
24599
24602
  const textarea = el.querySelector('textarea');
24600
- if (!content && textarea?.value) {
24603
+ if (!ownsInlineEditor && !content && textarea?.value) {
24601
24604
  content = textarea.value;
24602
24605
  hasContent = !!(`${content}`.trim());
24603
24606
  }
24604
-
24605
- // Update textarea (note type) only when we have content
24606
- if (textarea && content && textarea.value !== content) {
24607
- textarea.value = content;
24608
- }
24609
-
24610
- // 3. Handle Markdown/Text Output
24611
- const responseEl = el.querySelector(`[id^="node-response-"]`) || el.querySelector('.node-response');
24607
+
24608
+ if (!ownsInlineEditor && textarea && content && textarea.value !== content) {
24609
+ textarea.value = content;
24610
+ }
24611
+
24612
24612
  const existingResponseSource = String(responseEl?.dataset?.src || '');
24613
- if (!content && existingResponseSource) {
24613
+ if (!ownsInlineEditor && !hasPendingMarkdownContent && !content && existingResponseSource) {
24614
24614
  content = existingResponseSource;
24615
24615
  hasContent = !!(`${content}`.trim());
24616
24616
  }
@@ -24619,7 +24619,9 @@
24619
24619
  const isCodeNode = contentTypeLower === 'code';
24620
24620
  const isCsvTableNode = contentTypeLower === CSV_TABLE_CONTENT_TYPE;
24621
24621
 
24622
- if (isCsvTableNode) {
24622
+ if (ownsInlineEditor) {
24623
+ cssObject.userData.pendingMarkdownContent = content;
24624
+ } else if (isCsvTableNode) {
24623
24625
  if (!responseEl.classList.contains('csv-table-scroll')) {
24624
24626
  responseEl.className = 'node-response csv-table-scroll';
24625
24627
  }
@@ -24629,13 +24631,13 @@
24629
24631
  } else if (isCodeNode) {
24630
24632
  renderCodeBodyContent(responseEl, content);
24631
24633
  } else {
24632
- // Unified Markdown Rendering with Caching
24633
- const lastContent = cssObject.userData.lastMarkdownContent;
24634
-
24635
- // Preserve existing server-rendered HTML on first sync (avoid style shifts)
24634
+ const lastContent = cssObject.userData.lastMarkdownContent;
24635
+
24636
24636
  if (lastContent === undefined && responseEl.innerHTML && content && existingResponseSource === content) {
24637
+ delete cssObject.userData.pendingMarkdownContent;
24637
24638
  cssObject.userData.lastMarkdownContent = content;
24638
24639
  } else if (lastContent !== content) {
24640
+ delete cssObject.userData.pendingMarkdownContent;
24639
24641
  const cachedHtml = getCachedMarkdownHtml(nodeModel, content);
24640
24642
  if (cachedHtml) {
24641
24643
  if (responseEl.innerHTML !== cachedHtml) {
@@ -24662,22 +24664,13 @@
24662
24664
  bindInlineEditableNodeCanvasNavigation(inlineEditableRoot, nodeModel, `${contentTypeLower}-inline-editable`);
24663
24665
  }
24664
24666
 
24665
- // Hide loading indicator if present
24666
24667
  const loadingEl = el.querySelector(`[id^="node-loading-"]`);
24667
24668
  if (loadingEl) {
24668
24669
  renderNodeLoadingRow(loadingEl, nodeModel, contentTypeLower, isLoading, hasContent);
24669
24670
  }
24670
24671
  renderBusinessAutomationChrome(resolveBusinessAutomationChromeContainer(el), nodeModel);
24671
24672
  }
24672
- // ▲▲▲ [New] ▲▲▲
24673
-
24674
- // ▲▲▲ [New] ▲▲▲
24675
-
24676
- // ▼▼▼ [New] Update loop for synchronizing CSS3D positions with WebGL ▼▼▼
24677
- // Fixes the issue where CSS3D nodes "jump" or detach from their Glow/WebGL counterparts
24678
- // during deep zoom or camera movement due to matrix calculation timing discrepancies.
24679
-
24680
- // Reusable objects for Frustum Culling (avoid GC)
24673
+ // Reusable objects for Frustum Culling (avoid GC)
24681
24674
  const _frustum = new THREE.Frustum();
24682
24675
  const _projScreenMatrix = new THREE.Matrix4();
24683
24676
  const _worldPos = new THREE.Vector3();
@@ -7628,6 +7628,7 @@ window.MindMapInteractions = (function () {
7628
7628
  if (didChange) {
7629
7629
  // Update Model
7630
7630
  nodeEntry.model.response = newValue;
7631
+ delete nodeEntry.cssObject?.userData?.pendingMarkdownContent;
7631
7632
  // Update Texture Cache Info
7632
7633
  if (window.MindMapNodes && window.MindMapNodes.pendingNodeUpdates) {
7633
7634
  window.MindMapNodes.pendingNodeUpdates.set(nodeEntry.model.id, {
@@ -7676,7 +7677,7 @@ window.MindMapInteractions = (function () {
7676
7677
  responseDiv.style.scrollbarGutter = previousResponseStyle.scrollbarGutter;
7677
7678
  // ▲▲▲ [Fix] ▲▲▲
7678
7679
 
7679
- if (didChange && window.MindMapCss3DManager?.syncCss3dContent) {
7680
+ if (window.MindMapCss3DManager?.syncCss3dContent) {
7680
7681
  window.MindMapCss3DManager.syncCss3dContent(nodeEntry.model, nodeEntry.cssObject);
7681
7682
  }
7682
7683
 
@@ -579,7 +579,7 @@
579
579
  }
580
580
 
581
581
  const base = '_content/MindExecution.Shared/js/';
582
- const scriptVersion = '20260713-cursor-codex-catalog-v933';
582
+ const scriptVersion = '20260713-ai-stream-edit-ownership-v934';
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": "skSGAAoe",
2
+ "version": "+woAgnNO",
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-KLJWPlXi2Zh9qNcSZCFtU6xgzc79UIPz2MPCVizCL28=",
89
+ "hash": "sha256-dr+i09+KUFx+ddmSDqilzqJD0FDVye29n24Xz+YY1WU=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -106,7 +106,7 @@
106
106
  "url": "_content/MindExecution.Shared/js/mind-map-glow-shader.js"
107
107
  },
108
108
  {
109
- "hash": "sha256-nl8vYaz/QSNryxyzuaeEyQewlPRL25ERqb/vuZSxWrY=",
109
+ "hash": "sha256-60RAF7CCMbT2wOwnimQMNs2QsRzd8m2Vnx9yeMLDG98=",
110
110
  "url": "_content/MindExecution.Shared/js/mind-map-interactions.js"
111
111
  },
112
112
  {
@@ -830,7 +830,7 @@
830
830
  "url": "icon-512.png"
831
831
  },
832
832
  {
833
- "hash": "sha256-k4rHBfZbVwgAQvynTUrp2syVhaEZk19TtPsXKDxzfVI=",
833
+ "hash": "sha256-x3feeu4dFQjGF+xdT9qMumctaRJpYoC1pplyiuUZyzU=",
834
834
  "url": "index.html"
835
835
  },
836
836
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: skSGAAoe */
1
+ /* Manifest version: +woAgnNO */
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