@adiholick/nvstudio-mcp 2.2.3 → 2.4.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 +57 -47
- package/agent-plugin/mcp_config.json +8 -0
- package/agent-plugin/plugin.json +6 -0
- package/agent-plugin/rules/AGENTS.md +118 -0
- package/agent-plugin/skills/nvstudio-animation-vfx/SKILL.md +120 -0
- package/agent-plugin/skills/nvstudio-assets-terrain-guide/SKILL.md +27 -0
- package/agent-plugin/skills/nvstudio-gui-standards/SKILL.md +419 -0
- package/agent-plugin/skills/nvstudio-mcp-guide/SKILL.md +83 -0
- package/agent-plugin/skills/nvstudio-rig-engine/SKILL.md +170 -0
- package/agent-plugin/skills/nvstudio-roblox-sync-guide/SKILL.md +16 -0
- package/dist/build-plugin.js +55 -0
- package/dist/index.js +841 -3
- package/dist/luau-validator.js +99 -34
- package/dist/roblox-bridge.js +152 -4
- package/dist/roblox-docs.js +264 -0
- package/dist/vfx-database.js +507 -0
- package/package.json +6 -4
- package/public/index.html +1590 -180
- package/studio-plugin/Main.server.lua +1 -1
- package/studio-plugin/animate_character.lua +36 -0
- package/studio-plugin/apply_vfx.lua +59 -0
- package/studio-plugin/batch_create_instances.lua +128 -0
- package/studio-plugin/batch_set_properties.lua +69 -0
- package/studio-plugin/edit_rig.lua +35 -0
- package/studio-plugin/insert_asset.lua +85 -12
- package/studio-plugin/nv_anim_dispatcher.lua +239 -0
- package/studio-plugin/nv_auto_rigger.lua +392 -0
- package/studio-plugin/nv_curves.lua +260 -0
- package/studio-plugin/nv_joint_math.lua +138 -0
- package/studio-plugin/nv_kinematics.lua +248 -0
- package/studio-plugin/nv_motion_generator.lua +279 -0
- package/studio-plugin/nv_rig_dispatcher.lua +319 -0
- package/studio-plugin/nv_vfx_serializer.lua +363 -0
- package/studio-plugin/nvstudio_mcp.rbxmx +3824 -60
- package/studio-plugin/preview_asset.lua +99 -0
- package/studio-plugin/scan_security.lua +81 -0
- package/studio-plugin/scan_vfx.lua +85 -0
- package/studio-plugin/scrub_timeline.lua +122 -0
- package/studio-plugin/security_scanner.lua +346 -0
- package/studio-plugin/set_properties.lua +83 -0
- package/studio-plugin/solve_limb_ik.lua +63 -0
- package/studio-plugin/ui_manager.lua +1 -1
package/dist/build-plugin.js
CHANGED
|
@@ -117,5 +117,60 @@ function copyToRobloxPlugins() {
|
|
|
117
117
|
}
|
|
118
118
|
catch { }
|
|
119
119
|
}
|
|
120
|
+
// Auto-sync dist, package.json, and agent-plugin to ~/.nvstudio-mcp & Antigravity
|
|
121
|
+
syncRuntimeAndPlugins();
|
|
122
|
+
}
|
|
123
|
+
function syncRuntimeAndPlugins() {
|
|
124
|
+
const homeDir = os_1.default.homedir();
|
|
125
|
+
const nvRuntimeDir = path_1.default.join(homeDir, '.nvstudio-mcp');
|
|
126
|
+
const antigravityPluginDir = path_1.default.join(homeDir, '.gemini', 'config', 'plugins', 'nvstudio-mcp');
|
|
127
|
+
// Sync to ~/.nvstudio-mcp
|
|
128
|
+
if (fs_1.default.existsSync(nvRuntimeDir)) {
|
|
129
|
+
try {
|
|
130
|
+
const rootDir = process.cwd();
|
|
131
|
+
const distSrc = path_1.default.join(rootDir, 'dist');
|
|
132
|
+
const distDest = path_1.default.join(nvRuntimeDir, 'dist');
|
|
133
|
+
if (fs_1.default.existsSync(distSrc)) {
|
|
134
|
+
fs_1.default.cpSync(distSrc, distDest, { recursive: true, force: true });
|
|
135
|
+
}
|
|
136
|
+
const pkgSrc = path_1.default.join(rootDir, 'package.json');
|
|
137
|
+
const pkgDest = path_1.default.join(nvRuntimeDir, 'package.json');
|
|
138
|
+
if (fs_1.default.existsSync(pkgSrc)) {
|
|
139
|
+
fs_1.default.copyFileSync(pkgSrc, pkgDest);
|
|
140
|
+
}
|
|
141
|
+
const pluginSrc = path_1.default.join(rootDir, 'studio-plugin');
|
|
142
|
+
const pluginDest = path_1.default.join(nvRuntimeDir, 'studio-plugin');
|
|
143
|
+
if (fs_1.default.existsSync(pluginSrc)) {
|
|
144
|
+
fs_1.default.cpSync(pluginSrc, pluginDest, { recursive: true, force: true });
|
|
145
|
+
}
|
|
146
|
+
const srcSrc = path_1.default.join(rootDir, 'src');
|
|
147
|
+
const srcDest = path_1.default.join(nvRuntimeDir, 'src');
|
|
148
|
+
if (fs_1.default.existsSync(srcSrc)) {
|
|
149
|
+
fs_1.default.cpSync(srcSrc, srcDest, { recursive: true, force: true });
|
|
150
|
+
}
|
|
151
|
+
const publicSrc = path_1.default.join(rootDir, 'public');
|
|
152
|
+
const publicDest = path_1.default.join(nvRuntimeDir, 'public');
|
|
153
|
+
if (fs_1.default.existsSync(publicSrc)) {
|
|
154
|
+
fs_1.default.cpSync(publicSrc, publicDest, { recursive: true, force: true });
|
|
155
|
+
}
|
|
156
|
+
console.log(`[Build] ✅ Berhasil menyinkronkan runtime ${nvRuntimeDir} (dist, public, studio-plugin, src)`);
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
console.warn(`[Build] Gagal menyinkronkan ke ~/.nvstudio-mcp: ${err.message}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Sync to ~/.gemini/config/plugins/nvstudio-mcp
|
|
163
|
+
if (fs_1.default.existsSync(antigravityPluginDir)) {
|
|
164
|
+
try {
|
|
165
|
+
const agentPluginSrc = path_1.default.join(process.cwd(), 'agent-plugin');
|
|
166
|
+
if (fs_1.default.existsSync(agentPluginSrc)) {
|
|
167
|
+
fs_1.default.cpSync(agentPluginSrc, antigravityPluginDir, { recursive: true, force: true });
|
|
168
|
+
console.log(`[Build] ✅ Berhasil menyinkronkan agent-plugin ke ${antigravityPluginDir}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
console.warn(`[Build] Gagal menyinkronkan ke agent-plugin Antigravity: ${err.message}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
120
175
|
}
|
|
121
176
|
buildRbxmx();
|