rpgmaker-mz-mcp 1.0.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.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +425 -0
  3. package/dist/events/commandBuilders.d.ts +405 -0
  4. package/dist/events/commandBuilders.d.ts.map +1 -0
  5. package/dist/events/commandBuilders.js +554 -0
  6. package/dist/events/commandBuilders.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +105 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/registry.d.ts +81 -0
  12. package/dist/registry.d.ts.map +1 -0
  13. package/dist/registry.js +49 -0
  14. package/dist/registry.js.map +1 -0
  15. package/dist/tiles/autotile.d.ts +65 -0
  16. package/dist/tiles/autotile.d.ts.map +1 -0
  17. package/dist/tiles/autotile.js +201 -0
  18. package/dist/tiles/autotile.js.map +1 -0
  19. package/dist/tiles/catalog/dungeon.d.ts +16 -0
  20. package/dist/tiles/catalog/dungeon.d.ts.map +1 -0
  21. package/dist/tiles/catalog/dungeon.js +765 -0
  22. package/dist/tiles/catalog/dungeon.js.map +1 -0
  23. package/dist/tiles/catalog/index.d.ts +78 -0
  24. package/dist/tiles/catalog/index.d.ts.map +1 -0
  25. package/dist/tiles/catalog/index.js +115 -0
  26. package/dist/tiles/catalog/index.js.map +1 -0
  27. package/dist/tiles/catalog/inside.d.ts +16 -0
  28. package/dist/tiles/catalog/inside.d.ts.map +1 -0
  29. package/dist/tiles/catalog/inside.js +765 -0
  30. package/dist/tiles/catalog/inside.js.map +1 -0
  31. package/dist/tiles/catalog/outside.d.ts +16 -0
  32. package/dist/tiles/catalog/outside.d.ts.map +1 -0
  33. package/dist/tiles/catalog/outside.js +799 -0
  34. package/dist/tiles/catalog/outside.js.map +1 -0
  35. package/dist/tiles/catalog/overworld.d.ts +16 -0
  36. package/dist/tiles/catalog/overworld.d.ts.map +1 -0
  37. package/dist/tiles/catalog/overworld.js +585 -0
  38. package/dist/tiles/catalog/overworld.js.map +1 -0
  39. package/dist/tiles/catalog/sf.d.ts +16 -0
  40. package/dist/tiles/catalog/sf.d.ts.map +1 -0
  41. package/dist/tiles/catalog/sf.js +1313 -0
  42. package/dist/tiles/catalog/sf.js.map +1 -0
  43. package/dist/tiles/paint.d.ts +20 -0
  44. package/dist/tiles/paint.d.ts.map +1 -0
  45. package/dist/tiles/paint.js +65 -0
  46. package/dist/tiles/paint.js.map +1 -0
  47. package/dist/tiles/png.d.ts +11 -0
  48. package/dist/tiles/png.d.ts.map +1 -0
  49. package/dist/tiles/png.js +180 -0
  50. package/dist/tiles/png.js.map +1 -0
  51. package/dist/tiles/tileCodec.d.ts +95 -0
  52. package/dist/tiles/tileCodec.d.ts.map +1 -0
  53. package/dist/tiles/tileCodec.js +186 -0
  54. package/dist/tiles/tileCodec.js.map +1 -0
  55. package/dist/tiles/tileFlags.d.ts +98 -0
  56. package/dist/tiles/tileFlags.d.ts.map +1 -0
  57. package/dist/tiles/tileFlags.js +129 -0
  58. package/dist/tiles/tileFlags.js.map +1 -0
  59. package/dist/tiles/tilegeom.d.ts +29 -0
  60. package/dist/tiles/tilegeom.d.ts.map +1 -0
  61. package/dist/tiles/tilegeom.js +111 -0
  62. package/dist/tiles/tilegeom.js.map +1 -0
  63. package/dist/tiles/transparency.d.ts +22 -0
  64. package/dist/tiles/transparency.d.ts.map +1 -0
  65. package/dist/tiles/transparency.js +59 -0
  66. package/dist/tiles/transparency.js.map +1 -0
  67. package/dist/tools/actorTools.d.ts +48 -0
  68. package/dist/tools/actorTools.d.ts.map +1 -0
  69. package/dist/tools/actorTools.js +154 -0
  70. package/dist/tools/actorTools.js.map +1 -0
  71. package/dist/tools/allTools.d.ts +8 -0
  72. package/dist/tools/allTools.d.ts.map +1 -0
  73. package/dist/tools/allTools.js +56 -0
  74. package/dist/tools/allTools.js.map +1 -0
  75. package/dist/tools/assetTools.d.ts +113 -0
  76. package/dist/tools/assetTools.d.ts.map +1 -0
  77. package/dist/tools/assetTools.js +97 -0
  78. package/dist/tools/assetTools.js.map +1 -0
  79. package/dist/tools/batchTools.d.ts +3 -0
  80. package/dist/tools/batchTools.d.ts.map +1 -0
  81. package/dist/tools/batchTools.js +138 -0
  82. package/dist/tools/batchTools.js.map +1 -0
  83. package/dist/tools/battleTools.d.ts +72 -0
  84. package/dist/tools/battleTools.d.ts.map +1 -0
  85. package/dist/tools/battleTools.js +322 -0
  86. package/dist/tools/battleTools.js.map +1 -0
  87. package/dist/tools/catalogTools.d.ts +3 -0
  88. package/dist/tools/catalogTools.d.ts.map +1 -0
  89. package/dist/tools/catalogTools.js +134 -0
  90. package/dist/tools/catalogTools.js.map +1 -0
  91. package/dist/tools/classTools.d.ts +85 -0
  92. package/dist/tools/classTools.d.ts.map +1 -0
  93. package/dist/tools/classTools.js +279 -0
  94. package/dist/tools/classTools.js.map +1 -0
  95. package/dist/tools/commonEventTools.d.ts +32 -0
  96. package/dist/tools/commonEventTools.d.ts.map +1 -0
  97. package/dist/tools/commonEventTools.js +150 -0
  98. package/dist/tools/commonEventTools.js.map +1 -0
  99. package/dist/tools/eventCommandTools.d.ts +37 -0
  100. package/dist/tools/eventCommandTools.d.ts.map +1 -0
  101. package/dist/tools/eventCommandTools.js +893 -0
  102. package/dist/tools/eventCommandTools.js.map +1 -0
  103. package/dist/tools/eventPageTools.d.ts +112 -0
  104. package/dist/tools/eventPageTools.d.ts.map +1 -0
  105. package/dist/tools/eventPageTools.js +597 -0
  106. package/dist/tools/eventPageTools.js.map +1 -0
  107. package/dist/tools/itemTools.d.ts +82 -0
  108. package/dist/tools/itemTools.d.ts.map +1 -0
  109. package/dist/tools/itemTools.js +380 -0
  110. package/dist/tools/itemTools.js.map +1 -0
  111. package/dist/tools/listTools.d.ts +58 -0
  112. package/dist/tools/listTools.d.ts.map +1 -0
  113. package/dist/tools/listTools.js +99 -0
  114. package/dist/tools/listTools.js.map +1 -0
  115. package/dist/tools/mapTools.d.ts +270 -0
  116. package/dist/tools/mapTools.d.ts.map +1 -0
  117. package/dist/tools/mapTools.js +1066 -0
  118. package/dist/tools/mapTools.js.map +1 -0
  119. package/dist/tools/moveTools.d.ts +43 -0
  120. package/dist/tools/moveTools.d.ts.map +1 -0
  121. package/dist/tools/moveTools.js +240 -0
  122. package/dist/tools/moveTools.js.map +1 -0
  123. package/dist/tools/objectTools.d.ts +12 -0
  124. package/dist/tools/objectTools.d.ts.map +1 -0
  125. package/dist/tools/objectTools.js +221 -0
  126. package/dist/tools/objectTools.js.map +1 -0
  127. package/dist/tools/paintTools.d.ts +3 -0
  128. package/dist/tools/paintTools.d.ts.map +1 -0
  129. package/dist/tools/paintTools.js +134 -0
  130. package/dist/tools/paintTools.js.map +1 -0
  131. package/dist/tools/pluginScanTools.d.ts +22 -0
  132. package/dist/tools/pluginScanTools.d.ts.map +1 -0
  133. package/dist/tools/pluginScanTools.js +119 -0
  134. package/dist/tools/pluginScanTools.js.map +1 -0
  135. package/dist/tools/pluginTools.d.ts +11 -0
  136. package/dist/tools/pluginTools.d.ts.map +1 -0
  137. package/dist/tools/pluginTools.js +63 -0
  138. package/dist/tools/pluginTools.js.map +1 -0
  139. package/dist/tools/projectTools.d.ts +11 -0
  140. package/dist/tools/projectTools.d.ts.map +1 -0
  141. package/dist/tools/projectTools.js +74 -0
  142. package/dist/tools/projectTools.js.map +1 -0
  143. package/dist/tools/skillTools.d.ts +83 -0
  144. package/dist/tools/skillTools.d.ts.map +1 -0
  145. package/dist/tools/skillTools.js +369 -0
  146. package/dist/tools/skillTools.js.map +1 -0
  147. package/dist/tools/stateTools.d.ts +28 -0
  148. package/dist/tools/stateTools.d.ts.map +1 -0
  149. package/dist/tools/stateTools.js +161 -0
  150. package/dist/tools/stateTools.js.map +1 -0
  151. package/dist/tools/systemTools.d.ts +86 -0
  152. package/dist/tools/systemTools.d.ts.map +1 -0
  153. package/dist/tools/systemTools.js +342 -0
  154. package/dist/tools/systemTools.js.map +1 -0
  155. package/dist/tools/tileTools.d.ts +9 -0
  156. package/dist/tools/tileTools.d.ts.map +1 -0
  157. package/dist/tools/tileTools.js +34 -0
  158. package/dist/tools/tileTools.js.map +1 -0
  159. package/dist/tools/tileTransparency.d.ts +40 -0
  160. package/dist/tools/tileTransparency.d.ts.map +1 -0
  161. package/dist/tools/tileTransparency.js +156 -0
  162. package/dist/tools/tileTransparency.js.map +1 -0
  163. package/dist/tools/tilesetTools.d.ts +23 -0
  164. package/dist/tools/tilesetTools.d.ts.map +1 -0
  165. package/dist/tools/tilesetTools.js +209 -0
  166. package/dist/tools/tilesetTools.js.map +1 -0
  167. package/dist/tools/validationTools.d.ts +50 -0
  168. package/dist/tools/validationTools.d.ts.map +1 -0
  169. package/dist/tools/validationTools.js +229 -0
  170. package/dist/tools/validationTools.js.map +1 -0
  171. package/dist/utils/commit.d.ts +62 -0
  172. package/dist/utils/commit.d.ts.map +1 -0
  173. package/dist/utils/commit.js +119 -0
  174. package/dist/utils/commit.js.map +1 -0
  175. package/dist/utils/fileHandler.d.ts +49 -0
  176. package/dist/utils/fileHandler.d.ts.map +1 -0
  177. package/dist/utils/fileHandler.js +137 -0
  178. package/dist/utils/fileHandler.js.map +1 -0
  179. package/dist/utils/records.d.ts +8 -0
  180. package/dist/utils/records.d.ts.map +1 -0
  181. package/dist/utils/records.js +10 -0
  182. package/dist/utils/records.js.map +1 -0
  183. package/dist/utils/types.d.ts +465 -0
  184. package/dist/utils/types.d.ts.map +1 -0
  185. package/dist/utils/types.js +5 -0
  186. package/dist/utils/types.js.map +1 -0
  187. package/dist/validation/assets.d.ts +53 -0
  188. package/dist/validation/assets.d.ts.map +1 -0
  189. package/dist/validation/assets.js +198 -0
  190. package/dist/validation/assets.js.map +1 -0
  191. package/dist/validation/createRefs.d.ts +37 -0
  192. package/dist/validation/createRefs.d.ts.map +1 -0
  193. package/dist/validation/createRefs.js +89 -0
  194. package/dist/validation/createRefs.js.map +1 -0
  195. package/dist/validation/eventCommands.d.ts +70 -0
  196. package/dist/validation/eventCommands.d.ts.map +1 -0
  197. package/dist/validation/eventCommands.js +273 -0
  198. package/dist/validation/eventCommands.js.map +1 -0
  199. package/dist/validation/gate.d.ts +56 -0
  200. package/dist/validation/gate.d.ts.map +1 -0
  201. package/dist/validation/gate.js +50 -0
  202. package/dist/validation/gate.js.map +1 -0
  203. package/dist/validation/moveCommands.d.ts +31 -0
  204. package/dist/validation/moveCommands.d.ts.map +1 -0
  205. package/dist/validation/moveCommands.js +123 -0
  206. package/dist/validation/moveCommands.js.map +1 -0
  207. package/dist/validation/pluginCommands.d.ts +83 -0
  208. package/dist/validation/pluginCommands.d.ts.map +1 -0
  209. package/dist/validation/pluginCommands.js +134 -0
  210. package/dist/validation/pluginCommands.js.map +1 -0
  211. package/dist/validation/pluginManifest.d.ts +67 -0
  212. package/dist/validation/pluginManifest.d.ts.map +1 -0
  213. package/dist/validation/pluginManifest.js +199 -0
  214. package/dist/validation/pluginManifest.js.map +1 -0
  215. package/dist/validation/references.d.ts +57 -0
  216. package/dist/validation/references.d.ts.map +1 -0
  217. package/dist/validation/references.js +314 -0
  218. package/dist/validation/references.js.map +1 -0
  219. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectTools.js","sourceRoot":"","sources":["../../src/tools/objectTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ToolDefinition } from '../registry.js';
2
+ export declare const paintToolDefinitions: ToolDefinition[];
3
+ //# sourceMappingURL=paintTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paintTools.d.ts","sourceRoot":"","sources":["../../src/tools/paintTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAoGhD,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAkEhD,CAAC"}
@@ -0,0 +1,134 @@
1
+ import { z } from 'zod';
2
+ import { getMapPath } from '../utils/fileHandler.js';
3
+ import { commitChange } from '../utils/commit.js';
4
+ import { getMap, tileIndex } from './mapTools.js';
5
+ import { applyAutotiling } from '../tiles/paint.js';
6
+ import { isAutotile } from '../tiles/tileCodec.js';
7
+ import { getTileset } from './tilesetTools.js';
8
+ import { baseAwareTransparencyWarning } from './tileTransparency.js';
9
+ /** The 6 z-layers: 0-1 lower tiles, 2-3 upper tiles, 4 shadow, 5 region id. */
10
+ const MAX_LAYER = 5;
11
+ /** Layers that hold real tiles (autotiles only make sense here). */
12
+ const TILE_LAYERS = 4;
13
+ /** A LayerAccess bound to one z-layer of a map's flat `data` array (mutates in place). */
14
+ function layerAccess(map, layer) {
15
+ return {
16
+ width: map.width,
17
+ height: map.height,
18
+ get: (x, y) => map.data[tileIndex(map.width, map.height, x, y, layer)],
19
+ set: (x, y, tileId) => {
20
+ map.data[tileIndex(map.width, map.height, x, y, layer)] = tileId;
21
+ },
22
+ };
23
+ }
24
+ /**
25
+ * Paint tiles onto a map layer, then autotile: each painted cell is set to the
26
+ * given tile id and — for autotiles — every painted cell and its neighbours get
27
+ * their shape recomputed from same-kind adjacency. Out-of-bounds cells are
28
+ * skipped with a warning. Writes through the commit choke point (dry-run/diff).
29
+ */
30
+ async function paintCells(projectPath, mapId, cells, layer) {
31
+ const map = await getMap(projectPath, mapId);
32
+ const grid = layerAccess(map, layer);
33
+ const warnings = [];
34
+ const painted = [];
35
+ let sawAutotile = false;
36
+ for (const cell of cells) {
37
+ if (cell.x < 0 || cell.x >= map.width || cell.y < 0 || cell.y >= map.height) {
38
+ warnings.push(`(${cell.x}, ${cell.y}) is out of bounds (${map.width}x${map.height}) — skipped`);
39
+ continue;
40
+ }
41
+ grid.set(cell.x, cell.y, cell.tileId);
42
+ painted.push({ x: cell.x, y: cell.y, tileId: cell.tileId });
43
+ if (isAutotile(cell.tileId))
44
+ sawAutotile = true;
45
+ }
46
+ // Autotiles only shape correctly on the tile layers (0-3); shadow/region don't
47
+ // hold tiles. Flag it but still paint (the caller may know what they're doing).
48
+ if (sawAutotile && layer >= TILE_LAYERS) {
49
+ warnings.push(`layer ${layer} is not a tile layer (0-3) — autotile shapes will not render as expected`);
50
+ }
51
+ applyAutotiling(grid, painted);
52
+ // Base-aware transparency check (tile layers only — shadow/region hold no tiles):
53
+ // a see-through tile with no opaque tile beneath shows the map's void. Advisory
54
+ // only — a missing/unreadable tileset must never break a paint, so fail soft.
55
+ if (layer < TILE_LAYERS && painted.length > 0) {
56
+ try {
57
+ const tileset = await getTileset(projectPath, map.tilesetId);
58
+ const warning = await baseAwareTransparencyWarning(projectPath, map, tileset, painted.map((c) => ({ ...c, layer })));
59
+ if (warning)
60
+ warnings.push(warning);
61
+ }
62
+ catch {
63
+ // No tileset / unreadable sheets → skip the advisory transparency warning.
64
+ }
65
+ }
66
+ await commitChange(getMapPath(projectPath, mapId), map);
67
+ return warnings.length > 0
68
+ ? { mapId, layer, painted: painted.length, warnings }
69
+ : { mapId, layer, painted: painted.length };
70
+ }
71
+ export const paintToolDefinitions = [
72
+ {
73
+ name: 'paint_tiles',
74
+ mutates: true,
75
+ description: "Paint specific tiles onto a map, with automatic autotiling. Each cell is set to its tile id; if that id is an autotile (A1-A4, e.g. a catalog 'kind' base from find_tile), its shape and its neighbours' shapes are recomputed from same-kind adjacency so borders/corners line up. Flat tiles are painted as-is. Defaults to the lower ground layer (0). Higher-level than set_map_tile, which is a single raw tile with no autotiling.",
76
+ inputSchema: {
77
+ mapId: z.number().int().describe('The ID of the map'),
78
+ tiles: z
79
+ .array(z.object({
80
+ x: z.number().int().describe('X tile position'),
81
+ y: z.number().int().describe('Y tile position'),
82
+ tileId: z
83
+ .number()
84
+ .int()
85
+ .nonnegative()
86
+ .describe('Tile id to paint (autotile base id from find_tile, or a raw id)'),
87
+ }))
88
+ .min(1)
89
+ .describe('Cells to paint'),
90
+ layer: z
91
+ .number()
92
+ .int()
93
+ .min(0)
94
+ .max(MAX_LAYER)
95
+ .optional()
96
+ .describe('Z-layer 0-5 (default 0 = lower ground; 0-3 tiles, 4 shadow, 5 region id)'),
97
+ },
98
+ handler: (ctx, args) => paintCells(ctx.projectPath, args.mapId, args.tiles, args.layer ?? 0),
99
+ },
100
+ {
101
+ name: 'fill_area',
102
+ mutates: true,
103
+ description: 'Fill a rectangular area of a map with one tile id, with automatic autotiling — a filled autotile region borders itself correctly (and re-borders any same-kind tiles it touches). Flat tiles fill uniformly. Defaults to the lower ground layer (0). For region ids, fill layer 5 with the region number as tileId.',
104
+ inputSchema: {
105
+ mapId: z.number().int().describe('The ID of the map'),
106
+ x: z.number().int().describe('Left tile position of the rectangle'),
107
+ y: z.number().int().describe('Top tile position of the rectangle'),
108
+ width: z.number().int().positive().describe('Rectangle width in tiles'),
109
+ height: z.number().int().positive().describe('Rectangle height in tiles'),
110
+ tileId: z
111
+ .number()
112
+ .int()
113
+ .nonnegative()
114
+ .describe('Tile id to fill with (autotile base or raw)'),
115
+ layer: z
116
+ .number()
117
+ .int()
118
+ .min(0)
119
+ .max(MAX_LAYER)
120
+ .optional()
121
+ .describe('Z-layer 0-5 (default 0 = lower ground; 5 = region id)'),
122
+ },
123
+ handler: (ctx, args) => {
124
+ const cells = [];
125
+ for (let dy = 0; dy < args.height; dy++) {
126
+ for (let dx = 0; dx < args.width; dx++) {
127
+ cells.push({ x: args.x + dx, y: args.y + dy, tileId: args.tileId });
128
+ }
129
+ }
130
+ return paintCells(ctx.projectPath, args.mapId, cells, args.layer ?? 0);
131
+ },
132
+ },
133
+ ];
134
+ //# sourceMappingURL=paintTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paintTools.js","sourceRoot":"","sources":["../../src/tools/paintTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ToolDefinition } from '../registry.js';
2
+ import { PluginRegistry } from '../validation/pluginCommands.js';
3
+ /** Reset the scan cache. Exposed for tests. */
4
+ export declare function clearPluginScanCache(): void;
5
+ /**
6
+ * Scan a project's installed plugins into a {@link PluginRegistry}.
7
+ *
8
+ * Cached by the `js/plugins` directory mtime, so repeated tool calls in a session
9
+ * don't re-read every plugin (mirrors the tile-sheet alpha cache). Note the mtime
10
+ * only changes when files are added/removed — an *edited* plugin needs a fresh
11
+ * session, which is fine: plugin annotations don't change mid-authoring.
12
+ */
13
+ export declare function scanPlugins(projectPath: string): Promise<PluginRegistry>;
14
+ /**
15
+ * The registry the plugin tools validate against: everything scanned from the
16
+ * project merged over the built-in allowlist. See {@link mergePluginRegistries} —
17
+ * the scan wins on structure, but a curated `required` flag survives, since the
18
+ * annotations it came from can't express one.
19
+ */
20
+ export declare function projectPluginRegistry(projectPath: string): Promise<PluginRegistry>;
21
+ export declare const pluginScanToolDefinitions: ToolDefinition[];
22
+ //# sourceMappingURL=pluginScanTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginScanTools.d.ts","sourceRoot":"","sources":["../../src/tools/pluginScanTools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAA2B,MAAM,iCAAiC,CAAC;AA6B1F,+CAA+C;AAC/C,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAMD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAsD9E;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAExF;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,EA0CrD,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { z } from 'zod';
2
+ import { readdir, readFile, stat } from 'fs/promises';
3
+ import { join } from 'path';
4
+ import { PLUGIN_COMMAND_REGISTRY } from '../validation/pluginCommands.js';
5
+ import { parsePluginAnnotations, parsePluginsJs, mergePluginRegistries, } from '../validation/pluginManifest.js';
6
+ const cache = new Map();
7
+ /** Reset the scan cache. Exposed for tests. */
8
+ export function clearPluginScanCache() {
9
+ cache.clear();
10
+ }
11
+ function pluginsDir(projectPath) {
12
+ return join(projectPath, 'js', 'plugins');
13
+ }
14
+ /**
15
+ * Scan a project's installed plugins into a {@link PluginRegistry}.
16
+ *
17
+ * Cached by the `js/plugins` directory mtime, so repeated tool calls in a session
18
+ * don't re-read every plugin (mirrors the tile-sheet alpha cache). Note the mtime
19
+ * only changes when files are added/removed — an *edited* plugin needs a fresh
20
+ * session, which is fine: plugin annotations don't change mid-authoring.
21
+ */
22
+ export async function scanPlugins(projectPath) {
23
+ const dir = pluginsDir(projectPath);
24
+ let mtimeMs;
25
+ try {
26
+ mtimeMs = (await stat(dir)).mtimeMs;
27
+ }
28
+ catch {
29
+ return {}; // No js/plugins dir — not every project has plugins.
30
+ }
31
+ const cached = cache.get(projectPath);
32
+ if (cached && cached.mtimeMs === mtimeMs)
33
+ return cached.registry;
34
+ // Which plugins the editor has installed/enabled. Absent or unparseable →
35
+ // enabled stays unknown rather than being reported as disabled.
36
+ let manifest = null;
37
+ try {
38
+ const source = await readFile(join(projectPath, 'js', 'plugins.js'), 'utf-8');
39
+ const entries = parsePluginsJs(source);
40
+ manifest = new Map(entries.map((e) => [e.name, e.status]));
41
+ }
42
+ catch {
43
+ manifest = null;
44
+ }
45
+ let files;
46
+ try {
47
+ files = (await readdir(dir)).filter((f) => f.endsWith('.js'));
48
+ }
49
+ catch {
50
+ return {};
51
+ }
52
+ const registry = {};
53
+ for (const file of files.sort()) {
54
+ const name = file.replace(/\.js$/, '');
55
+ let source;
56
+ try {
57
+ source = await readFile(join(dir, file), 'utf-8');
58
+ }
59
+ catch {
60
+ continue;
61
+ }
62
+ const spec = parsePluginAnnotations(source);
63
+ if (!spec)
64
+ continue;
65
+ registry[name] = {
66
+ ...spec,
67
+ // A plugin file present on disk but absent from plugins.js isn't installed
68
+ // in the editor, so it won't run either — same as being switched off.
69
+ ...(manifest ? { enabled: manifest.get(name) === true } : {}),
70
+ };
71
+ }
72
+ cache.set(projectPath, { mtimeMs, registry });
73
+ return registry;
74
+ }
75
+ /**
76
+ * The registry the plugin tools validate against: everything scanned from the
77
+ * project merged over the built-in allowlist. See {@link mergePluginRegistries} —
78
+ * the scan wins on structure, but a curated `required` flag survives, since the
79
+ * annotations it came from can't express one.
80
+ */
81
+ export async function projectPluginRegistry(projectPath) {
82
+ return mergePluginRegistries(PLUGIN_COMMAND_REGISTRY, await scanPlugins(projectPath));
83
+ }
84
+ export const pluginScanToolDefinitions = [
85
+ {
86
+ name: 'scan_plugins',
87
+ description: "Discover the plugin commands this project actually has, by parsing the @command/@arg annotations in js/plugins/*.js and the enabled/disabled state in js/plugins.js. Use it to find out what create_plugin_command can call and with which args — it reports every command's key, label, description and args (name/type/default), plus whether the plugin is enabled in the editor's Plugin Manager (a disabled plugin's commands never run). create_plugin_command validates against this scan automatically, so you don't need to call this first; it's for discovery. Pass pluginName to narrow to one plugin, or enabledOnly:true to skip plugins that are installed but switched off. Read-only. NOTE: MZ has no 'required argument' annotation, so scanned args are checked for unknown names only, never for missing ones.",
88
+ inputSchema: {
89
+ pluginName: z
90
+ .string()
91
+ .optional()
92
+ .describe('Optional: restrict to one plugin (its filename without .js)'),
93
+ enabledOnly: z
94
+ .boolean()
95
+ .optional()
96
+ .describe('Only report plugins enabled in js/plugins.js (default false)'),
97
+ },
98
+ handler: async (ctx, args) => {
99
+ const scanned = await scanPlugins(ctx.projectPath);
100
+ let plugins = Object.entries(scanned);
101
+ if (args.pluginName !== undefined) {
102
+ plugins = plugins.filter(([name]) => name === args.pluginName);
103
+ if (plugins.length === 0) {
104
+ throw new Error(`Plugin "${args.pluginName}" was not found in js/plugins (or declares no annotation block)`);
105
+ }
106
+ }
107
+ if (args.enabledOnly === true) {
108
+ plugins = plugins.filter(([, spec]) => spec.enabled !== false);
109
+ }
110
+ const commandCount = plugins.reduce((total, [, spec]) => total + Object.keys(spec.commands).length, 0);
111
+ return {
112
+ pluginCount: plugins.length,
113
+ commandCount,
114
+ plugins: Object.fromEntries(plugins),
115
+ };
116
+ },
117
+ },
118
+ ];
119
+ //# sourceMappingURL=pluginScanTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginScanTools.js","sourceRoot":"","sources":["../../src/tools/pluginScanTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ToolDefinition } from '../registry.js';
2
+ import { PluginRegistry } from '../validation/pluginCommands.js';
3
+ /**
4
+ * Every plugin command known for this project — the plugins it actually ships
5
+ * (scanned from `js/plugins/*.js`) merged over the built-in allowlist — or a
6
+ * single plugin's entry when `pluginName` is given. Read-only view so a caller can
7
+ * discover which plugin commands `create_plugin_command` will validate.
8
+ */
9
+ export declare function listPluginCommands(registry: PluginRegistry, pluginName?: string): unknown;
10
+ export declare const pluginToolDefinitions: ToolDefinition[];
11
+ //# sourceMappingURL=pluginTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginTools.d.ts","sourceRoot":"","sources":["../../src/tools/pluginTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,cAAc,EAGf,MAAM,iCAAiC,CAAC;AAGzC;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAWzF;AAED,eAAO,MAAM,qBAAqB,EAAE,cAAc,EA0DjD,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { buildPluginCommand, validatePluginCommand, } from '../validation/pluginCommands.js';
3
+ import { projectPluginRegistry } from './pluginScanTools.js';
4
+ /**
5
+ * Every plugin command known for this project — the plugins it actually ships
6
+ * (scanned from `js/plugins/*.js`) merged over the built-in allowlist — or a
7
+ * single plugin's entry when `pluginName` is given. Read-only view so a caller can
8
+ * discover which plugin commands `create_plugin_command` will validate.
9
+ */
10
+ export function listPluginCommands(registry, pluginName) {
11
+ if (pluginName === undefined) {
12
+ return registry;
13
+ }
14
+ const plugin = registry[pluginName];
15
+ if (!plugin) {
16
+ throw new Error(`Plugin "${pluginName}" is not installed in this project and is not in the known-plugin allowlist`);
17
+ }
18
+ return { [pluginName]: plugin };
19
+ }
20
+ export const pluginToolDefinitions = [
21
+ {
22
+ name: 'list_plugin_commands',
23
+ description: 'List every plugin command create_plugin_command can validate (plugin filename → command key → args): the plugins this project actually ships, scanned from their js/plugins/*.js annotations, merged over a small built-in allowlist. Pass pluginName to narrow to one plugin. Read-only. Use scan_plugins for the richer per-project view (arg types/defaults, enabled state); an unlisted plugin command can still be built, it just isn’t validated.',
24
+ inputSchema: {
25
+ pluginName: z
26
+ .string()
27
+ .optional()
28
+ .describe('Optional: restrict to one plugin (its filename without .js)'),
29
+ },
30
+ handler: async (ctx, args) => listPluginCommands(await projectPluginRegistry(ctx.projectPath), args.pluginName),
31
+ },
32
+ {
33
+ name: 'create_plugin_command',
34
+ description: 'Build an RPG Maker MZ plugin command (event command code 357) for insertion into an event page via add_event_command. Validates against the plugins this project actually ships (scanned from their js/plugins/*.js @command/@arg annotations) merged over a small built-in allowlist — warn-by-default: an unknown plugin/command, a stray arg, or a plugin that is installed but disabled in js/plugins.js produces a warning but never blocks. Args are normalized to the editor’s string-valued shape. Read-only: returns { command, warnings? }, writes nothing.',
35
+ inputSchema: {
36
+ pluginName: z.string().describe('Plugin filename without .js (event command parameters[0])'),
37
+ commandName: z
38
+ .string()
39
+ .describe('The command key the plugin registered (event command parameters[1])'),
40
+ args: z
41
+ .record(z.string(), z.unknown())
42
+ .optional()
43
+ .describe('Command arguments as { name: value }; values are stored as strings on disk'),
44
+ label: z
45
+ .string()
46
+ .optional()
47
+ .describe('Editor display label (parameters[2]); defaults to the command key'),
48
+ indent: z
49
+ .number()
50
+ .int()
51
+ .optional()
52
+ .describe('Indentation level in the target list (default 0)'),
53
+ },
54
+ handler: async (ctx, args) => {
55
+ const argValues = args.args ?? {};
56
+ const registry = await projectPluginRegistry(ctx.projectPath);
57
+ const command = buildPluginCommand(args.pluginName, args.commandName, argValues, args.indent ?? 0, args.label, registry);
58
+ const warnings = validatePluginCommand(args.pluginName, args.commandName, argValues, undefined, registry);
59
+ return warnings.length > 0 ? { command, warnings } : { command };
60
+ },
61
+ },
62
+ ];
63
+ //# sourceMappingURL=pluginTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginTools.js","sourceRoot":"","sources":["../../src/tools/pluginTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAwB,EAAE,UAAmB;IAC9E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,6EAA6E,CACnG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,ybAAyb;QAC3b,WAAW,EAAE;YACX,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;SAC3E;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAC3B,kBAAkB,CAAC,MAAM,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;KACpF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,uiBAAuiB;QACziB,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;YAC5F,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,qEAAqE,CAAC;YAClF,IAAI,EAAE,CAAC;iBACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CAAC,4EAA4E,CAAC;YACzF,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mEAAmE,CAAC;YAChF,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,kDAAkD,CAAC;SAChE;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAI,IAAI,CAAC,IAA4C,IAAI,EAAE,CAAC;YAC3E,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,kBAAkB,CAChC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,EAChB,SAAS,EACT,IAAI,CAAC,MAAM,IAAI,CAAC,EAChB,IAAI,CAAC,KAAK,EACV,QAAQ,CACT,CAAC;YACF,MAAM,QAAQ,GAAG,qBAAqB,CACpC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,EAChB,SAAS,EACT,SAAS,EACT,QAAQ,CACT,CAAC;YACF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QACnE,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ToolDefinition } from '../registry.js';
2
+ /**
3
+ * Project-targeting tools: inspect and retarget the project directory the
4
+ * server operates on. These are the only tools that run without a valid
5
+ * project path (`requiresProject: false`) — they're how a session diagnoses
6
+ * or fixes an unset/wrong RPGMAKER_PROJECT_PATH without a server restart.
7
+ */
8
+ /** Expand a leading `~` and resolve to an absolute path. */
9
+ export declare function normalizeProjectPath(input: string): string;
10
+ export declare const projectToolDefinitions: ToolDefinition[];
11
+ //# sourceMappingURL=projectTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectTools.d.ts","sourceRoot":"","sources":["../../src/tools/projectTools.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD;;;;;GAKG;AAEH,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1D;AA6BD,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAiClD,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+ import { homedir } from 'os';
3
+ import { join, resolve } from 'path';
4
+ import { validateProjectPath } from '../utils/fileHandler.js';
5
+ import { getGameTitle } from './systemTools.js';
6
+ /**
7
+ * Project-targeting tools: inspect and retarget the project directory the
8
+ * server operates on. These are the only tools that run without a valid
9
+ * project path (`requiresProject: false`) — they're how a session diagnoses
10
+ * or fixes an unset/wrong RPGMAKER_PROJECT_PATH without a server restart.
11
+ */
12
+ /** Expand a leading `~` and resolve to an absolute path. */
13
+ export function normalizeProjectPath(input) {
14
+ const expanded = input === '~' || input.startsWith('~/') ? join(homedir(), input.slice(1)) : input;
15
+ return resolve(expanded);
16
+ }
17
+ /** What both tools report: the path, whether it's usable, and the game it holds. */
18
+ async function describeProject(projectPath) {
19
+ if (!projectPath) {
20
+ return {
21
+ projectPath: null,
22
+ valid: false,
23
+ hint: 'No project set. Call set_project or set RPGMAKER_PROJECT_PATH.',
24
+ };
25
+ }
26
+ if (!(await validateProjectPath(projectPath))) {
27
+ return {
28
+ projectPath,
29
+ valid: false,
30
+ hint: 'Not a valid RPG Maker MZ project (expected game.rmmzproject and data/System.json).',
31
+ };
32
+ }
33
+ // Title read fails soft: a valid project with an unreadable System.json
34
+ // shouldn't make the status tools themselves error.
35
+ let gameTitle;
36
+ try {
37
+ gameTitle = await getGameTitle(projectPath);
38
+ }
39
+ catch {
40
+ gameTitle = undefined;
41
+ }
42
+ return { projectPath, valid: true, ...(gameTitle === undefined ? {} : { gameTitle }) };
43
+ }
44
+ export const projectToolDefinitions = [
45
+ {
46
+ name: 'get_project',
47
+ description: 'Get the project directory the server is currently operating on: its path, whether it is a valid RPG Maker MZ project, and the game title it holds.',
48
+ inputSchema: {},
49
+ requiresProject: false,
50
+ handler: async (ctx) => describeProject(ctx.projectPath),
51
+ },
52
+ {
53
+ name: 'set_project',
54
+ description: 'Point the server at a different RPG Maker MZ project directory for the rest of the session (overrides RPGMAKER_PROJECT_PATH until the server restarts). The directory must contain game.rmmzproject and data/System.json.',
55
+ inputSchema: {
56
+ path: z
57
+ .string()
58
+ .describe('Path to the RPG Maker MZ project directory (a leading ~ is expanded).'),
59
+ },
60
+ requiresProject: false,
61
+ handler: async (ctx, args) => {
62
+ if (!ctx.setProjectPath) {
63
+ throw new Error('set_project is not supported by this server context');
64
+ }
65
+ const path = normalizeProjectPath(String(args.path));
66
+ if (!(await validateProjectPath(path))) {
67
+ throw new Error(`Not an RPG Maker MZ project: ${path} (expected game.rmmzproject and data/System.json)`);
68
+ }
69
+ ctx.setProjectPath(path);
70
+ return describeProject(path);
71
+ },
72
+ },
73
+ ];
74
+ //# sourceMappingURL=projectTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectTools.js","sourceRoot":"","sources":["../../src/tools/projectTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;;;GAKG;AAEH,4DAA4D;AAC5D,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,QAAQ,GACZ,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpF,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,eAAe,CAAC,WAAmB;IAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,gEAAgE;SACvE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,WAAW;YACX,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,oFAAoF;SAC3F,CAAC;IACJ,CAAC;IACD,wEAAwE;IACxE,oDAAoD;IACpD,IAAI,SAA6B,CAAC;IAClC,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,oJAAoJ;QACtJ,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,KAAK;QACtB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;KACzD;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,2NAA2N;QAC7N,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,uEAAuE,CAAC;SACrF;QACD,eAAe,EAAE,KAAK;QACtB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,mDAAmD,CACxF,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { Skill } from '../utils/types.js';
2
+ import { ToolDefinition } from '../registry.js';
3
+ /**
4
+ * Get all skills from the project
5
+ */
6
+ export declare function getSkills(projectPath: string): Promise<(Skill | null)[]>;
7
+ /** The caller-supplied skill shape accepted by both `create_skill` and `batch_create`. */
8
+ export interface SkillInput {
9
+ name: string;
10
+ description?: string;
11
+ iconIndex?: number;
12
+ mpCost?: number;
13
+ tpCost?: number;
14
+ scope?: number;
15
+ damage?: {
16
+ type: number;
17
+ elementId: number;
18
+ formula: string;
19
+ variance?: number;
20
+ critical?: boolean;
21
+ };
22
+ effects?: Array<{
23
+ code: number;
24
+ dataId: number;
25
+ value1: number;
26
+ value2: number;
27
+ }>;
28
+ animationId?: number;
29
+ message1?: string;
30
+ stypeId?: number;
31
+ }
32
+ /**
33
+ * Build one new skill record against the current array — the shared per-record
34
+ * source of truth for both `create_skill` and `batch_create`. Pure: allocates the
35
+ * next unused id (max existing + 1) and fills every unsupplied field with the
36
+ * new-skill default. Does not push or commit, and does not run the effect
37
+ * reference check (that needs cross-file reads) — the caller owns both.
38
+ */
39
+ export declare function buildSkillRecord(existing: (Skill | null)[], input: SkillInput): Skill;
40
+ /**
41
+ * Reject a skill/item whose effects point at a non-existent state / skill /
42
+ * common event (P2-3: throw at author time, like add_class_learning /
43
+ * create_troop). Shared by `create_skill` and `batch_create`.
44
+ */
45
+ export declare function assertSkillEffectRefs(projectPath: string, skill: Skill, skills: (Skill | null)[]): Promise<void>;
46
+ /**
47
+ * Create a new skill
48
+ */
49
+ export declare function createSkill(projectPath: string, skillData: SkillInput): Promise<Skill>;
50
+ /**
51
+ * Update a skill's data
52
+ */
53
+ export declare function updateSkill(projectPath: string, skillId: number, updates: Partial<Skill>): Promise<Skill>;
54
+ /**
55
+ * Delete a skill
56
+ */
57
+ export declare function deleteSkill(projectPath: string, skillId: number): Promise<boolean>;
58
+ /**
59
+ * Search skills by name
60
+ */
61
+ export declare function searchSkills(projectPath: string, searchTerm: string): Promise<Skill[]>;
62
+ /**
63
+ * Create a damage skill (attack spell or physical skill)
64
+ */
65
+ export declare function createDamageSkill(projectPath: string, name: string, damageFormula: string, mpCost: number, scope: number, elementId?: number, description?: string): Promise<Skill>;
66
+ /**
67
+ * Create a healing skill
68
+ */
69
+ export declare function createHealingSkill(projectPath: string, name: string, healFormula: string, mpCost: number, scope: number, description?: string): Promise<Skill>;
70
+ /**
71
+ * Create a buff skill
72
+ */
73
+ export declare function createBuffSkill(projectPath: string, name: string, buffType: number, turns: number, mpCost: number, scope: number, description?: string): Promise<Skill>;
74
+ /**
75
+ * Create a debuff skill
76
+ */
77
+ export declare function createDebuffSkill(projectPath: string, name: string, debuffType: number, turns: number, mpCost: number, scope: number, description?: string): Promise<Skill>;
78
+ /**
79
+ * Create a state-inflicting skill
80
+ */
81
+ export declare function createStateSkill(projectPath: string, name: string, stateId: number, chance: number, mpCost: number, scope: number, description?: string): Promise<Skill>;
82
+ export declare const skillToolDefinitions: ToolDefinition[];
83
+ //# sourceMappingURL=skillTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillTools.d.ts","sourceRoot":"","sources":["../../src/tools/skillTools.ts"],"names":[],"mappings":"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"}