rpgmaker-mz-mcp 1.1.0 → 1.2.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 CHANGED
@@ -5,13 +5,13 @@
5
5
  # RPG Maker MZ MCP Server
6
6
 
7
7
  [![CI](https://github.com/Redseb/rpgmaker-mz-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Redseb/rpgmaker-mz-mcp/actions/workflows/ci.yml)
8
- [![Tools](https://img.shields.io/badge/tools-117-e94560.svg)](#available-tools)
8
+ [![Tools](https://img.shields.io/badge/tools-119-e94560.svg)](#available-tools)
9
9
  [![MCP](https://img.shields.io/badge/MCP-stdio-e94560.svg)](https://modelcontextprotocol.io/)
10
10
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-3178c6.svg)](tsconfig.json)
11
11
  [![Node.js >=20](https://img.shields.io/badge/node-%3E%3D20-3fa796.svg)](package.json)
12
12
  [![License: MIT](https://img.shields.io/badge/License-MIT-3fa796.svg)](#license)
13
13
 
14
- **117 tools** that let an AI assistant read and write an RPG Maker MZ project directly — actors, classes, skills, items, equipment, states, enemies, troops, common events, maps, tiles, tilesets, events, and system settings — instead of hand-editing everything in the editor.
14
+ **119 tools** that let an AI assistant read and write an RPG Maker MZ project directly — actors, classes, skills, items, equipment, states, enemies, troops, common events, maps, tiles, tilesets, events, and system settings — instead of hand-editing everything in the editor.
15
15
 
16
16
  _"Add a town under the world map, paint it with grass, and drop in a shopkeeper who sells potions"_ → done, in-project, no editor clicks.
17
17
 
@@ -144,7 +144,7 @@ The easiest path is the `.mcpb` bundle from [Releases](https://github.com/Redseb
144
144
 
145
145
  ## Available tools
146
146
 
147
- All 117 tools, grouped by area. Tools that write to the project accept an optional `dryRun` argument (see [Dry-run preview](#dry-run-preview)); those that can refuse a structurally invalid write also accept `force` (see [Event validation](#event-validation-throw-by-default)).
147
+ All 119 tools, grouped by area. Tools that write to the project accept an optional `dryRun` argument (see [Dry-run preview](#dry-run-preview)); those that can refuse a structurally invalid write also accept `force` (see [Event validation](#event-validation-throw-by-default)).
148
148
 
149
149
  <details>
150
150
  <summary><strong>Expand the full tool reference</strong></summary>
@@ -271,6 +271,11 @@ Read-only builders that return editor-faithful `EventCommand` sequences; land th
271
271
  - `validate_event`, `validate_project` — event-command-shape validation (read-only)
272
272
  - `validate_references` — cross-file id-integrity audit (party→actor, transfer→map, effect→state/skill/common-event, drops→item, map-tree cycles, …)
273
273
 
274
+ ### ID allocation
275
+
276
+ - `list_allocated_ids` — which switch / variable / common-event IDs are already spoken for, derived from the project's own JSON; with `id`, every place that one is referenced
277
+ - `next_free_id` — reserve the next unallocated ID(s) instead of picking one by hand
278
+
274
279
  </details>
275
280
 
276
281
  ## Input validation
@@ -292,6 +297,16 @@ Because the check runs *before* the commit, a `dryRun` of a write that would be
292
297
 
293
298
  `validate_references` performs a **cross-file id-integrity audit** — orthogonal to the command-shape check above. It walks the whole database and flags references that point at something that doesn't exist: a starting party member with no matching actor, a Transfer Player targeting a missing map, a skill effect that adds a non-existent state, an enemy dropping an unknown item, a cyclic map-tree parent, and more. Every check is warn-by-default and guarded against false positives on partially-loaded projects.
294
299
 
300
+ ## ID allocation
301
+
302
+ Switches, variables and common-event IDs are one global namespace, and nothing in RPG Maker stops a later edit from claiming an ID an earlier one already used. The failure is silent — no crash, no validator hit, just a door that is inexplicably already open hours into a playtest.
303
+
304
+ `list_allocated_ids` answers "what's taken?" **from the project files themselves** — never a hand-maintained list, which would drift the moment someone edited in the RPG Maker editor. An ID counts as allocated if it is *declared* (a `System.json` label, a `CommonEvents` row) **or** *referenced* anywhere: event page conditions and command lists, common events, troop pages, and Common Event skill/item effects. Both halves matter — a named-but-unused switch is a claim someone staked, and a used-but-unnamed one is a claim nobody wrote down. Pass `id` to ask the narrower question: where is switch 23 actually used, before I touch it?
305
+
306
+ `next_free_id` hands back the next unallocated ID(s), strictly above everything already taken. Holes below the highest ID are left alone by default (a hole is often an ID claimed in notes but not yet written); `reuseGaps: true` fills them when you're compacting deliberately. It's read-only — it suggests IDs, it doesn't write them, so name what you take with `set_switch_name` / `set_variable_name` to make the claim visible to whoever edits next. Those two grow the `System.json` name list when the ID is past the end, so an ID from `next_free_id` can always be labelled without opening the editor.
307
+
308
+ Like the command validator, the usage scan is **curated, not exhaustive**: it covers the commands that carry switch/variable IDs (Control Switches/Variables, Conditional Branch, the "designation by variable" forms of Transfer Player, Change Gold/Items, Change HP/MP/EXP/Level, …), and every report states the command codes it scanned. An ID used only from a `Script` (355) or a plugin command (357) will read as free.
309
+
295
310
  ## Dry-run preview
296
311
 
297
312
  Every tool that writes to the project accepts an optional `dryRun` argument. When `dryRun: true`, the tool computes what it _would_ write and returns a diff instead of touching any files:
@@ -363,15 +378,19 @@ The advertised tool count lives in a few human-facing spots — the README prose
363
378
  ```bash
364
379
  npm version minor # or patch/major — bumps package.json + tags
365
380
  npm run sync:version # stamp the new version into the other manifests
366
- git add -A && git commit --amend --no-edit && git push --follow-tags
381
+ git add -A && git commit --amend --no-edit
382
+ git push && git push origin vX.Y.Z # amend rewrites the tagged commit, so push the tag explicitly
367
383
 
368
384
  npm publish # publish to npm (runs the full gate via prepublishOnly)
369
385
  mcp-publisher publish # update the MCP registry listing (server.json; login: mcp-publisher login github)
370
- npm run bundle:mcpb # build rpgmaker-mz-mcp.mcpb and attach it to the GitHub release
386
+ npm run bundle:mcpb # build rpgmaker-mz-mcp.mcpb
387
+ gh release create vX.Y.Z rpgmaker-mz-mcp.mcpb --title vX.Y.Z --notes "..." # publish the GitHub release + attach the bundle
371
388
  ```
372
389
 
373
390
  The Claude Code plugin needs no separate publish — users' installs update from this repo (the plugin runs the npm package via `npx rpgmaker-mz-mcp@latest`, so bumping npm is what ships new tools).
374
391
 
392
+ `git commit --amend` rewrites the commit `npm version`'s tag points to, so `--follow-tags` on the next push won't pick it up — push the tag by name explicitly, and don't forget the `gh release create` step, since nothing before it actually creates the GitHub release.
393
+
375
394
  ## Project structure
376
395
 
377
396
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"allTools.d.ts","sourceRoot":"","sources":["../../src/tools/allTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA0BhD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,EAyB9C,CAAC"}
1
+ {"version":3,"file":"allTools.d.ts","sourceRoot":"","sources":["../../src/tools/allTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA2BhD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,EA0B9C,CAAC"}
@@ -22,6 +22,7 @@ import { listToolDefinitions } from './listTools.js';
22
22
  import { validationToolDefinitions } from './validationTools.js';
23
23
  import { pluginScanToolDefinitions } from './pluginScanTools.js';
24
24
  import { batchToolDefinitions } from './batchTools.js';
25
+ import { idToolDefinitions } from './idTools.js';
25
26
  /**
26
27
  * Every tool the server exposes, gathered from the per-domain tool modules.
27
28
  * Kept in its own side-effect-free module so it can be imported by both the
@@ -50,6 +51,7 @@ export const allToolDefinitions = [
50
51
  ...assetToolDefinitions,
51
52
  ...listToolDefinitions,
52
53
  ...validationToolDefinitions,
54
+ ...idToolDefinitions,
53
55
  ...batchToolDefinitions,
54
56
  ...pluginScanToolDefinitions,
55
57
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"allTools.js","sourceRoot":"","sources":["../../src/tools/allTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD,GAAG,sBAAsB;IACzB,GAAG,oBAAoB;IACvB,GAAG,mBAAmB;IACtB,GAAG,oBAAoB;IACvB,GAAG,kBAAkB;IACrB,GAAG,qBAAqB;IACxB,GAAG,oBAAoB;IACvB,GAAG,oBAAoB;IACvB,GAAG,0BAA0B;IAC7B,GAAG,mBAAmB;IACtB,GAAG,2BAA2B;IAC9B,GAAG,wBAAwB;IAC3B,GAAG,qBAAqB;IACxB,GAAG,mBAAmB;IACtB,GAAG,sBAAsB;IACzB,GAAG,oBAAoB;IACvB,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;IACzB,GAAG,qBAAqB;IACxB,GAAG,oBAAoB;IACvB,GAAG,mBAAmB;IACtB,GAAG,yBAAyB;IAC5B,GAAG,oBAAoB;IACvB,GAAG,yBAAyB;CAC7B,CAAC"}
1
+ {"version":3,"file":"allTools.js","sourceRoot":"","sources":["../../src/tools/allTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD,GAAG,sBAAsB;IACzB,GAAG,oBAAoB;IACvB,GAAG,mBAAmB;IACtB,GAAG,oBAAoB;IACvB,GAAG,kBAAkB;IACrB,GAAG,qBAAqB;IACxB,GAAG,oBAAoB;IACvB,GAAG,oBAAoB;IACvB,GAAG,0BAA0B;IAC7B,GAAG,mBAAmB;IACtB,GAAG,2BAA2B;IAC9B,GAAG,wBAAwB;IAC3B,GAAG,qBAAqB;IACxB,GAAG,mBAAmB;IACtB,GAAG,sBAAsB;IACzB,GAAG,oBAAoB;IACvB,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;IACzB,GAAG,qBAAqB;IACxB,GAAG,oBAAoB;IACvB,GAAG,mBAAmB;IACtB,GAAG,yBAAyB;IAC5B,GAAG,iBAAiB;IACpB,GAAG,oBAAoB;IACvB,GAAG,yBAAyB;CAC7B,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { ToolDefinition } from '../registry.js';
2
+ import { IdNamespace } from '../validation/idUsage.js';
3
+ /** One id that is spoken for, and why. */
4
+ export interface AllocatedId {
5
+ id: number;
6
+ /** The System.json label (switch/variable) or record name (common_event); `''` when unnamed. */
7
+ name: string;
8
+ /**
9
+ * Whether the id is *declared*: a non-empty System.json label, or a live
10
+ * CommonEvents row. An id that is referenced but not declared is still
11
+ * allocated — someone is using it — but nothing names it.
12
+ */
13
+ declared: boolean;
14
+ referenceCount: number;
15
+ /** A sample of reference sites; `referenceCount` is the true total. */
16
+ referencedBy: Array<{
17
+ path: string;
18
+ via: string;
19
+ }>;
20
+ }
21
+ export interface AllocationReport {
22
+ type: IdNamespace;
23
+ count: number;
24
+ /** Highest allocated id, or 0 when nothing is allocated. */
25
+ highest: number;
26
+ /** Unallocated ids below `highest` — holes left by deletions or sparse picking. */
27
+ gaps: number[];
28
+ /**
29
+ * switch/variable only: how many ids System.json declares slots for. Ids above
30
+ * this still work at runtime, but the editor won't show a name for them until
31
+ * the array grows (`set_switch_name`/`set_variable_name` grow it).
32
+ */
33
+ declaredCapacity?: number;
34
+ allocated: AllocatedId[];
35
+ /** What this scan does and doesn't see. */
36
+ coverage: string;
37
+ }
38
+ /**
39
+ * Every id of one namespace that is spoken for, derived from the project files.
40
+ *
41
+ * "Allocated" means declared (a System.json label / a CommonEvents row) **or**
42
+ * referenced anywhere. Both halves matter: a named-but-unused switch is a claim
43
+ * a previous session staked, and a used-but-unnamed one is a claim nobody wrote
44
+ * down. Handing either out again produces the failure this exists to prevent —
45
+ * silent, no crash, surfacing hours into a playtest as a door that's already
46
+ * open.
47
+ *
48
+ * With `id`, reports just that one id (including `allocated: false` if it's
49
+ * free) with a fuller list of reference sites — "where is switch 23 used?".
50
+ */
51
+ export declare function listAllocatedIds(projectPath: string, type: IdNamespace, id?: number): Promise<AllocationReport | (AllocatedId & {
52
+ type: IdNamespace;
53
+ allocated: boolean;
54
+ })>;
55
+ export interface NextFreeIdResult {
56
+ type: IdNamespace;
57
+ ids: number[];
58
+ /** `append` = above every allocated id; `gap-fill` = holes first, then append. */
59
+ strategy: 'append' | 'gap-fill';
60
+ highest: number;
61
+ declaredCapacity?: number;
62
+ warnings: string[];
63
+ }
64
+ /**
65
+ * Hand back the next unallocated id(s) so a session never picks one by hand.
66
+ *
67
+ * Defaults to **append** — strictly above every id already spoken for. Holes are
68
+ * left alone by default on purpose: a gap is usually an id a *concurrent or
69
+ * recent* session has claimed in its notes but not yet written into the project,
70
+ * and reusing it is exactly the collision this tool exists to prevent. Pass
71
+ * `reuseGaps` when compacting a project deliberately.
72
+ */
73
+ export declare function nextFreeId(projectPath: string, type: IdNamespace, count?: number, reuseGaps?: boolean): Promise<NextFreeIdResult>;
74
+ export declare const idToolDefinitions: ToolDefinition[];
75
+ //# sourceMappingURL=idTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idTools.d.ts","sourceRoot":"","sources":["../../src/tools/idTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EACL,WAAW,EAIZ,MAAM,0BAA0B,CAAC;AAYlC,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAsDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,EACjB,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,GAAG,CAAC,WAAW,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAwCvF;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,kFAAkF;IAClF,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,EACjB,KAAK,SAAI,EACT,SAAS,UAAQ,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAKD,eAAO,MAAM,iBAAiB,EAAE,cAAc,EAsC7C,CAAC"}
@@ -0,0 +1,183 @@
1
+ import { z } from 'zod';
2
+ import { loadProjectData } from './validationTools.js';
3
+ import { scanIdUsage, scannedCommandCodes, } from '../validation/idUsage.js';
4
+ const ID_NAMESPACES = ['switch', 'variable', 'common_event'];
5
+ /** How many reference sites are listed per id in a whole-namespace listing. */
6
+ const REFERENCE_SAMPLE = 3;
7
+ /** …and when the caller asked about one specific id, where the detail is the point. */
8
+ const REFERENCE_SAMPLE_SINGLE = 50;
9
+ /** Ceiling on ids handed out, so a corrupt project can't produce an absurd suggestion. */
10
+ const MAX_ID = 5000;
11
+ /** Group raw reference hits by id. */
12
+ function byId(refs) {
13
+ const grouped = new Map();
14
+ for (const ref of refs) {
15
+ const existing = grouped.get(ref.id);
16
+ if (existing)
17
+ existing.push(ref);
18
+ else
19
+ grouped.set(ref.id, [ref]);
20
+ }
21
+ return grouped;
22
+ }
23
+ /**
24
+ * The declared label for every id of a namespace: the System.json `switches` /
25
+ * `variables` arrays, or common-event record names. Only non-empty labels count
26
+ * — RPG Maker pads both arrays with `''` for every unused slot, so an empty
27
+ * string means "slot exists, nobody claimed it".
28
+ */
29
+ function declaredNames(data, ns) {
30
+ const names = new Map();
31
+ if (ns === 'common_event') {
32
+ for (const commonEvent of data.commonEvents) {
33
+ if (commonEvent)
34
+ names.set(commonEvent.id, commonEvent.name ?? '');
35
+ }
36
+ return names;
37
+ }
38
+ const labels = ns === 'switch' ? data.system?.switches : data.system?.variables;
39
+ if (Array.isArray(labels)) {
40
+ labels.forEach((label, id) => {
41
+ if (id > 0 && typeof label === 'string' && label !== '')
42
+ names.set(id, label);
43
+ });
44
+ }
45
+ return names;
46
+ }
47
+ /** How many ids System.json declares slots for (`undefined` for common events). */
48
+ function declaredCapacity(data, ns) {
49
+ if (ns === 'common_event')
50
+ return undefined;
51
+ const labels = ns === 'switch' ? data.system?.switches : data.system?.variables;
52
+ return Array.isArray(labels) ? Math.max(labels.length - 1, 0) : undefined;
53
+ }
54
+ function coverageNote(ns) {
55
+ const codes = scannedCommandCodes(ns).join(', ');
56
+ return (`Derived from the project's own JSON — event pages (conditions + commands), common events, and troop pages. ` +
57
+ `Command codes scanned for ${ns} ids: ${codes}. Like the command validator this table is curated, not exhaustive: ` +
58
+ `an id used only from a Script (355) or a plugin command (357) will read as free.`);
59
+ }
60
+ /**
61
+ * Every id of one namespace that is spoken for, derived from the project files.
62
+ *
63
+ * "Allocated" means declared (a System.json label / a CommonEvents row) **or**
64
+ * referenced anywhere. Both halves matter: a named-but-unused switch is a claim
65
+ * a previous session staked, and a used-but-unnamed one is a claim nobody wrote
66
+ * down. Handing either out again produces the failure this exists to prevent —
67
+ * silent, no crash, surfacing hours into a playtest as a door that's already
68
+ * open.
69
+ *
70
+ * With `id`, reports just that one id (including `allocated: false` if it's
71
+ * free) with a fuller list of reference sites — "where is switch 23 used?".
72
+ */
73
+ export async function listAllocatedIds(projectPath, type, id) {
74
+ const data = await loadProjectData(projectPath);
75
+ const refs = byId(scanIdUsage(data, type));
76
+ const names = declaredNames(data, type);
77
+ const build = (target, sample) => {
78
+ const hits = refs.get(target) ?? [];
79
+ return {
80
+ id: target,
81
+ name: names.get(target) ?? '',
82
+ declared: names.has(target),
83
+ referenceCount: hits.length,
84
+ referencedBy: hits.slice(0, sample).map(({ path, via }) => ({ path, via })),
85
+ };
86
+ };
87
+ if (id !== undefined) {
88
+ const entry = build(id, REFERENCE_SAMPLE_SINGLE);
89
+ return { type, allocated: entry.declared || entry.referenceCount > 0, ...entry };
90
+ }
91
+ const ids = [...new Set([...names.keys(), ...refs.keys()])].sort((a, b) => a - b);
92
+ const allocated = ids.map((each) => build(each, REFERENCE_SAMPLE));
93
+ const highest = ids.length > 0 ? ids[ids.length - 1] : 0;
94
+ const claimed = new Set(ids);
95
+ const gaps = [];
96
+ for (let candidate = 1; candidate < highest; candidate++) {
97
+ if (!claimed.has(candidate))
98
+ gaps.push(candidate);
99
+ }
100
+ return {
101
+ type,
102
+ count: allocated.length,
103
+ highest,
104
+ gaps,
105
+ declaredCapacity: declaredCapacity(data, type),
106
+ allocated,
107
+ coverage: coverageNote(type),
108
+ };
109
+ }
110
+ /**
111
+ * Hand back the next unallocated id(s) so a session never picks one by hand.
112
+ *
113
+ * Defaults to **append** — strictly above every id already spoken for. Holes are
114
+ * left alone by default on purpose: a gap is usually an id a *concurrent or
115
+ * recent* session has claimed in its notes but not yet written into the project,
116
+ * and reusing it is exactly the collision this tool exists to prevent. Pass
117
+ * `reuseGaps` when compacting a project deliberately.
118
+ */
119
+ export async function nextFreeId(projectPath, type, count = 1, reuseGaps = false) {
120
+ const report = (await listAllocatedIds(projectPath, type));
121
+ const warnings = [];
122
+ const ids = [];
123
+ if (reuseGaps)
124
+ ids.push(...report.gaps.slice(0, count));
125
+ for (let next = report.highest + 1; ids.length < count; next++) {
126
+ if (next > MAX_ID) {
127
+ warnings.push(`Stopped at id ${MAX_ID}: the project already allocates ids that high, which usually means corrupt data rather than a real need.`);
128
+ break;
129
+ }
130
+ ids.push(next);
131
+ }
132
+ const capacity = report.declaredCapacity;
133
+ if (capacity !== undefined && ids.some((each) => each > capacity)) {
134
+ const plural = type === 'switch' ? 'switches' : 'variables';
135
+ warnings.push(`System.json declares ${capacity} ${plural}. Ids above that work at runtime, but have no name slot until the array grows — ` +
136
+ `set_${type}_name grows it for you.`);
137
+ }
138
+ return {
139
+ type,
140
+ ids,
141
+ strategy: reuseGaps ? 'gap-fill' : 'append',
142
+ highest: report.highest,
143
+ declaredCapacity: capacity,
144
+ warnings,
145
+ };
146
+ }
147
+ const TYPE_DESCRIPTION = 'Which id namespace: switch, variable, or common_event. Database rows (actors, items, …) are not here — create_*/batch_create assign those ids, and list_names shows what exists.';
148
+ export const idToolDefinitions = [
149
+ {
150
+ name: 'list_allocated_ids',
151
+ description: 'Show which switch / variable / common-event IDs are already spoken for, derived from the project\'s own JSON (never a hand-maintained list, which would drift the moment someone edited in the RPG Maker editor). An id counts as allocated if it is declared (a System.json label, a CommonEvents row) OR referenced anywhere — event page conditions and command lists, common events, troop pages, and Common Event skill/item effects. Use this before reusing an id, and pass `id` to answer "where is switch 23 actually used?" before touching it. Returns { count, highest, gaps, declaredCapacity, allocated[], coverage }. Read-only. To claim a fresh id instead, use next_free_id.',
152
+ inputSchema: {
153
+ type: z.enum(ID_NAMESPACES).describe(TYPE_DESCRIPTION),
154
+ id: z
155
+ .number()
156
+ .int()
157
+ .positive()
158
+ .optional()
159
+ .describe('Report just this id — whether it is allocated, its label, and every place it is referenced. Omitted = the whole namespace.'),
160
+ },
161
+ handler: (ctx, args) => listAllocatedIds(ctx.projectPath, args.type, args.id),
162
+ },
163
+ {
164
+ name: 'next_free_id',
165
+ description: 'Reserve the next unallocated switch / variable / common-event ID(s) instead of picking one by hand. Ids are handed out strictly above every id already declared or referenced, so two sessions editing the same project over time cannot silently claim the same switch — a collision that never crashes and only surfaces hours into a playtest as a door that is inexplicably already open. Pass `reuseGaps: true` to fill holes below the highest id first (off by default: a hole is often an id claimed in notes but not yet written). Read-only — it suggests ids, it does not write them; name what you take with set_switch_name / set_variable_name so the next session sees the claim.',
166
+ inputSchema: {
167
+ type: z.enum(ID_NAMESPACES).describe(TYPE_DESCRIPTION),
168
+ count: z
169
+ .number()
170
+ .int()
171
+ .positive()
172
+ .max(100)
173
+ .optional()
174
+ .describe('How many consecutive free ids to return (default 1)'),
175
+ reuseGaps: z
176
+ .boolean()
177
+ .optional()
178
+ .describe('Fill unallocated holes below the highest id first (default false)'),
179
+ },
180
+ handler: (ctx, args) => nextFreeId(ctx.projectPath, args.type, args.count, args.reuseGaps),
181
+ },
182
+ ];
183
+ //# sourceMappingURL=idTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idTools.js","sourceRoot":"","sources":["../../src/tools/idTools.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,8 @@ export declare function updateSystem(projectPath: string, updates: Partial<Syste
13
13
  */
14
14
  export declare function getVariables(projectPath: string): Promise<string[]>;
15
15
  /**
16
- * Set a variable name
16
+ * Set a variable name. Grows the `variables` array if the id is past the end
17
+ * (see {@link growNameSlots}).
17
18
  */
18
19
  export declare function setVariableName(projectPath: string, variableId: number, name: string): Promise<void>;
19
20
  /**
@@ -21,7 +22,8 @@ export declare function setVariableName(projectPath: string, variableId: number,
21
22
  */
22
23
  export declare function getSwitches(projectPath: string): Promise<string[]>;
23
24
  /**
24
- * Set a switch name
25
+ * Set a switch name. Grows the `switches` array if the id is past the end (see
26
+ * {@link growNameSlots}).
25
27
  */
26
28
  export declare function setSwitchName(projectPath: string, switchId: number, name: string): Promise<void>;
27
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"systemTools.d.ts","sourceRoot":"","sources":["../../src/tools/systemTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"systemTools.d.ts","sourceRoot":"","sources":["../../src/tools/systemTools.ts"],"names":[],"mappings":"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"}
@@ -27,13 +27,48 @@ export async function getVariables(projectPath) {
27
27
  return system.variables;
28
28
  }
29
29
  /**
30
- * Set a variable name
30
+ * The block the RPG Maker editor grows the switch/variable name lists in. Growing
31
+ * to a multiple of it keeps a file this server wrote indistinguishable from one
32
+ * the editor saved.
33
+ */
34
+ const NAME_BLOCK = 20;
35
+ /**
36
+ * Hard ceiling on automatic growth. A four-digit id is far more likely to be a
37
+ * typo than a real need, and silently allocating thousands of empty name slots
38
+ * would bloat System.json without anyone noticing.
39
+ */
40
+ const MAX_NAME_SLOTS = 5000;
41
+ /**
42
+ * Grow a System.json name array (`switches`/`variables`) so `id` has a slot,
43
+ * padding with `''` exactly as the editor does. Returns the array unchanged when
44
+ * the slot already exists.
45
+ *
46
+ * Without this an agent working from `next_free_id` hits a wall the moment it
47
+ * exhausts the default 20 slots — and the only remedy would be "open the RPG
48
+ * Maker editor", in a workflow whose whole premise is not needing to. Nothing is
49
+ * lost by growing: the engine reads `$gameSwitches` independently of these
50
+ * labels, which exist for the editor UI.
51
+ */
52
+ function growNameSlots(names, id, label) {
53
+ if (id < names.length)
54
+ return;
55
+ if (id > MAX_NAME_SLOTS) {
56
+ throw new Error(`${label} id ${id} is beyond the ${MAX_NAME_SLOTS}-slot ceiling (project declares ${names.length - 1}). That is almost certainly a typo — check next_free_id.`);
57
+ }
58
+ const grown = Math.ceil((id + 1) / NAME_BLOCK) * NAME_BLOCK;
59
+ while (names.length < grown)
60
+ names.push('');
61
+ }
62
+ /**
63
+ * Set a variable name. Grows the `variables` array if the id is past the end
64
+ * (see {@link growNameSlots}).
31
65
  */
32
66
  export async function setVariableName(projectPath, variableId, name) {
33
67
  const system = await getSystem(projectPath);
34
- if (variableId < 1 || variableId >= system.variables.length) {
35
- throw new Error(`Variable id ${variableId} is out of range (project has ${system.variables.length - 1} variables). Add more in the editor's Database > System first.`);
68
+ if (variableId < 1) {
69
+ throw new Error(`Variable id ${variableId} is out of range (ids are 1-based).`);
36
70
  }
71
+ growNameSlots(system.variables, variableId, 'Variable');
37
72
  system.variables[variableId] = name;
38
73
  const systemPath = getDataPath(projectPath, 'System.json');
39
74
  await commitChange(systemPath, system);
@@ -46,13 +81,15 @@ export async function getSwitches(projectPath) {
46
81
  return system.switches;
47
82
  }
48
83
  /**
49
- * Set a switch name
84
+ * Set a switch name. Grows the `switches` array if the id is past the end (see
85
+ * {@link growNameSlots}).
50
86
  */
51
87
  export async function setSwitchName(projectPath, switchId, name) {
52
88
  const system = await getSystem(projectPath);
53
- if (switchId < 1 || switchId >= system.switches.length) {
54
- throw new Error(`Switch id ${switchId} is out of range (project has ${system.switches.length - 1} switches). Add more in the editor's Database > System first.`);
89
+ if (switchId < 1) {
90
+ throw new Error(`Switch id ${switchId} is out of range (ids are 1-based).`);
55
91
  }
92
+ growNameSlots(system.switches, switchId, 'Switch');
56
93
  system.switches[switchId] = name;
57
94
  const systemPath = getDataPath(projectPath, 'System.json');
58
95
  await commitChange(systemPath, system);
@@ -268,7 +305,7 @@ export const systemToolDefinitions = [
268
305
  {
269
306
  name: 'set_variable_name',
270
307
  mutates: true,
271
- description: 'Set a variable name',
308
+ description: "Set a variable name. Grows the project's variable list if the id is past the end (padded to the editor's 20-slot block), so an id from next_free_id can always be labelled. Naming a variable as soon as you claim it is what makes it visible to the next session — see list_allocated_ids.",
272
309
  inputSchema: {
273
310
  variableId: z.number().int().positive().describe('The 1-based variable ID'),
274
311
  name: z.string().describe('The name to assign'),
@@ -287,7 +324,7 @@ export const systemToolDefinitions = [
287
324
  {
288
325
  name: 'set_switch_name',
289
326
  mutates: true,
290
- description: 'Set a switch name',
327
+ description: "Set a switch name. Grows the project's switch list if the id is past the end (padded to the editor's 20-slot block), so an id from next_free_id can always be labelled. Naming a switch as soon as you claim it is what makes it visible to the next session — see list_allocated_ids.",
291
328
  inputSchema: {
292
329
  switchId: z.number().int().positive().describe('The 1-based switch ID'),
293
330
  name: z.string().describe('The name to assign'),
@@ -1 +1 @@
1
- {"version":3,"file":"systemTools.js","sourceRoot":"","sources":["../../src/tools/systemTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"systemTools.js","sourceRoot":"","sources":["../../src/tools/systemTools.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ToolDefinition } from '../registry.js';
2
2
  import { ValidationWarning } from '../validation/eventCommands.js';
3
- import { ReferenceWarning } from '../validation/references.js';
3
+ import { ProjectData, ReferenceWarning } from '../validation/references.js';
4
4
  import { AssetWarning } from '../validation/assets.js';
5
5
  /**
6
6
  * Validate a single event's command lists against the known-command table.
@@ -23,6 +23,16 @@ export declare function validateProjectTool(projectPath: string): Promise<{
23
23
  mapId: number;
24
24
  }>;
25
25
  }>;
26
+ /**
27
+ * Load the whole project snapshot the reference linter needs. Every read fails
28
+ * soft: a missing/unreadable file yields an empty array (or `null` for
29
+ * `Animations.json`/`System.json`), so the audit degrades to fewer checks rather
30
+ * than throwing.
31
+ *
32
+ * Shared with the id-allocation scan (`tools/idTools.ts`), which needs the same
33
+ * whole-project snapshot.
34
+ */
35
+ export declare function loadProjectData(projectPath: string): Promise<ProjectData>;
26
36
  /**
27
37
  * Cross-file reference-integrity audit for the whole project. Read-only and
28
38
  * warn-by-default: reports dangling/cyclic references (a Transfer Player to a
@@ -1 +1 @@
1
- {"version":3,"file":"validationTools.d.ts","sourceRoot":"","sources":["../../src/tools/validationTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAiC,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAElG,OAAO,EAAgC,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAIL,YAAY,EACb,MAAM,yBAAyB,CAAC;AAajC;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAAC,CAOzF;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD,CAAC,CAuBD;AAgED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC,CAIxD;AAwED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAOpD;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,EAgCrD,CAAC"}
1
+ {"version":3,"file":"validationTools.d.ts","sourceRoot":"","sources":["../../src/tools/validationTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAiC,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAElG,OAAO,EAAmB,WAAW,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAIL,YAAY,EACb,MAAM,yBAAyB,CAAC;AAajC;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAAC,CAOzF;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD,CAAC,CAuBD;AAUD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8C/E;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC,CAIxD;AAwED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAOpD;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,EAgCrD,CAAC"}
@@ -55,8 +55,11 @@ async function loadArray(projectPath, file) {
55
55
  * soft: a missing/unreadable file yields an empty array (or `null` for
56
56
  * `Animations.json`/`System.json`), so the audit degrades to fewer checks rather
57
57
  * than throwing.
58
+ *
59
+ * Shared with the id-allocation scan (`tools/idTools.ts`), which needs the same
60
+ * whole-project snapshot.
58
61
  */
59
- async function loadProjectData(projectPath) {
62
+ export async function loadProjectData(projectPath) {
60
63
  const mapInfos = await loadArray(projectPath, 'MapInfos.json');
61
64
  const maps = [];
62
65
  for (const info of mapInfos) {
@@ -1 +1 @@
1
- {"version":3,"file":"validationTools.js","sourceRoot":"","sources":["../../src/tools/validationTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validationTools.js","sourceRoot":"","sources":["../../src/tools/validationTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { EventCommand } from '../utils/types.js';
2
+ import { ProjectData } from './references.js';
3
+ /**
4
+ * The id namespaces an author picks a number in by hand. Deliberately narrow:
5
+ * these are the three where nothing assigns the id for you, so two sessions
6
+ * editing the same project can silently claim the same one. Database rows
7
+ * (actors, items, …) are not here — `create_*`/`batch_create` assign those ids,
8
+ * and `list_names` already shows what exists.
9
+ *
10
+ * Self switches (command 123, A–D) are also absent on purpose: they're scoped to
11
+ * one event, so they can't collide across sessions.
12
+ */
13
+ export type IdNamespace = 'switch' | 'variable' | 'common_event';
14
+ /** A single place an id is referenced. */
15
+ export interface IdReference {
16
+ id: number;
17
+ /** Where the reference sits, e.g. `map 3 / event 7 / page 0 / command 4`. */
18
+ path: string;
19
+ /** What carries it, e.g. `Control Switches` or `page condition (switch1Id)`. */
20
+ via: string;
21
+ }
22
+ /** The command codes scanned for a namespace — surfaced so callers can state their coverage. */
23
+ export declare function scannedCommandCodes(ns: IdNamespace): number[];
24
+ /**
25
+ * Every id of one namespace referenced by a single event command. Unlisted
26
+ * codes and parameters that aren't positive integers yield nothing, so a
27
+ * malformed command degrades to "no references" rather than throwing.
28
+ */
29
+ export declare function commandIdRefs(command: EventCommand, ns: IdNamespace): Array<{
30
+ id: number;
31
+ via: string;
32
+ }>;
33
+ /**
34
+ * Every reference to one id namespace across the whole project: map event pages
35
+ * (conditions and commands), common events (trigger switch and commands), troop
36
+ * pages (battle conditions and commands), and — for common events — skill/item
37
+ * effects that call one.
38
+ *
39
+ * Pure, so it's unit-testable without file I/O. Derived entirely from the
40
+ * project's own JSON, which is the point: a hand-maintained ledger of claimed
41
+ * ids drifts the moment someone edits in the RPG Maker editor.
42
+ */
43
+ export declare function scanIdUsage(data: ProjectData, ns: IdNamespace): IdReference[];
44
+ //# sourceMappingURL=idUsage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idUsage.d.ts","sourceRoot":"","sources":["../../src/validation/idUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4C,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC;AAEjE,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;CACb;AAoID,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,EAAE,CAI7D;AAQD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,WAAW,GACd,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CA8BpC;AAiFD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,WAAW,EAAE,CAmC7E"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * A Control Switches/Variables range is normally a handful of ids; this only
3
+ * stops a corrupt or hand-written `[1, 999999]` from expanding into a
4
+ * million-entry result.
5
+ */
6
+ const MAX_RANGE = 1000;
7
+ /**
8
+ * Curated (not exhaustive) — the same stance as `KNOWN_COMMANDS`. It covers
9
+ * every command this server's own builders emit plus the hand-authored ones an
10
+ * agent is likely to meet; an unlisted command contributes no references, so a
11
+ * switch used only from a `Script` (355) or a plugin command (357) reads as
12
+ * free. Callers surface that caveat.
13
+ */
14
+ const SWITCH_REFS = {
15
+ 111: { name: 'Conditional Branch', conditional: [{ when: [[0, 0]], indices: [1] }] },
16
+ 121: { name: 'Control Switches', range: [0, 1] },
17
+ };
18
+ const VARIABLE_REFS = {
19
+ 103: { name: 'Input Number', always: [0] },
20
+ 104: { name: 'Select Item', always: [0] },
21
+ 111: {
22
+ name: 'Conditional Branch',
23
+ conditional: [
24
+ { when: [[0, 1]], indices: [1] },
25
+ // Comparing a variable against another variable: params[2] === 1.
26
+ {
27
+ when: [
28
+ [0, 1],
29
+ [2, 1],
30
+ ],
31
+ indices: [3],
32
+ },
33
+ ],
34
+ },
35
+ // operateValue(operation, operandType, operand): operandType 1 = variable.
36
+ 122: {
37
+ name: 'Control Variables',
38
+ range: [0, 1],
39
+ conditional: [{ when: [[3, 1]], indices: [4] }],
40
+ },
41
+ 125: { name: 'Change Gold', conditional: [{ when: [[1, 1]], indices: [2] }] },
42
+ 126: { name: 'Change Items', conditional: [{ when: [[2, 1]], indices: [3] }] },
43
+ 127: { name: 'Change Weapons', conditional: [{ when: [[2, 1]], indices: [3] }] },
44
+ 128: { name: 'Change Armors', conditional: [{ when: [[2, 1]], indices: [3] }] },
45
+ 201: { name: 'Transfer Player', conditional: [{ when: [[0, 1]], indices: [1, 2, 3] }] },
46
+ 202: { name: 'Set Vehicle Location', conditional: [{ when: [[1, 1]], indices: [2, 3, 4] }] },
47
+ 203: { name: 'Set Event Location', conditional: [{ when: [[1, 1]], indices: [2, 3] }] },
48
+ 285: {
49
+ name: 'Get Location Info',
50
+ always: [0],
51
+ conditional: [{ when: [[2, 1]], indices: [3, 4] }],
52
+ },
53
+ // iterateActorEx(params[0], params[1]): actor designated by variable when params[0] === 1.
54
+ 311: {
55
+ name: 'Change HP',
56
+ conditional: [
57
+ { when: [[0, 1]], indices: [1] },
58
+ { when: [[3, 1]], indices: [4] },
59
+ ],
60
+ },
61
+ 312: {
62
+ name: 'Change MP',
63
+ conditional: [
64
+ { when: [[0, 1]], indices: [1] },
65
+ { when: [[3, 1]], indices: [4] },
66
+ ],
67
+ },
68
+ 313: { name: 'Change State', conditional: [{ when: [[0, 1]], indices: [1] }] },
69
+ 314: { name: 'Recover All', conditional: [{ when: [[0, 1]], indices: [1] }] },
70
+ 315: {
71
+ name: 'Change EXP',
72
+ conditional: [
73
+ { when: [[0, 1]], indices: [1] },
74
+ { when: [[3, 1]], indices: [4] },
75
+ ],
76
+ },
77
+ 316: {
78
+ name: 'Change Level',
79
+ conditional: [
80
+ { when: [[0, 1]], indices: [1] },
81
+ { when: [[3, 1]], indices: [4] },
82
+ ],
83
+ },
84
+ 317: {
85
+ name: 'Change Parameter',
86
+ conditional: [
87
+ { when: [[0, 1]], indices: [1] },
88
+ { when: [[4, 1]], indices: [5] },
89
+ ],
90
+ },
91
+ 318: { name: 'Change Skill', conditional: [{ when: [[0, 1]], indices: [1] }] },
92
+ 326: {
93
+ name: 'Change TP',
94
+ conditional: [
95
+ { when: [[0, 1]], indices: [1] },
96
+ { when: [[3, 1]], indices: [4] },
97
+ ],
98
+ },
99
+ };
100
+ const COMMON_EVENT_REFS = {
101
+ 117: { name: 'Common Event', always: [0] },
102
+ };
103
+ const REF_TABLES = {
104
+ switch: SWITCH_REFS,
105
+ variable: VARIABLE_REFS,
106
+ common_event: COMMON_EVENT_REFS,
107
+ };
108
+ /** The command codes scanned for a namespace — surfaced so callers can state their coverage. */
109
+ export function scannedCommandCodes(ns) {
110
+ return Object.keys(REF_TABLES[ns])
111
+ .map(Number)
112
+ .sort((a, b) => a - b);
113
+ }
114
+ /** A positive integer id, or `undefined` for anything else (missing, 0, a string, …). */
115
+ function idAt(parameters, index) {
116
+ const value = parameters[index];
117
+ return typeof value === 'number' && Number.isInteger(value) && value > 0 ? value : undefined;
118
+ }
119
+ /**
120
+ * Every id of one namespace referenced by a single event command. Unlisted
121
+ * codes and parameters that aren't positive integers yield nothing, so a
122
+ * malformed command degrades to "no references" rather than throwing.
123
+ */
124
+ export function commandIdRefs(command, ns) {
125
+ const spec = REF_TABLES[ns][command?.code];
126
+ if (!spec || !Array.isArray(command.parameters))
127
+ return [];
128
+ const parameters = command.parameters;
129
+ const ids = [];
130
+ for (const index of spec.always ?? []) {
131
+ const id = idAt(parameters, index);
132
+ if (id !== undefined)
133
+ ids.push(id);
134
+ }
135
+ for (const group of spec.conditional ?? []) {
136
+ if (!group.when.every(([index, value]) => parameters[index] === value))
137
+ continue;
138
+ for (const index of group.indices) {
139
+ const id = idAt(parameters, index);
140
+ if (id !== undefined)
141
+ ids.push(id);
142
+ }
143
+ }
144
+ if (spec.range) {
145
+ const start = idAt(parameters, spec.range[0]);
146
+ const end = idAt(parameters, spec.range[1]);
147
+ if (start !== undefined) {
148
+ const last = Math.min(end !== undefined && end >= start ? end : start, start + MAX_RANGE - 1);
149
+ for (let id = start; id <= last; id++)
150
+ ids.push(id);
151
+ }
152
+ }
153
+ return ids.map((id) => ({ id, via: spec.name }));
154
+ }
155
+ /** Scan one command list, tagging each reference with the list's path. */
156
+ function scanList(list, path, ns) {
157
+ if (!Array.isArray(list))
158
+ return [];
159
+ const refs = [];
160
+ list.forEach((command, i) => {
161
+ for (const { id, via } of commandIdRefs(command, ns)) {
162
+ refs.push({ id, path: `${path} / command ${i}`, via });
163
+ }
164
+ });
165
+ return refs;
166
+ }
167
+ /**
168
+ * Switch/variable references that live in an event page's *conditions* rather
169
+ * than its command list — the gate that decides which page runs. A page
170
+ * condition only reads its id when the matching `*Valid` flag is set, so an
171
+ * unused slot (which still holds a stale id) isn't counted.
172
+ */
173
+ function pageConditionRefs(page, path, ns) {
174
+ const conditions = page?.conditions;
175
+ if (!conditions)
176
+ return [];
177
+ const refs = [];
178
+ if (ns === 'switch') {
179
+ if (conditions.switch1Valid && conditions.switch1Id > 0) {
180
+ refs.push({ id: conditions.switch1Id, path, via: 'page condition (switch1Id)' });
181
+ }
182
+ if (conditions.switch2Valid && conditions.switch2Id > 0) {
183
+ refs.push({ id: conditions.switch2Id, path, via: 'page condition (switch2Id)' });
184
+ }
185
+ }
186
+ if (ns === 'variable' && conditions.variableValid && conditions.variableId > 0) {
187
+ refs.push({ id: conditions.variableId, path, via: 'page condition (variableId)' });
188
+ }
189
+ return refs;
190
+ }
191
+ /** Every reference carried by one map event's pages (conditions + command lists). */
192
+ function mapEventRefs(event, mapId, ns) {
193
+ if (!Array.isArray(event.pages))
194
+ return [];
195
+ const refs = [];
196
+ event.pages.forEach((page, pi) => {
197
+ const path = `map ${mapId} / event ${event.id} / page ${pi}`;
198
+ refs.push(...pageConditionRefs(page, path, ns));
199
+ refs.push(...scanList(page?.list, path, ns));
200
+ });
201
+ return refs;
202
+ }
203
+ /** Common-event references: the autorun/parallel gate switch, plus the command list. */
204
+ function commonEventRefs(commonEvent, ns) {
205
+ const path = `common event ${commonEvent.id}`;
206
+ const refs = [];
207
+ // trigger 0 = call-only, in which case switchId is ignored by the engine.
208
+ if (ns === 'switch' && commonEvent.trigger !== 0 && commonEvent.switchId > 0) {
209
+ refs.push({ id: commonEvent.switchId, path, via: 'common event trigger switch' });
210
+ }
211
+ refs.push(...scanList(commonEvent.list, path, ns));
212
+ return refs;
213
+ }
214
+ /** Skill/item effects that run a common event (Game_Action effect code 44). */
215
+ const EFFECT_COMMON_EVENT = 44;
216
+ function effectRefs(effects, path) {
217
+ if (!Array.isArray(effects))
218
+ return [];
219
+ const refs = [];
220
+ effects.forEach((effect, i) => {
221
+ if (effect?.code === EFFECT_COMMON_EVENT && effect.dataId > 0) {
222
+ refs.push({ id: effect.dataId, path: `${path} / effect ${i}`, via: 'Common Event effect' });
223
+ }
224
+ });
225
+ return refs;
226
+ }
227
+ /**
228
+ * Every reference to one id namespace across the whole project: map event pages
229
+ * (conditions and commands), common events (trigger switch and commands), troop
230
+ * pages (battle conditions and commands), and — for common events — skill/item
231
+ * effects that call one.
232
+ *
233
+ * Pure, so it's unit-testable without file I/O. Derived entirely from the
234
+ * project's own JSON, which is the point: a hand-maintained ledger of claimed
235
+ * ids drifts the moment someone edits in the RPG Maker editor.
236
+ */
237
+ export function scanIdUsage(data, ns) {
238
+ const refs = [];
239
+ for (const map of data.maps) {
240
+ for (const event of map.events) {
241
+ if (event)
242
+ refs.push(...mapEventRefs(event, map.id, ns));
243
+ }
244
+ }
245
+ for (const commonEvent of data.commonEvents) {
246
+ if (commonEvent)
247
+ refs.push(...commonEventRefs(commonEvent, ns));
248
+ }
249
+ for (const troop of data.troops) {
250
+ if (!troop || !Array.isArray(troop.pages))
251
+ continue;
252
+ troop.pages.forEach((page, pi) => {
253
+ const path = `troop ${troop.id} / page ${pi}`;
254
+ const conditions = page?.conditions;
255
+ if (ns === 'switch' && conditions?.switchValid && conditions.switchId > 0) {
256
+ refs.push({ id: conditions.switchId, path, via: 'troop page condition (switchId)' });
257
+ }
258
+ refs.push(...scanList(page?.list, path, ns));
259
+ });
260
+ }
261
+ if (ns === 'common_event') {
262
+ for (const skill of data.skills) {
263
+ if (skill)
264
+ refs.push(...effectRefs(skill.effects, `skill ${skill.id}`));
265
+ }
266
+ for (const item of data.items) {
267
+ if (item)
268
+ refs.push(...effectRefs(item.effects, `item ${item.id}`));
269
+ }
270
+ }
271
+ return refs;
272
+ }
273
+ //# sourceMappingURL=idUsage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idUsage.js","sourceRoot":"","sources":["../../src/validation/idUsage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rpgmaker-mz-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "High-quality MCP server for RPG Maker MZ integration - manage game data, maps, events, and plugins",
5
5
  "mcpName": "io.github.Redseb/rpgmaker-mz-mcp",
6
6
  "type": "module",