gopeak 2.3.6 → 2.3.7

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.
Files changed (3) hide show
  1. package/README.md +56 -37
  2. package/build/index.js +23 -2
  3. package/package.json +8 -6
package/README.md CHANGED
@@ -10,10 +10,14 @@
10
10
  [![](https://img.shields.io/github/forks/HaD0Yun/Gopeak-godot-mcp 'Forks')](https://github.com/HaD0Yun/Gopeak-godot-mcp/network/members)
11
11
  [![](https://img.shields.io/badge/License-MIT-red.svg 'MIT License')](https://opensource.org/licenses/MIT)
12
12
 
13
+ 🌐 **Languages**: **English** | [한국어](README-ko.md) | [日本語](README-ja.md) | [Deutsch](README-de.md) | [Português](README-pt_BR.md) | [简体中文](README-zh.md)
14
+
13
15
  ![GoPeak Hero](assets/gopeak-hero-v2.png)
14
16
 
15
17
  **GoPeak is an MCP server for Godot that lets AI assistants run, inspect, modify, and debug real projects end-to-end.**
16
18
 
19
+ > English is the canonical source of truth. Localized READMEs are concise overviews and may lag behind `README.md`.
20
+
17
21
  > Discord community chat is temporarily unavailable while the invite link is refreshed. Please use GitHub Discussions in the meantime: https://github.com/HaD0Yun/Gopeak-godot-mcp/discussions
18
22
 
19
23
  ---
@@ -64,7 +68,7 @@ gopeak setup
64
68
  }
65
69
  ```
66
70
 
67
- > `GOPEAK_TOOL_PROFILE=compact` is the default. It exposes 33 core tools with 22 dynamic tool groups (78 additional tools) that activate on demand — keeping token usage low while preserving full capability.
71
+ > `GOPEAK_TOOL_PROFILE=compact` is the default. It exposes a trusted core surface with dynamic tool groups that activate on demand — keeping token usage low while making experimental or environment-dependent capabilities explicit.
68
72
 
69
73
  ### 3) First prompts to try
70
74
 
@@ -77,10 +81,10 @@ gopeak setup
77
81
  ## Why GoPeak
78
82
 
79
83
  - **Real project feedback loop**: run the game, inspect logs, and fix in-context.
80
- - **110+ tools available** across scene/script/resource/runtime/LSP/DAP/input/assets.
81
- - **Token-efficient by default**: compact tool surface (33 tools) + dynamic tool groups. Only activate what you need no more 110-tool context bombs.
82
- - **Dynamic tool groups**: search with `tool.catalog` and matching groups auto-activate. Or manually activate with `tool.groups`.
83
- - **Deep Godot integration**: ClassDB queries, runtime inspection, debugger hooks, bridge-based scene/resource edits.
84
+ - **Trusted Godot 4 workflow tools** across project discovery, scene/script/resource editing, runtime/LSP/DAP integrations, testing, and asset workflows.
85
+ - **Token-efficient by default**: compact core surface + dynamic tool groups. Activate only the capability family you need instead of loading the full legacy surface.
86
+ - **Dynamic tool groups with explicit maturity labels**: search with `tool.catalog` and matching groups auto-activate, or manually activate with `tool.groups`.
87
+ - **Deep Godot integration with setup gates**: ClassDB queries, runtime inspection, debugger hooks, and bridge-based scene/resource edits clearly state addon, editor, LSP, DAP, or runtime requirements.
84
88
 
85
89
  ### Best For
86
90
 
@@ -94,9 +98,9 @@ gopeak setup
94
98
 
95
99
  GoPeak supports three exposure profiles:
96
100
 
97
- - `compact` (default): 33 core tools + **22 dynamic tool groups** (78 additional tools activated on demand)
98
- - `full`: exposes full legacy tool list (110+)
99
- - `legacy`: same exposed behavior as `full`
101
+ - `compact` (default): trusted core tools plus dynamic tool groups activated on demand.
102
+ - `full`: exposes the full legacy tool list for compatibility and audit work.
103
+ - `legacy`: same exposed behavior as `full` for older configurations.
100
104
 
101
105
  Configure with either:
102
106
 
@@ -105,32 +109,32 @@ Configure with either:
105
109
 
106
110
  ### Dynamic Tool Groups (compact mode)
107
111
 
108
- In `compact` mode, 78 additional tools are organized into **22 groups** that activate automatically when needed:
112
+ In `compact` mode, additional tools are organized into dynamic groups that activate automatically when needed. Maturity labels are intentionally conservative until each group has Godot 4 fixture evidence:
109
113
 
110
- | Group | Tools | Description |
114
+ | Group | Maturity | Description / setup gate |
111
115
  |---|---|---|
112
- | `scene_advanced` | 3 | Duplicate, reparent nodes, load sprites |
113
- | `uid` | 2 | UID management for resources |
114
- | `import_export` | 5 | Import pipeline, reimport, validate project |
115
- | `autoload` | 4 | Autoload singletons, main scene |
116
- | `signal` | 2 | Disconnect signals, list connections |
117
- | `runtime` | 4 | Live scene inspection, runtime properties, metrics |
118
- | `resource` | 4 | Create/modify materials, shaders, resources |
119
- | `animation` | 5 | Animations, tracks, animation tree, state machine |
120
- | `plugin` | 3 | Enable/disable/list editor plugins |
121
- | `input` | 1 | Input action mapping |
122
- | `tilemap` | 2 | TileSet and TileMap cell painting |
123
- | `audio` | 4 | Audio buses, effects, volume |
124
- | `navigation` | 2 | Navigation regions and agents |
125
- | `theme_ui` | 3 | Theme colors, font sizes, shaders |
126
- | `asset_store` | 3 | Search/download CC0 assets |
127
- | `testing` | 6 | Screenshots, viewport capture, input injection |
128
- | `dx_tools` | 4 | Error log, project health, find usages, scaffold |
129
- | `intent_tracking` | 9 | Intent capture, decision logs, handoff briefs |
130
- | `class_advanced` | 1 | Class inheritance inspection |
131
- | `lsp` | 3 | GDScript completions, hover, symbols |
132
- | `dap` | 6 | Breakpoints, stepping, stack traces |
133
- | `version_gate` | 2 | Version validation, patch verification |
116
+ | `scene_advanced` | audit-required | Duplicate, reparent nodes, load sprites; verify scene ownership/persistence in a Godot 4 fixture before treating as trusted. |
117
+ | `uid` | audit-required | UID management for resources; gate behavior by Godot version and resource save/load evidence. |
118
+ | `import_export` | audit-required | Import pipeline, reimport, validate project; requires fixture checks for import settings and export command construction. |
119
+ | `autoload` | audit-required | Autoload singletons, main scene; requires project settings round-trip verification. |
120
+ | `signal` | audit-required | Disconnect signals, list connections; requires signal round-trip verification. |
121
+ | `runtime` | optional-runtime | Live scene inspection, runtime properties, metrics; requires the runtime addon/socket. |
122
+ | `resource` | audit-required | Create/modify materials, shaders, resources; requires resource save/load fixture checks. |
123
+ | `animation` | audit-required | Animations, tracks, animation tree, state machine; requires saved scene/resource fixture checks. |
124
+ | `plugin` | optional-editor | Enable/disable/list editor plugins; requires editor plugin availability. |
125
+ | `input` | audit-required | Input action mapping; requires project settings round-trip verification. |
126
+ | `tilemap` | audit-required | TileSet and TileMap cell painting; must account for Godot 4.3+ `TileMapLayer` behavior before being promoted. |
127
+ | `audio` | audit-required | Audio buses, effects, volume; requires bus layout fixture checks. |
128
+ | `navigation` | audit-required | Navigation regions and agents; requires saved scene/resource fixture checks. |
129
+ | `theme_ui` | audit-required | Theme colors, font sizes, shaders; requires resource save/load fixture checks. |
130
+ | `asset_store` | optional-network | Search/download external CC0 assets; requires network/provider availability and should remain optional. |
131
+ | `testing` | optional-runtime | Screenshots, viewport capture, input injection; requires runtime addon/editor availability. |
132
+ | `dx_tools` | audit-required | Error log, project health, find usages, scaffold; requires deterministic static fixture checks. |
133
+ | `intent_tracking` | workflow-layer | Intent capture, decision logs, handoff briefs; not a Godot engine primitive and should stay opt-in/workflow-scoped. |
134
+ | `class_advanced` | trusted-static | Class inheritance inspection; validate against ClassDB/static evidence. |
135
+ | `lsp` | optional-lsp | GDScript completions, hover, symbols; requires Godot LSP on port 6005. |
136
+ | `dap` | optional-dap | Breakpoints, stepping, stack traces; requires Godot DAP on port 6006. |
137
+ | `version_gate` | audit-required | Version validation and patch verification; requires explicit version fixture evidence. |
134
138
 
135
139
  **How it works:**
136
140
 
@@ -161,7 +165,7 @@ The internal headless serializer uses `_type`, but MCP callers should prefer `ty
161
165
 
162
166
  ### Don't worry about tokens
163
167
 
164
- GoPeak uses **cursor-based pagination** for `tools/list` — even in `full` profile, tools are delivered in pages (default 33) instead of dumping all 110+ definitions at once. Your AI client fetches the next page only when it needs more.
168
+ GoPeak uses **cursor-based pagination** for `tools/list` — even in `full` profile, tools are delivered in pages (default 33) instead of dumping the entire legacy definition set at once. Your AI client fetches the next page only when it needs more.
165
169
 
166
170
  Set page size with `GOPEAK_TOOLS_PAGE_SIZE`:
167
171
 
@@ -274,15 +278,17 @@ Then enable plugins in **Project Settings → Plugins** (especially `godot_mcp_e
274
278
 
275
279
  ## Core Capabilities
276
280
 
281
+ These capabilities are grouped by workflow value. Optional-runtime/LSP/DAP/network groups require their setup gates before use; audit-required groups should be promoted only after fixture evidence.
282
+
277
283
  - **Project control**: launch editor, run/stop project, capture debug output
278
284
  - **Scene editing**: create scenes, add/delete/reparent nodes, edit properties
279
285
  - **Script workflows**: create/modify scripts, inspect script structure
280
286
  - **Resources**: create/modify resources, materials, shaders, tilesets
281
287
  - **Signals/animation**: connect signals, build animations/tracks/state machines
282
- - **Runtime tools**: inspect live tree, set properties, call methods, metrics
283
- - **LSP + DAP**: diagnostics/completion/hover + breakpoints/step/stack trace
284
- - **Input + screenshots**: keyboard/mouse/action injection and viewport capture
285
- - **Asset library**: search/fetch CC0 assets (Poly Haven, AmbientCG, Kenney)
288
+ - **Runtime tools**: inspect live tree, set properties, call methods, metrics (requires runtime addon/socket)
289
+ - **LSP + DAP**: diagnostics/completion/hover + breakpoints/step/stack trace (requires Godot LSP/DAP ports)
290
+ - **Input + screenshots**: keyboard/mouse/action injection and viewport capture (requires runtime/editor bridge setup)
291
+ - **Asset library**: search/fetch CC0 assets (optional network/provider workflow)
286
292
 
287
293
  ### Tool families (examples)
288
294
 
@@ -327,6 +333,19 @@ Visualize your entire project architecture with `visualizer.map` (`map_project`
327
333
 
328
334
  ---
329
335
 
336
+ ## Migration & Deprecation Policy
337
+
338
+ GoPeak treats `compact` as the safe default and `full`/`legacy` as compatibility profiles. Any future hide, remove, rename, or API-contract change must include:
339
+
340
+ 1. an old → new mapping or an explicit no-replacement note;
341
+ 2. the profile impact (`compact`, `full`, `legacy`, or opt-in group);
342
+ 3. whether an alias remains and the planned removal window;
343
+ 4. README/docs and release-note updates;
344
+ 5. a verification command proving `tools/list` exposure and alias behavior;
345
+ 6. a migration prompt example for common Godot workflows.
346
+
347
+ Current compatibility stance: legacy tool names and compact aliases remain supported. Dynamic groups with optional external requirements (`runtime`, `testing`, `lsp`, `dap`, `asset_store`) should be documented as opt-in/setup-gated rather than marketed as always-available core behavior.
348
+
330
349
  ## Technical Reference
331
350
 
332
351
  ### Environment variables
package/build/index.js CHANGED
@@ -1077,7 +1077,7 @@ class GodotServer {
1077
1077
  this.logDebug(`Command: ${cmd}`);
1078
1078
  try {
1079
1079
  const { stdout, stderr } = await execAsync(cmd);
1080
- return { stdout, stderr };
1080
+ return { stdout, stderr: this.sanitizeGodotStderr(stderr) };
1081
1081
  }
1082
1082
  finally {
1083
1083
  rmSync(paramsDir, { recursive: true, force: true });
@@ -1089,7 +1089,7 @@ class GodotServer {
1089
1089
  const execError = error;
1090
1090
  return {
1091
1091
  stdout: execError.stdout,
1092
- stderr: execError.stderr,
1092
+ stderr: this.sanitizeGodotStderr(execError.stderr),
1093
1093
  };
1094
1094
  }
1095
1095
  throw error;
@@ -2287,6 +2287,27 @@ class GodotServer {
2287
2287
  }
2288
2288
  return null;
2289
2289
  }
2290
+ sanitizeGodotStderr(stderr) {
2291
+ if (!stderr) {
2292
+ return stderr;
2293
+ }
2294
+ const ignoredPatterns = [
2295
+ /WARNING: ObjectDB instances leaked at exit/i,
2296
+ /at:\s+cleanup\s+\(core\/object\/object\.cpp:/i,
2297
+ /ERROR:\s+\d+\s+resources still in use at exit/i,
2298
+ /at:\s+clear\s+\(core\/io\/resource\.cpp:/i,
2299
+ ];
2300
+ const filteredLines = stderr
2301
+ .split(/\r?\n/)
2302
+ .filter((line) => {
2303
+ const trimmed = line.trim();
2304
+ if (!trimmed) {
2305
+ return false;
2306
+ }
2307
+ return !ignoredPatterns.some((pattern) => pattern.test(trimmed));
2308
+ });
2309
+ return filteredLines.join('\n').trim();
2310
+ }
2290
2311
  /**
2291
2312
  * Capture/update current intent snapshot
2292
2313
  */
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "gopeak",
3
- "version": "2.3.6",
3
+ "version": "2.3.7",
4
4
  "mcpName": "io.github.HaD0Yun/gopeak",
5
- "description": "GoPeak — MCP server for Godot Engine with 110+ tools, compact/dynamic profiles, GDScript LSP, DAP debugger, screenshots, input injection, and CC0 asset search.",
5
+ "description": "GoPeak — MCP server for trusted Godot 4 workflows with compact/dynamic tool profiles, setup-gated LSP/DAP/runtime integrations, and migration-safe legacy compatibility.",
6
6
  "type": "module",
7
7
  "main": "./build/index.js",
8
8
  "bin": {
9
- "gopeak": "./build/cli.js",
10
- "godot-mcp": "./build/cli.js"
9
+ "gopeak": "build/cli.js",
10
+ "godot-mcp": "build/cli.js"
11
11
  },
12
12
  "files": [
13
13
  "build",
@@ -23,6 +23,7 @@
23
23
  "test:smoke": "node scripts/smoke-test.mjs",
24
24
  "test:integration": "node test-bridge.mjs",
25
25
  "test:dynamic-groups": "node test-dynamic-groups.mjs",
26
+ "test:docs": "node test-readme-localization-consistency.mjs && node test-docs-package-policy.mjs",
26
27
  "test:regressions": "node test-regressions.mjs",
27
28
  "test:ci": "npm run test:smoke && npm run test:regressions",
28
29
  "ci": "npm run build && npm run typecheck && npm run test:ci",
@@ -34,7 +35,8 @@
34
35
  "version:bump": "node scripts/bump-version.mjs",
35
36
  "test:setup": "npm run build && node test-setup-hooks.mjs && node test-metadata-consistency.mjs && node test-packaging-consistency.mjs",
36
37
  "test:metadata": "npm run build && node test-metadata-consistency.mjs",
37
- "test:packaging": "npm run build && node test-packaging-consistency.mjs"
38
+ "test:packaging": "npm run build && node test-packaging-consistency.mjs",
39
+ "test:docs-policy": "node test-docs-package-policy.mjs"
38
40
  },
39
41
  "engines": {
40
42
  "node": ">=18"
@@ -53,7 +55,7 @@
53
55
  },
54
56
  "overrides": {
55
57
  "@hono/node-server": "^1.19.11",
56
- "hono": "4.12.7",
58
+ "hono": "^4.12.18",
57
59
  "path-to-regexp": "8.4.1"
58
60
  },
59
61
  "license": "MIT",