@nine-lab/nine-mu 0.1.345 → 0.1.347
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 +80 -190
- 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 +2 -1
- package/src/components/exception/ExceptionHook.js +67 -186
- package/src/index.js +2 -2
- package/vite.config.js +5 -1
package/dist/nine-mu.js
CHANGED
|
@@ -9,8 +9,9 @@ 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
|
|
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;
|
|
13
13
|
import { trace as trace$1, api, nine as nine$1 } from "@nine-lab/nine-util";
|
|
14
|
+
import React from "react";
|
|
14
15
|
class Trace extends trace$1.constructor {
|
|
15
16
|
constructor() {
|
|
16
17
|
super();
|
|
@@ -17537,7 +17538,7 @@ render_fn = function() {
|
|
|
17537
17538
|
const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
|
|
17538
17539
|
this.shadowRoot.innerHTML = `
|
|
17539
17540
|
<style>
|
|
17540
|
-
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.
|
|
17541
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.346"}/dist/css/nine-mu.css";
|
|
17541
17542
|
${customImport}
|
|
17542
17543
|
</style>
|
|
17543
17544
|
<div class="wrapper">
|
|
@@ -43787,7 +43788,7 @@ class NineDiff extends HTMLElement {
|
|
|
43787
43788
|
const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
|
|
43788
43789
|
this.shadowRoot.innerHTML = `
|
|
43789
43790
|
<style>
|
|
43790
|
-
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.
|
|
43791
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.346"}/dist/css/nine-mu.css";
|
|
43791
43792
|
${customImport}
|
|
43792
43793
|
</style>
|
|
43793
43794
|
|
|
@@ -43927,7 +43928,7 @@ renderScaffolding_fn = function() {
|
|
|
43927
43928
|
const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
|
|
43928
43929
|
this.shadowRoot.innerHTML = `
|
|
43929
43930
|
<style>
|
|
43930
|
-
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.
|
|
43931
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.346"}/dist/css/nine-mu.css";
|
|
43931
43932
|
${customImport}
|
|
43932
43933
|
</style>
|
|
43933
43934
|
|
|
@@ -44036,7 +44037,7 @@ render_fn2 = function() {
|
|
|
44036
44037
|
const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
|
|
44037
44038
|
this.shadowRoot.innerHTML = `
|
|
44038
44039
|
<style>
|
|
44039
|
-
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.
|
|
44040
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.346"}/dist/css/nine-mu.css";
|
|
44040
44041
|
${customImport}
|
|
44041
44042
|
</style>
|
|
44042
44043
|
|
|
@@ -44366,7 +44367,7 @@ class ChatMessageBody extends HTMLElement {
|
|
|
44366
44367
|
const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
|
|
44367
44368
|
this.shadowRoot.innerHTML = `
|
|
44368
44369
|
<style>
|
|
44369
|
-
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.
|
|
44370
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.346"}/dist/css/nine-mu.css";
|
|
44370
44371
|
${customImport}
|
|
44371
44372
|
</style>
|
|
44372
44373
|
|
|
@@ -44464,196 +44465,84 @@ if (!customElements.get("nine-chat-ing")) {
|
|
|
44464
44465
|
if (!customElements.get("nine-chat-progress")) {
|
|
44465
44466
|
customElements.define("nine-chat-progress", ProgressMessage);
|
|
44466
44467
|
}
|
|
44467
|
-
class
|
|
44468
|
-
constructor() {
|
|
44469
|
-
super();
|
|
44470
|
-
|
|
44471
|
-
|
|
44472
|
-
|
|
44473
|
-
__privateAdd(this, _cssPath, "/css/nine-exception-hook.css");
|
|
44474
|
-
__privateAdd(this, _oldOnError, null);
|
|
44475
|
-
__privateAdd(this, _renderer2, () => {
|
|
44476
|
-
const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
|
|
44477
|
-
this.shadowRoot.innerHTML = `
|
|
44478
|
-
<style>
|
|
44479
|
-
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.344"}/dist/css/nine-mu.css";
|
|
44480
|
-
${customImport}
|
|
44481
|
-
|
|
44482
|
-
:host {
|
|
44483
|
-
display: block;
|
|
44484
|
-
width: 100%;
|
|
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; /* 평소엔 숨김 */
|
|
44506
|
-
}
|
|
44507
|
-
</style>
|
|
44508
|
-
|
|
44509
|
-
<div class="nine-hook-core">
|
|
44510
|
-
<slot></slot>
|
|
44511
|
-
</div>
|
|
44512
|
-
<div class="nine-exception-board class-target-board"></div>
|
|
44513
|
-
`;
|
|
44514
|
-
});
|
|
44515
|
-
__privateAdd(this, _handleRuntimeError, (event) => {
|
|
44516
|
-
var _a2, _b;
|
|
44517
|
-
if (__privateGet(this, _hasError)) return;
|
|
44518
|
-
const errorMessage = ((_a2 = event.error) == null ? void 0 : _a2.message) || event.message || String(event);
|
|
44519
|
-
const errorStack = ((_b = event.error) == null ? void 0 : _b.stack) || "No stack trace available";
|
|
44520
|
-
if (errorMessage && errorMessage !== "Script error.") {
|
|
44521
|
-
__privateMethod(this, _ExceptionHook_instances, renderError_fn).call(this, errorMessage, errorStack);
|
|
44522
|
-
}
|
|
44523
|
-
});
|
|
44524
|
-
__privateAdd(this, _handlePromiseError, (event) => {
|
|
44525
|
-
if (__privateGet(this, _hasError)) return;
|
|
44526
|
-
const reason = event.reason;
|
|
44527
|
-
const errorMessage = (reason == null ? void 0 : reason.message) || String(reason || "Unhandled Promise Rejection");
|
|
44528
|
-
const errorStack = (reason == null ? void 0 : reason.stack) || "No stack trace available";
|
|
44529
|
-
__privateMethod(this, _ExceptionHook_instances, renderError_fn).call(this, errorMessage, errorStack);
|
|
44530
|
-
});
|
|
44531
|
-
__privateAdd(this, _handleLocationChange, () => {
|
|
44532
|
-
setTimeout(() => {
|
|
44533
|
-
if (__privateGet(this, _hasError) && __privateGet(this, _lastPath) !== window.location.pathname) {
|
|
44534
|
-
__privateSet(this, _lastPath, window.location.pathname);
|
|
44535
|
-
__privateSet(this, _hasError, false);
|
|
44536
|
-
const exceptionBoard = this.shadowRoot.querySelector(".nine-exception-board");
|
|
44537
|
-
if (exceptionBoard) {
|
|
44538
|
-
exceptionBoard.innerHTML = "";
|
|
44539
|
-
exceptionBoard.className = "nine-exception-board";
|
|
44540
|
-
}
|
|
44541
|
-
}
|
|
44542
|
-
}, 50);
|
|
44543
|
-
});
|
|
44544
|
-
__privateAdd(this, _sendToAiAction, async (errorMessage, errorStack) => {
|
|
44545
|
-
const btn = this.shadowRoot.querySelector(".nine-ai-btn");
|
|
44546
|
-
const footer = this.shadowRoot.querySelector(".nine-error-footer");
|
|
44547
|
-
if (!btn) return;
|
|
44548
|
-
btn.disabled = true;
|
|
44549
|
-
btn.innerText = "⚡ AI 관제탑에 소스 분석 요청 중...";
|
|
44550
|
-
btn.classList.add("loading");
|
|
44551
|
-
try {
|
|
44552
|
-
if (window.triggerAutoRecovery) {
|
|
44553
|
-
await window.triggerAutoRecovery({
|
|
44554
|
-
message: errorMessage,
|
|
44555
|
-
stack: errorStack || "No stack trace available",
|
|
44556
|
-
path: window.location.pathname
|
|
44557
|
-
});
|
|
44558
|
-
footer.innerHTML = `✅ <b>AI 관제탑 접수 완료:</b> 분석을 바탕으로 소스 코드를 교정하고 있습니다. 잠시만 기다려주세요.`;
|
|
44559
|
-
btn.innerText = "🚀 전송 완료";
|
|
44560
|
-
} else {
|
|
44561
|
-
throw new Error("window.triggerAutoRecovery 관제탑 엔진이 로드되지 않았습니다.");
|
|
44562
|
-
}
|
|
44563
|
-
} catch (err) {
|
|
44564
|
-
btn.disabled = false;
|
|
44565
|
-
btn.innerText = "❌ 재전송 시도";
|
|
44566
|
-
footer.innerHTML = `<span style="color: #E53E3E;">⚠️ 전송 실패: ${err.message}</span>`;
|
|
44567
|
-
}
|
|
44568
|
-
});
|
|
44569
|
-
this.attachShadow({ mode: "open" });
|
|
44468
|
+
class NineExceptionHook extends React.Component {
|
|
44469
|
+
constructor(props) {
|
|
44470
|
+
super(props);
|
|
44471
|
+
this.state = { hasError: false, error: null };
|
|
44472
|
+
this.lastPath = window.location.pathname;
|
|
44473
|
+
this.handleLocationChange = this.handleLocationChange.bind(this);
|
|
44570
44474
|
}
|
|
44571
|
-
|
|
44572
|
-
|
|
44573
|
-
__privateMethod(this, _ExceptionHook_instances, injectShadowStylesheet_fn).call(this);
|
|
44574
|
-
__privateMethod(this, _ExceptionHook_instances, setupGlobalSniffer_fn).call(this);
|
|
44575
|
-
window.addEventListener("unhandledrejection", __privateGet(this, _handlePromiseError), true);
|
|
44576
|
-
window.addEventListener("popstate", __privateGet(this, _handleLocationChange));
|
|
44577
|
-
document.addEventListener("click", __privateGet(this, _handleLocationChange), true);
|
|
44475
|
+
static getDerivedStateFromError(error) {
|
|
44476
|
+
return { hasError: true, error };
|
|
44578
44477
|
}
|
|
44579
|
-
|
|
44580
|
-
|
|
44581
|
-
window.
|
|
44582
|
-
|
|
44583
|
-
document.removeEventListener("click", __privateGet(this, _handleLocationChange), true);
|
|
44584
|
-
if (window.onerror === __privateGet(this, _handleRuntimeError) || __privateGet(this, _oldOnError)) {
|
|
44585
|
-
window.onerror = __privateGet(this, _oldOnError);
|
|
44586
|
-
}
|
|
44587
|
-
}
|
|
44588
|
-
}
|
|
44589
|
-
_lastPath = new WeakMap();
|
|
44590
|
-
_hasError = new WeakMap();
|
|
44591
|
-
_cssPath = new WeakMap();
|
|
44592
|
-
_oldOnError = new WeakMap();
|
|
44593
|
-
_ExceptionHook_instances = new WeakSet();
|
|
44594
|
-
setupGlobalSniffer_fn = function() {
|
|
44595
|
-
window.addEventListener("error", __privateGet(this, _handleRuntimeError), true);
|
|
44596
|
-
__privateSet(this, _oldOnError, window.onerror);
|
|
44597
|
-
window.onerror = (message, source, lineno, colno, error) => {
|
|
44598
|
-
if (!__privateGet(this, _hasError)) {
|
|
44599
|
-
const errorMessage = (error == null ? void 0 : error.message) || message || "알 수 없는 런타임 예외";
|
|
44600
|
-
const errorStack = (error == null ? void 0 : error.stack) || `${source}:${lineno}:${colno}`;
|
|
44601
|
-
__privateMethod(this, _ExceptionHook_instances, renderError_fn).call(this, errorMessage, errorStack);
|
|
44602
|
-
}
|
|
44603
|
-
if (__privateGet(this, _oldOnError)) {
|
|
44604
|
-
return __privateGet(this, _oldOnError).call(this, message, source, lineno, colno, error);
|
|
44478
|
+
componentDidCatch(error, errorInfo) {
|
|
44479
|
+
console.error("🚨 [Nine-Library] 본문 렌더링 에러 포착:", error);
|
|
44480
|
+
if (window.triggerAutoRecovery) {
|
|
44481
|
+
window.triggerAutoRecovery(error.message || String(error));
|
|
44605
44482
|
}
|
|
44606
|
-
|
|
44607
|
-
|
|
44608
|
-
};
|
|
44609
|
-
_renderer2 = new WeakMap();
|
|
44610
|
-
injectShadowStylesheet_fn = function() {
|
|
44611
|
-
if (this.shadowRoot.querySelector(`link[href="${__privateGet(this, _cssPath)}"]`)) return;
|
|
44612
|
-
const link = document.createElement("link");
|
|
44613
|
-
link.rel = "stylesheet";
|
|
44614
|
-
link.href = __privateGet(this, _cssPath);
|
|
44615
|
-
this.shadowRoot.appendChild(link);
|
|
44616
|
-
};
|
|
44617
|
-
_handleRuntimeError = new WeakMap();
|
|
44618
|
-
_handlePromiseError = new WeakMap();
|
|
44619
|
-
_handleLocationChange = new WeakMap();
|
|
44620
|
-
_sendToAiAction = new WeakMap();
|
|
44621
|
-
renderError_fn = function(errorMessage, errorStack) {
|
|
44622
|
-
if (__privateGet(this, _hasError)) return;
|
|
44623
|
-
__privateSet(this, _hasError, true);
|
|
44624
|
-
setTimeout(() => {
|
|
44625
|
-
const exceptionBoard = this.shadowRoot.querySelector(".nine-exception-board");
|
|
44626
|
-
if (!exceptionBoard) return;
|
|
44627
|
-
exceptionBoard.className = "nine-hook-inner-cover";
|
|
44628
|
-
const errorHTML = `
|
|
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}
|
|
44633
|
-
|
|
44634
|
-
[Stack Trace]
|
|
44635
|
-
${errorStack}</pre>
|
|
44636
|
-
|
|
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;">
|
|
44640
|
-
버튼을 누르면 AI가 로그 및 컴포넌트 맵을 역추적하여 수정을 시작합니다.
|
|
44641
|
-
</div>
|
|
44642
|
-
</div>
|
|
44643
|
-
</div>
|
|
44644
|
-
`;
|
|
44645
|
-
exceptionBoard.innerHTML = errorHTML;
|
|
44646
|
-
const aiBtn = exceptionBoard.querySelector(".nine-ai-btn");
|
|
44647
|
-
if (aiBtn) {
|
|
44648
|
-
aiBtn.addEventListener("click", () => __privateGet(this, _sendToAiAction).call(this, errorMessage, errorStack));
|
|
44483
|
+
if (this.props.onCatch) {
|
|
44484
|
+
this.props.onCatch(error, errorInfo);
|
|
44649
44485
|
}
|
|
44650
|
-
}
|
|
44651
|
-
|
|
44652
|
-
|
|
44653
|
-
|
|
44486
|
+
}
|
|
44487
|
+
componentDidMount() {
|
|
44488
|
+
window.addEventListener("popstate", this.handleLocationChange);
|
|
44489
|
+
document.addEventListener("click", this.handleLocationChange, true);
|
|
44490
|
+
}
|
|
44491
|
+
componentWillUnmount() {
|
|
44492
|
+
window.removeEventListener("popstate", this.handleLocationChange);
|
|
44493
|
+
document.removeEventListener("click", this.handleLocationChange, true);
|
|
44494
|
+
}
|
|
44495
|
+
handleLocationChange() {
|
|
44496
|
+
setTimeout(() => {
|
|
44497
|
+
if (this.state.hasError && this.lastPath !== window.location.pathname) {
|
|
44498
|
+
console.log("✨ [Nine-Library] 페이지 주소 변경 감지 -> 리액트 에러 상태 초기화");
|
|
44499
|
+
this.lastPath = window.location.pathname;
|
|
44500
|
+
this.setState({ hasError: false, error: null });
|
|
44501
|
+
}
|
|
44502
|
+
}, 10);
|
|
44503
|
+
}
|
|
44504
|
+
render() {
|
|
44505
|
+
var _a2;
|
|
44506
|
+
if (this.state.hasError) {
|
|
44507
|
+
if (this.props.fallback) {
|
|
44508
|
+
return this.props.fallback(this.state.error);
|
|
44509
|
+
}
|
|
44510
|
+
const errorMessage = ((_a2 = this.state.error) == null ? void 0 : _a2.message) || String(this.state.error);
|
|
44511
|
+
return React.createElement(
|
|
44512
|
+
"div",
|
|
44513
|
+
{
|
|
44514
|
+
style: {
|
|
44515
|
+
padding: "30px",
|
|
44516
|
+
margin: "20px",
|
|
44517
|
+
background: "#FFF5F5",
|
|
44518
|
+
border: "1px solid #FEB2B2",
|
|
44519
|
+
borderRadius: "8px",
|
|
44520
|
+
fontFamily: "sans-serif",
|
|
44521
|
+
textAlign: "left",
|
|
44522
|
+
...this.props.containerStyle
|
|
44523
|
+
}
|
|
44524
|
+
},
|
|
44525
|
+
React.createElement("h3", { style: { color: "#C53030", marginTop: 0, fontSize: "18px" } }, "⚠️ 컴포넌트 빌드/렌더링 에러 감지"),
|
|
44526
|
+
React.createElement("p", { style: { margin: "10px 0 5px 0", fontWeight: "bold", color: "#4A5568" } }, "[에러 원인 로그]:"),
|
|
44527
|
+
React.createElement("pre", {
|
|
44528
|
+
style: {
|
|
44529
|
+
background: "#1A202C",
|
|
44530
|
+
color: "#EDF2F7",
|
|
44531
|
+
padding: "15px",
|
|
44532
|
+
borderRadius: "6px",
|
|
44533
|
+
overflowX: "auto",
|
|
44534
|
+
whiteSpace: "pre-wrap",
|
|
44535
|
+
fontFamily: "monospace"
|
|
44536
|
+
}
|
|
44537
|
+
}, errorMessage),
|
|
44538
|
+
React.createElement("div", { style: { marginTop: "15px", fontSize: "14px", color: "#718096" } }, "🔄 에러 로그가 관제탑으로 자동 피드백되었습니다. AI가 소스 코드를 재수정하는 동안 잠시만 기다려주세요...")
|
|
44539
|
+
);
|
|
44540
|
+
}
|
|
44541
|
+
return this.props.children;
|
|
44542
|
+
}
|
|
44654
44543
|
}
|
|
44655
44544
|
const NineMu = {
|
|
44656
|
-
version: "0.1.
|
|
44545
|
+
version: "0.1.346",
|
|
44657
44546
|
init: (config2) => {
|
|
44658
44547
|
trace$1.log("🛠️ Nine-Mu Engine initialized", config2);
|
|
44659
44548
|
}
|
|
@@ -44662,6 +44551,7 @@ export {
|
|
|
44662
44551
|
NineChat,
|
|
44663
44552
|
NineDiff,
|
|
44664
44553
|
NineDiffPopup,
|
|
44554
|
+
NineExceptionHook,
|
|
44665
44555
|
NineMu,
|
|
44666
44556
|
NineMu as default
|
|
44667
44557
|
};
|