@nine-lab/nine-mu 0.1.343 → 0.1.344

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/dist/nine-mu.js CHANGED
@@ -9,7 +9,7 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
9
9
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
10
10
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
11
11
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
12
- var _owner, _collectedFiles, _NotificationHandler_instances, handleLoggingMessage_fn, _collectModifySource, _openDiffPopup, _openRouteDiffPopup, _generateSource, _generateMenu, _mcpClient, _onAction, _onStatus, _onMessage, _owner2, _routeUrl, _chatHistory, _notiHandler, _NineChatManager_instances, connect_fn, updateStatus_fn, callTool_fn, _getSourcePath, _service, _packageName, _routesPath, _connectorUrl, _manager, _config, _$nineChatMessage, _NineChat_instances, initInteractions_fn, initActions_fn, render_fn, _sourceGenHandler, _asisEditorView, _tobeEditorView, _asisEditorEl, _tobeEditorEl, _isDirty, _initialAsisSrc, _initialTobeSrc, _languageCompartment, _isScrollSyncActive, _initCodeMirror, _checkDirtyState, _setupScrollSync, _applyDiffDecorations, _dialog, _tabContainer, _fileList, _host, _NineDiffPopup_instances, renderScaffolding_fn, handleConfirmAll_fn, handleCancel_fn, _dialog2, _diffView, _asisBackup, _host2, _NineMenuDiffPopup_instances, render_fn2, handleConfirm_fn, handleCancel_fn2, _message, _data, _unique, _init, _message2, _init2, _progressData, _progressElements, _animationIntervals, _ProgressMessage_instances, updateCurrentActiveProgress_fn, renderProgress_fn, updateProgressItemVisuals_fn, startAnimation_fn, updateProgressItem_fn, _renderer, _init3, _lastPath, _hasError, _cssPath, _oldOnError, _ExceptionHook_instances, setupGlobalSniffer_fn, _renderer2, injectShadowStylesheet_fn, _handleRuntimeError, _handlePromiseError, _handleLocationChange, _sendToAiAction, renderError_fn;
12
+ var _owner, _collectedFiles, _NotificationHandler_instances, handleLoggingMessage_fn, _collectModifySource, _openDiffPopup, _openRouteDiffPopup, _generateSource, _generateMenu, _mcpClient, _onAction, _onStatus, _onMessage, _owner2, _routeUrl, _chatHistory, _notiHandler, _NineChatManager_instances, connect_fn, updateStatus_fn, callTool_fn, _getSourcePath, _service, _packageName, _routesPath, _connectorUrl, _manager, _config, _$nineChatMessage, _NineChat_instances, initInteractions_fn, initActions_fn, render_fn, _sourceGenHandler, _asisEditorView, _tobeEditorView, _asisEditorEl, _tobeEditorEl, _isDirty, _initialAsisSrc, _initialTobeSrc, _languageCompartment, _isScrollSyncActive, _initCodeMirror, _checkDirtyState, _setupScrollSync, _applyDiffDecorations, _dialog, _tabContainer, _fileList, _host, _NineDiffPopup_instances, renderScaffolding_fn, handleConfirmAll_fn, handleCancel_fn, _dialog2, _diffView, _asisBackup, _host2, _NineMenuDiffPopup_instances, render_fn2, handleConfirm_fn, handleCancel_fn2, _message, _data, _unique, _init, _message2, _init2, _progressData, _progressElements, _animationIntervals, _ProgressMessage_instances, updateCurrentActiveProgress_fn, renderProgress_fn, updateProgressItemVisuals_fn, startAnimation_fn, updateProgressItem_fn, _renderer, _init3, _lastPath, _hasError, _cssPath, _oldOnError, _ExceptionHook_instances, setupGlobalSniffer_fn, _renderer2, injectShadowStylesheet_fn, _handleRuntimeError, _handlePromiseError, _handleLocationChange, removeExternalOverlay_fn, _sendToAiAction, renderError_fn;
13
13
  import { trace as trace$1, api, nine as nine$1 } from "@nine-lab/nine-util";
14
14
  class Trace extends trace$1.constructor {
15
15
  constructor() {
@@ -17537,7 +17537,7 @@ render_fn = function() {
17537
17537
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
17538
17538
  this.shadowRoot.innerHTML = `
17539
17539
  <style>
17540
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.342"}/dist/css/nine-mu.css";
17540
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.343"}/dist/css/nine-mu.css";
17541
17541
  ${customImport}
17542
17542
  </style>
17543
17543
  <div class="wrapper">
@@ -43787,7 +43787,7 @@ class NineDiff extends HTMLElement {
43787
43787
  const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
43788
43788
  this.shadowRoot.innerHTML = `
43789
43789
  <style>
43790
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.342"}/dist/css/nine-mu.css";
43790
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.343"}/dist/css/nine-mu.css";
43791
43791
  ${customImport}
43792
43792
  </style>
43793
43793
 
@@ -43927,7 +43927,7 @@ renderScaffolding_fn = function() {
43927
43927
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
43928
43928
  this.shadowRoot.innerHTML = `
43929
43929
  <style>
43930
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.342"}/dist/css/nine-mu.css";
43930
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.343"}/dist/css/nine-mu.css";
43931
43931
  ${customImport}
43932
43932
  </style>
43933
43933
 
@@ -44036,7 +44036,7 @@ render_fn2 = function() {
44036
44036
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
44037
44037
  this.shadowRoot.innerHTML = `
44038
44038
  <style>
44039
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.342"}/dist/css/nine-mu.css";
44039
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.343"}/dist/css/nine-mu.css";
44040
44040
  ${customImport}
44041
44041
  </style>
44042
44042
 
@@ -44366,7 +44366,7 @@ class ChatMessageBody extends HTMLElement {
44366
44366
  const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
44367
44367
  this.shadowRoot.innerHTML = `
44368
44368
  <style>
44369
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.342"}/dist/css/nine-mu.css";
44369
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.343"}/dist/css/nine-mu.css";
44370
44370
  ${customImport}
44371
44371
  </style>
44372
44372
 
@@ -44476,28 +44476,14 @@ class ExceptionHook extends HTMLElement {
44476
44476
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
44477
44477
  this.shadowRoot.innerHTML = `
44478
44478
  <style>
44479
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.342"}/dist/css/nine-mu.css";
44479
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.343"}/dist/css/nine-mu.css";
44480
44480
  ${customImport}
44481
-
44482
44481
  :host {
44483
44482
  display: block;
44484
44483
  width: 100%;
44485
44484
  height: 100%;
44486
44485
  }
44487
- /* 어떤 로딩 레이어가 돌고 있어도 뷰포트 기준 무조건 맨 앞(최상단)으로 빼버리는 절대 방어 클래스 */
44488
- .nine-hook-full-overlay {
44489
- position: fixed !important;
44490
- top: 0 !important;
44491
- left: 0 !important;
44492
- width: 100vw !important;
44493
- height: 100vh !important;
44494
- box-sizing: border-box !important;
44495
- background-color: #FFF5F5 !important;
44496
- z-index: 99999999 !important;
44497
- overflow: auto !important;
44498
- }
44499
44486
  </style>
44500
-
44501
44487
  <div class="nine-hook-core" style="width: 100%; height: 100%;">
44502
44488
  <slot></slot>
44503
44489
  </div>
@@ -44507,17 +44493,11 @@ class ExceptionHook extends HTMLElement {
44507
44493
  __privateAdd(this, _handleRuntimeError, (event) => {
44508
44494
  var _a2, _b;
44509
44495
  trace.log("🚨 [nine-exception-hook] window.addEventListener('error') 리스너 포착!!", event);
44510
- if (__privateGet(this, _hasError)) {
44511
- trace.log("⚠️ [nine-exception-hook] 이미 에러 화면이 활성화되어 있어 이벤트 리스너 패스");
44512
- return;
44513
- }
44496
+ if (__privateGet(this, _hasError)) return;
44514
44497
  const errorMessage = ((_a2 = event.error) == null ? void 0 : _a2.message) || event.message || String(event);
44515
44498
  const errorStack = ((_b = event.error) == null ? void 0 : _b.stack) || "No stack trace available";
44516
44499
  if (errorMessage && errorMessage !== "Script error.") {
44517
- trace.log("🎯 [nine-exception-hook] 정상적인 에러 메시지 확인 -> 에러 보드 출력 시도", { errorMessage });
44518
44500
  __privateMethod(this, _ExceptionHook_instances, renderError_fn).call(this, errorMessage, errorStack);
44519
- } else {
44520
- trace.log("⚠️ [nine-exception-hook] 'Script error.' 이거나 빈 메시지라 무시됨");
44521
44501
  }
44522
44502
  });
44523
44503
  __privateAdd(this, _handlePromiseError, (event) => {
@@ -44526,38 +44506,30 @@ class ExceptionHook extends HTMLElement {
44526
44506
  const reason = event.reason;
44527
44507
  const errorMessage = (reason == null ? void 0 : reason.message) || String(reason || "Unhandled Promise Rejection");
44528
44508
  const errorStack = (reason == null ? void 0 : reason.stack) || "No stack trace available";
44529
- trace.log("🎯 [nine-exception-hook] Promise 거부 확인 -> 에러 보드 출력 시도");
44530
44509
  __privateMethod(this, _ExceptionHook_instances, renderError_fn).call(this, errorMessage, errorStack);
44531
44510
  });
44532
44511
  __privateAdd(this, _handleLocationChange, () => {
44533
44512
  setTimeout(() => {
44534
- trace.log("📍 [nine-exception-hook] 주소 이동 감지 체크", {
44535
- hasError: __privateGet(this, _hasError),
44536
- lastPath: __privateGet(this, _lastPath),
44537
- currentPath: window.location.pathname
44538
- });
44539
44513
  if (__privateGet(this, _hasError) && __privateGet(this, _lastPath) !== window.location.pathname) {
44540
- trace.log("✨ [nine-exception-hook] Shadow DOM 내부 예외 청소 및 정상 복구");
44514
+ trace.log("✨ [nine-exception-hook] Shadow DOM 및 글로벌 오버레이 내부 예외 청소 및 정상 복구");
44541
44515
  __privateSet(this, _lastPath, window.location.pathname);
44542
44516
  __privateSet(this, _hasError, false);
44543
- const exceptionBoard = this.shadowRoot.querySelector(".nine-exception-board");
44544
- if (exceptionBoard) exceptionBoard.innerHTML = "";
44517
+ __privateMethod(this, _ExceptionHook_instances, removeExternalOverlay_fn).call(this);
44545
44518
  const coreContainer = this.shadowRoot.querySelector(".nine-hook-core");
44546
44519
  if (coreContainer) coreContainer.style.display = "";
44547
44520
  }
44548
44521
  }, 50);
44549
44522
  });
44550
44523
  __privateAdd(this, _sendToAiAction, async (errorMessage, errorStack) => {
44551
- trace.log("🚀 [nine-exception-hook] AI 수정 요청 버튼 클릭됨");
44552
- const btn = this.shadowRoot.querySelector(".nine-ai-btn");
44553
- const footer = this.shadowRoot.querySelector(".nine-error-footer");
44524
+ const root = document.getElementById("nine-global-exception-container") || this.shadowRoot;
44525
+ const btn = root.querySelector(".nine-ai-btn");
44526
+ const footer = root.querySelector(".nine-error-footer");
44554
44527
  if (!btn) return;
44555
44528
  btn.disabled = true;
44556
44529
  btn.innerText = "⚡ AI 관제탑에 소스 분석 요청 중...";
44557
44530
  btn.classList.add("loading");
44558
44531
  try {
44559
44532
  if (window.triggerAutoRecovery) {
44560
- trace.log("📡 [nine-exception-hook] window.triggerAutoRecovery 호출 실행");
44561
44533
  await window.triggerAutoRecovery({
44562
44534
  message: errorMessage,
44563
44535
  stack: errorStack || "No stack trace available",
@@ -44597,6 +44569,7 @@ class ExceptionHook extends HTMLElement {
44597
44569
  window.onerror = __privateGet(this, _oldOnError);
44598
44570
  trace.log("🔍 [nine-exception-hook] window.onerror 복구 완료");
44599
44571
  }
44572
+ __privateMethod(this, _ExceptionHook_instances, removeExternalOverlay_fn).call(this);
44600
44573
  }
44601
44574
  }
44602
44575
  _lastPath = new WeakMap();
@@ -44637,44 +44610,55 @@ injectShadowStylesheet_fn = function() {
44637
44610
  _handleRuntimeError = new WeakMap();
44638
44611
  _handlePromiseError = new WeakMap();
44639
44612
  _handleLocationChange = new WeakMap();
44613
+ removeExternalOverlay_fn = function() {
44614
+ const target = document.getElementById("nine-global-exception-container");
44615
+ if (target) target.remove();
44616
+ };
44640
44617
  _sendToAiAction = new WeakMap();
44641
44618
  renderError_fn = function(errorMessage, errorStack) {
44642
44619
  if (__privateGet(this, _hasError)) return;
44643
44620
  __privateSet(this, _hasError, true);
44644
44621
  setTimeout(() => {
44645
- trace.log("🎨 [nine-exception-hook] 리액트 사이클 종료 후 에러 UI 최종 렌더링");
44622
+ trace.log("🎨 [nine-exception-hook] 리액트 사이클 종료 후 최상단 글로벌 에러 레이어 생성");
44646
44623
  const coreContainer = this.shadowRoot.querySelector(".nine-hook-core");
44647
- if (coreContainer) {
44648
- coreContainer.style.display = "none";
44649
- trace.log("🎨 [nine-exception-hook] <slot> 본문 영역 컨테이너 숨김");
44650
- }
44651
- const exceptionBoard = this.shadowRoot.querySelector(".nine-exception-board");
44652
- if (!exceptionBoard) {
44653
- trace.error("❌ [nine-exception-hook] .nine-exception-board 엘리먼트를 찾을 수 없습니다.");
44654
- return;
44655
- }
44624
+ if (coreContainer) coreContainer.style.display = "none";
44625
+ __privateMethod(this, _ExceptionHook_instances, removeExternalOverlay_fn).call(this);
44626
+ const externalContainer = document.createElement("div");
44627
+ externalContainer.id = "nine-global-exception-container";
44628
+ Object.assign(externalContainer.style, {
44629
+ position: "fixed",
44630
+ top: "0",
44631
+ left: "0",
44632
+ width: "100vw",
44633
+ height: "100vh",
44634
+ backgroundColor: "#FFF5F5",
44635
+ zIndex: "2147483647",
44636
+ // 브라우저 표현 최대 z-index 값 부여
44637
+ overflow: "auto",
44638
+ boxSizing: "border-box",
44639
+ display: "block"
44640
+ });
44656
44641
  const errorHTML = `
44657
- <div class="nine-hook-full-overlay">
44658
- <div class="nine-error-container" style="padding: 40px; max-width: 1200px; margin: 40px auto; font-family: sans-serif; background: white; border-radius: 8px; box-shadow: 0 10px 25px rgba(0,0,0,0.08); text-align: left;">
44659
- <h3 class="nine-error-title" style="color: #C53030; margin-top: 0; font-size: 22px; font-weight: 700; border-bottom: 2px solid #FED2D2; padding-bottom: 12px;">⚠️ 시스템 예외 감지 (${this.tagName.toLowerCase()})</h3>
44660
- <p class="nine-error-label" style="font-weight: bold; margin: 20px 0 8px 0; color: #4A5568; font-size: 15px;">[에러 원인 로그]:</p>
44661
- <pre class="nine-error-log" style="background: #1A202C; color: #EDF2F7; padding: 20px; border-radius: 6px; overflow-x: auto; white-space: pre-wrap; font-family: monospace; font-size: 14px; line-height: 1.6; margin-bottom: 25px;">${errorMessage}
44642
+ <div class="nine-error-container" style="padding: 40px; max-width: 1200px; margin: 40px auto; font-family: sans-serif; background: white; border-radius: 8px; box-shadow: 0 10px 25px rgba(0,0,0,0.08); text-align: left;">
44643
+ <h3 class="nine-error-title" style="color: #C53030; margin-top: 0; font-size: 22px; font-weight: 700; border-bottom: 2px solid #FED2D2; padding-bottom: 12px; font-family: sans-serif;">⚠️ 시스템 예외 감지 (nine-exception-hook)</h3>
44644
+ <p class="nine-error-label" style="font-weight: bold; margin: 20px 0 8px 0; color: #4A5568; font-size: 15px; font-family: sans-serif;">[에러 원인 로그]:</p>
44645
+ <pre class="nine-error-log" style="background: #1A202C; color: #EDF2F7; padding: 20px; border-radius: 6px; overflow-x: auto; white-space: pre-wrap; font-family: monospace; font-size: 14px; line-height: 1.6; margin-bottom: 25px;">${errorMessage}
44662
44646
 
44663
44647
  [Stack Trace]
44664
44648
  ${errorStack}</pre>
44665
-
44666
- <div class="nine-action-area" style="display: flex; align-items: center; gap: 20px; border-top: 1px solid #E2E8F0; padding-top: 20px;">
44667
- <button class="nine-ai-btn" style="background: #3182CE; color: white; border: none; padding: 14px 28px; border-radius: 6px; font-weight: bold; cursor: pointer; font-size: 16px; transition: background 0.2s;">🤖 AI에게 소스코드 수정 요청</button>
44668
- <div class="nine-error-footer" style="font-size: 14px; color: #718096; line-height: 1.4;">
44669
- 버튼을 누르면 AI가 로그 및 컴포넌트 맵을 역추적하여 수정을 시작합니다.
44670
- </div>
44649
+
44650
+ <div class="nine-action-area" style="display: flex; align-items: center; gap: 20px; border-top: 1px solid #E2E8F0; padding-top: 20px;">
44651
+ <button class="nine-ai-btn" style="background: #3182CE; color: white; border: none; padding: 14px 28px; border-radius: 6px; font-weight: bold; cursor: pointer; font-size: 16px;">🤖 AI에게 소스코드 수정 요청</button>
44652
+ <div class="nine-error-footer" style="font-size: 14px; color: #718096; line-height: 1.4; font-family: sans-serif;">
44653
+ 버튼을 누르면 AI가 로그 및 컴포넌트 맵을 역추적하여 수정을 시작합니다.
44671
44654
  </div>
44672
44655
  </div>
44673
44656
  </div>
44674
44657
  `;
44675
- exceptionBoard.innerHTML = errorHTML;
44676
- trace.log("🎨 [nine-exception-hook] Shadow DOM에 에러 UI 최종 삽입 성공");
44677
- const aiBtn = this.shadowRoot.querySelector(".nine-ai-btn");
44658
+ externalContainer.innerHTML = errorHTML;
44659
+ document.body.appendChild(externalContainer);
44660
+ trace.log("🎨 [nine-exception-hook] 브라우저 Body 최상단 레이어 배정 성공");
44661
+ const aiBtn = externalContainer.querySelector(".nine-ai-btn");
44678
44662
  if (aiBtn) {
44679
44663
  aiBtn.addEventListener("click", () => __privateGet(this, _sendToAiAction).call(this, errorMessage, errorStack));
44680
44664
  trace.log("🎨 [nine-exception-hook] AI 요청 버튼 이벤트 리스너 최종 바인딩 성공");
@@ -44685,7 +44669,7 @@ if (!customElements.get("nine-exception-hook")) {
44685
44669
  customElements.define("nine-exception-hook", ExceptionHook);
44686
44670
  }
44687
44671
  const NineMu = {
44688
- version: "0.1.342",
44672
+ version: "0.1.343",
44689
44673
  init: (config2) => {
44690
44674
  trace$1.log("🛠️ Nine-Mu Engine initialized", config2);
44691
44675
  }