@nine-lab/nine-mu 0.1.350 → 0.1.352
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 +77 -88
- package/dist/nine-mu.js.map +1 -1
- package/dist/nine-mu.umd.js +1 -1
- package/dist/nine-mu.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/exception/ExceptionHook.js +76 -80
package/dist/nine-mu.js
CHANGED
|
@@ -17538,7 +17538,7 @@ render_fn = function() {
|
|
|
17538
17538
|
const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
|
|
17539
17539
|
this.shadowRoot.innerHTML = `
|
|
17540
17540
|
<style>
|
|
17541
|
-
@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.351"}/dist/css/nine-mu.css";
|
|
17542
17542
|
${customImport}
|
|
17543
17543
|
</style>
|
|
17544
17544
|
<div class="wrapper">
|
|
@@ -43788,7 +43788,7 @@ class NineDiff extends HTMLElement {
|
|
|
43788
43788
|
const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
|
|
43789
43789
|
this.shadowRoot.innerHTML = `
|
|
43790
43790
|
<style>
|
|
43791
|
-
@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.351"}/dist/css/nine-mu.css";
|
|
43792
43792
|
${customImport}
|
|
43793
43793
|
</style>
|
|
43794
43794
|
|
|
@@ -43928,7 +43928,7 @@ renderScaffolding_fn = function() {
|
|
|
43928
43928
|
const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
|
|
43929
43929
|
this.shadowRoot.innerHTML = `
|
|
43930
43930
|
<style>
|
|
43931
|
-
@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.351"}/dist/css/nine-mu.css";
|
|
43932
43932
|
${customImport}
|
|
43933
43933
|
</style>
|
|
43934
43934
|
|
|
@@ -44037,7 +44037,7 @@ render_fn2 = function() {
|
|
|
44037
44037
|
const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
|
|
44038
44038
|
this.shadowRoot.innerHTML = `
|
|
44039
44039
|
<style>
|
|
44040
|
-
@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.351"}/dist/css/nine-mu.css";
|
|
44041
44041
|
${customImport}
|
|
44042
44042
|
</style>
|
|
44043
44043
|
|
|
@@ -44367,7 +44367,7 @@ class ChatMessageBody extends HTMLElement {
|
|
|
44367
44367
|
const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
|
|
44368
44368
|
this.shadowRoot.innerHTML = `
|
|
44369
44369
|
<style>
|
|
44370
|
-
@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.351"}/dist/css/nine-mu.css";
|
|
44371
44371
|
${customImport}
|
|
44372
44372
|
</style>
|
|
44373
44373
|
|
|
@@ -44472,70 +44472,59 @@ const NineExceptionStyles = {
|
|
|
44472
44472
|
background: "#121314",
|
|
44473
44473
|
// 터미널 다크 블랙 배경
|
|
44474
44474
|
border: "1px solid #343A40",
|
|
44475
|
-
//
|
|
44475
|
+
// 외곽 메탈릭 테두리만 유지
|
|
44476
44476
|
borderRadius: "6px",
|
|
44477
44477
|
fontFamily: 'Consolas, Monaco, "Courier New", monospace',
|
|
44478
|
-
//
|
|
44478
|
+
// 완벽한 고정폭 서체
|
|
44479
44479
|
textAlign: "left",
|
|
44480
|
-
boxShadow: "0 4px 12px rgba(0,0,0,0.3)"
|
|
44481
|
-
|
|
44480
|
+
boxShadow: "0 4px 12px rgba(0,0,0,0.3)",
|
|
44481
|
+
lineHeight: "1.6"
|
|
44482
44482
|
},
|
|
44483
|
-
|
|
44484
|
-
color: "#
|
|
44485
|
-
//
|
|
44486
|
-
marginTop: 0,
|
|
44487
|
-
fontSize: "16px",
|
|
44488
|
-
fontWeight: "600",
|
|
44489
|
-
display: "flex",
|
|
44490
|
-
alignItems: "center",
|
|
44491
|
-
gap: "8px",
|
|
44492
|
-
borderBottom: "1px solid #2D3139",
|
|
44493
|
-
// 상단 바 구분선 느낌
|
|
44494
|
-
paddingBottom: "12px"
|
|
44495
|
-
},
|
|
44496
|
-
label: {
|
|
44497
|
-
margin: "15px 0 8px 0",
|
|
44483
|
+
systemError: {
|
|
44484
|
+
color: "#E53E3E",
|
|
44485
|
+
// 강렬한 터미널 레드 Warning
|
|
44498
44486
|
fontWeight: "bold",
|
|
44499
|
-
|
|
44500
|
-
|
|
44501
|
-
|
|
44487
|
+
fontSize: "14px",
|
|
44488
|
+
margin: "0 0 10px 0",
|
|
44489
|
+
letterSpacing: "0.5px"
|
|
44502
44490
|
},
|
|
44491
|
+
// 내부 테두리 박스를 완전히 제거하고 순수 텍스트만 출력되도록 수정
|
|
44503
44492
|
pre: {
|
|
44504
|
-
background: "
|
|
44505
|
-
// 코드 블록 내부의 살짝 더 깊은 블랙
|
|
44493
|
+
background: "transparent",
|
|
44506
44494
|
color: "#F8F9FA",
|
|
44507
|
-
|
|
44508
|
-
|
|
44509
|
-
|
|
44510
|
-
border: "1px solid #2A2D30",
|
|
44495
|
+
padding: "0",
|
|
44496
|
+
margin: "0 0 20px 0",
|
|
44497
|
+
border: "none",
|
|
44511
44498
|
overflowX: "auto",
|
|
44512
44499
|
whiteSpace: "pre-wrap",
|
|
44513
44500
|
fontFamily: "Consolas, Monaco, monospace",
|
|
44514
|
-
fontSize: "
|
|
44515
|
-
lineHeight: "1.5"
|
|
44501
|
+
fontSize: "14px"
|
|
44516
44502
|
},
|
|
44517
44503
|
footer: {
|
|
44518
|
-
|
|
44519
|
-
|
|
44520
|
-
color: "#718096",
|
|
44504
|
+
fontSize: "14px",
|
|
44505
|
+
color: "#E2E8F0",
|
|
44521
44506
|
display: "flex",
|
|
44522
44507
|
flexDirection: "column",
|
|
44508
|
+
gap: "8px"
|
|
44509
|
+
},
|
|
44510
|
+
promptRow: {
|
|
44511
|
+
display: "flex",
|
|
44512
|
+
alignItems: "center",
|
|
44523
44513
|
gap: "10px"
|
|
44524
44514
|
},
|
|
44525
|
-
|
|
44526
|
-
|
|
44527
|
-
background: "
|
|
44528
|
-
|
|
44529
|
-
|
|
44515
|
+
// 버튼을 없애고 터미널 선택지 [Y/n] 스타일의 상호작용 요소로 변경
|
|
44516
|
+
cliButton: {
|
|
44517
|
+
background: "transparent",
|
|
44518
|
+
color: "#38A169",
|
|
44519
|
+
// 터미널 그린 포인트
|
|
44530
44520
|
border: "none",
|
|
44531
|
-
|
|
44532
|
-
|
|
44521
|
+
padding: "0",
|
|
44522
|
+
fontFamily: "Consolas, Monaco, monospace",
|
|
44523
|
+
fontSize: "14px",
|
|
44533
44524
|
fontWeight: "bold",
|
|
44534
|
-
|
|
44535
|
-
|
|
44536
|
-
|
|
44537
|
-
fontFamily: "sans-serif"
|
|
44538
|
-
// 버튼 텍스트는 일반 폰트로 가독성 확보
|
|
44525
|
+
cursor: "pointer",
|
|
44526
|
+
textDecoration: "underline",
|
|
44527
|
+
textUnderlineOffset: "3px"
|
|
44539
44528
|
}
|
|
44540
44529
|
};
|
|
44541
44530
|
class NineExceptionHook extends React.Component {
|
|
@@ -44545,6 +44534,7 @@ class NineExceptionHook extends React.Component {
|
|
|
44545
44534
|
this.lastPath = window.location.pathname;
|
|
44546
44535
|
this.handleLocationChange = this.handleLocationChange.bind(this);
|
|
44547
44536
|
this.handleReport = this.handleReport.bind(this);
|
|
44537
|
+
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
44548
44538
|
}
|
|
44549
44539
|
static getDerivedStateFromError(error) {
|
|
44550
44540
|
return { hasError: true, error, reportStatus: "idle" };
|
|
@@ -44558,15 +44548,26 @@ class NineExceptionHook extends React.Component {
|
|
|
44558
44548
|
componentDidMount() {
|
|
44559
44549
|
window.addEventListener("popstate", this.handleLocationChange);
|
|
44560
44550
|
document.addEventListener("click", this.handleLocationChange, true);
|
|
44551
|
+
window.addEventListener("keydown", this.handleKeyDown);
|
|
44561
44552
|
}
|
|
44562
44553
|
componentWillUnmount() {
|
|
44563
44554
|
window.removeEventListener("popstate", this.handleLocationChange);
|
|
44564
44555
|
document.removeEventListener("click", this.handleLocationChange, true);
|
|
44556
|
+
window.removeEventListener("keydown", this.handleKeyDown);
|
|
44557
|
+
}
|
|
44558
|
+
// 실제 사용자가 키보드로 'Y' 또는 'y'를 누르면 마우스 클릭과 동일하게 관제탑 전송 실행
|
|
44559
|
+
handleKeyDown(e) {
|
|
44560
|
+
if (this.state.hasError && this.state.reportStatus === "idle") {
|
|
44561
|
+
if (e.key === "y" || e.key === "Y") {
|
|
44562
|
+
e.preventDefault();
|
|
44563
|
+
this.handleReport();
|
|
44564
|
+
}
|
|
44565
|
+
}
|
|
44565
44566
|
}
|
|
44566
44567
|
handleLocationChange() {
|
|
44567
44568
|
setTimeout(() => {
|
|
44568
44569
|
if (this.state.hasError && this.lastPath !== window.location.pathname) {
|
|
44569
|
-
console.log("[Nine-Library] 페이지 주소 변경 감지 ->
|
|
44570
|
+
console.log("[Nine-Library] 페이지 주소 변경 감지 -> 에러 상태 초기화");
|
|
44570
44571
|
this.lastPath = window.location.pathname;
|
|
44571
44572
|
this.setState({ hasError: false, error: null, reportStatus: "idle" });
|
|
44572
44573
|
}
|
|
@@ -44584,7 +44585,7 @@ class NineExceptionHook extends React.Component {
|
|
|
44584
44585
|
console.warn("[Nine-Library] window.triggerAutoRecovery 가 정의되지 않았습니다.");
|
|
44585
44586
|
}
|
|
44586
44587
|
this.setState({ reportStatus: "success" });
|
|
44587
|
-
},
|
|
44588
|
+
}, 600);
|
|
44588
44589
|
}
|
|
44589
44590
|
render() {
|
|
44590
44591
|
var _a2;
|
|
@@ -44594,58 +44595,46 @@ class NineExceptionHook extends React.Component {
|
|
|
44594
44595
|
}
|
|
44595
44596
|
const errorMessage = ((_a2 = this.state.error) == null ? void 0 : _a2.message) || String(this.state.error);
|
|
44596
44597
|
const customStyles = this.props.styles || {};
|
|
44597
|
-
let buttonText = "🚀 관제탑에 에러 피드백 전송하기";
|
|
44598
|
-
if (this.state.reportStatus === "sending") buttonText = "⏳ 관제탑 연락 중...";
|
|
44599
|
-
if (this.state.reportStatus === "success") buttonText = "✅ 전송 완료! AI 분석 시작";
|
|
44600
44598
|
return React.createElement(
|
|
44601
44599
|
"div",
|
|
44602
44600
|
{
|
|
44603
44601
|
style: { ...NineExceptionStyles.container, ...customStyles.container, ...this.props.containerStyle }
|
|
44604
44602
|
},
|
|
44605
|
-
// 1.
|
|
44606
|
-
React.createElement(
|
|
44607
|
-
"div",
|
|
44608
|
-
{ style: { ...NineExceptionStyles.title, ...customStyles.title } },
|
|
44609
|
-
React.createElement("span", { style: { color: "#38A169", marginRight: "5px" } }, "nandoo@nine-mu:~$"),
|
|
44610
|
-
"./system-check --status"
|
|
44611
|
-
),
|
|
44612
|
-
// 2. 시스템 에러 감지 출력 로그
|
|
44603
|
+
// 1. 에러 감지 시스템 로그 (레드)
|
|
44613
44604
|
React.createElement(
|
|
44614
44605
|
"div",
|
|
44615
|
-
{ style: {
|
|
44606
|
+
{ style: { ...NineExceptionStyles.systemError, ...customStyles.systemError } },
|
|
44616
44607
|
"[SYSTEM] COMPONENT RENDER ERROR DETECTED"
|
|
44617
44608
|
),
|
|
44618
|
-
//
|
|
44619
|
-
React.createElement(
|
|
44620
|
-
"p",
|
|
44621
|
-
{ style: { ...NineExceptionStyles.label, ...customStyles.label } },
|
|
44622
|
-
React.createElement("span", { style: { color: "#3182CE", marginRight: "6px" } }, "nandoo@nine-mu:~$"),
|
|
44623
|
-
"cat error.log"
|
|
44624
|
-
),
|
|
44625
|
-
// 4. 에러 내용 본문 박스
|
|
44609
|
+
// 2. 에러 상세 원인 (박스 없는 순수 텍스트 출력)
|
|
44626
44610
|
React.createElement("pre", { style: { ...NineExceptionStyles.pre, ...customStyles.pre } }, errorMessage),
|
|
44627
|
-
//
|
|
44611
|
+
// 3. CLI 양방향 인터페이스 (y/n 프롬프트)
|
|
44628
44612
|
React.createElement(
|
|
44629
44613
|
"div",
|
|
44630
44614
|
{ style: { ...NineExceptionStyles.footer, ...customStyles.footer } },
|
|
44631
|
-
React.createElement(
|
|
44632
|
-
"
|
|
44633
|
-
{
|
|
44634
|
-
|
|
44635
|
-
|
|
44636
|
-
|
|
44637
|
-
|
|
44638
|
-
|
|
44615
|
+
this.state.reportStatus === "idle" && React.createElement(
|
|
44616
|
+
"div",
|
|
44617
|
+
{ style: NineExceptionStyles.promptRow },
|
|
44618
|
+
React.createElement("span", null, "Send error log to Control Tower (y/n)? "),
|
|
44619
|
+
React.createElement(
|
|
44620
|
+
"button",
|
|
44621
|
+
{
|
|
44622
|
+
style: { ...NineExceptionStyles.cliButton, ...customStyles.cliButton },
|
|
44623
|
+
onClick: this.handleReport
|
|
44639
44624
|
},
|
|
44640
|
-
|
|
44641
|
-
|
|
44642
|
-
|
|
44643
|
-
|
|
44625
|
+
"[Y]"
|
|
44626
|
+
)
|
|
44627
|
+
),
|
|
44628
|
+
this.state.reportStatus === "sending" && React.createElement(
|
|
44629
|
+
"div",
|
|
44630
|
+
{ style: { color: "#ED8936" } },
|
|
44631
|
+
">> Connecting to Control Tower... Sending payload."
|
|
44644
44632
|
),
|
|
44645
44633
|
this.state.reportStatus === "success" && React.createElement(
|
|
44646
44634
|
"div",
|
|
44647
|
-
{ style: {
|
|
44648
|
-
"
|
|
44635
|
+
{ style: { display: "flex", flexDirection: "column", gap: "4px" } },
|
|
44636
|
+
React.createElement("div", { style: { color: "#38A169", fontWeight: "bold" } }, ">> Transmit complete. Core engine initialized."),
|
|
44637
|
+
React.createElement("div", { style: { color: "#A0AEC0", fontStyle: "italic", fontSize: "13px" } }, "AI가 소스 코드를 재수정하는 동안 잠시만 기다려주세요...")
|
|
44649
44638
|
)
|
|
44650
44639
|
)
|
|
44651
44640
|
);
|
|
@@ -44654,7 +44643,7 @@ class NineExceptionHook extends React.Component {
|
|
|
44654
44643
|
}
|
|
44655
44644
|
}
|
|
44656
44645
|
const NineMu = {
|
|
44657
|
-
version: "0.1.
|
|
44646
|
+
version: "0.1.351",
|
|
44658
44647
|
init: (config2) => {
|
|
44659
44648
|
trace$1.log("🛠️ Nine-Mu Engine initialized", config2);
|
|
44660
44649
|
}
|