@nine-lab/nine-mu 0.1.345 → 0.1.346
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 +7 -195
- 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 +50 -184
- package/src/index.js +1 -1
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
|
|
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
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.345"}/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.345"}/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.345"}/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.345"}/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.345"}/dist/css/nine-mu.css";
|
|
44370
44370
|
${customImport}
|
|
44371
44371
|
</style>
|
|
44372
44372
|
|
|
@@ -44464,196 +44464,8 @@ if (!customElements.get("nine-chat-ing")) {
|
|
|
44464
44464
|
if (!customElements.get("nine-chat-progress")) {
|
|
44465
44465
|
customElements.define("nine-chat-progress", ProgressMessage);
|
|
44466
44466
|
}
|
|
44467
|
-
class ExceptionHook extends HTMLElement {
|
|
44468
|
-
constructor() {
|
|
44469
|
-
super();
|
|
44470
|
-
__privateAdd(this, _ExceptionHook_instances);
|
|
44471
|
-
__privateAdd(this, _lastPath, window.location.pathname);
|
|
44472
|
-
__privateAdd(this, _hasError, false);
|
|
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" });
|
|
44570
|
-
}
|
|
44571
|
-
connectedCallback() {
|
|
44572
|
-
__privateGet(this, _renderer2).call(this);
|
|
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);
|
|
44578
|
-
}
|
|
44579
|
-
disconnectedCallback() {
|
|
44580
|
-
window.removeEventListener("error", __privateGet(this, _handleRuntimeError), true);
|
|
44581
|
-
window.removeEventListener("unhandledrejection", __privateGet(this, _handlePromiseError), true);
|
|
44582
|
-
window.removeEventListener("popstate", __privateGet(this, _handleLocationChange));
|
|
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);
|
|
44605
|
-
}
|
|
44606
|
-
return false;
|
|
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));
|
|
44649
|
-
}
|
|
44650
|
-
}, 0);
|
|
44651
|
-
};
|
|
44652
|
-
if (!customElements.get("nine-exception-hook")) {
|
|
44653
|
-
customElements.define("nine-exception-hook", ExceptionHook);
|
|
44654
|
-
}
|
|
44655
44467
|
const NineMu = {
|
|
44656
|
-
version: "0.1.
|
|
44468
|
+
version: "0.1.345",
|
|
44657
44469
|
init: (config2) => {
|
|
44658
44470
|
trace$1.log("🛠️ Nine-Mu Engine initialized", config2);
|
|
44659
44471
|
}
|