@g3nomaly/mods 0.1.5 → 0.1.6

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
@@ -49,7 +49,9 @@ Each pane opens with its command. For `context-bar`, `tool-timeline` and `agents
49
49
  2. **The viewer extension.** It installs *g3n Mods Viewer* with `code --install-extension`. Its button sits next to Split Editor and opens the viewer as an editor tab. To open it in a window of its own instead, turn on `g3nMods.viewer.openInNewWindow`.
50
50
  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`.
51
51
 
52
- 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.
52
+ 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. **⧉** opens a pane in an editor tab of its own. A mod can ask for that itself by giving the pane an id that starts with `tab-`, as `custom-crab-agents` does for a subagent's chat; closing that tab closes the pane.
53
+
54
+ `add` and `update` bring the relay and the viewer up to the installed `@g3nomaly/mods` version when they changed. After the viewer is updated, run **Developer: Reload Window** in VS Code.
53
55
 
54
56
  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.
55
57
 
@@ -12,7 +12,8 @@ export interface UpdateOptions extends InstallOptions {
12
12
  * @brief Re-installs installed mods from the source each one was installed from,
13
13
  * at that source's current revision; with no names, everything installed.
14
14
  * Files the user changed since install are kept unless overwritten. The
15
- * running sessions that load the scope then reload their plugins.
15
+ * relay and the viewer extension are brought up to this package's version,
16
+ * and the running sessions that load the scope then reload their plugins.
16
17
  *
17
18
  * @param names - Mods to update; empty for everything installed.
18
19
  * @param options - Scope and install options.
@@ -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;AAGrD;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvH"}
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;AAIrD;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvH"}
@@ -2,11 +2,13 @@
2
2
  import { updateFromSources } from "@g3nomaly/core/cli";
3
3
  import { MOD_CONTEXT, openModProject, openModRegistry } from "../project";
4
4
  import { reloadRunningSessions } from "../reload";
5
+ import { setUpViewer } from "../viewer";
5
6
  /**
6
7
  * @brief Re-installs installed mods from the source each one was installed from,
7
8
  * at that source's current revision; with no names, everything installed.
8
9
  * Files the user changed since install are kept unless overwritten. The
9
- * running sessions that load the scope then reload their plugins.
10
+ * relay and the viewer extension are brought up to this package's version,
11
+ * and the running sessions that load the scope then reload their plugins.
10
12
  *
11
13
  * @param names - Mods to update; empty for everything installed.
12
14
  * @param options - Scope and install options.
@@ -15,7 +17,9 @@ import { reloadRunningSessions } from "../reload";
15
17
  export async function updateCommand(names, options = {}, deps = {}) {
16
18
  const project = openModProject(options.scope ?? "project", deps);
17
19
  await updateFromSources([project.target], names, () => openModRegistry(project), options, MOD_CONTEXT);
18
- if (options.dryRun !== true)
19
- await reloadRunningSessions(project);
20
+ if (options.dryRun === true)
21
+ return;
22
+ await setUpViewer(project);
23
+ await reloadRunningSessions(project);
20
24
  }
21
25
  //# sourceMappingURL=update.js.map
@@ -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;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAWlD;;;;;;;;;GASG;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;IACvG,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;QAAE,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACpE,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;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAWxC;;;;;;;;;;GAUG;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;IACvG,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO;IACpC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../src/cli/viewer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,EAAQ,cAAc,CAAC;IAChC,gIAAgI;IAChI,OAAO,CAAC,EAAS,OAAO,CAAC;IACzB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAwDD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB7F"}
1
+ {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../src/cli/viewer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,EAAQ,cAAc,CAAC;IAChC,gIAAgI;IAChI,OAAO,CAAC,EAAS,OAAO,CAAC;IACzB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAgED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7F"}
@@ -36,12 +36,20 @@ async function setUpRelay(replaceWrapper) {
36
36
  break;
37
37
  }
38
38
  }
39
- /** Installs the viewer extension that draws the mods in an editor tab. */
40
- function setUpViewerExtension() {
41
- const viewer = installViewer();
39
+ /**
40
+ * Installs the viewer extension that draws the mods in an editor tab.
41
+ *
42
+ * @param onlyWhenChanged - Install only when this package's viewer differs from the one last installed, as `add` and `update` do.
43
+ */
44
+ function setUpViewerExtension(onlyWhenChanged = false) {
45
+ const viewer = installViewer(undefined, onlyWhenChanged);
42
46
  switch (viewer.kind) {
43
47
  case "installed":
44
- console.log(lineSuccess(`Installed the mods viewer. Click its button in the editor title bar, or run ${c.cmd("g3n Mods: Open Mods Viewer")}.`));
48
+ console.log(lineSuccess(onlyWhenChanged
49
+ ? `Updated the mods viewer. Run ${c.cmd("Developer: Reload Window")} in VS Code to use it.`
50
+ : `Installed the mods viewer. Click its button in the editor title bar, or run ${c.cmd("g3n Mods: Open Mods Viewer")}.`));
51
+ break;
52
+ case "current":
45
53
  break;
46
54
  case "no-cli":
47
55
  console.log(lineWarn(`VS Code's ${c.cmd("code")} command was not found. Install the viewer by hand: Extensions → … → Install from VSIX → ${c.file(viewer.vsix)}`));
@@ -83,9 +91,17 @@ export async function setUpViewer(project, setup = {}) {
83
91
  }
84
92
  const settings = machineSettingsPath();
85
93
  const isSetUp = fs.existsSync(relayBinaryPath()) && fs.existsSync(settings) && fs.readFileSync(settings, "utf8").includes(relayBinaryPath());
86
- if (!isSetUp)
94
+ if (!isSetUp) {
87
95
  console.log(lineInfo(`Run ${c.cmd("g3n-mods init")} once to set up the viewer the mods are drawn in.`));
88
- else
89
- console.log(lineInfo("Mods show in the viewer of every session that runs through the relay."));
96
+ return;
97
+ }
98
+ // Set up once already: bring the relay and the viewer up to this package's version.
99
+ const relay = await installRelay();
100
+ if (relay.kind === "built")
101
+ console.log(lineSuccess(`Rebuilt the relay ${c.dim(`(${c.file(relay.binary)})`)}; new sessions use it.`));
102
+ else if (relay.kind === "failed")
103
+ console.log(lineError(`Could not rebuild the relay at ${c.file(relay.binary)}: ${relay.reason}`));
104
+ setUpViewerExtension(true);
105
+ console.log(lineInfo("Mods show in the viewer of every session that runs through the relay."));
90
106
  }
91
107
  //# sourceMappingURL=viewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/cli/viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/cli/viewer.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export declare function viewerPackagePath(): string;
6
6
  export type ViewerInstallResult = {
7
7
  kind: "installed";
8
8
  cli: string;
9
+ } | {
10
+ kind: "current";
9
11
  } | {
10
12
  kind: "no-package";
11
13
  vsix: string;
@@ -19,9 +21,12 @@ export type ViewerInstallResult = {
19
21
  };
20
22
  /**
21
23
  * Installs the viewer extension into VS Code with `code --install-extension`,
22
- * replacing an older copy.
24
+ * replacing an older copy. A stamp file holds the hash of the package last
25
+ * installed, so a newer `@g3nomaly/mods` brings its viewer along on `add` and
26
+ * `update`, not only on `init`.
23
27
  *
24
28
  * @param home - Home directory to look for a VS Code server under; the current user's by default
29
+ * @param onlyWhenChanged - Skip the install when this package was installed already and the extension is still there
25
30
  */
26
- export declare function installViewer(home?: string): ViewerInstallResult;
31
+ export declare function installViewer(home?: string, onlyWhenChanged?: boolean): ViewerInstallResult;
27
32
  //# sourceMappingURL=viewerExtension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewerExtension.d.ts","sourceRoot":"","sources":["../../src/viewer/viewerExtension.ts"],"names":[],"mappings":"AAMA,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAE9D,wFAAwF;AACxF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,gCAAgC;AAChC,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAmBrD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAqB,GAAG,mBAAmB,CAQ9E"}
1
+ {"version":3,"file":"viewerExtension.d.ts","sourceRoot":"","sources":["../../src/viewer/viewerExtension.ts"],"names":[],"mappings":"AAOA,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAE9D,wFAAwF;AACxF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAkBD,gCAAgC;AAChC,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAmBrD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAqB,EAAE,eAAe,UAAQ,GAAG,mBAAmB,CAcvG"}
@@ -1,4 +1,5 @@
1
1
  // packages/mods/src/viewer/viewerExtension.ts
2
+ import { createHash } from "node:crypto";
2
3
  import fs from "node:fs";
3
4
  import os from "node:os";
4
5
  import path from "node:path";
@@ -9,6 +10,19 @@ export const VIEWER_EXTENSION_ID = "g3nomaly.g3n-mods-viewer";
9
10
  export function viewerPackagePath() {
10
11
  return path.join(findPackageRoot(import.meta.dir), "dist", "vscode", "g3n-mods-viewer.vsix");
11
12
  }
13
+ /** Extension folders of the VS Code family, relative to the home directory: local, WSL/SSH server, Insiders, Cursor. */
14
+ const EXTENSION_ROOTS = [".vscode/extensions", ".vscode-server/extensions", ".vscode-insiders/extensions", ".cursor/extensions"];
15
+ /** Where the hash of the last viewer package installed is kept, beside the relay. */
16
+ function stampPath(home) {
17
+ return path.join(home, ".claude", "g3n-mods", "viewer.vsix.sha256");
18
+ }
19
+ /** Whether any editor of the VS Code family has the viewer extension installed. */
20
+ function isInstalled(home) {
21
+ return EXTENSION_ROOTS.some((root) => {
22
+ const dir = path.join(home, root);
23
+ return fs.existsSync(dir) && fs.readdirSync(dir).some((name) => name.startsWith(`${VIEWER_EXTENSION_ID}-`));
24
+ });
25
+ }
12
26
  /** VS Code's `code` command: on the PATH, else the one a VS Code server ships for its own terminals. */
13
27
  function findCodeCli(home) {
14
28
  for (const dir of (process.env.PATH ?? "").split(path.delimiter)) {
@@ -29,20 +43,29 @@ function findCodeCli(home) {
29
43
  }
30
44
  /**
31
45
  * Installs the viewer extension into VS Code with `code --install-extension`,
32
- * replacing an older copy.
46
+ * replacing an older copy. A stamp file holds the hash of the package last
47
+ * installed, so a newer `@g3nomaly/mods` brings its viewer along on `add` and
48
+ * `update`, not only on `init`.
33
49
  *
34
50
  * @param home - Home directory to look for a VS Code server under; the current user's by default
51
+ * @param onlyWhenChanged - Skip the install when this package was installed already and the extension is still there
35
52
  */
36
- export function installViewer(home = os.homedir()) {
53
+ export function installViewer(home = os.homedir(), onlyWhenChanged = false) {
37
54
  const vsix = viewerPackagePath();
38
55
  if (!fs.existsSync(vsix))
39
56
  return { kind: "no-package", vsix };
57
+ const hash = createHash("sha256").update(fs.readFileSync(vsix)).digest("hex");
58
+ const stamp = stampPath(home);
59
+ if (onlyWhenChanged && isInstalled(home) && fs.existsSync(stamp) && fs.readFileSync(stamp, "utf8") === hash)
60
+ return { kind: "current" };
40
61
  const cli = findCodeCli(home);
41
62
  if (cli === null)
42
63
  return { kind: "no-cli", vsix };
43
64
  const run = Bun.spawnSync([cli, "--install-extension", vsix, "--force"], { stdout: "pipe", stderr: "pipe" });
44
65
  if (run.exitCode !== 0)
45
66
  return { kind: "failed", vsix, reason: (run.stderr.toString() || run.stdout.toString()).trim() };
67
+ fs.mkdirSync(path.dirname(stamp), { recursive: true });
68
+ fs.writeFileSync(stamp, hash);
46
69
  return { kind: "installed", cli };
47
70
  }
48
71
  //# sourceMappingURL=viewerExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewerExtension.js","sourceRoot":"","sources":["../../src/viewer/viewerExtension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewerExtension.js","sourceRoot":"","sources":["../../src/viewer/viewerExtension.ts"],"names":[],"mappings":"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"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@g3nomaly/mods",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Installer for Claude Code mods: registers mod sources and installs, updates and removes mods from them.",
5
5
  "type": "module",
6
6
  "bin": {