atelier-mcp 0.1.0
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/README.md +55 -0
- package/assets/fonts/BeVietnamPro-Bold.ttf +0 -0
- package/assets/fonts/BeVietnamPro-Regular.ttf +0 -0
- package/assets/fonts/OFL.txt +93 -0
- package/bin/atelier-mcp.mjs +3 -0
- package/dist/main.mjs +35674 -0
- package/package.json +51 -0
- package/web/assets/index-CpODXMVG.css +1 -0
- package/web/assets/index-Cu5-rpTP.js +4013 -0
- package/web/fonts/BeVietnamPro-Bold.ttf +0 -0
- package/web/fonts/BeVietnamPro-Regular.ttf +0 -0
- package/web/fonts/OFL.txt +93 -0
- package/web/index.html +118 -0
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "atelier-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AI architect MCP server for Vietnamese tube houses — TCVN-standard plans, live two-way browser editor, furnished 3D walkthrough, PDF/DXF/IFC export. Run it inside your house-project folder from Claude Code, Claude Desktop, or any MCP client.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"atelier-mcp": "bin/atelier-mcp.mjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin",
|
|
11
|
+
"dist",
|
|
12
|
+
"web",
|
|
13
|
+
"assets",
|
|
14
|
+
"README.md"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20.10"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "node build.mjs"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"playwright": "^1.53.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@atelier/server": "workspace:*",
|
|
27
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
28
|
+
"esbuild": "^0.25.0"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"mcp",
|
|
32
|
+
"model-context-protocol",
|
|
33
|
+
"claude",
|
|
34
|
+
"architecture",
|
|
35
|
+
"floor-plan",
|
|
36
|
+
"cad",
|
|
37
|
+
"vietnam",
|
|
38
|
+
"tube-house",
|
|
39
|
+
"nha-ong"
|
|
40
|
+
],
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/lebac-svg/Atelier.git",
|
|
45
|
+
"directory": "packages/cli"
|
|
46
|
+
},
|
|
47
|
+
"homepage": "https://github.com/lebac-svg/Atelier#readme",
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/lebac-svg/Atelier/issues"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-family:Be Vietnam Pro;font-weight:400;font-display:swap;src:url(/fonts/BeVietnamPro-Regular.ttf) format("truetype")}@font-face{font-family:Be Vietnam Pro;font-weight:700;font-display:swap;src:url(/fonts/BeVietnamPro-Bold.ttf) format("truetype")}:root{--muc: #1c2025;--muc-sau: #14171b;--go: #262b33;--go-noi: #2d333d;--vien: #343b46;--giay: #f7f4ec;--chu: #e9e6df;--chu-mo: #98a1ac;--chu-chim: #5d6672;--cham: #6ea0d8;--cham-dam: #2c5b96;--son: #d4574a;--nghe: #d9a441;--la: #7fb069;--font-ui: "Be Vietnam Pro", "Segoe UI", system-ui, sans-serif;--font-so: "Cascadia Mono", ui-monospace, Consolas, monospace}*{box-sizing:border-box}html,body{height:100%}body{margin:0;display:grid;grid-template-rows:3rem minmax(0,1fr) 2.75rem;background:var(--muc);color:var(--chu);font-family:var(--font-ui);font-size:13px;overflow:hidden}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;cursor:pointer}button:disabled{cursor:default}button:focus-visible{outline:2px solid var(--cham);outline-offset:1px}.top{display:flex;align-items:center;justify-content:space-between;padding:0 .9rem;border-bottom:1px solid var(--vien)}.brand{display:flex;align-items:center;gap:.55rem;min-width:0}.brand-mark{width:1.15rem;height:1.15rem;color:var(--cham);flex:none}.brand-name{font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.82rem}.brand-sep{width:1px;height:1.1rem;background:var(--vien)}.project-name{color:var(--chu-mo);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-right{display:flex;align-items:center;gap:.6rem}.share-btn{padding:.32rem .75rem;border:1px solid var(--vien);border-radius:6px;color:var(--chu-mo)}.share-btn:hover{color:var(--chu);background:var(--go-noi);border-color:var(--cham-dam)}.share-btn[hidden]{display:none}.view-badge{font-size:.62rem;font-weight:700;letter-spacing:.14em;color:var(--muc-sau);background:var(--nghe);border-radius:4px;padding:.14rem .45rem;flex:none}.views{display:flex;gap:1px;background:var(--vien);border:1px solid var(--vien);border-radius:6px;overflow:hidden}.view-btn{padding:.32rem .85rem;background:var(--muc);color:var(--chu-mo)}.view-btn:hover{background:var(--go-noi);color:var(--chu)}.view-btn.is-active{background:var(--go);color:var(--chu);font-weight:700}.work{display:grid;grid-template-columns:3rem minmax(0,1fr) 19rem;min-height:0}.rail{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.55rem 0;border-right:1px solid var(--vien)}.tool{width:2rem;height:2rem;border-radius:6px;color:var(--chu-chim);font-family:var(--font-so);font-size:.78rem;border:1px solid transparent}.tool:not(:disabled):hover{background:var(--go-noi);color:var(--chu)}.canvas{display:grid;min-width:0;min-height:0}body[data-view=split] .canvas{grid-template-columns:1fr 1fr}body[data-view=plan] #pane3d,body[data-view="3d"] #pane2d{display:none}.pane{position:relative;min-width:0;min-height:0;overflow:hidden;background:var(--muc-sau)}.pane-2d{background-image:radial-gradient(rgba(110,160,216,.075) 1px,transparent 1px);background-size:26px 26px}body[data-view=split] .pane-2d{border-right:1px solid var(--vien)}.paper-viewport{position:absolute;inset:0;cursor:grab}.paper-viewport.is-panning{cursor:grabbing}.paper{position:absolute;transform-origin:0 0;box-shadow:0 14px 50px #0000008c,0 2px 6px #00000073;line-height:0}.paper svg{display:block}.pane-3d canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.pane-empty{position:absolute;inset:0;display:grid;place-items:center;padding:2rem;text-align:center;color:var(--chu-chim);z-index:2;pointer-events:none}.pane-empty[hidden]{display:none}.pane-actions{position:absolute;right:.6rem;top:.6rem;display:flex;gap:.35rem;z-index:3}.pane-btn{padding:.28rem .6rem;border-radius:5px;border:1px solid var(--vien);background:color-mix(in srgb,var(--go) 88%,transparent);color:var(--chu-mo);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.pane-btn:hover{color:var(--chu);background:var(--go-noi)}.pane-hint{position:absolute;left:.7rem;bottom:.55rem;color:var(--chu-chim);font-size:.72rem;letter-spacing:.02em;pointer-events:none}.pane-btn.is-active{color:var(--muc-sau);background:var(--cham);border-color:var(--cham)}.paper-viewport.is-placing{cursor:crosshair}#catalog-panel{position:absolute;left:.6rem;top:.6rem;bottom:.6rem;width:15.5rem;z-index:4;display:flex;flex-direction:column;border:1px solid var(--vien);border-radius:8px;background:color-mix(in srgb,var(--go) 94%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 10px 30px #00000073;overflow:hidden}#catalog-panel[hidden]{display:none}.cat-head{padding:.55rem .6rem .45rem;border-bottom:1px solid var(--vien);display:flex;flex-direction:column;gap:.4rem}.cat-title{font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--chu-mo)}.cat-search{width:100%;padding:.3rem .5rem;font:inherit;font-size:.78rem;color:var(--chu);background:var(--muc-sau);border:1px solid var(--vien);border-radius:5px}.cat-search:focus{outline:none;border-color:var(--cham)}.cat-list{overflow:auto;padding:.35rem;display:flex;flex-direction:column;gap:2px}.cat-item{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;text-align:left;padding:.32rem .45rem;border-radius:5px;color:var(--chu)}.cat-item:hover{background:var(--go-noi)}.cat-item.is-picked{background:var(--cham-dam)}.cat-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-dims{font-family:var(--font-so);font-size:.68rem;color:var(--chu-mo);flex:none}.sun-controls{position:absolute;right:.6rem;top:2.6rem;z-index:3;display:flex;flex-direction:column;gap:.3rem;padding:.45rem .6rem;border:1px solid var(--vien);border-radius:6px;background:color-mix(in srgb,var(--go) 90%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:.72rem;color:var(--chu-mo)}.sun-controls label{display:flex;align-items:center;gap:.45rem}.sun-controls input[type=range]{width:9rem;accent-color:var(--cham)}.sun-controls span{font-family:var(--font-so);min-width:2.8rem;color:var(--chu)}.side{display:flex;flex-direction:column;border-left:1px solid var(--vien);min-height:0}.panel{display:flex;flex-direction:column;min-height:0;border-bottom:1px solid var(--vien)}.panel-grow{flex:1;border-bottom:none}.panel-title{margin:0;padding:.55rem .8rem .45rem;font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--chu-mo);display:flex;align-items:center;gap:.4rem}.count{font-family:var(--font-so);font-size:.7rem;background:var(--go-noi);color:var(--chu);border-radius:99px;padding:0 .45rem;line-height:1.4}.panel-body{padding:0 .8rem .8rem;overflow:auto;min-height:2rem}#panel-props .panel-body{max-height:16rem}.panel-empty{color:var(--chu-chim);margin:.2rem 0;line-height:1.55}.dim{color:var(--chu-chim)}.prop-table{width:100%;border-collapse:collapse}.prop-table th,.prop-table td{text-align:left;padding:.22rem 0;vertical-align:top}.prop-table th{color:var(--chu-mo);font-weight:400;width:42%}.prop-table td{font-family:var(--font-so);font-size:.78rem}.prop-id{display:inline-block;font-family:var(--font-so);font-size:.75rem;color:var(--cham);border:1px solid var(--cham-dam);border-radius:4px;padding:.05rem .4rem;margin-bottom:.45rem}.issue{display:block;width:100%;text-align:left;padding:.45rem .55rem;margin-bottom:.4rem;border:1px solid var(--vien);border-left-width:3px;border-radius:6px;background:var(--go);line-height:1.45}.issue:hover{background:var(--go-noi)}.issue-rule{font-family:var(--font-so);font-size:.7rem;color:var(--chu-mo);margin-right:.4rem}.issue--block,.issue--error{border-left-color:var(--son)}.issue--warn{border-left-color:var(--nghe)}.issue--info{border-left-color:var(--cham)}.issue-ok{color:var(--la);margin:.2rem 0}.status{display:flex;align-items:stretch;border-top:2px solid var(--vien);position:relative}.status:before{content:"";position:absolute;top:2px;left:0;right:0;height:1px;background:color-mix(in srgb,var(--vien) 55%,transparent)}.cell{display:flex;flex-direction:column;justify-content:center;gap:.1rem;padding:0 .85rem;border-right:1px solid var(--vien)}.cell-flex{flex:1;min-width:0}.cell-dim{border-right:none;color:var(--chu-mo)}.cell-label{font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:var(--chu-chim)}.cell-value{display:flex;align-items:center;gap:.4rem;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.level-btn{font-family:var(--font-so);font-size:.75rem;padding:.06rem .5rem;border:1px solid var(--vien);border-radius:4px;color:var(--chu-mo);margin-right:.25rem}.level-btn:hover{color:var(--chu);background:var(--go-noi)}.level-btn.is-active{color:var(--muc-sau);background:var(--cham);border-color:var(--cham);font-weight:700}.rev-seal{font-family:var(--font-so);font-size:.78rem;color:var(--cham);border:1px solid var(--cham-dam);border-radius:3px;padding:.02rem .5rem}.rev-seal.pulse{animation:seal-pulse .6s ease-out}@keyframes seal-pulse{0%{transform:scale(1.25);background:var(--cham-dam);color:var(--chu)}to{transform:scale(1)}}.dot{width:8px;height:8px;border-radius:50%;background:var(--chu-chim);flex:none}.dot.on{background:var(--la);box-shadow:0 0 6px color-mix(in srgb,var(--la) 60%,transparent)}.dot.off{background:var(--son)}#claude-note{color:var(--chu-mo)}#claude-note.active{color:var(--chu)}#toasts{position:fixed;right:.9rem;top:3.6rem;display:flex;flex-direction:column;gap:.45rem;z-index:50;max-width:22rem}.toast{background:var(--go);border:1px solid var(--vien);border-left:3px solid var(--cham);border-radius:7px;padding:.5rem .7rem;box-shadow:0 8px 24px #00000073;line-height:1.45;animation:toast-in .22s ease-out}.toast--user{border-left-color:var(--la)}.toast--reject{border-left-color:var(--son)}.toast-head{display:flex;gap:.5rem;align-items:baseline}.toast-who{font-weight:700}.toast-rev{font-family:var(--font-so);font-size:.72rem;color:var(--chu-mo);margin-left:auto}.toast-body{color:var(--chu-mo);margin-top:.1rem}.toast.leaving{animation:toast-out .25s ease-in forwards}@keyframes toast-in{0%{opacity:0;transform:translate(.8rem)}}@keyframes toast-out{to{opacity:0;transform:translate(.8rem)}}.paper-viewport.is-dragging{cursor:move}.sel-2d,.sel-2d *{stroke:var(--cham-dam)}.align-2d,.align-2d *{stroke:var(--cham)!important;filter:drop-shadow(0 0 1.5px var(--cham))}#hud{position:fixed;z-index:60;display:flex;flex-direction:column;gap:.1rem;padding:.32rem .55rem;background:color-mix(in srgb,var(--muc) 92%,transparent);border:1px solid var(--cham-dam);border-radius:6px;box-shadow:0 6px 18px #00000080;pointer-events:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}#hud .hud-value{font-family:var(--font-so);font-size:.85rem;color:var(--chu);white-space:nowrap}#hud.typing .hud-value{color:var(--cham);font-weight:700}#hud .hud-hint{font-size:.62rem;color:var(--chu-chim);white-space:nowrap}#hud .hud-hint:empty{display:none}#hud.shake{animation:hud-shake .25s}@keyframes hud-shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.prop-edit{display:inline-flex;align-items:center;gap:.15rem}.prop-input{width:4.6rem;padding:.12rem .3rem;font-family:var(--font-so);font-size:.78rem;color:var(--chu);background:var(--muc-sau);border:1px solid var(--vien);border-radius:4px}.prop-input:focus{outline:none;border-color:var(--cham)}.prop-input[type=text]{width:9rem}.prop-input::-webkit-outer-spin-button,.prop-input::-webkit-inner-spin-button{appearance:none;margin:0}.prop-input[type=number]{appearance:textfield;-moz-appearance:textfield}.hist-btn{font-size:.95rem;line-height:1;padding:.1rem .3rem;border-radius:4px;color:var(--chu-mo)}.hist-btn:not(:disabled):hover{background:var(--go-noi);color:var(--chu)}.hist-btn:disabled{color:var(--chu-chim);opacity:.5}.snap-input{width:3.4rem;padding:.08rem .3rem;font-family:var(--font-so);font-size:.75rem;color:var(--chu);background:var(--muc-sau);border:1px solid var(--vien);border-radius:4px}.snap-input:focus{outline:none;border-color:var(--cham)}.tool.is-active{background:var(--cham-dam);color:var(--chu);border-color:var(--cham)}.flash-2d,.flash-2d *{stroke:var(--cham-dam)!important;animation:flash-fade 1.5s ease-out forwards}@keyframes flash-fade{0%,60%{opacity:1}80%{opacity:.35}to{opacity:1}}@media(prefers-reduced-motion:reduce){.toast,.rev-seal.pulse,.flash-2d,.flash-2d *{animation:none!important}}
|