@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 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.349"}/dist/css/nine-mu.css";
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.349"}/dist/css/nine-mu.css";
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.349"}/dist/css/nine-mu.css";
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.349"}/dist/css/nine-mu.css";
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.349"}/dist/css/nine-mu.css";
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
- title: {
44484
- color: "#FFFFFF",
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
- color: "#A0AEC0",
44500
- // 프롬프트 서브 텍스트 (연한 그레이)
44501
- fontSize: "13px"
44487
+ fontSize: "14px",
44488
+ margin: "0 0 10px 0",
44489
+ letterSpacing: "0.5px"
44502
44490
  },
44491
+ // 내부 테두리 박스를 완전히 제거하고 순수 텍스트만 출력되도록 수정
44503
44492
  pre: {
44504
- background: "#1A1C1E",
44505
- // 코드 블록 내부의 살짝 더 깊은 블랙
44493
+ background: "transparent",
44506
44494
  color: "#F8F9FA",
44507
- // 에러 로그 화이트 출력
44508
- padding: "15px",
44509
- borderRadius: "4px",
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: "13px",
44515
- lineHeight: "1.5"
44501
+ fontSize: "14px"
44516
44502
  },
44517
44503
  footer: {
44518
- marginTop: "20px",
44519
- fontSize: "13px",
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
- button: {
44526
- padding: "10px 16px",
44527
- background: "#E53E3E",
44528
- // 버튼의 고유 아이덴티티 유지 (레드)
44529
- color: "#FFFFFF",
44515
+ // 버튼을 없애고 터미널 선택지 [Y/n] 스타일의 상호작용 요소로 변경
44516
+ cliButton: {
44517
+ background: "transparent",
44518
+ color: "#38A169",
44519
+ // 터미널 그린 포인트
44530
44520
  border: "none",
44531
- borderRadius: "4px",
44532
- cursor: "pointer",
44521
+ padding: "0",
44522
+ fontFamily: "Consolas, Monaco, monospace",
44523
+ fontSize: "14px",
44533
44524
  fontWeight: "bold",
44534
- fontSize: "13px",
44535
- alignSelf: "flex-start",
44536
- transition: "background 0.2s",
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
- }, 500);
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: { color: "#E53E3E", fontSize: "14px", margin: "15px 0 5px 0", fontWeight: "bold", letterSpacing: "0.5px" } },
44606
+ { style: { ...NineExceptionStyles.systemError, ...customStyles.systemError } },
44616
44607
  "[SYSTEM] COMPONENT RENDER ERROR DETECTED"
44617
44608
  ),
44618
- // 3. 명령어 입력 시뮬레이션 ($ cat error.log)
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
- // 5. 하단 버튼 피드백 영역
44611
+ // 3. CLI 양방향 인터페이스 (y/n 프롬프트)
44628
44612
  React.createElement(
44629
44613
  "div",
44630
44614
  { style: { ...NineExceptionStyles.footer, ...customStyles.footer } },
44631
- React.createElement(
44632
- "button",
44633
- {
44634
- style: {
44635
- ...NineExceptionStyles.button,
44636
- ...customStyles.button,
44637
- backgroundColor: this.state.reportStatus === "success" ? "#38A169" : this.state.reportStatus === "sending" ? "#A0AEC0" : "#E53E3E",
44638
- cursor: this.state.reportStatus === "idle" ? "pointer" : "not-allowed"
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
- disabled: this.state.reportStatus !== "idle",
44641
- onClick: this.handleReport
44642
- },
44643
- buttonText
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: { color: "#CBD5E0", fontSize: "13px", marginTop: "5px", fontStyle: "italic" } },
44648
- ">> AI가 소스 코드를 재수정하는 동안 잠시만 기다려주세요..."
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.349",
44646
+ version: "0.1.351",
44658
44647
  init: (config2) => {
44659
44648
  trace$1.log("🛠️ Nine-Mu Engine initialized", config2);
44660
44649
  }