@shardworks/nexus-core 0.1.4 → 0.1.5

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.
@@ -22,6 +22,8 @@ export interface TrainingEntry {
22
22
  }
23
23
  /** The guild's central configuration file shape (`guild.json`). */
24
24
  export interface GuildConfig {
25
+ /** Guild name — used as the guildhall npm package name. */
26
+ name: string;
25
27
  /** Installed Nexus framework version. */
26
28
  nexus: string;
27
29
  /** Default model for anima sessions. */
@@ -41,7 +43,7 @@ export interface GuildConfig {
41
43
  * Create the default guild.json content for a new guild.
42
44
  * All registries (implements, engines, curricula, temperaments) start empty.
43
45
  */
44
- export declare function createInitialGuildConfig(nexusVersion: string, model: string): GuildConfig;
46
+ export declare function createInitialGuildConfig(name: string, nexusVersion: string, model: string): GuildConfig;
45
47
  /** Resolve the path to guild.json in the standing worktree. */
46
48
  export declare function guildConfigPath(home: string): string;
47
49
  /** Read and parse guild.json from the standing worktree. */
@@ -1 +1 @@
1
- {"version":3,"file":"guild-config.d.ts","sourceRoot":"","sources":["../src/guild-config.ts"],"names":[],"mappings":"AAIA,sEAAsE;AACtE,MAAM,WAAW,SAAS;IACxB,oFAAoF;IACpF,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,+GAA+G;IAC/G,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,qGAAqG;IACrG,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAUzF;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAGzD;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAGxE"}
1
+ {"version":3,"file":"guild-config.d.ts","sourceRoot":"","sources":["../src/guild-config.ts"],"names":[],"mappings":"AAIA,sEAAsE;AACtE,MAAM,WAAW,SAAS;IACxB,oFAAoF;IACpF,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,+GAA+G;IAC/G,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,qGAAqG;IACrG,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAWvG;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAGzD;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAGxE"}
@@ -5,8 +5,9 @@ import { guildhallWorktreePath } from "./nexus-home.js";
5
5
  * Create the default guild.json content for a new guild.
6
6
  * All registries (implements, engines, curricula, temperaments) start empty.
7
7
  */
8
- export function createInitialGuildConfig(nexusVersion, model) {
8
+ export function createInitialGuildConfig(name, nexusVersion, model) {
9
9
  return {
10
+ name,
10
11
  nexus: nexusVersion,
11
12
  model,
12
13
  workshops: [],
@@ -1 +1 @@
1
- {"version":3,"file":"guild-config.js","sourceRoot":"","sources":["../src/guild-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA4CxD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,YAAoB,EAAE,KAAa;IAC1E,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,KAAK;QACL,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAgB,CAAC;AACzE,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAmB;IAChE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"guild-config.js","sourceRoot":"","sources":["../src/guild-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA8CxD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,YAAoB,EAAE,KAAa;IACxF,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,YAAY;QACnB,KAAK;QACL,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAgB,CAAC;AACzE,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAmB;IAChE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACvE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export declare const VERSION = "0.1.0";
1
+ export declare const VERSION: string;
2
2
  export { type ImplementContext, type ImplementDefinition, implement, } from './implement.ts';
3
3
  export { createLedger, INITIAL_SCHEMA } from './ledger.ts';
4
4
  export { type GuildConfig, type ToolEntry, type TrainingEntry, createInitialGuildConfig, guildConfigPath, readGuildConfig, writeGuildConfig, } from './guild-config.ts';
5
5
  export { resolveNexusHome, guildhallBarePath, guildhallWorktreePath, ledgerPath, worktreesPath, } from './nexus-home.ts';
6
- export { type InstallToolOptions, type InstallResult, installTool, } from './install-tool.ts';
6
+ export { type InstallToolOptions, type InstallResult, type SourceKind, classifySource, installTool, } from './install-tool.ts';
7
7
  export { type RemoveToolOptions, type RemoveResult, removeTool, } from './remove-tool.ts';
8
8
  export { type DispatchOptions, type DispatchResult, dispatch, } from './dispatch.ts';
9
9
  export { type PublishOptions, type PublishResult, publish, } from './publish.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,WAAW,EAChB,eAAe,EACf,YAAY,EACZ,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,EAAE,MAAqB,CAAC;AAE5C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,cAAc,EACd,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,WAAW,EAChB,eAAe,EACf,YAAY,EACZ,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,13 @@
1
1
  // @shardworks/nexus-core — shared infrastructure for the guild system
2
- export const VERSION = '0.1.0';
2
+ import { createRequire } from 'node:module';
3
+ const _require = createRequire(import.meta.url);
4
+ const _pkg = _require('../package.json');
5
+ export const VERSION = _pkg.version;
3
6
  export { implement, } from "./implement.js";
4
7
  export { createLedger, INITIAL_SCHEMA } from "./ledger.js";
5
8
  export { createInitialGuildConfig, guildConfigPath, readGuildConfig, writeGuildConfig, } from "./guild-config.js";
6
9
  export { resolveNexusHome, guildhallBarePath, guildhallWorktreePath, ledgerPath, worktreesPath, } from "./nexus-home.js";
7
- export { installTool, } from "./install-tool.js";
10
+ export { classifySource, installTool, } from "./install-tool.js";
8
11
  export { removeTool, } from "./remove-tool.js";
9
12
  export { dispatch, } from "./dispatch.js";
10
13
  export { publish, } from "./publish.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,OAAO,EAGL,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAIL,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,eAAe,EACf,YAAY,EACZ,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC;AAE5C,OAAO,EAGL,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAIL,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,cAAc,EACd,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,eAAe,EACf,YAAY,EACZ,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -13,8 +13,9 @@
13
13
  * applyMigrations(home) // create ledger via migration engine
14
14
  *
15
15
  * @param home - Absolute path for the new NEXUS_HOME directory.
16
+ * @param name - Guild name (used in guild.json and as the guildhall npm package name).
16
17
  * @param model - Default model identifier for anima sessions.
17
18
  * @throws If `home` exists and is not empty.
18
19
  */
19
- export declare function initGuild(home: string, model: string): void;
20
+ export declare function initGuild(home: string, name: string, model: string): void;
20
21
  //# sourceMappingURL=init-guild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init-guild.d.ts","sourceRoot":"","sources":["../src/init-guild.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CA8D3D"}
1
+ {"version":3,"file":"init-guild.d.ts","sourceRoot":"","sources":["../src/init-guild.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAsEzE"}
@@ -23,10 +23,11 @@ function git(args, cwd) {
23
23
  * applyMigrations(home) // create ledger via migration engine
24
24
  *
25
25
  * @param home - Absolute path for the new NEXUS_HOME directory.
26
+ * @param name - Guild name (used in guild.json and as the guildhall npm package name).
26
27
  * @param model - Default model identifier for anima sessions.
27
28
  * @throws If `home` exists and is not empty.
28
29
  */
29
- export function initGuild(home, model) {
30
+ export function initGuild(home, name, model) {
30
31
  // Validate target
31
32
  if (fs.existsSync(home)) {
32
33
  const entries = fs.readdirSync(home);
@@ -68,8 +69,12 @@ export function initGuild(home, model) {
68
69
  // Write codex placeholder
69
70
  fs.writeFileSync(path.join(ghWorktree, 'codex/all.md'), '');
70
71
  // Write guild.json — empty registries, tools will be installed via bootstrapBaseTools
71
- const config = createInitialGuildConfig(VERSION, model);
72
+ const config = createInitialGuildConfig(name, VERSION, model);
72
73
  fs.writeFileSync(path.join(ghWorktree, 'guild.json'), JSON.stringify(config, null, 2) + '\n');
74
+ // Make the guildhall an npm package so guild tools can be installed as
75
+ // npm dependencies with proper dependency resolution.
76
+ fs.writeFileSync(path.join(ghWorktree, 'package.json'), JSON.stringify({ name: `guild-${name}`, private: true, version: '0.0.0' }, null, 2) + '\n');
77
+ fs.writeFileSync(path.join(ghWorktree, '.gitignore'), 'node_modules/\n');
73
78
  // Initial commit
74
79
  git(['add', '-A'], ghWorktree);
75
80
  git(['commit', '-m', 'Initialize guild'], ghWorktree);
@@ -1 +1 @@
1
- {"version":3,"file":"init-guild.js","sourceRoot":"","sources":["../src/init-guild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-guild.js","sourceRoot":"","sources":["../src/init-guild.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,25 @@
1
+ /**
2
+ * How the source was classified for installation.
3
+ *
4
+ * - `npm-local` — local directory with package.json; npm install (copy) or symlink
5
+ * - `npm-registry` — npm package specifier (e.g. `foo@1.0`, `@scope/tool`)
6
+ * - `npm-tarball` — local .tgz/.tar.gz file
7
+ * - `bare-local` — local directory without package.json; plain file copy
8
+ */
9
+ export type SourceKind = 'npm-local' | 'npm-registry' | 'npm-tarball' | 'bare-local';
1
10
  export interface InstallToolOptions {
2
11
  /** Absolute path to the NEXUS_HOME directory. */
3
12
  home: string;
4
- /** Source — currently only local directory paths. */
13
+ /**
14
+ * Source — local directory path, npm package specifier, or tarball path.
15
+ *
16
+ * - Local directory with `package.json`: installed via npm (copy) or symlink (`link: true`)
17
+ * - Local directory without `package.json`: copied as bare files (no dep resolution)
18
+ * - `.tgz` / `.tar.gz` file: installed via npm
19
+ * - Anything else: treated as an npm registry specifier
20
+ */
5
21
  source: string;
6
- /** Override the tool name (defaults to source directory name). */
22
+ /** Override the tool name (defaults to package name or directory basename). */
7
23
  name?: string;
8
24
  /** Override the version slot. */
9
25
  slot?: string;
@@ -17,18 +33,36 @@ export interface InstallToolOptions {
17
33
  framework?: boolean;
18
34
  /** Whether to create a git commit after installing. Defaults to true. */
19
35
  commit?: boolean;
36
+ /**
37
+ * Symlink a local directory instead of copying (dev mode).
38
+ * Only valid for local directories with `package.json`.
39
+ * Changes to the source are reflected immediately at runtime.
40
+ */
41
+ link?: boolean;
20
42
  }
21
43
  export interface InstallResult {
22
44
  category: 'implements' | 'engines' | 'curricula' | 'temperaments';
23
45
  name: string;
24
46
  slot: string;
25
47
  installedTo: string;
48
+ sourceKind: SourceKind;
26
49
  }
50
+ /**
51
+ * Classify a source string to determine the installation method.
52
+ */
53
+ export declare function classifySource(source: string): SourceKind;
27
54
  /**
28
55
  * Install a tool (implement, engine, curriculum, or temperament) into the guild.
29
56
  *
30
- * Currently supports local directory sources only. Detects the descriptor type,
31
- * copies the directory to the correct slot, and registers in guild.json.
57
+ * Supports multiple source types:
58
+ * - Local directory with package.json: installed via npm (or symlinked with `link: true`)
59
+ * - Local directory without package.json: copied as bare files
60
+ * - npm registry specifier: installed via npm
61
+ * - Tarball (.tgz): installed via npm
62
+ *
63
+ * For npm-installed tools, the runtime code lives in the guildhall's node_modules.
64
+ * Metadata (descriptor + instructions) is copied to the guildhall slot for git tracking.
65
+ * The descriptor's `package` field is set so the manifest engine resolves by package name.
32
66
  */
33
67
  export declare function installTool(opts: InstallToolOptions): InstallResult;
34
68
  //# sourceMappingURL=install-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-tool.d.ts","sourceRoot":"","sources":["../src/install-tool.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAkDD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAmFnE"}
1
+ {"version":3,"file":"install-tool.d.ts","sourceRoot":"","sources":["../src/install-tool.ts"],"names":[],"mappings":"AAiCA;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAErF,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CACxB;AAiFD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAwBzD;AA2HD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAqJnE"}
@@ -10,14 +10,14 @@ const DESCRIPTOR_FILES = [
10
10
  'nexus-curriculum.json',
11
11
  'nexus-temperament.json',
12
12
  ];
13
- /** Map descriptor file artifact category in guild.json */
13
+ /** Map descriptor file -> artifact category in guild.json */
14
14
  const CATEGORY_MAP = {
15
15
  'nexus-implement.json': 'implements',
16
16
  'nexus-engine.json': 'engines',
17
17
  'nexus-curriculum.json': 'curricula',
18
18
  'nexus-temperament.json': 'temperaments',
19
19
  };
20
- /** Map category on-disk parent directory (relative to guildhall worktree). */
20
+ /** Map category -> on-disk parent directory (relative to guildhall worktree). */
21
21
  const DIR_MAP = {
22
22
  implements: 'implements',
23
23
  engines: 'engines',
@@ -27,6 +27,9 @@ const DIR_MAP = {
27
27
  function git(args, cwd) {
28
28
  execFileSync('git', args, { cwd, stdio: 'pipe' });
29
29
  }
30
+ function npm(args, cwd) {
31
+ return execFileSync('npm', args, { cwd, stdio: 'pipe', encoding: 'utf-8' });
32
+ }
30
33
  /** Detect the descriptor file in a directory. Returns the filename or throws. */
31
34
  function findDescriptor(dir) {
32
35
  for (const f of DESCRIPTOR_FILES) {
@@ -35,10 +38,14 @@ function findDescriptor(dir) {
35
38
  }
36
39
  throw new Error(`No descriptor found in ${dir}. Expected one of: ${DESCRIPTOR_FILES.join(', ')}`);
37
40
  }
38
- /** Read a JSON file, returning an empty object on missing fields. */
41
+ /** Read a JSON file. */
39
42
  function readJson(filePath) {
40
43
  return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
41
44
  }
45
+ /** Write a JSON file. */
46
+ function writeJson(filePath, data) {
47
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n');
48
+ }
42
49
  /** Directories to skip when copying tool sources. */
43
50
  const SKIP_DIRS = new Set(['node_modules', '.git']);
44
51
  /** Recursively copy a directory, skipping node_modules and .git. */
@@ -69,29 +76,214 @@ function copyDir(src, dest) {
69
76
  }
70
77
  }
71
78
  }
79
+ /**
80
+ * Copy only the metadata files (descriptor + instructions) from a source
81
+ * directory into the guildhall slot. This is used for npm-installed tools
82
+ * where the runtime code lives in node_modules but the metadata needs to
83
+ * be git-tracked in the guildhall.
84
+ */
85
+ function copyMetadata(sourceDir, targetDir, descriptorFile, descriptor) {
86
+ fs.mkdirSync(targetDir, { recursive: true });
87
+ // Always copy the descriptor
88
+ fs.copyFileSync(path.join(sourceDir, descriptorFile), path.join(targetDir, descriptorFile));
89
+ // Copy instructions if referenced
90
+ const instructionsFile = descriptor['instructions'];
91
+ if (instructionsFile) {
92
+ const instrPath = path.join(sourceDir, instructionsFile);
93
+ if (fs.existsSync(instrPath)) {
94
+ fs.copyFileSync(instrPath, path.join(targetDir, instructionsFile));
95
+ }
96
+ }
97
+ }
98
+ /**
99
+ * Classify a source string to determine the installation method.
100
+ */
101
+ export function classifySource(source) {
102
+ // Tarball detection
103
+ if (source.endsWith('.tgz') || source.endsWith('.tar.gz')) {
104
+ return 'npm-tarball';
105
+ }
106
+ // Local path detection: starts with /, ./, ../, or is an absolute path on the system
107
+ const isPath = source.startsWith('/') || source.startsWith('./') || source.startsWith('../');
108
+ if (isPath || path.isAbsolute(source)) {
109
+ const resolved = path.resolve(source);
110
+ if (fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()) {
111
+ // Check for package.json to distinguish npm-local from bare-local
112
+ if (fs.existsSync(path.join(resolved, 'package.json'))) {
113
+ return 'npm-local';
114
+ }
115
+ return 'bare-local';
116
+ }
117
+ // Path-like but not a directory — could be a nonexistent path (error later)
118
+ // or a relative tarball handled above. Treat as bare-local for error messaging.
119
+ return 'bare-local';
120
+ }
121
+ // Everything else is an npm registry specifier
122
+ return 'npm-registry';
123
+ }
124
+ /**
125
+ * Resolve the installed package directory in node_modules after npm install.
126
+ * Reads the package name from the source (or node_modules) and returns the path.
127
+ */
128
+ function resolveInstalledPackage(worktree, packageName) {
129
+ const pkgDir = path.join(worktree, 'node_modules', packageName);
130
+ if (!fs.existsSync(pkgDir)) {
131
+ // Handle scoped packages — npm might nest them
132
+ throw new Error(`Could not find installed package at ${pkgDir}`);
133
+ }
134
+ return pkgDir;
135
+ }
136
+ /**
137
+ * Read the package name from a package.json file.
138
+ */
139
+ function readPackageName(dir) {
140
+ const pkgPath = path.join(dir, 'package.json');
141
+ if (!fs.existsSync(pkgPath)) {
142
+ throw new Error(`No package.json found in ${dir}`);
143
+ }
144
+ const pkg = readJson(pkgPath);
145
+ const name = pkg['name'];
146
+ if (!name) {
147
+ throw new Error(`No "name" field in ${pkgPath}`);
148
+ }
149
+ return name;
150
+ }
151
+ // ── Install paths ───────────────────────────────────────────────────────
152
+ /**
153
+ * Install via npm (covers local dirs with package.json, registry specifiers, and tarballs).
154
+ * Runs `npm install --save <source>` in the guildhall worktree, then copies
155
+ * metadata (descriptor + instructions) to the guildhall slot for git tracking.
156
+ */
157
+ function installViaNpm(worktree, source, sourceKind) {
158
+ // For local dirs, resolve to absolute path so npm gets a valid reference
159
+ const npmSource = sourceKind === 'npm-local'
160
+ ? path.resolve(source)
161
+ : source;
162
+ npm(['install', '--save', npmSource], worktree);
163
+ // Determine the package name
164
+ let packageName;
165
+ if (sourceKind === 'npm-local') {
166
+ packageName = readPackageName(path.resolve(source));
167
+ }
168
+ else if (sourceKind === 'npm-tarball') {
169
+ // For tarballs, read the name from the installed package
170
+ // npm outputs the package name during install, but parsing the
171
+ // guildhall package.json dependencies is more reliable
172
+ const guildhallPkg = readJson(path.join(worktree, 'package.json'));
173
+ const deps = guildhallPkg['dependencies'] ?? {};
174
+ // The most recently added dependency is our package
175
+ const depNames = Object.keys(deps);
176
+ packageName = depNames[depNames.length - 1];
177
+ if (!packageName) {
178
+ throw new Error('Could not determine package name after npm install');
179
+ }
180
+ }
181
+ else {
182
+ // Registry specifier — strip version suffix to get the package name
183
+ // e.g. "foo@1.0" -> "foo", "@scope/foo@1.0" -> "@scope/foo"
184
+ packageName = source.replace(/@[^/]*$/, '');
185
+ // Handle bare names without version
186
+ if (packageName === source && source.includes('@') && !source.startsWith('@')) {
187
+ packageName = source.split('@')[0];
188
+ }
189
+ // Scoped packages: @scope/name@version
190
+ if (source.startsWith('@') && source.lastIndexOf('@') > 0) {
191
+ packageName = source.substring(0, source.lastIndexOf('@'));
192
+ }
193
+ }
194
+ const packageDir = resolveInstalledPackage(worktree, packageName);
195
+ const descriptorFile = findDescriptor(packageDir);
196
+ const descriptor = readJson(path.join(packageDir, descriptorFile));
197
+ const pkg = readJson(path.join(packageDir, 'package.json'));
198
+ return { packageName, packageDir, descriptorFile, descriptor, pkg };
199
+ }
200
+ /**
201
+ * Install via symlink (dev mode for local dirs with package.json).
202
+ * Creates a symlink in guildhall/node_modules pointing to the source directory.
203
+ */
204
+ function installViaLink(worktree, source) {
205
+ const sourceDir = path.resolve(source);
206
+ const packageName = readPackageName(sourceDir);
207
+ // Ensure node_modules exists
208
+ const nodeModulesDir = path.join(worktree, 'node_modules');
209
+ fs.mkdirSync(nodeModulesDir, { recursive: true });
210
+ // Handle scoped packages: @scope/name needs @scope/ directory
211
+ const linkTarget = path.join(nodeModulesDir, packageName);
212
+ fs.mkdirSync(path.dirname(linkTarget), { recursive: true });
213
+ // Remove existing link/directory if present
214
+ if (fs.existsSync(linkTarget)) {
215
+ fs.rmSync(linkTarget, { recursive: true });
216
+ }
217
+ fs.symlinkSync(sourceDir, linkTarget, 'dir');
218
+ const descriptorFile = findDescriptor(sourceDir);
219
+ const descriptor = readJson(path.join(sourceDir, descriptorFile));
220
+ const pkg = readJson(path.join(sourceDir, 'package.json'));
221
+ return { packageName, packageDir: sourceDir, descriptorFile, descriptor, pkg };
222
+ }
223
+ // ── Main ────────────────────────────────────────────────────────────────
72
224
  /**
73
225
  * Install a tool (implement, engine, curriculum, or temperament) into the guild.
74
226
  *
75
- * Currently supports local directory sources only. Detects the descriptor type,
76
- * copies the directory to the correct slot, and registers in guild.json.
227
+ * Supports multiple source types:
228
+ * - Local directory with package.json: installed via npm (or symlinked with `link: true`)
229
+ * - Local directory without package.json: copied as bare files
230
+ * - npm registry specifier: installed via npm
231
+ * - Tarball (.tgz): installed via npm
232
+ *
233
+ * For npm-installed tools, the runtime code lives in the guildhall's node_modules.
234
+ * Metadata (descriptor + instructions) is copied to the guildhall slot for git tracking.
235
+ * The descriptor's `package` field is set so the manifest engine resolves by package name.
77
236
  */
78
237
  export function installTool(opts) {
79
- const { home, source, roles, framework = false, commit = true } = opts;
238
+ const { home, source, roles, framework = false, commit = true, link = false } = opts;
80
239
  const worktree = guildhallWorktreePath(home);
81
- // Resolve source to absolute path
82
- const sourceDir = path.resolve(source);
83
- if (!fs.existsSync(sourceDir) || !fs.statSync(sourceDir).isDirectory()) {
84
- throw new Error(`Source is not a directory: ${sourceDir}`);
240
+ const sourceKind = classifySource(source);
241
+ // Validate link option
242
+ if (link && sourceKind !== 'npm-local') {
243
+ throw new Error('The --link option is only valid for local directories with a package.json.');
244
+ }
245
+ let descriptorFile;
246
+ let descriptor;
247
+ let pkg;
248
+ let packageName = null;
249
+ let isNpmInstalled = false;
250
+ if (sourceKind === 'bare-local' || framework) {
251
+ // ── Bare local or framework: copy files directly ──────────────────
252
+ // Framework tools always use copyDir — they resolve by package name
253
+ // at runtime (via the `package` field in their descriptors) and don't
254
+ // need npm installation in the guildhall.
255
+ const sourceDir = path.resolve(source);
256
+ if (!fs.existsSync(sourceDir) || !fs.statSync(sourceDir).isDirectory()) {
257
+ throw new Error(`Source is not a directory: ${sourceDir}`);
258
+ }
259
+ descriptorFile = findDescriptor(sourceDir);
260
+ descriptor = readJson(path.join(sourceDir, descriptorFile));
261
+ const pkgJsonPath = path.join(sourceDir, 'package.json');
262
+ pkg = fs.existsSync(pkgJsonPath) ? readJson(pkgJsonPath) : {};
263
+ }
264
+ else if (link) {
265
+ // ── Link mode: symlink local dir ──────────────────────────────────
266
+ const result = installViaLink(worktree, source);
267
+ descriptorFile = result.descriptorFile;
268
+ descriptor = result.descriptor;
269
+ pkg = result.pkg;
270
+ packageName = result.packageName;
271
+ isNpmInstalled = true;
272
+ }
273
+ else {
274
+ // ── npm install: local dir, registry, or tarball ──────────────────
275
+ const result = installViaNpm(worktree, source, sourceKind);
276
+ descriptorFile = result.descriptorFile;
277
+ descriptor = result.descriptor;
278
+ pkg = result.pkg;
279
+ packageName = result.packageName;
280
+ isNpmInstalled = true;
85
281
  }
86
- // Detect descriptor
87
- const descriptorFile = findDescriptor(sourceDir);
88
282
  const category = CATEGORY_MAP[descriptorFile];
89
- const descriptor = readJson(path.join(sourceDir, descriptorFile));
90
- // Read optional package.json for fallbacks
91
- const pkgJsonPath = path.join(sourceDir, 'package.json');
92
- const pkg = fs.existsSync(pkgJsonPath) ? readJson(pkgJsonPath) : {};
93
- // Resolve name: --name flag > directory basename
94
- const name = opts.name || path.basename(sourceDir);
283
+ // Resolve name: --name flag > package name > directory basename
284
+ const name = opts.name
285
+ || (packageName ? packageName.replace(/^@[^/]+\//, '') : null)
286
+ || path.basename(path.resolve(source));
95
287
  if (!name || name === '.' || name === '..') {
96
288
  throw new Error('Could not determine tool name. Use --name to specify one.');
97
289
  }
@@ -102,7 +294,7 @@ export function installTool(opts) {
102
294
  if (!slot) {
103
295
  throw new Error('No version found in descriptor or package.json. Use --slot to specify a version slot.');
104
296
  }
105
- // Determine target directory.
297
+ // Determine target directory for metadata/files in the guildhall.
106
298
  // Framework tools go under nexus/{implements,engines}/.
107
299
  // Guild tools go under {implements,engines}/ (or training/ for curricula/temperaments).
108
300
  const parentDir = DIR_MAP[category];
@@ -110,11 +302,42 @@ export function installTool(opts) {
110
302
  ? path.join('nexus', parentDir)
111
303
  : parentDir;
112
304
  const targetDir = path.join(worktree, prefix, name, slot);
113
- // Copy source to target
114
- if (fs.existsSync(targetDir)) {
115
- fs.rmSync(targetDir, { recursive: true });
305
+ if (isNpmInstalled) {
306
+ // npm-installed: copy only metadata to the guildhall slot, set package field
307
+ const pkgSourceDir = link
308
+ ? path.resolve(source)
309
+ : resolveInstalledPackage(worktree, packageName);
310
+ if (fs.existsSync(targetDir)) {
311
+ fs.rmSync(targetDir, { recursive: true });
312
+ }
313
+ copyMetadata(pkgSourceDir, targetDir, descriptorFile, descriptor);
314
+ // Write package field into the slot's descriptor so the manifest engine
315
+ // resolves by package name at runtime (from guildhall's node_modules).
316
+ const slotDescriptor = readJson(path.join(targetDir, descriptorFile));
317
+ slotDescriptor['package'] = packageName;
318
+ writeJson(path.join(targetDir, descriptorFile), slotDescriptor);
319
+ }
320
+ else {
321
+ // Bare local or framework: copy entire source directory
322
+ if (fs.existsSync(targetDir)) {
323
+ fs.rmSync(targetDir, { recursive: true });
324
+ }
325
+ copyDir(path.resolve(source), targetDir);
326
+ // For sources with a package.json, write the package name into the slot
327
+ // descriptor so the manifest engine resolves by package name at runtime.
328
+ // This covers framework tools (which always have package.json) and any
329
+ // bare-local tools that happen to be proper npm packages.
330
+ const sourcePkgPath = path.join(path.resolve(source), 'package.json');
331
+ if (fs.existsSync(sourcePkgPath)) {
332
+ const sourcePkg = readJson(sourcePkgPath);
333
+ const sourcePkgName = sourcePkg['name'];
334
+ if (sourcePkgName) {
335
+ const slotDescriptor = readJson(path.join(targetDir, descriptorFile));
336
+ slotDescriptor['package'] = sourcePkgName;
337
+ writeJson(path.join(targetDir, descriptorFile), slotDescriptor);
338
+ }
339
+ }
116
340
  }
117
- copyDir(sourceDir, targetDir);
118
341
  // Register in guild.json
119
342
  const config = readGuildConfig(home);
120
343
  const now = new Date().toISOString();
@@ -122,7 +345,7 @@ export function installTool(opts) {
122
345
  const entry = {
123
346
  source: framework ? 'nexus' : 'guild',
124
347
  slot,
125
- upstream: null,
348
+ upstream: isNpmInstalled ? `${packageName}@${slot}` : null,
126
349
  installedAt: now,
127
350
  };
128
351
  if (category === 'implements' && roles && roles.length > 0) {
@@ -133,17 +356,17 @@ export function installTool(opts) {
133
356
  else {
134
357
  const entry = {
135
358
  slot,
136
- upstream: null,
359
+ upstream: isNpmInstalled ? `${packageName}@${slot}` : null,
137
360
  installedAt: now,
138
361
  };
139
362
  config[category][name] = entry;
140
363
  }
141
364
  writeGuildConfig(home, config);
142
- // Commit (unless suppressed e.g. during bootstrap)
365
+ // Commit (unless suppressed -- e.g. during bootstrap)
143
366
  if (commit) {
144
367
  git(['add', '-A'], worktree);
145
368
  git(['commit', '-m', `Install ${category.slice(0, -1)} ${name}@${slot}`], worktree);
146
369
  }
147
- return { category, name, slot, installedTo: targetDir };
370
+ return { category, name, slot, installedTo: targetDir, sourceKind };
148
371
  }
149
372
  //# sourceMappingURL=install-tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-tool.js","sourceRoot":"","sources":["../src/install-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-tool.js","sourceRoot":"","sources":["../src/install-tool.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,9 @@ export interface RemoveResult {
13
13
  /**
14
14
  * Remove a tool from the guild — deregister from guild.json and delete from disk.
15
15
  *
16
+ * For npm-installed tools, also runs `npm uninstall` to clean up node_modules.
17
+ * For linked tools, removes the symlink from node_modules.
18
+ *
16
19
  * Only guild-managed tools can be removed. Framework (nexus) tools are managed
17
20
  * by `nexus repair` / `nexus install`.
18
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"remove-tool.d.ts","sourceRoot":"","sources":["../src/remove-tool.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;CACpE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAoDhE"}
1
+ {"version":3,"file":"remove-tool.d.ts","sourceRoot":"","sources":["../src/remove-tool.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;CACpE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY,CA2EhE"}
@@ -14,9 +14,36 @@ const REGISTRIES = ['implements', 'engines', 'curricula', 'temperaments'];
14
14
  function git(args, cwd) {
15
15
  execFileSync('git', args, { cwd, stdio: 'pipe' });
16
16
  }
17
+ /**
18
+ * Read a JSON file.
19
+ */
20
+ function readJson(filePath) {
21
+ return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
22
+ }
23
+ /**
24
+ * Determine the npm package name for a tool from its slot descriptor's `package` field.
25
+ * Returns null if the tool was not npm-installed.
26
+ */
27
+ function getPackageName(worktree, category, name, slot) {
28
+ const parentDir = DIR_MAP[category];
29
+ const slotDir = path.join(worktree, parentDir, name, slot);
30
+ // Check all possible descriptor files
31
+ const descriptorFiles = ['nexus-implement.json', 'nexus-engine.json', 'nexus-curriculum.json', 'nexus-temperament.json'];
32
+ for (const descriptorFile of descriptorFiles) {
33
+ const descriptorPath = path.join(slotDir, descriptorFile);
34
+ if (fs.existsSync(descriptorPath)) {
35
+ const descriptor = readJson(descriptorPath);
36
+ return descriptor['package'] ?? null;
37
+ }
38
+ }
39
+ return null;
40
+ }
17
41
  /**
18
42
  * Remove a tool from the guild — deregister from guild.json and delete from disk.
19
43
  *
44
+ * For npm-installed tools, also runs `npm uninstall` to clean up node_modules.
45
+ * For linked tools, removes the symlink from node_modules.
46
+ *
20
47
  * Only guild-managed tools can be removed. Framework (nexus) tools are managed
21
48
  * by `nexus repair` / `nexus install`.
22
49
  */
@@ -42,6 +69,30 @@ export function removeTool(opts) {
42
69
  if ('source' in entry && entry.source === 'nexus') {
43
70
  throw new Error(`"${name}" is a framework tool (source: nexus). Use "nexus repair" to manage framework tools.`);
44
71
  }
72
+ // Clean up npm-installed packages from node_modules
73
+ const packageName = getPackageName(worktree, foundCategory, name, slot);
74
+ if (packageName) {
75
+ const linkPath = path.join(worktree, 'node_modules', packageName);
76
+ if (fs.existsSync(linkPath) && fs.lstatSync(linkPath).isSymbolicLink()) {
77
+ // Linked tool: just remove the symlink
78
+ fs.unlinkSync(linkPath);
79
+ // Clean up empty scoped directory if needed
80
+ const scopeDir = path.dirname(linkPath);
81
+ if (scopeDir !== path.join(worktree, 'node_modules') &&
82
+ fs.existsSync(scopeDir) && fs.readdirSync(scopeDir).length === 0) {
83
+ fs.rmdirSync(scopeDir);
84
+ }
85
+ }
86
+ else {
87
+ // npm-installed tool: use npm uninstall
88
+ try {
89
+ execFileSync('npm', ['uninstall', packageName], { cwd: worktree, stdio: 'pipe' });
90
+ }
91
+ catch {
92
+ // If npm uninstall fails (e.g. package already gone), continue with cleanup
93
+ }
94
+ }
95
+ }
45
96
  // Remove on-disk directory (the specific slot)
46
97
  const parentDir = DIR_MAP[foundCategory];
47
98
  const toolDir = path.join(worktree, parentDir, name, slot);
@@ -1 +1 @@
1
- {"version":3,"file":"remove-tool.js","sourceRoot":"","sources":["../src/remove-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove-tool.js","sourceRoot":"","sources":["../src/remove-tool.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shardworks/nexus-core",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "license": "ISC",
5
5
  "repository": {
6
6
  "type": "git",