@g3nomaly/mods 0.1.0 → 0.1.2
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 +13 -12
- package/dist/cli/commands/add.d.ts +11 -2
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +7 -4
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/init.d.ts +15 -4
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +8 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/ls.d.ts +13 -3
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +6 -1
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/remove.d.ts +10 -1
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +11 -2
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/source.d.ts +37 -6
- package/dist/cli/commands/source.d.ts.map +1 -1
- package/dist/cli/commands/source.js +23 -4
- package/dist/cli/commands/source.js.map +1 -1
- package/dist/cli/commands/update.d.ts +10 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +5 -1
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +10 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/project.d.ts +34 -11
- package/dist/cli/project.d.ts.map +1 -1
- package/dist/cli/project.js +19 -5
- package/dist/cli/project.js.map +1 -1
- package/dist/cli/viewer.d.ts +17 -5
- package/dist/cli/viewer.d.ts.map +1 -1
- package/dist/cli/viewer.js +77 -18
- package/dist/cli/viewer.js.map +1 -1
- package/dist/registry/locate.d.ts +9 -4
- package/dist/registry/locate.d.ts.map +1 -1
- package/dist/registry/locate.js +4 -3
- package/dist/registry/locate.js.map +1 -1
- package/dist/registry/manifest.d.ts +2 -2
- package/dist/registry/manifest.js +2 -2
- package/dist/registry/readModDir.d.ts +2 -2
- package/dist/registry/readModDir.d.ts.map +1 -1
- package/dist/registry/readModDir.js +8 -3
- package/dist/registry/readModDir.js.map +1 -1
- package/dist/registry/readSource.d.ts +1 -1
- package/dist/registry/readSource.js +1 -1
- package/dist/registry/types.d.ts +15 -0
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js.map +1 -1
- package/dist/relay/index.d.ts +2 -0
- package/dist/relay/index.d.ts.map +1 -0
- package/dist/relay/index.js +9 -0
- package/dist/relay/index.js.map +1 -0
- package/dist/relay/lines.d.ts +25 -0
- package/dist/relay/lines.d.ts.map +1 -0
- package/dist/relay/lines.js +35 -0
- package/dist/relay/lines.js.map +1 -0
- package/dist/relay/protocol.d.ts +123 -0
- package/dist/relay/protocol.d.ts.map +1 -0
- package/dist/relay/protocol.js +70 -0
- package/dist/relay/protocol.js.map +1 -0
- package/dist/relay/relay.d.ts +16 -0
- package/dist/relay/relay.d.ts.map +1 -0
- package/dist/relay/relay.js +213 -0
- package/dist/relay/relay.js.map +1 -0
- package/dist/relay/sessions.d.ts +28 -0
- package/dist/relay/sessions.d.ts.map +1 -0
- package/dist/relay/sessions.js +86 -0
- package/dist/relay/sessions.js.map +1 -0
- package/dist/viewer/extension.d.ts +16 -6
- package/dist/viewer/extension.d.ts.map +1 -1
- package/dist/viewer/extension.js +10 -4
- package/dist/viewer/extension.js.map +1 -1
- package/dist/viewer/index.d.ts +6 -0
- package/dist/viewer/index.d.ts.map +1 -1
- package/dist/viewer/index.js +3 -0
- package/dist/viewer/index.js.map +1 -1
- package/dist/viewer/machine.d.ts +37 -0
- package/dist/viewer/machine.d.ts.map +1 -0
- package/dist/viewer/machine.js +55 -0
- package/dist/viewer/machine.js.map +1 -0
- package/dist/viewer/relay.d.ts +23 -0
- package/dist/viewer/relay.d.ts.map +1 -0
- package/dist/viewer/relay.js +51 -0
- package/dist/viewer/relay.js.map +1 -0
- package/dist/viewer/settings.d.ts +13 -7
- package/dist/viewer/settings.d.ts.map +1 -1
- package/dist/viewer/settings.js +10 -3
- package/dist/viewer/settings.js.map +1 -1
- package/dist/viewer/viewerExtension.d.ts +27 -0
- package/dist/viewer/viewerExtension.d.ts.map +1 -0
- package/dist/viewer/viewerExtension.js +48 -0
- package/dist/viewer/viewerExtension.js.map +1 -0
- package/dist/vscode/g3n-mods-viewer.vsix +0 -0
- package/package.json +9 -5
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
`g3n-mods` installs Claude Code mods into a project. A mod adds a pane, a status line, a slash command or a hook to Claude Code. The g3n mods from [`@g3nomaly/g3n-mods`](../g3n-mods) are available by default, and you can register other sources: a git repository, an npm package or a local folder.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The Claude Code extension for VS Code does not draw mods itself, so `init` installs a viewer: a button in the editor title bar opens a window that draws the mods of a running session. The mods also work in the terminal.
|
|
6
6
|
|
|
7
7
|
## Requirements
|
|
8
8
|
|
|
@@ -15,13 +15,13 @@ Mods are drawn by the Claude Code extension for VS Code. They also load in the t
|
|
|
15
15
|
Run these from the root of your project:
|
|
16
16
|
|
|
17
17
|
```sh
|
|
18
|
-
bunx @g3nomaly/mods init # creates .claude/mods.json and
|
|
18
|
+
bunx @g3nomaly/mods init # creates .claude/mods.json and installs the viewer
|
|
19
19
|
bunx @g3nomaly/mods ls # lists the mods you can install
|
|
20
20
|
bunx @g3nomaly/mods add context-bar # installs one mod
|
|
21
21
|
bunx @g3nomaly/mods add g3n-mods # or every mod from the g3n-mods source
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Then open the project in VS Code and trust the workspace when asked. Claude Code does not load mods from an untrusted workspace.
|
|
24
|
+
Then open the project in VS Code and trust the workspace when asked. Claude Code does not load mods from an untrusted workspace. Start a new Claude Code session, then click the **Mods** button in the editor title bar. Sessions that were already open before `init` do not show in the viewer until you start them again.
|
|
25
25
|
|
|
26
26
|
Mods are copied to `.claude/skills/<mod>/`, where Claude Code finds them, and recorded in `.claude/mods.json`. Commit both if your team should get the same mods.
|
|
27
27
|
|
|
@@ -44,16 +44,19 @@ To install for every project instead of one, add `--user` to any command. Mods t
|
|
|
44
44
|
|
|
45
45
|
Each pane opens with its command. For `context-bar`, `tool-timeline`, `agents-panel` and `custom-crab-agents`, running the command again closes the pane.
|
|
46
46
|
|
|
47
|
-
##
|
|
47
|
+
## The viewer
|
|
48
48
|
|
|
49
|
-
`init`
|
|
49
|
+
`init` sets up three things, once per machine:
|
|
50
50
|
|
|
51
|
-
- `claudeCode.
|
|
52
|
-
|
|
51
|
+
1. **The relay.** It builds `~/.claude/g3n-mods/bin/g3n-mods-relay` and sets it as `claudeCode.claudeProcessWrapper` in VS Code's machine settings. The Claude Code extension then starts every session through the relay. The relay passes everything through unchanged, and lets the viewer ask that session for its mods' drawings.
|
|
52
|
+
2. **The viewer extension.** It installs *g3n Mods Viewer* with `code --install-extension`. Its button sits next to Split Editor and opens a window of its own. To open it as a tab instead, turn off `g3nMods.viewer.openInNewWindow`.
|
|
53
|
+
3. **The chat view.** In `.vscode/settings.json` it sets `claudeCode.preferredLocation` to `panel` (pass `--location sidebar` to keep the side bar) and `claudeCode.useTerminal` to `false`.
|
|
53
54
|
|
|
54
|
-
The
|
|
55
|
+
The viewer shows every pane that is open in the session it is showing. Pick another session from the list at the top. Turn a mod's pane on or off with its command in the Claude Code chat, or close it with **×** in the viewer.
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
If another tool already set a process wrapper, `init` leaves it and says so. Run `init --replace-wrapper` to use the relay instead. If the `code` command is not found, `init` prints the path of the `.vsix` to install by hand.
|
|
58
|
+
|
|
59
|
+
`hide-personal-data` and `you-should-know` change how replies are drawn. The extension draws replies itself, so these two only work in the terminal.
|
|
57
60
|
|
|
58
61
|
## Keep mods up to date
|
|
59
62
|
|
|
@@ -65,7 +68,7 @@ bunx @g3nomaly/mods remove mini-game
|
|
|
65
68
|
bunx @g3nomaly/mods ls --installed
|
|
66
69
|
```
|
|
67
70
|
|
|
68
|
-
When you have changed an installed file, `update` asks whether to
|
|
71
|
+
When you have changed an installed file, `update` asks whether to restore the source version, fork the mod under a new name that updates leave alone, or skip it and ask again next time. Pass `-f` to restore without asking, for example in a script.
|
|
69
72
|
|
|
70
73
|
## Other sources
|
|
71
74
|
|
|
@@ -92,5 +95,3 @@ bun run mods -- ls # the CLI from source
|
|
|
92
95
|
bun run typecheck
|
|
93
96
|
bun run build
|
|
94
97
|
```
|
|
95
|
-
|
|
96
|
-
The reasons behind the design are in [`documentation/spec/mods/decisions.md`](../../documentation/spec/mods/decisions.md).
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import type { InstallOptions } from "@g3nomaly/core/cli";
|
|
2
2
|
import type { ProjectDeps, Scope } from "../project";
|
|
3
|
+
/**
|
|
4
|
+
* Options of `addCommand`, on top of the core install options.
|
|
5
|
+
*
|
|
6
|
+
* @property scope - Scope to install into; `project` when absent.
|
|
7
|
+
* @property source - Read only this registered source.
|
|
8
|
+
*/
|
|
3
9
|
export interface AddOptions extends InstallOptions {
|
|
4
10
|
scope?: Scope;
|
|
5
|
-
/** Read only this registered source */
|
|
6
11
|
source?: string;
|
|
7
12
|
}
|
|
8
13
|
/**
|
|
9
|
-
* Installs mods, or every mod of a source, from the registered sources into
|
|
14
|
+
* @brief Installs mods, or every mod of a source, from the registered sources into
|
|
10
15
|
* the scope's `.claude/skills/`, records them in `mods.json` and sets up the
|
|
11
16
|
* viewer. A name more than one source offers is picked as `<name>@<source>`;
|
|
12
17
|
* with no names the user picks from what the sources provide.
|
|
18
|
+
*
|
|
19
|
+
* @param names - Mods to install, e.g. `auth-guard` or `auth-guard@my-source`; empty to pick interactively.
|
|
20
|
+
* @param options - Scope, source filter and install options.
|
|
21
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
13
22
|
*/
|
|
14
23
|
export declare function addCommand(names: string[], options?: AddOptions, deps?: ProjectDeps): Promise<void>;
|
|
15
24
|
//# sourceMappingURL=add.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGrD,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,KAAK,CAAC,EAAG,KAAK,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGrD;;;;;GAKG;AACH,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,KAAK,CAAC,EAAG,KAAK,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,UAAe,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjH"}
|
package/dist/cli/commands/add.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
// packages/mods/src/cli/commands/add.ts
|
|
2
|
-
import { addFromSources
|
|
2
|
+
import { addFromSources } from "@g3nomaly/core/cli";
|
|
3
3
|
import { MOD_CONTEXT, installedMods, openModProject, openModRegistry } from "../project";
|
|
4
4
|
import { setUpViewer } from "../viewer";
|
|
5
5
|
/**
|
|
6
|
-
* Installs mods, or every mod of a source, from the registered sources into
|
|
6
|
+
* @brief Installs mods, or every mod of a source, from the registered sources into
|
|
7
7
|
* the scope's `.claude/skills/`, records them in `mods.json` and sets up the
|
|
8
8
|
* viewer. A name more than one source offers is picked as `<name>@<source>`;
|
|
9
9
|
* with no names the user picks from what the sources provide.
|
|
10
|
+
*
|
|
11
|
+
* @param names - Mods to install, e.g. `auth-guard` or `auth-guard@my-source`; empty to pick interactively.
|
|
12
|
+
* @param options - Scope, source filter and install options.
|
|
13
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
10
14
|
*/
|
|
11
15
|
export async function addCommand(names, options = {}, deps = {}) {
|
|
12
16
|
const project = openModProject(options.scope ?? "project", deps);
|
|
@@ -18,8 +22,7 @@ export async function addCommand(names, options = {}, deps = {}) {
|
|
|
18
22
|
registry.dispose();
|
|
19
23
|
}
|
|
20
24
|
if (Object.keys(installedMods(project)).length > 0) {
|
|
21
|
-
setUpViewer(project);
|
|
22
|
-
console.log(lineInfo(`New sessions load the mods; in a running one, run ${c.cmd("/reload-plugins")}.`));
|
|
25
|
+
await setUpViewer(project);
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
//# sourceMappingURL=add.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzF,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAaxC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAe,EAAE,OAAO,GAAe,EAAE,EAAE,IAAI,GAAgB,EAAE;IAChG,MAAM,OAAO,GAAI,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAChF,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import type { ViewerLocation } from "../../viewer";
|
|
2
2
|
import type { ProjectDeps, Scope } from "../project";
|
|
3
|
+
/**
|
|
4
|
+
* Options of `initCommand`.
|
|
5
|
+
*
|
|
6
|
+
* @property scope - Scope to create `mods.json` in; `project` when absent.
|
|
7
|
+
* @property location - Where Claude opens in VS Code; a location already set is kept when absent.
|
|
8
|
+
* @property replaceWrapper - Replace a process wrapper some other tool set.
|
|
9
|
+
*/
|
|
3
10
|
export interface InitOptions {
|
|
4
11
|
scope?: Scope;
|
|
5
|
-
/** Where Claude opens in VS Code; a location already set is kept when absent */
|
|
6
12
|
location?: ViewerLocation;
|
|
13
|
+
replaceWrapper?: boolean;
|
|
7
14
|
}
|
|
8
15
|
/**
|
|
9
|
-
* Creates the scope's `mods.json` when missing, sets up the viewer
|
|
10
|
-
* the
|
|
16
|
+
* @brief Creates the scope's `mods.json` when missing, sets up the viewer (the relay
|
|
17
|
+
* Claude Code sessions run through and the window that draws their mods), and
|
|
18
|
+
* lists the sources mods can be installed from.
|
|
19
|
+
*
|
|
20
|
+
* @param options - Scope, viewer location, and whether to replace another tool's wrapper.
|
|
21
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
11
22
|
*/
|
|
12
|
-
export declare function initCommand(options?: InitOptions, deps?: ProjectDeps): void
|
|
23
|
+
export declare function initCommand(options?: InitOptions, deps?: ProjectDeps): Promise<void>;
|
|
13
24
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIrD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIrD;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAW,KAAK,CAAC;IACvB,QAAQ,CAAC,EAAQ,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYlG"}
|
|
@@ -7,16 +7,20 @@ import { openModProject } from "../project";
|
|
|
7
7
|
import { setUpViewer } from "../viewer";
|
|
8
8
|
import { sourceLsCommand } from "./source";
|
|
9
9
|
/**
|
|
10
|
-
* Creates the scope's `mods.json` when missing, sets up the viewer
|
|
11
|
-
* the
|
|
10
|
+
* @brief Creates the scope's `mods.json` when missing, sets up the viewer (the relay
|
|
11
|
+
* Claude Code sessions run through and the window that draws their mods), and
|
|
12
|
+
* lists the sources mods can be installed from.
|
|
13
|
+
*
|
|
14
|
+
* @param options - Scope, viewer location, and whether to replace another tool's wrapper.
|
|
15
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
12
16
|
*/
|
|
13
|
-
export function initCommand(options = {}, deps = {}) {
|
|
17
|
+
export async function initCommand(options = {}, deps = {}) {
|
|
14
18
|
const project = openModProject(options.scope ?? "project", deps);
|
|
15
19
|
if (!fs.existsSync(project.target.manifest.filePath)) {
|
|
16
20
|
saveInstallManifest(project.target.manifest, ModMetaSchema);
|
|
17
21
|
console.log(lineSuccess(`Created ${c.file(project.target.manifest.filePath)}`));
|
|
18
22
|
}
|
|
19
|
-
setUpViewer(project, options.location);
|
|
23
|
+
await setUpViewer(project, { location: options.location, install: true, replaceWrapper: options.replaceWrapper });
|
|
20
24
|
console.log(c.header("\nSources"));
|
|
21
25
|
sourceLsCommand({ scope: project.scope }, deps);
|
|
22
26
|
console.log(`\nRun ${c.cmd("g3n-mods ls")} to see the mods, ${c.cmd("g3n-mods add <mod>")} to install one.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAe3C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAO,GAAgB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACjF,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IAEjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAElH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AAC/G,CAAC"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import type { LSOptions } from "@g3nomaly/core/cli";
|
|
2
2
|
import type { ProjectDeps, Scope } from "../project";
|
|
3
|
+
/**
|
|
4
|
+
* Options of `lsCommand`, on top of the core listing options.
|
|
5
|
+
*
|
|
6
|
+
* @property scope - Scope to list; `project` when absent.
|
|
7
|
+
* @property installed - List what `mods.json` records instead of what the sources provide.
|
|
8
|
+
* @property source - Only the mods of this registered source.
|
|
9
|
+
*/
|
|
3
10
|
export interface LsOptions extends LSOptions {
|
|
4
11
|
scope?: Scope;
|
|
5
|
-
/** List what `mods.json` records instead of what the sources provide */
|
|
6
12
|
installed?: boolean;
|
|
7
|
-
/** Only the mods of this registered source */
|
|
8
13
|
source?: string;
|
|
9
14
|
}
|
|
10
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* @brief Lists the mods the scope's sources provide, `●` marking installed ones, or with `installed` only what is installed.
|
|
17
|
+
*
|
|
18
|
+
* @param options - Scope, source filter and listing options.
|
|
19
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
20
|
+
*/
|
|
11
21
|
export declare function lsCommand(options?: LsOptions, deps?: ProjectDeps): Promise<void>;
|
|
12
22
|
//# sourceMappingURL=ls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,KAAK,CAAC,EAAM,KAAK,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,KAAK,CAAC,EAAM,KAAK,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAK,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,SAAc,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAe9F"}
|
package/dist/cli/commands/ls.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
// packages/mods/src/cli/commands/ls.ts
|
|
2
2
|
import { lsEntries, lsSourceRegistry } from "@g3nomaly/core/cli";
|
|
3
3
|
import { installedMods, openModProject, openModRegistry, modSources } from "../project";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* @brief Lists the mods the scope's sources provide, `●` marking installed ones, or with `installed` only what is installed.
|
|
6
|
+
*
|
|
7
|
+
* @param options - Scope, source filter and listing options.
|
|
8
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
9
|
+
*/
|
|
5
10
|
export async function lsCommand(options = {}, deps = {}) {
|
|
6
11
|
const project = openModProject(options.scope ?? "project", deps);
|
|
7
12
|
const installed = installedMods(project);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAgBxF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAO,GAAc,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC7E,MAAM,OAAO,GAAK,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import type { InstallOptions } from "@g3nomaly/core/cli";
|
|
2
2
|
import type { ProjectDeps, Scope } from "../project";
|
|
3
|
+
/**
|
|
4
|
+
* Options of `removeCommand`, on top of the core install options.
|
|
5
|
+
*
|
|
6
|
+
* @property scope - Scope to remove from; `project` when absent.
|
|
7
|
+
*/
|
|
3
8
|
export interface RemoveOptions extends InstallOptions {
|
|
4
9
|
scope?: Scope;
|
|
5
10
|
}
|
|
6
11
|
/**
|
|
7
|
-
* Removes installed mods, or every mod of a source, with the type
|
|
12
|
+
* @brief Removes installed mods, or every mod of a source, with the type
|
|
8
13
|
* declarations Claude Code wrote beside them, and drops them from
|
|
9
14
|
* `mods.json`. With no names the user picks from what is installed.
|
|
15
|
+
*
|
|
16
|
+
* @param names - Mods to remove; empty to pick from what is installed.
|
|
17
|
+
* @param options - Scope and install options.
|
|
18
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
10
19
|
*/
|
|
11
20
|
export declare function removeCommand(names: string[], options?: RemoveOptions, deps?: ProjectDeps): Promise<void>;
|
|
12
21
|
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,oBAAoB,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,oBAAoB,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAoBD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvH"}
|
|
@@ -6,7 +6,12 @@ import { createInstallerIO, pruneEmptyDirs } from "@g3nomaly/core/installer";
|
|
|
6
6
|
import { MOD_CONTEXT, openModProject } from "../project";
|
|
7
7
|
/** Folder Claude Code writes the mod API's declarations into when it loads a mod; never recorded in `mods.json`. */
|
|
8
8
|
const ENGINE_TYPES_DIR = path.join(".claude-plugin", "types");
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Deletes the declarations Claude Code wrote into removed mods, then their emptied folders.
|
|
11
|
+
*
|
|
12
|
+
* @param target - Install destination the mods were removed from.
|
|
13
|
+
* @param removed - Folder names of the removed mods.
|
|
14
|
+
*/
|
|
10
15
|
function removeEngineTypes(target, removed) {
|
|
11
16
|
const io = createInstallerIO();
|
|
12
17
|
for (const key of removed) {
|
|
@@ -17,9 +22,13 @@ function removeEngineTypes(target, removed) {
|
|
|
17
22
|
}
|
|
18
23
|
}
|
|
19
24
|
/**
|
|
20
|
-
* Removes installed mods, or every mod of a source, with the type
|
|
25
|
+
* @brief Removes installed mods, or every mod of a source, with the type
|
|
21
26
|
* declarations Claude Code wrote beside them, and drops them from
|
|
22
27
|
* `mods.json`. With no names the user picks from what is installed.
|
|
28
|
+
*
|
|
29
|
+
* @param names - Mods to remove; empty to pick from what is installed.
|
|
30
|
+
* @param options - Scope and install options.
|
|
31
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
23
32
|
*/
|
|
24
33
|
export async function removeCommand(names, options = {}, deps = {}) {
|
|
25
34
|
const project = openModProject(options.scope ?? "project", deps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAYzD,oHAAoH;AACpH,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAsB,EAAE,OAAiB;IAClE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACrE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe,EAAE,OAAO,GAAkB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACtG,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,iBAAiB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -1,29 +1,60 @@
|
|
|
1
1
|
import type { ProjectDeps, Scope } from "../project";
|
|
2
|
+
/**
|
|
3
|
+
* Options of `sourceAddCommand`.
|
|
4
|
+
*
|
|
5
|
+
* @property scope - Scope to register in; `project` when absent.
|
|
6
|
+
* @property name - Name to register under; derived from the spec when absent.
|
|
7
|
+
* @property ref - Branch or tag of a git source.
|
|
8
|
+
*/
|
|
2
9
|
export interface SourceAddOptions {
|
|
3
10
|
scope?: Scope;
|
|
4
|
-
/** Name to register under; derived from the spec when absent */
|
|
5
11
|
name?: string;
|
|
6
|
-
/** Branch or tag of a git source */
|
|
7
12
|
ref?: string;
|
|
8
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Options of `sourceLsCommand`.
|
|
16
|
+
*
|
|
17
|
+
* @property scope - Scope to list; `project` when absent.
|
|
18
|
+
* @property json - Output as JSON.
|
|
19
|
+
*/
|
|
9
20
|
export interface SourceLsOptions {
|
|
10
21
|
scope?: Scope;
|
|
11
22
|
json?: boolean;
|
|
12
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Options of `sourceRemoveCommand`.
|
|
26
|
+
*
|
|
27
|
+
* @property scope - Scope to unregister from; `project` when absent.
|
|
28
|
+
* @property force - Unregister even while installed mods come from the source.
|
|
29
|
+
*/
|
|
13
30
|
export interface SourceRemoveOptions {
|
|
14
31
|
scope?: Scope;
|
|
15
|
-
/** Unregister even while installed mods come from the source */
|
|
16
32
|
force?: boolean;
|
|
17
33
|
}
|
|
18
34
|
/**
|
|
19
|
-
* Registers a git repository, npm package or local folder as a mod source in
|
|
35
|
+
* @brief Registers a git repository, npm package or local folder as a mod source in
|
|
20
36
|
* the scope's `mods.json`, after checking it provides at least one mod. A
|
|
21
37
|
* local path is stored relative to the project root, and absolute for the
|
|
22
38
|
* user scope, which every project shares.
|
|
39
|
+
*
|
|
40
|
+
* @param input - Git URL, `owner/repo`, npm spec or local folder path.
|
|
41
|
+
* @param options - Scope, name and ref.
|
|
42
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
23
43
|
*/
|
|
24
44
|
export declare function sourceAddCommand(input: string, options?: SourceAddOptions, deps?: ProjectDeps): Promise<void>;
|
|
25
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* @brief Lists the built-in and registered sources of the scope, with how many installed mods came from each.
|
|
47
|
+
*
|
|
48
|
+
* @param options - Scope and output format.
|
|
49
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
50
|
+
*/
|
|
26
51
|
export declare function sourceLsCommand(options?: SourceLsOptions, deps?: ProjectDeps): void;
|
|
27
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* @brief Unregisters a source; refused for built-in sources and, unless forced, while installed mods came from it.
|
|
54
|
+
*
|
|
55
|
+
* @param name - Name of the source to unregister.
|
|
56
|
+
* @param options - Scope and force flag.
|
|
57
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
58
|
+
*/
|
|
28
59
|
export declare function sourceRemoveCommand(name: string, options?: SourceRemoveOptions, deps?: ProjectDeps): void;
|
|
29
60
|
//# sourceMappingURL=source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAc,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAc,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAG,MAAM,CAAC;IACf,GAAG,CAAC,EAAI,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAG,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAWD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3H;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,eAAoB,EAAE,IAAI,GAAE,WAAgB,GAAG,IAAI,CAG3F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,EAAE,IAAI,GAAE,WAAgB,GAAG,IAAI,CAGjH"}
|
|
@@ -3,26 +3,45 @@ import { addSourceEntries, lsSources, removeSourceEntries } from "@g3nomaly/core
|
|
|
3
3
|
import { readModSource } from "../../registry/readSource";
|
|
4
4
|
import { BUILTIN_SOURCES } from "../../sources/builtins";
|
|
5
5
|
import { MOD_CONTEXT, openModProject } from "../project";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* @brief Builds the context the core source commands use for mods in one scope.
|
|
8
|
+
*
|
|
9
|
+
* @param project - Scope the commands work on.
|
|
10
|
+
*/
|
|
7
11
|
function sourceContext(project) {
|
|
8
12
|
return { ...MOD_CONTEXT, builtins: BUILTIN_SOURCES, readSource: readModSource, projectRoot: project.projectRoot };
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
11
|
-
* Registers a git repository, npm package or local folder as a mod source in
|
|
15
|
+
* @brief Registers a git repository, npm package or local folder as a mod source in
|
|
12
16
|
* the scope's `mods.json`, after checking it provides at least one mod. A
|
|
13
17
|
* local path is stored relative to the project root, and absolute for the
|
|
14
18
|
* user scope, which every project shares.
|
|
19
|
+
*
|
|
20
|
+
* @param input - Git URL, `owner/repo`, npm spec or local folder path.
|
|
21
|
+
* @param options - Scope, name and ref.
|
|
22
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
15
23
|
*/
|
|
16
24
|
export async function sourceAddCommand(input, options = {}, deps = {}) {
|
|
17
25
|
const project = openModProject(options.scope ?? "project", deps);
|
|
18
26
|
await addSourceEntries([project.target], input, { name: options.name, ref: options.ref, absolutePaths: project.scope === "user" }, sourceContext(project));
|
|
19
27
|
}
|
|
20
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* @brief Lists the built-in and registered sources of the scope, with how many installed mods came from each.
|
|
30
|
+
*
|
|
31
|
+
* @param options - Scope and output format.
|
|
32
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
33
|
+
*/
|
|
21
34
|
export function sourceLsCommand(options = {}, deps = {}) {
|
|
22
35
|
const project = openModProject(options.scope ?? "project", deps);
|
|
23
36
|
lsSources([project.target], options, sourceContext(project));
|
|
24
37
|
}
|
|
25
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* @brief Unregisters a source; refused for built-in sources and, unless forced, while installed mods came from it.
|
|
40
|
+
*
|
|
41
|
+
* @param name - Name of the source to unregister.
|
|
42
|
+
* @param options - Scope and force flag.
|
|
43
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
44
|
+
*/
|
|
26
45
|
export function sourceRemoveCommand(name, options = {}, deps = {}) {
|
|
27
46
|
const project = openModProject(options.scope ?? "project", deps);
|
|
28
47
|
removeSourceEntries([project.target], name, options, sourceContext(project));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAsCzD;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAmB;IACxC,OAAO,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;AACpH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAAO,GAAqB,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC1G,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7J,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAO,GAAoB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACnF,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAO,GAAwB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACzG,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,mBAAmB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import type { InstallOptions } from "@g3nomaly/core/cli";
|
|
2
2
|
import type { ProjectDeps, Scope } from "../project";
|
|
3
|
+
/**
|
|
4
|
+
* Options of `updateCommand`, on top of the core install options.
|
|
5
|
+
*
|
|
6
|
+
* @property scope - Scope to update; `project` when absent.
|
|
7
|
+
*/
|
|
3
8
|
export interface UpdateOptions extends InstallOptions {
|
|
4
9
|
scope?: Scope;
|
|
5
10
|
}
|
|
6
11
|
/**
|
|
7
|
-
* Re-installs installed mods from the source each one was installed from,
|
|
12
|
+
* @brief Re-installs installed mods from the source each one was installed from,
|
|
8
13
|
* at that source's current revision; with no names, everything installed.
|
|
9
14
|
* Files the user changed since install are kept unless overwritten.
|
|
15
|
+
*
|
|
16
|
+
* @param names - Mods to update; empty for everything installed.
|
|
17
|
+
* @param options - Scope and install options.
|
|
18
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
10
19
|
*/
|
|
11
20
|
export declare function updateCommand(names: string[], options?: UpdateOptions, deps?: ProjectDeps): Promise<void>;
|
|
12
21
|
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvH"}
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
import { updateFromSources } from "@g3nomaly/core/cli";
|
|
3
3
|
import { MOD_CONTEXT, openModProject, openModRegistry } from "../project";
|
|
4
4
|
/**
|
|
5
|
-
* Re-installs installed mods from the source each one was installed from,
|
|
5
|
+
* @brief Re-installs installed mods from the source each one was installed from,
|
|
6
6
|
* at that source's current revision; with no names, everything installed.
|
|
7
7
|
* Files the user changed since install are kept unless overwritten.
|
|
8
|
+
*
|
|
9
|
+
* @param names - Mods to update; empty for everything installed.
|
|
10
|
+
* @param options - Scope and install options.
|
|
11
|
+
* @param deps - Overrides for the project lookup, used by tests.
|
|
8
12
|
*/
|
|
9
13
|
export async function updateCommand(names, options = {}, deps = {}) {
|
|
10
14
|
const project = openModProject(options.scope ?? "project", deps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAY1E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe,EAAE,OAAO,GAAkB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACtG,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,iBAAiB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACzG,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -9,7 +9,12 @@ import { lsCommand } from "./commands/ls";
|
|
|
9
9
|
import { removeCommand } from "./commands/remove";
|
|
10
10
|
import { sourceAddCommand, sourceLsCommand, sourceRemoveCommand } from "./commands/source";
|
|
11
11
|
import { updateCommand } from "./commands/update";
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* @brief Maps the `--user` flag to a scope, so every command can work on `~/.claude/`.
|
|
14
|
+
*
|
|
15
|
+
* @param opts - Parsed options holding the `--user` flag.
|
|
16
|
+
* @returns `user` when the flag is set, `project` otherwise.
|
|
17
|
+
*/
|
|
13
18
|
function scopeOf(opts) {
|
|
14
19
|
return opts.user === true ? "user" : "project";
|
|
15
20
|
}
|
|
@@ -18,12 +23,13 @@ const program = new Command()
|
|
|
18
23
|
.description("Install Claude Code mods from registered sources");
|
|
19
24
|
program
|
|
20
25
|
.command("init")
|
|
21
|
-
.description("Create mods.json
|
|
26
|
+
.description("Create mods.json, set up the relay and install the mods viewer for VS Code")
|
|
22
27
|
.option("-u, --user", "Work on ~/.claude/ for every project")
|
|
23
28
|
.option("--location <where>", "Where Claude opens in VS Code: panel (an editor tab) or sidebar")
|
|
24
|
-
.
|
|
29
|
+
.option("--replace-wrapper", "Replace a Claude Code process wrapper another tool set")
|
|
30
|
+
.action(async (opts) => {
|
|
25
31
|
const location = opts.location === undefined ? undefined : ViewerLocationSchema.parse(opts.location);
|
|
26
|
-
initCommand({ scope: scopeOf(opts), location });
|
|
32
|
+
await initCommand({ scope: scopeOf(opts), location, replaceWrapper: opts.replaceWrapper });
|
|
27
33
|
});
|
|
28
34
|
program
|
|
29
35
|
.command("ls")
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|