@edgemodders/edgedeck-mcp 0.27.3 → 0.29.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
@@ -23,19 +23,20 @@ Tools:
23
23
  | `edgedeck_list` | Every mod: on or off, version, kinds, status, size; the frameworks line after a game patch |
24
24
  | `edgedeck_mod` | One mod in detail: files, versions, Nexus info |
25
25
  | `edgedeck_add` | Add a zip, 7z, rar, single mod file or folder to the library |
26
- | `edgedeck_install_project` | Add or refresh a REDcode or WolvenKit project's packed output |
26
+ | `edgedeck_install_project` | Add or refresh a REDcode or WolvenKit project's packed output; `sameName` (`follow` or `version`) settles a mod of the same name from another folder |
27
27
  | `edgedeck_turn` | Turn a mod on or off |
28
28
  | `edgedeck_move` | Move a mod up or down; higher wins a conflict |
29
+ | `edgedeck_rename` | A new name for a mod in EDGEdeck, for all its versions; empty puts the first name back |
29
30
  | `edgedeck_remove` | Remove a mod from the library |
30
31
  | `edgedeck_pending` | What the next deploy would add, replace, put back or remove, and why |
31
- | `edgedeck_deploy` | Put the active loadout in the game (refuses while the game runs) |
32
+ | `edgedeck_deploy` | Put the active loadout in the game (refuses while the game runs); `mod` deploys that mod's changes only |
32
33
  | `edgedeck_undo` | Take everything EDGEdeck deployed out again, putting backups back |
33
34
  | `edgedeck_changes` | Deployed files changed or missing in the game folder since |
34
35
  | `edgedeck_conflicts` | Files two enabled mods both have, and who wins |
35
36
  | `edgedeck_loadout` | Save, switch to (load) or list loadouts |
36
37
  | `edgedeck_vortex` | List and import the mods Vortex has for the game (Vortex is not changed) |
37
38
 
38
- Nothing touches the game folder until `edgedeck_deploy` or `edgedeck_undo`; the server tells the assistant to ask the player first.
39
+ Nothing touches the game folder until `edgedeck_deploy` or `edgedeck_undo`; the server tells the assistant to ask the player first. These two and `edgedeck_remove` also carry `_meta: { "anthropic/requiresUserInteraction": true }`, so Claude Code asks you before every call, in every permission mode, auto mode included.
39
40
 
40
41
  ## The command line
41
42
 
@@ -43,7 +44,7 @@ Nothing touches the game folder until `edgedeck_deploy` or `edgedeck_undo`; the
43
44
  npx -p @edgemodders/edgedeck-mcp edgedeck list
44
45
  ```
45
46
 
46
- or, installed with `npm i -g @edgemodders/edgedeck-mcp`, just `edgedeck list`. Commands: `list`, `mod`, `add`, `install-project`, `on`, `off`, `up`, `down`, `remove`, `pending`, `deploy`, `undo`, `changes`, `conflicts`, `loadout save|load|list`, `vortex list|import`, `mcp`. Options `--library`, `--game`, and `--json` for machine output.
47
+ or, installed with `npm i -g @edgemodders/edgedeck-mcp`, just `edgedeck list`. Commands: `list`, `mod`, `add`, `install-project`, `on`, `off`, `up`, `down`, `rename`, `remove`, `pending`, `deploy`, `undo`, `changes`, `conflicts`, `loadout save|load|list`, `vortex list|import`, `mcp`. Options `--library`, `--game`, and `--json` for machine output.
47
48
 
48
49
  ## More
49
50
 
package/bin/edgedeck.mjs CHANGED
@@ -5,11 +5,15 @@
5
5
  // edgedeck list [--size] what is in the library, its size and status (--size: largest first)
6
6
  // edgedeck mod <id> one mod in full: files, sizes, source, Nexus data, conflicts
7
7
  // edgedeck add <file|folder> [--name N] [--option FOLDER]
8
- // edgedeck install-project <.cpmodproj> add a REDcode or WolvenKit project's packed output, or refresh it, and turn it on
8
+ // edgedeck install-project <.cpmodproj> [--follow | --keep-both]
9
+ // add a REDcode or WolvenKit project's packed output, or refresh it, and turn it on;
10
+ // beside a mod of the same name: --follow makes that mod follow this project,
11
+ // --keep-both adds the project as another version of it, on in its place
9
12
  // edgedeck on <id> | off <id> turn a mod on or off
10
13
  // edgedeck up <id> | down <id> change the order (first wins conflicts)
14
+ // edgedeck rename <id> [name...] a new name in EDGEdeck, for all its versions (no name: the first one back)
11
15
  // edgedeck remove <id>
12
- // edgedeck deploy [--keep PATH...] [--restore PATH...]
16
+ // edgedeck deploy [--keep PATH...] [--restore PATH...] [--mod ID] --mod: that mod's changes only
13
17
  // edgedeck undo
14
18
  // edgedeck changes files changed in the game folder since the deploy
15
19
  // edgedeck pending what the next deploy adds, replaces, puts back or removes, and why
@@ -19,7 +23,7 @@
19
23
  // edgedeck mcp serve the same verbs as MCP tools over stdio
20
24
  //
21
25
  // Options: --library <folder> (default %USERPROFILE%\EDGEdeck), --game <folder> (default: the
22
- // library's remembered game, else the Steam folder), --json.
26
+ // library's remembered game, else the game found through Steam, GOG or Epic), --json.
23
27
 
24
28
  import { createRequire } from "node:module";
25
29
  import * as fs from "node:fs";
@@ -66,13 +70,14 @@ if (cmd === "mcp") {
66
70
  case "list": out(await v.list(s, !!flags.size)); break;
67
71
  case "mod": out(v.mod(s, need(rest[0], "a mod id"))); break;
68
72
  case "add": out(await v.add(s, need(rest[0], "a file or folder"), flags.name, flags.option)); break;
69
- case "install-project": out(v.installProject(s, need(rest[0], "a .cpmodproj file"))); break;
73
+ case "install-project": out(v.installProject(s, need(rest[0], "a .cpmodproj file"), flags.follow ? "follow" : flags["keep-both"] ? "version" : undefined)); break;
70
74
  case "on":
71
75
  case "off": out(v.turn(s, need(rest[0], "a mod id"), cmd === "on")); break;
72
76
  case "up":
73
77
  case "down": out(v.move(s, need(rest[0], "a mod id"), cmd)); break;
78
+ case "rename": out(v.rename(s, need(rest[0], "a mod id"), rest.slice(1).join(" "))); break;
74
79
  case "remove": out(v.remove(s, need(rest[0], "a mod id"))); break;
75
- case "deploy": out(await v.deploy(s, flags.keep ?? [], flags.restore ?? [])); break;
80
+ case "deploy": out(await v.deploy(s, flags.keep ?? [], flags.restore ?? [], typeof flags.mod === "string" ? flags.mod : undefined)); break;
76
81
  case "undo": out(v.undo(s)); break;
77
82
  case "changes": out(v.changes(s)); break;
78
83
  case "pending": out(v.pending(s)); break;