@nine-lab/nine-mu 0.1.15 โ 0.1.17
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 +11 -11
- 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 +2 -2
- package/src/components/NineChat.js +3 -3
- package/src/index.js +4 -4
- package/src/services/NineMuService.js +3 -3
- package/vite.config.js +1 -1
package/dist/nine-mu.js
CHANGED
|
@@ -20,8 +20,8 @@ class NineMuService {
|
|
|
20
20
|
*/
|
|
21
21
|
async generate(command, targets, currentRoutes) {
|
|
22
22
|
try {
|
|
23
|
-
trace.log(
|
|
24
|
-
const response = await fetch(`${this.connectorUrl}/api/
|
|
23
|
+
trace.log(`๊ณต์ ์์: "${command}" [๋์: ${targets.join(", ")}]`);
|
|
24
|
+
const response = await fetch(`${this.connectorUrl}/api/mu/generate`, {
|
|
25
25
|
method: "POST",
|
|
26
26
|
headers: { "Content-Type": "application/json" },
|
|
27
27
|
body: JSON.stringify({
|
|
@@ -37,7 +37,7 @@ class NineMuService {
|
|
|
37
37
|
}
|
|
38
38
|
return result;
|
|
39
39
|
} catch (error) {
|
|
40
|
-
trace.error("
|
|
40
|
+
trace.error("NineMu Service Error:", error);
|
|
41
41
|
throw error;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -107,7 +107,7 @@ initActions_fn = function() {
|
|
|
107
107
|
const result = await __privateGet(this, _service).generate(command, targets, __privateGet(this, _routes));
|
|
108
108
|
$status.textContent = "โ
์๋ฃ";
|
|
109
109
|
nine.alert("์์ค ์์ฑ ์ฑ๊ณต").rgb();
|
|
110
|
-
this.dispatchEvent(new CustomEvent("nine-
|
|
110
|
+
this.dispatchEvent(new CustomEvent("nine-mu-completed", { detail: result, bubbles: true }));
|
|
111
111
|
} catch (err) {
|
|
112
112
|
$status.textContent = "โ ์คํจ";
|
|
113
113
|
nine.alert(err.message).rgb().shake();
|
|
@@ -120,7 +120,7 @@ render_fn = function() {
|
|
|
120
120
|
const customImport = this.getAttribute("css-path") ? `@import "${this.getAttribute("css-path")}";` : "";
|
|
121
121
|
this.shadowRoot.innerHTML = `
|
|
122
122
|
<style>
|
|
123
|
-
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-
|
|
123
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.16"}/dist/css/nine-mu.css";
|
|
124
124
|
${customImport}
|
|
125
125
|
</style>
|
|
126
126
|
<div class="wrapper">
|
|
@@ -128,7 +128,7 @@ render_fn = function() {
|
|
|
128
128
|
<div class="container">
|
|
129
129
|
<div class="head">
|
|
130
130
|
<div class="logo"><span></span></div>
|
|
131
|
-
<div id="status-tag" style="font-size:10px; color:#ff5722; padding:5px;">
|
|
131
|
+
<div id="status-tag" style="font-size:10px; color:#ff5722; padding:5px;">nine-mu Engine Ready</div>
|
|
132
132
|
</div>
|
|
133
133
|
<nx-ai-chat></nx-ai-chat>
|
|
134
134
|
<div class="foot">
|
|
@@ -156,15 +156,15 @@ render_fn = function() {
|
|
|
156
156
|
if (!customElements.get("nine-chat")) {
|
|
157
157
|
customElements.define("nine-chat", NineChat);
|
|
158
158
|
}
|
|
159
|
-
const
|
|
160
|
-
version: "0.1.
|
|
159
|
+
const NineMu = {
|
|
160
|
+
version: "0.1.16",
|
|
161
161
|
init: (config) => {
|
|
162
|
-
trace.log("๐ ๏ธ Nine-
|
|
162
|
+
trace.log("๐ ๏ธ Nine-Mu Engine initialized", config);
|
|
163
163
|
}
|
|
164
164
|
};
|
|
165
165
|
export {
|
|
166
166
|
NineChat,
|
|
167
|
-
|
|
168
|
-
|
|
167
|
+
NineMu,
|
|
168
|
+
NineMu as default
|
|
169
169
|
};
|
|
170
170
|
//# sourceMappingURL=nine-mu.js.map
|
package/dist/nine-mu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nine-mu.js","sources":["../src/services/NineMuService.js","../src/components/NineChat.js","../src/index.js"],"sourcesContent":["import { nine, trace } from '@nine-lab/nine-util';\n\nexport class NineMuService {\n constructor(connectorUrl) {\n this.connectorUrl = connectorUrl;\n }\n\n /**\n * AI ์์ค ์์ฑ ์คํ\n * @param {string} command - ์ฌ์ฉ์ ์
๋ ฅ ๋ช
๋ น\n * @param {Array} targets - ์ฒดํฌ๋ ์์ฑ ๋์ (MyBatis, Service ๋ฑ)\n * @param {Array} currentRoutes - ํ์ฌ ํ๋ก์ ํธ ๊ฒฝ๋ก ์ ๋ณด\n */\n async generate(command, targets, currentRoutes) {\n try {\n trace.log(`๐ Fab ๊ณต์ ์์: \"${command}\" [๋์: ${targets.join(', ')}]`);\n\n const response = await fetch(`${this.connectorUrl}/api/fab/generate`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n command,\n targets,\n projectType: 'spring-react',\n currentRoutes\n })\n });\n\n const result = await response.json();\n\n if (!result.success) {\n throw new Error(result.error || \"์์ค ์์ฑ ์ค ์๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.\");\n }\n\n return result;\n } catch (error) {\n trace.error(\"โ Fab Service Error:\", error);\n throw error;\n }\n }\n\n /**\n * ์ด๊ธฐ ๊ฒฝ๋ก ์ ๋ณด ๋ก๋\n */\n async fetchRoutes(routeUrl) {\n if (!routeUrl) return [];\n try {\n const res = await fetch(routeUrl);\n return await res.json();\n } catch (err) {\n trace.error(\"Route load fail\", err);\n return [];\n }\n }\n}","import { nine, trace } from '@nine-lab/nine-util';\nimport { NineMuService } from '../services/NineMuService.js';\n\nexport class NineChat extends HTMLElement {\n #service = null;\n #routes = [];\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n async connectedCallback() {\n // ์๋น์ค ์ด๊ธฐํ\n const connectorUrl = this.getAttribute('connector-url') || 'http://localhost:3002';\n this.#service = new NineMuService(connectorUrl);\n\n this.#render();\n this.#initInteractions(); // UI ํ ๊ธ ๋ก์ง\n this.#initActions(); // ์ํฐ ์ ์คํ ๋ก์ง\n\n // ๊ฒฝ๋ก ๋ฐ์ดํฐ ๋ก๋\n this.#routes = await this.#service.fetchRoutes(this.getAttribute('route-url'));\n }\n\n // --- [๊ทธ๋ฃน 1: Interaction] ํ๋ฉด ํ ๊ธ ๋ฐ ๋ฉ๋ด ํด๋ฆญ ---\n #initInteractions() {\n const $settings = this.shadowRoot.querySelector('nine-ai-settings');\n const $menuIcons = this.shadowRoot.querySelectorAll(\".menu-icon\");\n\n const toggleUI = () => this.classList.toggle(\"collapse\");\n this.shadowRoot.querySelector(\".expand-icon\").addEventListener(\"click\", toggleUI);\n this.shadowRoot.querySelector(\".collapse-icon\").addEventListener(\"click\", toggleUI);\n\n $menuIcons.forEach(el => {\n el.addEventListener(\"click\", (e) => {\n $menuIcons.forEach(icon => icon.classList.remove(\"active\"));\n const clicked = e.target.closest(\".menu-icon\");\n clicked.classList.add(\"active\");\n $settings.classList.toggle(\"expand\", clicked.classList.contains('menu-setting'));\n });\n });\n }\n\n // --- [๊ทธ๋ฃน 2: Action] ์ํฐํค ์
๋ ฅ ์ ์๋น์ค ํธ์ถ ---\n #initActions() {\n const $textarea = this.shadowRoot.querySelector('#q');\n const $status = this.shadowRoot.querySelector('#status-tag');\n\n $textarea.addEventListener('keypress', async (e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n const command = e.target.value.trim();\n if (!command) return;\n\n // 1. UI ํผ๋๋ฐฑ\n $status.textContent = \"โ๏ธ ๊ณต์ ๋ถ์ ์ค...\";\n e.target.value = '';\n\n // 2. ์ฒดํฌ๋ ํ๊ฒ ์์ง\n const targets = Array.from(this.shadowRoot.querySelectorAll('input[name=\"gen_target\"]:checked'))\n .map(el => el.value);\n\n // 3. ๋ถ๋ฆฌ๋ ์๋น์ค ํธ์ถ\n try {\n const result = await this.#service.generate(command, targets, this.#routes);\n\n // 4. ์ฑ๊ณต ์ฒ๋ฆฌ\n $status.textContent = \"โ
์๋ฃ\";\n nine.alert(\"์์ค ์์ฑ ์ฑ๊ณต\").rgb();\n this.dispatchEvent(new CustomEvent('nine-fab-completed', { detail: result, bubbles: true }));\n } catch (err) {\n // 5. ์คํจ ์ฒ๋ฆฌ\n $status.textContent = \"โ ์คํจ\";\n nine.alert(err.message).rgb().shake();\n }\n }\n });\n }\n\n #render() {\n const placeholder = this.getAttribute(\"placeholder\") || \"๋์๊ฒ ๋ฌด์์ด๋ ๋ฌผ์ด๋ด...\";\n const customImport = this.getAttribute(\"css-path\") ? `@import \"${this.getAttribute(\"css-path\")}\";` : \"\";\n\n this.shadowRoot.innerHTML = `\n <style>\n @import \"https://cdn.jsdelivr.net/npm/@nine-lab/nine-fab@${__APP_VERSION__}/dist/css/nine-fab.css\";\n ${customImport}\n </style>\n <div class=\"wrapper\">\n <nine-ai-settings></nine-ai-settings>\n <div class=\"container\">\n <div class=\"head\">\n <div class=\"logo\"><span></span></div>\n <div id=\"status-tag\" style=\"font-size:10px; color:#ff5722; padding:5px;\">Fab Engine Ready</div>\n </div>\n <nx-ai-chat></nx-ai-chat>\n <div class=\"foot\">\n <div class=\"apply-src\">\n ${['MyBatis', 'Service', 'Controller', 'JavaScript'].map(t => `\n <div>\n <input type=\"checkbox\" id=\"${t.toLowerCase()}\" name=\"gen_target\" value=\"${t}\" checked />\n <label for=\"${t.toLowerCase()}\">${t}</label>\n </div>\n `).join('')}\n </div>\n <textarea id=\"q\" rows=\"4\" placeholder=\"${placeholder}\"></textarea>\n </div>\n </div>\n <div class=\"menu\">\n <div class=\"collapse-icon\"></div>\n <div class=\"menu-icon menu-filter active\"></div>\n <div class=\"menu-icon menu-general\"></div>\n <div class=\"menu-icon menu-setting\"></div>\n </div>\n </div>\n <div class=\"expand-icon\"></div>\n `;\n }\n}\n\nif (!customElements.get('nine-chat')) {\n customElements.define('nine-chat', NineChat);\n}","import { trace } from '@nine-lab/nine-util';\nimport { NineChat } from './components/NineChat.js';\n\n/**\n * Nine-Fab ์์ง ๋ฉ์ธ ํด๋์ค\n */\nexport const NineFab = {\n version: typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.1.0',\n init: (config) => {\n trace.log(\"๐ ๏ธ Nine-Fab Engine initialized\", config);\n // ํฅํ ์ปค๋ฅํฐ URL ์ ์ญ ์ค์ ์ด๋ ์ธ์ฆ ํ ํฐ ์ฒ๋ฆฌ ๋ก์ง ์ถ๊ฐ ๊ฐ๋ฅ\n }\n};\n\n// ๊ธฐ๋ณธ export ๋ฐ ์ปดํฌ๋ํธ export\nexport default NineFab;\nexport { NineChat };"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nine-mu.js","sources":["../src/services/NineMuService.js","../src/components/NineChat.js","../src/index.js"],"sourcesContent":["import { nine, trace } from '@nine-lab/nine-util';\n\nexport class NineMuService {\n constructor(connectorUrl) {\n this.connectorUrl = connectorUrl;\n }\n\n /**\n * AI ์์ค ์์ฑ ์คํ\n * @param {string} command - ์ฌ์ฉ์ ์
๋ ฅ ๋ช
๋ น\n * @param {Array} targets - ์ฒดํฌ๋ ์์ฑ ๋์ (MyBatis, Service ๋ฑ)\n * @param {Array} currentRoutes - ํ์ฌ ํ๋ก์ ํธ ๊ฒฝ๋ก ์ ๋ณด\n */\n async generate(command, targets, currentRoutes) {\n try {\n trace.log(`๊ณต์ ์์: \"${command}\" [๋์: ${targets.join(', ')}]`);\n\n const response = await fetch(`${this.connectorUrl}/api/mu/generate`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n command,\n targets,\n projectType: 'spring-react',\n currentRoutes\n })\n });\n\n const result = await response.json();\n\n if (!result.success) {\n throw new Error(result.error || \"์์ค ์์ฑ ์ค ์๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.\");\n }\n\n return result;\n } catch (error) {\n trace.error(\"NineMu Service Error:\", error);\n throw error;\n }\n }\n\n /**\n * ์ด๊ธฐ ๊ฒฝ๋ก ์ ๋ณด ๋ก๋\n */\n async fetchRoutes(routeUrl) {\n if (!routeUrl) return [];\n try {\n const res = await fetch(routeUrl);\n return await res.json();\n } catch (err) {\n trace.error(\"Route load fail\", err);\n return [];\n }\n }\n}","import { nine, trace } from '@nine-lab/nine-util';\nimport { NineMuService } from '../services/NineMuService.js';\n\nexport class NineChat extends HTMLElement {\n #service = null;\n #routes = [];\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n async connectedCallback() {\n // ์๋น์ค ์ด๊ธฐํ\n const connectorUrl = this.getAttribute('connector-url') || 'http://localhost:3002';\n this.#service = new NineMuService(connectorUrl);\n\n this.#render();\n this.#initInteractions(); // UI ํ ๊ธ ๋ก์ง\n this.#initActions(); // ์ํฐ ์ ์คํ ๋ก์ง\n\n // ๊ฒฝ๋ก ๋ฐ์ดํฐ ๋ก๋\n this.#routes = await this.#service.fetchRoutes(this.getAttribute('route-url'));\n }\n\n // --- [๊ทธ๋ฃน 1: Interaction] ํ๋ฉด ํ ๊ธ ๋ฐ ๋ฉ๋ด ํด๋ฆญ ---\n #initInteractions() {\n const $settings = this.shadowRoot.querySelector('nine-ai-settings');\n const $menuIcons = this.shadowRoot.querySelectorAll(\".menu-icon\");\n\n const toggleUI = () => this.classList.toggle(\"collapse\");\n this.shadowRoot.querySelector(\".expand-icon\").addEventListener(\"click\", toggleUI);\n this.shadowRoot.querySelector(\".collapse-icon\").addEventListener(\"click\", toggleUI);\n\n $menuIcons.forEach(el => {\n el.addEventListener(\"click\", (e) => {\n $menuIcons.forEach(icon => icon.classList.remove(\"active\"));\n const clicked = e.target.closest(\".menu-icon\");\n clicked.classList.add(\"active\");\n $settings.classList.toggle(\"expand\", clicked.classList.contains('menu-setting'));\n });\n });\n }\n\n // --- [๊ทธ๋ฃน 2: Action] ์ํฐํค ์
๋ ฅ ์ ์๋น์ค ํธ์ถ ---\n #initActions() {\n const $textarea = this.shadowRoot.querySelector('#q');\n const $status = this.shadowRoot.querySelector('#status-tag');\n\n $textarea.addEventListener('keypress', async (e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n const command = e.target.value.trim();\n if (!command) return;\n\n // 1. UI ํผ๋๋ฐฑ\n $status.textContent = \"โ๏ธ ๊ณต์ ๋ถ์ ์ค...\";\n e.target.value = '';\n\n // 2. ์ฒดํฌ๋ ํ๊ฒ ์์ง\n const targets = Array.from(this.shadowRoot.querySelectorAll('input[name=\"gen_target\"]:checked'))\n .map(el => el.value);\n\n // 3. ๋ถ๋ฆฌ๋ ์๋น์ค ํธ์ถ\n try {\n const result = await this.#service.generate(command, targets, this.#routes);\n\n // 4. ์ฑ๊ณต ์ฒ๋ฆฌ\n $status.textContent = \"โ
์๋ฃ\";\n nine.alert(\"์์ค ์์ฑ ์ฑ๊ณต\").rgb();\n this.dispatchEvent(new CustomEvent('nine-mu-completed', { detail: result, bubbles: true }));\n } catch (err) {\n // 5. ์คํจ ์ฒ๋ฆฌ\n $status.textContent = \"โ ์คํจ\";\n nine.alert(err.message).rgb().shake();\n }\n }\n });\n }\n\n #render() {\n const placeholder = this.getAttribute(\"placeholder\") || \"๋์๊ฒ ๋ฌด์์ด๋ ๋ฌผ์ด๋ด...\";\n const customImport = this.getAttribute(\"css-path\") ? `@import \"${this.getAttribute(\"css-path\")}\";` : \"\";\n\n this.shadowRoot.innerHTML = `\n <style>\n @import \"https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${__APP_VERSION__}/dist/css/nine-mu.css\";\n ${customImport}\n </style>\n <div class=\"wrapper\">\n <nine-ai-settings></nine-ai-settings>\n <div class=\"container\">\n <div class=\"head\">\n <div class=\"logo\"><span></span></div>\n <div id=\"status-tag\" style=\"font-size:10px; color:#ff5722; padding:5px;\">nine-mu Engine Ready</div>\n </div>\n <nx-ai-chat></nx-ai-chat>\n <div class=\"foot\">\n <div class=\"apply-src\">\n ${['MyBatis', 'Service', 'Controller', 'JavaScript'].map(t => `\n <div>\n <input type=\"checkbox\" id=\"${t.toLowerCase()}\" name=\"gen_target\" value=\"${t}\" checked />\n <label for=\"${t.toLowerCase()}\">${t}</label>\n </div>\n `).join('')}\n </div>\n <textarea id=\"q\" rows=\"4\" placeholder=\"${placeholder}\"></textarea>\n </div>\n </div>\n <div class=\"menu\">\n <div class=\"collapse-icon\"></div>\n <div class=\"menu-icon menu-filter active\"></div>\n <div class=\"menu-icon menu-general\"></div>\n <div class=\"menu-icon menu-setting\"></div>\n </div>\n </div>\n <div class=\"expand-icon\"></div>\n `;\n }\n}\n\nif (!customElements.get('nine-chat')) {\n customElements.define('nine-chat', NineChat);\n}","import { trace } from '@nine-lab/nine-util';\nimport { NineChat } from './components/NineChat.js';\n\n/**\n * Nine-Mu ์์ง ๋ฉ์ธ ํด๋์ค\n */\nexport const NineMu = {\n version: typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.1.0',\n init: (config) => {\n trace.log(\"๐ ๏ธ Nine-Mu Engine initialized\", config);\n // ํฅํ ์ปค๋ฅํฐ URL ์ ์ญ ์ค์ ์ด๋ ์ธ์ฆ ํ ํฐ ์ฒ๋ฆฌ ๋ก์ง ์ถ๊ฐ ๊ฐ๋ฅ\n }\n};\n\n// ๊ธฐ๋ณธ export ๋ฐ ์ปดํฌ๋ํธ export\nexport default NineMu;\nexport { NineChat };"],"names":[],"mappings":"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"}
|
package/dist/nine-mu.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@nine-lab/nine-util")):"function"==typeof define&&define.amd?define(["exports","@nine-lab/nine-util"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@nine-lab/nine-util")):"function"==typeof define&&define.amd?define(["exports","@nine-lab/nine-util"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).NineMu={},e.NineUtil)}(this,function(e,t){"use strict";var n,i,s,a,o,r,c=e=>{throw TypeError(e)},l=(e,t,n)=>t.has(e)||c("Cannot "+n),d=(e,t,n)=>(l(e,t,"read from private field"),n?n.call(e):t.get(e)),h=(e,t,n)=>t.has(e)?c("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),u=(e,t,n,i)=>(l(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n),p=(e,t,n)=>(l(e,t,"access private method"),n);class v{constructor(e){this.connectorUrl=e}async generate(e,n,i){try{t.trace.log(`๊ณต์ ์์: "${e}" [๋์: ${n.join(", ")}]`);const s=await fetch(`${this.connectorUrl}/api/mu/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:e,targets:n,projectType:"spring-react",currentRoutes:i})}),a=await s.json();if(!a.success)throw new Error(a.error||"์์ค ์์ฑ ์ค ์๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.");return a}catch(s){throw t.trace.error("NineMu Service Error:",s),s}}async fetchRoutes(e){if(!e)return[];try{const t=await fetch(e);return await t.json()}catch(n){return t.trace.error("Route load fail",n),[]}}}class m extends HTMLElement{constructor(){super(),h(this,s),h(this,n,null),h(this,i,[]),this.attachShadow({mode:"open"})}async connectedCallback(){const e=this.getAttribute("connector-url")||"http://localhost:3002";u(this,n,new v(e)),p(this,s,r).call(this),p(this,s,a).call(this),p(this,s,o).call(this),u(this,i,await d(this,n).fetchRoutes(this.getAttribute("route-url")))}}n=new WeakMap,i=new WeakMap,s=new WeakSet,a=function(){const e=this.shadowRoot.querySelector("nine-ai-settings"),t=this.shadowRoot.querySelectorAll(".menu-icon"),n=()=>this.classList.toggle("collapse");this.shadowRoot.querySelector(".expand-icon").addEventListener("click",n),this.shadowRoot.querySelector(".collapse-icon").addEventListener("click",n),t.forEach(n=>{n.addEventListener("click",n=>{t.forEach(e=>e.classList.remove("active"));const i=n.target.closest(".menu-icon");i.classList.add("active"),e.classList.toggle("expand",i.classList.contains("menu-setting"))})})},o=function(){const e=this.shadowRoot.querySelector("#q"),s=this.shadowRoot.querySelector("#status-tag");e.addEventListener("keypress",async e=>{if("Enter"===e.key&&!e.shiftKey){e.preventDefault();const o=e.target.value.trim();if(!o)return;s.textContent="โ๏ธ ๊ณต์ ๋ถ์ ์ค...",e.target.value="";const r=Array.from(this.shadowRoot.querySelectorAll('input[name="gen_target"]:checked')).map(e=>e.value);try{const e=await d(this,n).generate(o,r,d(this,i));s.textContent="โ
์๋ฃ",t.nine.alert("์์ค ์์ฑ ์ฑ๊ณต").rgb(),this.dispatchEvent(new CustomEvent("nine-mu-completed",{detail:e,bubbles:!0}))}catch(a){s.textContent="โ ์คํจ",t.nine.alert(a.message).rgb().shake()}}})},r=function(){const e=this.getAttribute("placeholder")||"๋์๊ฒ ๋ฌด์์ด๋ ๋ฌผ์ด๋ด...",t=this.getAttribute("css-path")?`@import "${this.getAttribute("css-path")}";`:"";this.shadowRoot.innerHTML=`\n <style>\n @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@0.1.16/dist/css/nine-mu.css";\n ${t}\n </style>\n <div class="wrapper">\n <nine-ai-settings></nine-ai-settings>\n <div class="container">\n <div class="head">\n <div class="logo"><span></span></div>\n <div id="status-tag" style="font-size:10px; color:#ff5722; padding:5px;">nine-mu Engine Ready</div>\n </div>\n <nx-ai-chat></nx-ai-chat>\n <div class="foot">\n <div class="apply-src">\n ${["MyBatis","Service","Controller","JavaScript"].map(e=>`\n <div>\n <input type="checkbox" id="${e.toLowerCase()}" name="gen_target" value="${e}" checked />\n <label for="${e.toLowerCase()}">${e}</label>\n </div>\n `).join("")}\n </div>\n <textarea id="q" rows="4" placeholder="${e}"></textarea>\n </div>\n </div>\n <div class="menu">\n <div class="collapse-icon"></div>\n <div class="menu-icon menu-filter active"></div>\n <div class="menu-icon menu-general"></div>\n <div class="menu-icon menu-setting"></div>\n </div>\n </div>\n <div class="expand-icon"></div>\n `},customElements.get("nine-chat")||customElements.define("nine-chat",m);const g={version:"0.1.16",init:e=>{t.trace.log("๐ ๏ธ Nine-Mu Engine initialized",e)}};e.NineChat=m,e.NineMu=g,e.default=g,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
2
2
|
//# sourceMappingURL=nine-mu.umd.js.map
|
package/dist/nine-mu.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nine-mu.umd.js","sources":["../src/services/NineMuService.js","../src/components/NineChat.js","../src/index.js"],"sourcesContent":["import { nine, trace } from '@nine-lab/nine-util';\n\nexport class NineMuService {\n constructor(connectorUrl) {\n this.connectorUrl = connectorUrl;\n }\n\n /**\n * AI ์์ค ์์ฑ ์คํ\n * @param {string} command - ์ฌ์ฉ์ ์
๋ ฅ ๋ช
๋ น\n * @param {Array} targets - ์ฒดํฌ๋ ์์ฑ ๋์ (MyBatis, Service ๋ฑ)\n * @param {Array} currentRoutes - ํ์ฌ ํ๋ก์ ํธ ๊ฒฝ๋ก ์ ๋ณด\n */\n async generate(command, targets, currentRoutes) {\n try {\n trace.log(`๐ Fab ๊ณต์ ์์: \"${command}\" [๋์: ${targets.join(', ')}]`);\n\n const response = await fetch(`${this.connectorUrl}/api/fab/generate`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n command,\n targets,\n projectType: 'spring-react',\n currentRoutes\n })\n });\n\n const result = await response.json();\n\n if (!result.success) {\n throw new Error(result.error || \"์์ค ์์ฑ ์ค ์๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.\");\n }\n\n return result;\n } catch (error) {\n trace.error(\"โ Fab Service Error:\", error);\n throw error;\n }\n }\n\n /**\n * ์ด๊ธฐ ๊ฒฝ๋ก ์ ๋ณด ๋ก๋\n */\n async fetchRoutes(routeUrl) {\n if (!routeUrl) return [];\n try {\n const res = await fetch(routeUrl);\n return await res.json();\n } catch (err) {\n trace.error(\"Route load fail\", err);\n return [];\n }\n }\n}","import { nine, trace } from '@nine-lab/nine-util';\nimport { NineMuService } from '../services/NineMuService.js';\n\nexport class NineChat extends HTMLElement {\n #service = null;\n #routes = [];\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n async connectedCallback() {\n // ์๋น์ค ์ด๊ธฐํ\n const connectorUrl = this.getAttribute('connector-url') || 'http://localhost:3002';\n this.#service = new NineMuService(connectorUrl);\n\n this.#render();\n this.#initInteractions(); // UI ํ ๊ธ ๋ก์ง\n this.#initActions(); // ์ํฐ ์ ์คํ ๋ก์ง\n\n // ๊ฒฝ๋ก ๋ฐ์ดํฐ ๋ก๋\n this.#routes = await this.#service.fetchRoutes(this.getAttribute('route-url'));\n }\n\n // --- [๊ทธ๋ฃน 1: Interaction] ํ๋ฉด ํ ๊ธ ๋ฐ ๋ฉ๋ด ํด๋ฆญ ---\n #initInteractions() {\n const $settings = this.shadowRoot.querySelector('nine-ai-settings');\n const $menuIcons = this.shadowRoot.querySelectorAll(\".menu-icon\");\n\n const toggleUI = () => this.classList.toggle(\"collapse\");\n this.shadowRoot.querySelector(\".expand-icon\").addEventListener(\"click\", toggleUI);\n this.shadowRoot.querySelector(\".collapse-icon\").addEventListener(\"click\", toggleUI);\n\n $menuIcons.forEach(el => {\n el.addEventListener(\"click\", (e) => {\n $menuIcons.forEach(icon => icon.classList.remove(\"active\"));\n const clicked = e.target.closest(\".menu-icon\");\n clicked.classList.add(\"active\");\n $settings.classList.toggle(\"expand\", clicked.classList.contains('menu-setting'));\n });\n });\n }\n\n // --- [๊ทธ๋ฃน 2: Action] ์ํฐํค ์
๋ ฅ ์ ์๋น์ค ํธ์ถ ---\n #initActions() {\n const $textarea = this.shadowRoot.querySelector('#q');\n const $status = this.shadowRoot.querySelector('#status-tag');\n\n $textarea.addEventListener('keypress', async (e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n const command = e.target.value.trim();\n if (!command) return;\n\n // 1. UI ํผ๋๋ฐฑ\n $status.textContent = \"โ๏ธ ๊ณต์ ๋ถ์ ์ค...\";\n e.target.value = '';\n\n // 2. ์ฒดํฌ๋ ํ๊ฒ ์์ง\n const targets = Array.from(this.shadowRoot.querySelectorAll('input[name=\"gen_target\"]:checked'))\n .map(el => el.value);\n\n // 3. ๋ถ๋ฆฌ๋ ์๋น์ค ํธ์ถ\n try {\n const result = await this.#service.generate(command, targets, this.#routes);\n\n // 4. ์ฑ๊ณต ์ฒ๋ฆฌ\n $status.textContent = \"โ
์๋ฃ\";\n nine.alert(\"์์ค ์์ฑ ์ฑ๊ณต\").rgb();\n this.dispatchEvent(new CustomEvent('nine-fab-completed', { detail: result, bubbles: true }));\n } catch (err) {\n // 5. ์คํจ ์ฒ๋ฆฌ\n $status.textContent = \"โ ์คํจ\";\n nine.alert(err.message).rgb().shake();\n }\n }\n });\n }\n\n #render() {\n const placeholder = this.getAttribute(\"placeholder\") || \"๋์๊ฒ ๋ฌด์์ด๋ ๋ฌผ์ด๋ด...\";\n const customImport = this.getAttribute(\"css-path\") ? `@import \"${this.getAttribute(\"css-path\")}\";` : \"\";\n\n this.shadowRoot.innerHTML = `\n <style>\n @import \"https://cdn.jsdelivr.net/npm/@nine-lab/nine-fab@${__APP_VERSION__}/dist/css/nine-fab.css\";\n ${customImport}\n </style>\n <div class=\"wrapper\">\n <nine-ai-settings></nine-ai-settings>\n <div class=\"container\">\n <div class=\"head\">\n <div class=\"logo\"><span></span></div>\n <div id=\"status-tag\" style=\"font-size:10px; color:#ff5722; padding:5px;\">Fab Engine Ready</div>\n </div>\n <nx-ai-chat></nx-ai-chat>\n <div class=\"foot\">\n <div class=\"apply-src\">\n ${['MyBatis', 'Service', 'Controller', 'JavaScript'].map(t => `\n <div>\n <input type=\"checkbox\" id=\"${t.toLowerCase()}\" name=\"gen_target\" value=\"${t}\" checked />\n <label for=\"${t.toLowerCase()}\">${t}</label>\n </div>\n `).join('')}\n </div>\n <textarea id=\"q\" rows=\"4\" placeholder=\"${placeholder}\"></textarea>\n </div>\n </div>\n <div class=\"menu\">\n <div class=\"collapse-icon\"></div>\n <div class=\"menu-icon menu-filter active\"></div>\n <div class=\"menu-icon menu-general\"></div>\n <div class=\"menu-icon menu-setting\"></div>\n </div>\n </div>\n <div class=\"expand-icon\"></div>\n `;\n }\n}\n\nif (!customElements.get('nine-chat')) {\n customElements.define('nine-chat', NineChat);\n}","import { trace } from '@nine-lab/nine-util';\nimport { NineChat } from './components/NineChat.js';\n\n/**\n * Nine-Fab ์์ง ๋ฉ์ธ ํด๋์ค\n */\nexport const NineFab = {\n version: typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.1.0',\n init: (config) => {\n trace.log(\"๐ ๏ธ Nine-Fab Engine initialized\", config);\n // ํฅํ ์ปค๋ฅํฐ URL ์ ์ญ ์ค์ ์ด๋ ์ธ์ฆ ํ ํฐ ์ฒ๋ฆฌ ๋ก์ง ์ถ๊ฐ ๊ฐ๋ฅ\n }\n};\n\n// ๊ธฐ๋ณธ export ๋ฐ ์ปดํฌ๋ํธ export\nexport default NineFab;\nexport { NineChat };"],"names":["NineMuService","constructor","connectorUrl","this","generate","command","targets","currentRoutes","trace","log","join","response","fetch","method","headers","body","JSON","stringify","projectType","result","json","success","Error","error","fetchRoutes","routeUrl","res","err","NineChat","HTMLElement","super","__privateAdd","_NineChat_instances","_service","_routes","attachShadow","mode","connectedCallback","getAttribute","__privateSet","__privateMethod","render_fn","call","initInteractions_fn","initActions_fn","__privateGet","WeakMap","WeakSet","$settings","shadowRoot","querySelector","$menuIcons","querySelectorAll","toggleUI","classList","toggle","addEventListener","forEach","el","e","icon","remove","clicked","target","closest","add","contains","$textarea","$status","async","key","shiftKey","preventDefault","value","trim","textContent","Array","from","map","nine","alert","rgb","dispatchEvent","CustomEvent","detail","bubbles","message","shake","placeholder","customImport","innerHTML","t","toLowerCase","customElements","get","define","NineFab","version","init","config"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nine-mu.umd.js","sources":["../src/services/NineMuService.js","../src/components/NineChat.js","../src/index.js"],"sourcesContent":["import { nine, trace } from '@nine-lab/nine-util';\n\nexport class NineMuService {\n constructor(connectorUrl) {\n this.connectorUrl = connectorUrl;\n }\n\n /**\n * AI ์์ค ์์ฑ ์คํ\n * @param {string} command - ์ฌ์ฉ์ ์
๋ ฅ ๋ช
๋ น\n * @param {Array} targets - ์ฒดํฌ๋ ์์ฑ ๋์ (MyBatis, Service ๋ฑ)\n * @param {Array} currentRoutes - ํ์ฌ ํ๋ก์ ํธ ๊ฒฝ๋ก ์ ๋ณด\n */\n async generate(command, targets, currentRoutes) {\n try {\n trace.log(`๊ณต์ ์์: \"${command}\" [๋์: ${targets.join(', ')}]`);\n\n const response = await fetch(`${this.connectorUrl}/api/mu/generate`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n command,\n targets,\n projectType: 'spring-react',\n currentRoutes\n })\n });\n\n const result = await response.json();\n\n if (!result.success) {\n throw new Error(result.error || \"์์ค ์์ฑ ์ค ์๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.\");\n }\n\n return result;\n } catch (error) {\n trace.error(\"NineMu Service Error:\", error);\n throw error;\n }\n }\n\n /**\n * ์ด๊ธฐ ๊ฒฝ๋ก ์ ๋ณด ๋ก๋\n */\n async fetchRoutes(routeUrl) {\n if (!routeUrl) return [];\n try {\n const res = await fetch(routeUrl);\n return await res.json();\n } catch (err) {\n trace.error(\"Route load fail\", err);\n return [];\n }\n }\n}","import { nine, trace } from '@nine-lab/nine-util';\nimport { NineMuService } from '../services/NineMuService.js';\n\nexport class NineChat extends HTMLElement {\n #service = null;\n #routes = [];\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n async connectedCallback() {\n // ์๋น์ค ์ด๊ธฐํ\n const connectorUrl = this.getAttribute('connector-url') || 'http://localhost:3002';\n this.#service = new NineMuService(connectorUrl);\n\n this.#render();\n this.#initInteractions(); // UI ํ ๊ธ ๋ก์ง\n this.#initActions(); // ์ํฐ ์ ์คํ ๋ก์ง\n\n // ๊ฒฝ๋ก ๋ฐ์ดํฐ ๋ก๋\n this.#routes = await this.#service.fetchRoutes(this.getAttribute('route-url'));\n }\n\n // --- [๊ทธ๋ฃน 1: Interaction] ํ๋ฉด ํ ๊ธ ๋ฐ ๋ฉ๋ด ํด๋ฆญ ---\n #initInteractions() {\n const $settings = this.shadowRoot.querySelector('nine-ai-settings');\n const $menuIcons = this.shadowRoot.querySelectorAll(\".menu-icon\");\n\n const toggleUI = () => this.classList.toggle(\"collapse\");\n this.shadowRoot.querySelector(\".expand-icon\").addEventListener(\"click\", toggleUI);\n this.shadowRoot.querySelector(\".collapse-icon\").addEventListener(\"click\", toggleUI);\n\n $menuIcons.forEach(el => {\n el.addEventListener(\"click\", (e) => {\n $menuIcons.forEach(icon => icon.classList.remove(\"active\"));\n const clicked = e.target.closest(\".menu-icon\");\n clicked.classList.add(\"active\");\n $settings.classList.toggle(\"expand\", clicked.classList.contains('menu-setting'));\n });\n });\n }\n\n // --- [๊ทธ๋ฃน 2: Action] ์ํฐํค ์
๋ ฅ ์ ์๋น์ค ํธ์ถ ---\n #initActions() {\n const $textarea = this.shadowRoot.querySelector('#q');\n const $status = this.shadowRoot.querySelector('#status-tag');\n\n $textarea.addEventListener('keypress', async (e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n const command = e.target.value.trim();\n if (!command) return;\n\n // 1. UI ํผ๋๋ฐฑ\n $status.textContent = \"โ๏ธ ๊ณต์ ๋ถ์ ์ค...\";\n e.target.value = '';\n\n // 2. ์ฒดํฌ๋ ํ๊ฒ ์์ง\n const targets = Array.from(this.shadowRoot.querySelectorAll('input[name=\"gen_target\"]:checked'))\n .map(el => el.value);\n\n // 3. ๋ถ๋ฆฌ๋ ์๋น์ค ํธ์ถ\n try {\n const result = await this.#service.generate(command, targets, this.#routes);\n\n // 4. ์ฑ๊ณต ์ฒ๋ฆฌ\n $status.textContent = \"โ
์๋ฃ\";\n nine.alert(\"์์ค ์์ฑ ์ฑ๊ณต\").rgb();\n this.dispatchEvent(new CustomEvent('nine-mu-completed', { detail: result, bubbles: true }));\n } catch (err) {\n // 5. ์คํจ ์ฒ๋ฆฌ\n $status.textContent = \"โ ์คํจ\";\n nine.alert(err.message).rgb().shake();\n }\n }\n });\n }\n\n #render() {\n const placeholder = this.getAttribute(\"placeholder\") || \"๋์๊ฒ ๋ฌด์์ด๋ ๋ฌผ์ด๋ด...\";\n const customImport = this.getAttribute(\"css-path\") ? `@import \"${this.getAttribute(\"css-path\")}\";` : \"\";\n\n this.shadowRoot.innerHTML = `\n <style>\n @import \"https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${__APP_VERSION__}/dist/css/nine-mu.css\";\n ${customImport}\n </style>\n <div class=\"wrapper\">\n <nine-ai-settings></nine-ai-settings>\n <div class=\"container\">\n <div class=\"head\">\n <div class=\"logo\"><span></span></div>\n <div id=\"status-tag\" style=\"font-size:10px; color:#ff5722; padding:5px;\">nine-mu Engine Ready</div>\n </div>\n <nx-ai-chat></nx-ai-chat>\n <div class=\"foot\">\n <div class=\"apply-src\">\n ${['MyBatis', 'Service', 'Controller', 'JavaScript'].map(t => `\n <div>\n <input type=\"checkbox\" id=\"${t.toLowerCase()}\" name=\"gen_target\" value=\"${t}\" checked />\n <label for=\"${t.toLowerCase()}\">${t}</label>\n </div>\n `).join('')}\n </div>\n <textarea id=\"q\" rows=\"4\" placeholder=\"${placeholder}\"></textarea>\n </div>\n </div>\n <div class=\"menu\">\n <div class=\"collapse-icon\"></div>\n <div class=\"menu-icon menu-filter active\"></div>\n <div class=\"menu-icon menu-general\"></div>\n <div class=\"menu-icon menu-setting\"></div>\n </div>\n </div>\n <div class=\"expand-icon\"></div>\n `;\n }\n}\n\nif (!customElements.get('nine-chat')) {\n customElements.define('nine-chat', NineChat);\n}","import { trace } from '@nine-lab/nine-util';\nimport { NineChat } from './components/NineChat.js';\n\n/**\n * Nine-Mu ์์ง ๋ฉ์ธ ํด๋์ค\n */\nexport const NineMu = {\n version: typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.1.0',\n init: (config) => {\n trace.log(\"๐ ๏ธ Nine-Mu Engine initialized\", config);\n // ํฅํ ์ปค๋ฅํฐ URL ์ ์ญ ์ค์ ์ด๋ ์ธ์ฆ ํ ํฐ ์ฒ๋ฆฌ ๋ก์ง ์ถ๊ฐ ๊ฐ๋ฅ\n }\n};\n\n// ๊ธฐ๋ณธ export ๋ฐ ์ปดํฌ๋ํธ export\nexport default NineMu;\nexport { NineChat };"],"names":["NineMuService","constructor","connectorUrl","this","generate","command","targets","currentRoutes","trace","log","join","response","fetch","method","headers","body","JSON","stringify","projectType","result","json","success","Error","error","fetchRoutes","routeUrl","res","err","NineChat","HTMLElement","super","__privateAdd","_NineChat_instances","_service","_routes","attachShadow","mode","connectedCallback","getAttribute","__privateSet","__privateMethod","render_fn","call","initInteractions_fn","initActions_fn","__privateGet","WeakMap","WeakSet","$settings","shadowRoot","querySelector","$menuIcons","querySelectorAll","toggleUI","classList","toggle","addEventListener","forEach","el","e","icon","remove","clicked","target","closest","add","contains","$textarea","$status","async","key","shiftKey","preventDefault","value","trim","textContent","Array","from","map","nine","alert","rgb","dispatchEvent","CustomEvent","detail","bubbles","message","shake","placeholder","customImport","innerHTML","t","toLowerCase","customElements","get","define","NineMu","version","init","config"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nine-lab/nine-mu",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "AI-Driven Full-Stack Code Fabrication Engine",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/nine-mu.umd.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
35
|
"keywords": [
|
|
36
|
-
"
|
|
36
|
+
"mu",
|
|
37
37
|
"codegen",
|
|
38
38
|
"ai",
|
|
39
39
|
"gemini",
|
|
@@ -68,7 +68,7 @@ export class NineChat extends HTMLElement {
|
|
|
68
68
|
// 4. ์ฑ๊ณต ์ฒ๋ฆฌ
|
|
69
69
|
$status.textContent = "โ
์๋ฃ";
|
|
70
70
|
nine.alert("์์ค ์์ฑ ์ฑ๊ณต").rgb();
|
|
71
|
-
this.dispatchEvent(new CustomEvent('nine-
|
|
71
|
+
this.dispatchEvent(new CustomEvent('nine-mu-completed', { detail: result, bubbles: true }));
|
|
72
72
|
} catch (err) {
|
|
73
73
|
// 5. ์คํจ ์ฒ๋ฆฌ
|
|
74
74
|
$status.textContent = "โ ์คํจ";
|
|
@@ -84,7 +84,7 @@ export class NineChat extends HTMLElement {
|
|
|
84
84
|
|
|
85
85
|
this.shadowRoot.innerHTML = `
|
|
86
86
|
<style>
|
|
87
|
-
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-
|
|
87
|
+
@import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${__APP_VERSION__}/dist/css/nine-mu.css";
|
|
88
88
|
${customImport}
|
|
89
89
|
</style>
|
|
90
90
|
<div class="wrapper">
|
|
@@ -92,7 +92,7 @@ export class NineChat extends HTMLElement {
|
|
|
92
92
|
<div class="container">
|
|
93
93
|
<div class="head">
|
|
94
94
|
<div class="logo"><span></span></div>
|
|
95
|
-
<div id="status-tag" style="font-size:10px; color:#ff5722; padding:5px;">
|
|
95
|
+
<div id="status-tag" style="font-size:10px; color:#ff5722; padding:5px;">nine-mu Engine Ready</div>
|
|
96
96
|
</div>
|
|
97
97
|
<nx-ai-chat></nx-ai-chat>
|
|
98
98
|
<div class="foot">
|
package/src/index.js
CHANGED
|
@@ -2,16 +2,16 @@ import { trace } from '@nine-lab/nine-util';
|
|
|
2
2
|
import { NineChat } from './components/NineChat.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Nine-
|
|
5
|
+
* Nine-Mu ์์ง ๋ฉ์ธ ํด๋์ค
|
|
6
6
|
*/
|
|
7
|
-
export const
|
|
7
|
+
export const NineMu = {
|
|
8
8
|
version: typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.1.0',
|
|
9
9
|
init: (config) => {
|
|
10
|
-
trace.log("๐ ๏ธ Nine-
|
|
10
|
+
trace.log("๐ ๏ธ Nine-Mu Engine initialized", config);
|
|
11
11
|
// ํฅํ ์ปค๋ฅํฐ URL ์ ์ญ ์ค์ ์ด๋ ์ธ์ฆ ํ ํฐ ์ฒ๋ฆฌ ๋ก์ง ์ถ๊ฐ ๊ฐ๋ฅ
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
// ๊ธฐ๋ณธ export ๋ฐ ์ปดํฌ๋ํธ export
|
|
16
|
-
export default
|
|
16
|
+
export default NineMu;
|
|
17
17
|
export { NineChat };
|
|
@@ -13,9 +13,9 @@ export class NineMuService {
|
|
|
13
13
|
*/
|
|
14
14
|
async generate(command, targets, currentRoutes) {
|
|
15
15
|
try {
|
|
16
|
-
trace.log(
|
|
16
|
+
trace.log(`๊ณต์ ์์: "${command}" [๋์: ${targets.join(', ')}]`);
|
|
17
17
|
|
|
18
|
-
const response = await fetch(`${this.connectorUrl}/api/
|
|
18
|
+
const response = await fetch(`${this.connectorUrl}/api/mu/generate`, {
|
|
19
19
|
method: 'POST',
|
|
20
20
|
headers: { 'Content-Type': 'application/json' },
|
|
21
21
|
body: JSON.stringify({
|
|
@@ -34,7 +34,7 @@ export class NineMuService {
|
|
|
34
34
|
|
|
35
35
|
return result;
|
|
36
36
|
} catch (error) {
|
|
37
|
-
trace.error("
|
|
37
|
+
trace.error("NineMu Service Error:", error);
|
|
38
38
|
throw error;
|
|
39
39
|
}
|
|
40
40
|
}
|
package/vite.config.js
CHANGED