@nine-lab/nine-mu 0.1.344 → 0.1.345
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 +51 -67
- package/dist/nine-mu.js.map +1 -1
- package/dist/nine-mu.umd.js +3 -3
- package/dist/nine-mu.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/exception/ExceptionHook.js +48 -75
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,
|
|
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;
|
|
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.
|
|
17540
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.344"}/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.
|
|
43790
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.344"}/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.
|
|
43930
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.344"}/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.
|
|
44039
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.344"}/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.
|
|
44369
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.344"}/dist/css/nine-mu.css";
|
|
44370
44370
|
${customImport}
|
|
44371
44371
|
</style>
|
|
44372
44372
|
|
|
@@ -44476,23 +44476,44 @@ 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.
|
|
44479
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.344"}/dist/css/nine-mu.css";
|
|
44480
44480
|
${customImport}
|
|
44481
|
+
|
|
44481
44482
|
:host {
|
|
44482
44483
|
display: block;
|
|
44483
44484
|
width: 100%;
|
|
44484
44485
|
height: 100%;
|
|
44486
|
+
position: relative !important; /* 내부 에러 보드의 기준점 기둥 생성 */
|
|
44487
|
+
}
|
|
44488
|
+
|
|
44489
|
+
.nine-hook-core {
|
|
44490
|
+
width: 100%;
|
|
44491
|
+
height: 100%;
|
|
44492
|
+
}
|
|
44493
|
+
|
|
44494
|
+
/* 🎯 [핵심 변경 2] 리액트 슬롯을 가리지 않고, 오직 "이 컴포넌트 구역"만 가득 채우는 독립 팝업 레이어 */
|
|
44495
|
+
.nine-hook-inner-cover {
|
|
44496
|
+
position: absolute !important;
|
|
44497
|
+
top: 0 !important;
|
|
44498
|
+
left: 0 !important;
|
|
44499
|
+
width: 100% !important;
|
|
44500
|
+
height: 100% !important;
|
|
44501
|
+
box-sizing: border-box !important;
|
|
44502
|
+
background-color: #FFF5F5 !important;
|
|
44503
|
+
z-index: 2147483647 !important; /* 리액트 내부 그 어떤 오버레이보다 무조건 위 */
|
|
44504
|
+
overflow: auto !important;
|
|
44505
|
+
display: none; /* 평소엔 숨김 */
|
|
44485
44506
|
}
|
|
44486
44507
|
</style>
|
|
44487
|
-
|
|
44508
|
+
|
|
44509
|
+
<div class="nine-hook-core">
|
|
44488
44510
|
<slot></slot>
|
|
44489
44511
|
</div>
|
|
44490
|
-
<div class="nine-exception-board"></div>
|
|
44512
|
+
<div class="nine-exception-board class-target-board"></div>
|
|
44491
44513
|
`;
|
|
44492
44514
|
});
|
|
44493
44515
|
__privateAdd(this, _handleRuntimeError, (event) => {
|
|
44494
44516
|
var _a2, _b;
|
|
44495
|
-
trace.log("🚨 [nine-exception-hook] window.addEventListener('error') 리스너 포착!!", event);
|
|
44496
44517
|
if (__privateGet(this, _hasError)) return;
|
|
44497
44518
|
const errorMessage = ((_a2 = event.error) == null ? void 0 : _a2.message) || event.message || String(event);
|
|
44498
44519
|
const errorStack = ((_b = event.error) == null ? void 0 : _b.stack) || "No stack trace available";
|
|
@@ -44501,7 +44522,6 @@ class ExceptionHook extends HTMLElement {
|
|
|
44501
44522
|
}
|
|
44502
44523
|
});
|
|
44503
44524
|
__privateAdd(this, _handlePromiseError, (event) => {
|
|
44504
|
-
trace.log("🚨 [nine-exception-hook] unhandledrejection (Promise 에러) 포착!!", event);
|
|
44505
44525
|
if (__privateGet(this, _hasError)) return;
|
|
44506
44526
|
const reason = event.reason;
|
|
44507
44527
|
const errorMessage = (reason == null ? void 0 : reason.message) || String(reason || "Unhandled Promise Rejection");
|
|
@@ -44511,19 +44531,19 @@ class ExceptionHook extends HTMLElement {
|
|
|
44511
44531
|
__privateAdd(this, _handleLocationChange, () => {
|
|
44512
44532
|
setTimeout(() => {
|
|
44513
44533
|
if (__privateGet(this, _hasError) && __privateGet(this, _lastPath) !== window.location.pathname) {
|
|
44514
|
-
trace.log("✨ [nine-exception-hook] Shadow DOM 및 글로벌 오버레이 내부 예외 청소 및 정상 복구");
|
|
44515
44534
|
__privateSet(this, _lastPath, window.location.pathname);
|
|
44516
44535
|
__privateSet(this, _hasError, false);
|
|
44517
|
-
|
|
44518
|
-
|
|
44519
|
-
|
|
44536
|
+
const exceptionBoard = this.shadowRoot.querySelector(".nine-exception-board");
|
|
44537
|
+
if (exceptionBoard) {
|
|
44538
|
+
exceptionBoard.innerHTML = "";
|
|
44539
|
+
exceptionBoard.className = "nine-exception-board";
|
|
44540
|
+
}
|
|
44520
44541
|
}
|
|
44521
44542
|
}, 50);
|
|
44522
44543
|
});
|
|
44523
44544
|
__privateAdd(this, _sendToAiAction, async (errorMessage, errorStack) => {
|
|
44524
|
-
const
|
|
44525
|
-
const
|
|
44526
|
-
const footer = root.querySelector(".nine-error-footer");
|
|
44545
|
+
const btn = this.shadowRoot.querySelector(".nine-ai-btn");
|
|
44546
|
+
const footer = this.shadowRoot.querySelector(".nine-error-footer");
|
|
44527
44547
|
if (!btn) return;
|
|
44528
44548
|
btn.disabled = true;
|
|
44529
44549
|
btn.innerText = "⚡ AI 관제탑에 소스 분석 요청 중...";
|
|
@@ -44541,17 +44561,14 @@ class ExceptionHook extends HTMLElement {
|
|
|
44541
44561
|
throw new Error("window.triggerAutoRecovery 관제탑 엔진이 로드되지 않았습니다.");
|
|
44542
44562
|
}
|
|
44543
44563
|
} catch (err) {
|
|
44544
|
-
trace.error("❌ AI 전송 실패:", err);
|
|
44545
44564
|
btn.disabled = false;
|
|
44546
44565
|
btn.innerText = "❌ 재전송 시도";
|
|
44547
44566
|
footer.innerHTML = `<span style="color: #E53E3E;">⚠️ 전송 실패: ${err.message}</span>`;
|
|
44548
44567
|
}
|
|
44549
44568
|
});
|
|
44550
44569
|
this.attachShadow({ mode: "open" });
|
|
44551
|
-
trace.log("🔍 [nine-exception-hook] 인스턴스 생성됨");
|
|
44552
44570
|
}
|
|
44553
44571
|
connectedCallback() {
|
|
44554
|
-
trace.log("🔍 [nine-exception-hook] DOM에 마운트됨. 이벤트 리스너 바인딩 시작");
|
|
44555
44572
|
__privateGet(this, _renderer2).call(this);
|
|
44556
44573
|
__privateMethod(this, _ExceptionHook_instances, injectShadowStylesheet_fn).call(this);
|
|
44557
44574
|
__privateMethod(this, _ExceptionHook_instances, setupGlobalSniffer_fn).call(this);
|
|
@@ -44560,16 +44577,13 @@ class ExceptionHook extends HTMLElement {
|
|
|
44560
44577
|
document.addEventListener("click", __privateGet(this, _handleLocationChange), true);
|
|
44561
44578
|
}
|
|
44562
44579
|
disconnectedCallback() {
|
|
44563
|
-
trace.log("🔍 [nine-exception-hook] DOM에서 언마운트됨. 리스너 해제");
|
|
44564
44580
|
window.removeEventListener("error", __privateGet(this, _handleRuntimeError), true);
|
|
44565
44581
|
window.removeEventListener("unhandledrejection", __privateGet(this, _handlePromiseError), true);
|
|
44566
44582
|
window.removeEventListener("popstate", __privateGet(this, _handleLocationChange));
|
|
44567
44583
|
document.removeEventListener("click", __privateGet(this, _handleLocationChange), true);
|
|
44568
44584
|
if (window.onerror === __privateGet(this, _handleRuntimeError) || __privateGet(this, _oldOnError)) {
|
|
44569
44585
|
window.onerror = __privateGet(this, _oldOnError);
|
|
44570
|
-
trace.log("🔍 [nine-exception-hook] window.onerror 복구 완료");
|
|
44571
44586
|
}
|
|
44572
|
-
__privateMethod(this, _ExceptionHook_instances, removeExternalOverlay_fn).call(this);
|
|
44573
44587
|
}
|
|
44574
44588
|
}
|
|
44575
44589
|
_lastPath = new WeakMap();
|
|
@@ -44579,25 +44593,18 @@ _oldOnError = new WeakMap();
|
|
|
44579
44593
|
_ExceptionHook_instances = new WeakSet();
|
|
44580
44594
|
setupGlobalSniffer_fn = function() {
|
|
44581
44595
|
window.addEventListener("error", __privateGet(this, _handleRuntimeError), true);
|
|
44582
|
-
trace.log("🔍 [nine-exception-hook] window.addEventListener('error') 등록 완료");
|
|
44583
44596
|
__privateSet(this, _oldOnError, window.onerror);
|
|
44584
44597
|
window.onerror = (message, source, lineno, colno, error) => {
|
|
44585
|
-
trace.log("🚨 [nine-exception-hook] 원시 window.onerror 포착!!", { message, source, lineno, error });
|
|
44586
44598
|
if (!__privateGet(this, _hasError)) {
|
|
44587
|
-
trace.log("🎯 [nine-exception-hook] 현재 에러 상태 없음 -> 에러 보드 출력 시도");
|
|
44588
44599
|
const errorMessage = (error == null ? void 0 : error.message) || message || "알 수 없는 런타임 예외";
|
|
44589
44600
|
const errorStack = (error == null ? void 0 : error.stack) || `${source}:${lineno}:${colno}`;
|
|
44590
44601
|
__privateMethod(this, _ExceptionHook_instances, renderError_fn).call(this, errorMessage, errorStack);
|
|
44591
|
-
} else {
|
|
44592
|
-
trace.log("⚠️ [nine-exception-hook] 이미 에러 화면이 활성화되어 있어 원시 onerror 패스");
|
|
44593
44602
|
}
|
|
44594
44603
|
if (__privateGet(this, _oldOnError)) {
|
|
44595
|
-
trace.log("🔄 [nine-exception-hook] 기존에 등록되어 있던 다른 onerror 엔진으로 위임");
|
|
44596
44604
|
return __privateGet(this, _oldOnError).call(this, message, source, lineno, colno, error);
|
|
44597
44605
|
}
|
|
44598
44606
|
return false;
|
|
44599
44607
|
};
|
|
44600
|
-
trace.log("🔍 [nine-exception-hook] 원시 window.onerror 가로채기(Chaining) 완료");
|
|
44601
44608
|
};
|
|
44602
44609
|
_renderer2 = new WeakMap();
|
|
44603
44610
|
injectShadowStylesheet_fn = function() {
|
|
@@ -44610,58 +44617,35 @@ injectShadowStylesheet_fn = function() {
|
|
|
44610
44617
|
_handleRuntimeError = new WeakMap();
|
|
44611
44618
|
_handlePromiseError = new WeakMap();
|
|
44612
44619
|
_handleLocationChange = new WeakMap();
|
|
44613
|
-
removeExternalOverlay_fn = function() {
|
|
44614
|
-
const target = document.getElementById("nine-global-exception-container");
|
|
44615
|
-
if (target) target.remove();
|
|
44616
|
-
};
|
|
44617
44620
|
_sendToAiAction = new WeakMap();
|
|
44618
44621
|
renderError_fn = function(errorMessage, errorStack) {
|
|
44619
44622
|
if (__privateGet(this, _hasError)) return;
|
|
44620
44623
|
__privateSet(this, _hasError, true);
|
|
44621
44624
|
setTimeout(() => {
|
|
44622
|
-
|
|
44623
|
-
|
|
44624
|
-
|
|
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
|
-
});
|
|
44625
|
+
const exceptionBoard = this.shadowRoot.querySelector(".nine-exception-board");
|
|
44626
|
+
if (!exceptionBoard) return;
|
|
44627
|
+
exceptionBoard.className = "nine-hook-inner-cover";
|
|
44641
44628
|
const errorHTML = `
|
|
44642
|
-
<div class="nine-error-container" style="padding:
|
|
44643
|
-
<h3 class="nine-error-title" style="color: #C53030; margin-top: 0; font-size:
|
|
44644
|
-
<p class="nine-error-label" style="font-weight: bold; margin:
|
|
44645
|
-
<pre class="nine-error-log" style="background: #1A202C; color: #EDF2F7; padding:
|
|
44629
|
+
<div class="nine-error-container" style="padding: 30px; box-sizing: border-box; font-family: sans-serif; background: white; min-height: 100%; text-align: left;">
|
|
44630
|
+
<h3 class="nine-error-title" style="color: #C53030; margin-top: 0; font-size: 20px; font-weight: 700; border-bottom: 2px solid #FED2D2; padding-bottom: 12px; font-family: sans-serif;">⚠️ 시스템 예외 감지 (${this.tagName.toLowerCase()})</h3>
|
|
44631
|
+
<p class="nine-error-label" style="font-weight: bold; margin: 15px 0 6px 0; color: #4A5568; font-size: 14px; font-family: sans-serif;">[에러 원인 로그]:</p>
|
|
44632
|
+
<pre class="nine-error-log" style="background: #1A202C; color: #EDF2F7; padding: 15px; border-radius: 6px; overflow-x: auto; white-space: pre-wrap; font-family: monospace; font-size: 13px; line-height: 1.5; margin-bottom: 20px;">${errorMessage}
|
|
44646
44633
|
|
|
44647
44634
|
[Stack Trace]
|
|
44648
44635
|
${errorStack}</pre>
|
|
44649
44636
|
|
|
44650
|
-
<div class="nine-action-area" style="display: flex; align-items: center; gap:
|
|
44651
|
-
<button class="nine-ai-btn" style="background: #3182CE; color: white; border: none; padding:
|
|
44652
|
-
<div class="nine-error-footer" style="font-size:
|
|
44637
|
+
<div class="nine-action-area" style="display: flex; align-items: center; gap: 15px; border-top: 1px solid #E2E8F0; padding-top: 15px;">
|
|
44638
|
+
<button class="nine-ai-btn" style="background: #3182CE; color: white; border: none; padding: 10px 20px; border-radius: 6px; font-weight: bold; cursor: pointer; font-size: 14px;">🤖 AI에게 소스코드 수정 요청</button>
|
|
44639
|
+
<div class="nine-error-footer" style="font-size: 13px; color: #718096; line-height: 1.4; font-family: sans-serif;">
|
|
44653
44640
|
버튼을 누르면 AI가 로그 및 컴포넌트 맵을 역추적하여 수정을 시작합니다.
|
|
44654
44641
|
</div>
|
|
44655
44642
|
</div>
|
|
44656
44643
|
</div>
|
|
44657
44644
|
`;
|
|
44658
|
-
|
|
44659
|
-
|
|
44660
|
-
trace.log("🎨 [nine-exception-hook] 브라우저 Body 최상단 레이어 배정 성공");
|
|
44661
|
-
const aiBtn = externalContainer.querySelector(".nine-ai-btn");
|
|
44645
|
+
exceptionBoard.innerHTML = errorHTML;
|
|
44646
|
+
const aiBtn = exceptionBoard.querySelector(".nine-ai-btn");
|
|
44662
44647
|
if (aiBtn) {
|
|
44663
44648
|
aiBtn.addEventListener("click", () => __privateGet(this, _sendToAiAction).call(this, errorMessage, errorStack));
|
|
44664
|
-
trace.log("🎨 [nine-exception-hook] AI 요청 버튼 이벤트 리스너 최종 바인딩 성공");
|
|
44665
44649
|
}
|
|
44666
44650
|
}, 0);
|
|
44667
44651
|
};
|
|
@@ -44669,7 +44653,7 @@ if (!customElements.get("nine-exception-hook")) {
|
|
|
44669
44653
|
customElements.define("nine-exception-hook", ExceptionHook);
|
|
44670
44654
|
}
|
|
44671
44655
|
const NineMu = {
|
|
44672
|
-
version: "0.1.
|
|
44656
|
+
version: "0.1.344",
|
|
44673
44657
|
init: (config2) => {
|
|
44674
44658
|
trace$1.log("🛠️ Nine-Mu Engine initialized", config2);
|
|
44675
44659
|
}
|