@shardworks/nexus-core 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.
Files changed (54) hide show
  1. package/dist/bundle.d.ts +111 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +438 -0
  4. package/dist/bundle.js.map +1 -0
  5. package/dist/dispatch.d.ts +1 -1
  6. package/dist/dispatch.d.ts.map +1 -1
  7. package/dist/guild-config.d.ts +9 -5
  8. package/dist/guild-config.d.ts.map +1 -1
  9. package/dist/guild-config.js +4 -5
  10. package/dist/guild-config.js.map +1 -1
  11. package/dist/implement.d.ts +2 -2
  12. package/dist/implement.d.ts.map +1 -1
  13. package/dist/implement.js +1 -1
  14. package/dist/index.d.ts +4 -5
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +4 -5
  17. package/dist/index.js.map +1 -1
  18. package/dist/init-guild.d.ts +14 -11
  19. package/dist/init-guild.d.ts.map +1 -1
  20. package/dist/init-guild.js +29 -39
  21. package/dist/init-guild.js.map +1 -1
  22. package/dist/install-tool.d.ts +29 -26
  23. package/dist/install-tool.d.ts.map +1 -1
  24. package/dist/install-tool.js +185 -142
  25. package/dist/install-tool.js.map +1 -1
  26. package/dist/instantiate.d.ts +1 -1
  27. package/dist/instantiate.d.ts.map +1 -1
  28. package/dist/instantiate.js +6 -7
  29. package/dist/instantiate.js.map +1 -1
  30. package/dist/nexus-home.d.ts +15 -8
  31. package/dist/nexus-home.d.ts.map +1 -1
  32. package/dist/nexus-home.js +32 -17
  33. package/dist/nexus-home.js.map +1 -1
  34. package/dist/rehydrate.d.ts +15 -0
  35. package/dist/rehydrate.d.ts.map +1 -0
  36. package/dist/rehydrate.js +84 -0
  37. package/dist/rehydrate.js.map +1 -0
  38. package/dist/remove-tool.d.ts +0 -3
  39. package/dist/remove-tool.d.ts.map +1 -1
  40. package/dist/remove-tool.js +21 -40
  41. package/dist/remove-tool.js.map +1 -1
  42. package/package.json +1 -1
  43. package/dist/base-tools.d.ts +0 -27
  44. package/dist/base-tools.d.ts.map +0 -1
  45. package/dist/base-tools.js +0 -30
  46. package/dist/base-tools.js.map +0 -1
  47. package/dist/bootstrap.d.ts +0 -14
  48. package/dist/bootstrap.d.ts.map +0 -1
  49. package/dist/bootstrap.js +0 -46
  50. package/dist/bootstrap.js.map +0 -1
  51. package/dist/publish.d.ts +0 -20
  52. package/dist/publish.d.ts.map +0 -1
  53. package/dist/publish.js +0 -41
  54. package/dist/publish.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { execFileSync } from 'node:child_process';
4
- import { guildhallWorktreePath } from "./nexus-home.js";
4
+ import { workshopBarePath } from "./nexus-home.js";
5
5
  import { readGuildConfig, writeGuildConfig } from "./guild-config.js";
6
6
  /** Descriptor file names in priority order for detection. */
7
7
  const DESCRIPTOR_FILES = [
@@ -17,7 +17,7 @@ const CATEGORY_MAP = {
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 guild root). */
21
21
  const DIR_MAP = {
22
22
  implements: 'implements',
23
23
  engines: 'engines',
@@ -60,7 +60,6 @@ function copyDir(src, dest) {
60
60
  }
61
61
  }
62
62
  else if (entry.isSymbolicLink()) {
63
- // Resolve symlink and copy the target
64
63
  const realPath = fs.realpathSync(srcPath);
65
64
  if (fs.statSync(realPath).isDirectory()) {
66
65
  if (!SKIP_DIRS.has(entry.name)) {
@@ -78,9 +77,9 @@ function copyDir(src, dest) {
78
77
  }
79
78
  /**
80
79
  * Copy only the metadata files (descriptor + instructions) from a source
81
- * directory into the guildhall slot. This is used for npm-installed tools
80
+ * directory into the guild slot. This is used for npm-installed tools
82
81
  * where the runtime code lives in node_modules but the metadata needs to
83
- * be git-tracked in the guildhall.
82
+ * be git-tracked in the guild.
84
83
  */
85
84
  function copyMetadata(sourceDir, targetDir, descriptorFile, descriptor) {
86
85
  fs.mkdirSync(targetDir, { recursive: true });
@@ -97,38 +96,27 @@ function copyMetadata(sourceDir, targetDir, descriptorFile, descriptor) {
97
96
  }
98
97
  /**
99
98
  * Classify a source string to determine the installation method.
99
+ *
100
+ * @param source - The source specifier.
101
+ * @param link - Whether the --link flag was set.
100
102
  */
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';
103
+ export function classifySource(source, link = false) {
104
+ if (link)
105
+ return 'link';
106
+ if (source.startsWith('workshop:'))
107
+ return 'workshop';
108
+ if (source.startsWith('git+'))
109
+ return 'git-url';
110
+ if (source.endsWith('.tgz') || source.endsWith('.tar.gz'))
111
+ return 'tarball';
112
+ return 'registry';
123
113
  }
124
114
  /**
125
115
  * 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
116
  */
128
- function resolveInstalledPackage(worktree, packageName) {
129
- const pkgDir = path.join(worktree, 'node_modules', packageName);
117
+ function resolveInstalledPackage(guildRoot, packageName) {
118
+ const pkgDir = path.join(guildRoot, 'node_modules', packageName);
130
119
  if (!fs.existsSync(pkgDir)) {
131
- // Handle scoped packages — npm might nest them
132
120
  throw new Error(`Could not find installed package at ${pkgDir}`);
133
121
  }
134
122
  return pkgDir;
@@ -148,64 +136,103 @@ function readPackageName(dir) {
148
136
  }
149
137
  return name;
150
138
  }
139
+ /**
140
+ * Parse a registry source specifier to extract the package name.
141
+ * e.g. "foo@1.0" -> "foo", "@scope/foo@1.0" -> "@scope/foo"
142
+ */
143
+ function parsePackageName(source) {
144
+ // Scoped packages: @scope/name@version
145
+ if (source.startsWith('@') && source.lastIndexOf('@') > 0) {
146
+ return source.substring(0, source.lastIndexOf('@'));
147
+ }
148
+ // Unscoped: name@version
149
+ if (source.includes('@')) {
150
+ return source.split('@')[0];
151
+ }
152
+ // Bare name without version
153
+ return source;
154
+ }
155
+ /**
156
+ * Determine package name from guild's package.json dependencies.
157
+ * Used when we can't derive the name from the source specifier (e.g. tarballs).
158
+ */
159
+ function findNewDependency(guildRoot) {
160
+ const guildhallPkg = readJson(path.join(guildRoot, 'package.json'));
161
+ const deps = guildhallPkg['dependencies'] ?? {};
162
+ const depNames = Object.keys(deps);
163
+ const packageName = depNames[depNames.length - 1];
164
+ if (!packageName) {
165
+ throw new Error('Could not determine package name after npm install');
166
+ }
167
+ return packageName;
168
+ }
151
169
  // ── Install paths ───────────────────────────────────────────────────────
152
170
  /**
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.
171
+ * Install via npm --save (registry and git-url sources).
172
+ * Package is added to guild's package.json for durability.
156
173
  */
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
174
+ function installViaNpmSave(guildRoot, source, sourceKind) {
175
+ npm(['install', '--save', source], guildRoot);
176
+ // Determine the installed package name:
177
+ // - Registry specifiers (e.g. "foo@1.0"): parse name from specifier
178
+ // - Local paths: read name from source's package.json (reliable for batch installs)
179
+ // - Git URLs: detect as new dependency in guild's package.json
180
+ const isLocalPath = source.startsWith('/') || source.startsWith('./') || source.startsWith('../');
164
181
  let packageName;
165
- if (sourceKind === 'npm-local') {
182
+ if (isLocalPath) {
166
183
  packageName = readPackageName(path.resolve(source));
167
184
  }
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
- }
185
+ else if (sourceKind === 'registry') {
186
+ packageName = parsePackageName(source);
180
187
  }
181
188
  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
- }
189
+ packageName = findNewDependency(guildRoot);
193
190
  }
194
- const packageDir = resolveInstalledPackage(worktree, packageName);
191
+ const packageDir = resolveInstalledPackage(guildRoot, packageName);
192
+ const descriptorFile = findDescriptor(packageDir);
193
+ const descriptor = readJson(path.join(packageDir, descriptorFile));
194
+ const pkg = readJson(path.join(packageDir, 'package.json'));
195
+ return { packageName, packageDir, descriptorFile, descriptor, pkg };
196
+ }
197
+ /**
198
+ * Install via npm, detect package name, optionally remove from package.json.
199
+ * Used for tarball and workshop sources where we need --no-save semantics
200
+ * but need to discover the package name.
201
+ */
202
+ function installViaNpmDetect(guildRoot, npmSource, save) {
203
+ // Always install with --save first to detect the package name
204
+ npm(['install', '--save', npmSource], guildRoot);
205
+ const packageName = findNewDependency(guildRoot);
206
+ const packageDir = resolveInstalledPackage(guildRoot, packageName);
195
207
  const descriptorFile = findDescriptor(packageDir);
196
208
  const descriptor = readJson(path.join(packageDir, descriptorFile));
197
209
  const pkg = readJson(path.join(packageDir, 'package.json'));
210
+ // If we don't want to save, remove from package.json but keep in node_modules
211
+ if (!save) {
212
+ const guildPkg = readJson(path.join(guildRoot, 'package.json'));
213
+ const deps = guildPkg['dependencies'];
214
+ if (deps && packageName in deps) {
215
+ delete deps[packageName];
216
+ writeJson(path.join(guildRoot, 'package.json'), guildPkg);
217
+ }
218
+ }
198
219
  return { packageName, packageDir, descriptorFile, descriptor, pkg };
199
220
  }
200
221
  /**
201
222
  * Install via symlink (dev mode for local dirs with package.json).
202
- * Creates a symlink in guildhall/node_modules pointing to the source directory.
223
+ * Creates a symlink in node_modules pointing to the source directory.
203
224
  */
204
- function installViaLink(worktree, source) {
225
+ function installViaLink(guildRoot, source) {
205
226
  const sourceDir = path.resolve(source);
227
+ if (!fs.existsSync(sourceDir) || !fs.statSync(sourceDir).isDirectory()) {
228
+ throw new Error(`Source is not a directory: ${sourceDir}`);
229
+ }
230
+ if (!fs.existsSync(path.join(sourceDir, 'package.json'))) {
231
+ throw new Error('The --link option requires a directory with a package.json.');
232
+ }
206
233
  const packageName = readPackageName(sourceDir);
207
234
  // Ensure node_modules exists
208
- const nodeModulesDir = path.join(worktree, 'node_modules');
235
+ const nodeModulesDir = path.join(guildRoot, 'node_modules');
209
236
  fs.mkdirSync(nodeModulesDir, { recursive: true });
210
237
  // Handle scoped packages: @scope/name needs @scope/ directory
211
238
  const linkTarget = path.join(nodeModulesDir, packageName);
@@ -224,60 +251,75 @@ function installViaLink(worktree, source) {
224
251
  /**
225
252
  * Install a tool (implement, engine, curriculum, or temperament) into the guild.
226
253
  *
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
254
+ * Supports five source types:
255
+ * - **Registry** npm package specifier, fully durable via package.json
256
+ * - **Git URL** `git+https://...`, fully durable via package.json
257
+ * - **Workshop** `workshop:name#ref`, durable within the guild via full source in slot
258
+ * - **Tarball** — `.tgz` file, durable via full source in slot
259
+ * - **Link** — symlinked local dir (dev mode), NOT durable
232
260
  *
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.
261
+ * For npm-installed tools, runtime code lives in node_modules. Metadata
262
+ * (descriptor + instructions) is copied to the guild slot for git tracking.
263
+ * The `package` field in guild.json tells the manifest engine to resolve by package name.
236
264
  */
237
265
  export function installTool(opts) {
238
- const { home, source, roles, framework = false, commit = true, link = false } = opts;
239
- const worktree = guildhallWorktreePath(home);
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
- }
266
+ const { home, source, roles, commit = true, link = false, bundle } = opts;
267
+ const sourceKind = classifySource(source, link);
245
268
  let descriptorFile;
246
269
  let descriptor;
247
270
  let pkg;
248
271
  let packageName = null;
249
272
  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) {
273
+ let copyFullSource = false;
274
+ let upstream = null;
275
+ if (sourceKind === 'link') {
265
276
  // ── Link mode: symlink local dir ──────────────────────────────────
266
- const result = installViaLink(worktree, source);
277
+ const result = installViaLink(home, source);
278
+ descriptorFile = result.descriptorFile;
279
+ descriptor = result.descriptor;
280
+ pkg = result.pkg;
281
+ packageName = result.packageName;
282
+ isNpmInstalled = true;
283
+ upstream = null;
284
+ }
285
+ else if (sourceKind === 'registry' || sourceKind === 'git-url') {
286
+ // ── Registry / Git URL: npm install --save ────────────────────────
287
+ const result = installViaNpmSave(home, source, sourceKind);
288
+ descriptorFile = result.descriptorFile;
289
+ descriptor = result.descriptor;
290
+ pkg = result.pkg;
291
+ packageName = result.packageName;
292
+ isNpmInstalled = true;
293
+ upstream = sourceKind === 'git-url' ? source : `${result.packageName}@${result.pkg['version']}`;
294
+ }
295
+ else if (sourceKind === 'workshop') {
296
+ // ── Workshop: resolve to git+file:// URL, npm install, full source ─
297
+ const parsed = parseWorkshopSource(source);
298
+ const barePath = workshopBarePath(home, parsed.workshop);
299
+ if (!fs.existsSync(barePath)) {
300
+ throw new Error(`Workshop bare repo not found: ${barePath}`);
301
+ }
302
+ const gitFileUrl = `git+file://${barePath}#${parsed.ref}`;
303
+ const result = installViaNpmDetect(home, gitFileUrl, false);
267
304
  descriptorFile = result.descriptorFile;
268
305
  descriptor = result.descriptor;
269
306
  pkg = result.pkg;
270
307
  packageName = result.packageName;
271
308
  isNpmInstalled = true;
309
+ copyFullSource = true;
310
+ upstream = source; // Store the original workshop:name#ref specifier
272
311
  }
273
312
  else {
274
- // ── npm install: local dir, registry, or tarball ──────────────────
275
- const result = installViaNpm(worktree, source, sourceKind);
313
+ // ── Tarball: npm install --no-save, full source to slot ───────────
314
+ const resolvedSource = path.resolve(source);
315
+ const result = installViaNpmDetect(home, resolvedSource, false);
276
316
  descriptorFile = result.descriptorFile;
277
317
  descriptor = result.descriptor;
278
318
  pkg = result.pkg;
279
319
  packageName = result.packageName;
280
320
  isNpmInstalled = true;
321
+ copyFullSource = true;
322
+ upstream = null;
281
323
  }
282
324
  const category = CATEGORY_MAP[descriptorFile];
283
325
  // Resolve name: --name flag > package name > directory basename
@@ -294,79 +336,80 @@ export function installTool(opts) {
294
336
  if (!slot) {
295
337
  throw new Error('No version found in descriptor or package.json. Use --slot to specify a version slot.');
296
338
  }
297
- // Determine target directory for metadata/files in the guildhall.
298
- // Framework tools go under nexus/{implements,engines}/.
299
- // Guild tools go under {implements,engines}/ (or training/ for curricula/temperaments).
339
+ // Determine target directory for metadata/files in the guild.
300
340
  const parentDir = DIR_MAP[category];
301
- const prefix = framework && (category === 'implements' || category === 'engines')
302
- ? path.join('nexus', parentDir)
303
- : parentDir;
304
- const targetDir = path.join(worktree, prefix, name, slot);
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);
341
+ const targetDir = path.join(home, parentDir, name, slot);
342
+ if (isNpmInstalled && copyFullSource) {
343
+ // Workshop/tarball: copy full source to slot for durability
344
+ const pkgSourceDir = resolveInstalledPackage(home, packageName);
310
345
  if (fs.existsSync(targetDir)) {
311
346
  fs.rmSync(targetDir, { recursive: true });
312
347
  }
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);
348
+ copyDir(pkgSourceDir, targetDir);
319
349
  }
320
- else {
321
- // Bare local or framework: copy entire source directory
350
+ else if (isNpmInstalled) {
351
+ // Registry/git-url/link: copy only metadata to slot
352
+ const pkgSourceDir = sourceKind === 'link'
353
+ ? path.resolve(source)
354
+ : resolveInstalledPackage(home, packageName);
322
355
  if (fs.existsSync(targetDir)) {
323
356
  fs.rmSync(targetDir, { recursive: true });
324
357
  }
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
- }
358
+ copyMetadata(pkgSourceDir, targetDir, descriptorFile, descriptor);
340
359
  }
341
360
  // Register in guild.json
342
361
  const config = readGuildConfig(home);
343
362
  const now = new Date().toISOString();
344
363
  if (category === 'implements' || category === 'engines') {
345
364
  const entry = {
346
- source: framework ? 'nexus' : 'guild',
347
365
  slot,
348
- upstream: isNpmInstalled ? `${packageName}@${slot}` : null,
366
+ upstream,
349
367
  installedAt: now,
350
368
  };
351
369
  if (category === 'implements' && roles && roles.length > 0) {
352
370
  entry.roles = roles;
353
371
  }
372
+ if (packageName) {
373
+ entry.package = packageName;
374
+ }
375
+ if (bundle) {
376
+ entry.bundle = bundle;
377
+ }
354
378
  config[category][name] = entry;
355
379
  }
356
380
  else {
357
381
  const entry = {
358
382
  slot,
359
- upstream: isNpmInstalled ? `${packageName}@${slot}` : null,
383
+ upstream,
360
384
  installedAt: now,
361
385
  };
386
+ if (bundle) {
387
+ entry.bundle = bundle;
388
+ }
362
389
  config[category][name] = entry;
363
390
  }
364
391
  writeGuildConfig(home, config);
365
392
  // Commit (unless suppressed -- e.g. during bootstrap)
366
393
  if (commit) {
367
- git(['add', '-A'], worktree);
368
- git(['commit', '-m', `Install ${category.slice(0, -1)} ${name}@${slot}`], worktree);
394
+ git(['add', '-A'], home);
395
+ git(['commit', '-m', `Install ${category.slice(0, -1)} ${name}@${slot}`], home);
369
396
  }
370
397
  return { category, name, slot, installedTo: targetDir, sourceKind };
371
398
  }
399
+ // ── Workshop source parsing ─────────────────────────────────────────────
400
+ /**
401
+ * Parse a workshop source specifier.
402
+ * Format: `workshop:<name>#<ref>`
403
+ */
404
+ function parseWorkshopSource(source) {
405
+ const withoutPrefix = source.substring('workshop:'.length);
406
+ const hashIndex = withoutPrefix.indexOf('#');
407
+ if (hashIndex === -1) {
408
+ throw new Error(`Invalid workshop source "${source}". Expected format: workshop:<name>#<ref>`);
409
+ }
410
+ return {
411
+ workshop: withoutPrefix.substring(0, hashIndex),
412
+ ref: withoutPrefix.substring(hashIndex + 1),
413
+ };
414
+ }
372
415
  //# 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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"}
@@ -1,5 +1,5 @@
1
1
  export interface InstantiateOptions {
2
- /** Absolute path to NEXUS_HOME. */
2
+ /** Absolute path to the guild root. */
3
3
  home: string;
4
4
  /** Name for the new anima. Must be unique within the guild. */
5
5
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"instantiate.d.ts","sourceRoot":"","sources":["../src/instantiate.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA6CD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAyGvE"}
1
+ {"version":3,"file":"instantiate.d.ts","sourceRoot":"","sources":["../src/instantiate.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA6CD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAuGvE"}
@@ -8,19 +8,19 @@
8
8
  import fs from 'node:fs';
9
9
  import path from 'node:path';
10
10
  import Database from 'better-sqlite3';
11
- import { ledgerPath, guildhallWorktreePath } from "./nexus-home.js";
11
+ import { ledgerPath } from "./nexus-home.js";
12
12
  import { readGuildConfig } from "./guild-config.js";
13
13
  /**
14
14
  * Read training content from disk given its guild.json entry.
15
15
  *
16
- * @param worktree - Path to the guildhall worktree.
16
+ * @param guildRoot - Path to the guild root.
17
17
  * @param category - 'curricula' or 'temperaments'.
18
18
  * @param name - The training content name.
19
19
  * @param slot - The version slot.
20
20
  * @returns Object with version and the actual content text.
21
21
  */
22
- function readTrainingContent(worktree, category, name, slot) {
23
- const dir = path.join(worktree, 'training', category, name, slot);
22
+ function readTrainingContent(guildRoot, category, name, slot) {
23
+ const dir = path.join(guildRoot, 'training', category, name, slot);
24
24
  const descriptorFile = category === 'curricula'
25
25
  ? 'nexus-curriculum.json'
26
26
  : 'nexus-temperament.json';
@@ -48,7 +48,6 @@ function readTrainingContent(worktree, category, name, slot) {
48
48
  */
49
49
  export function instantiate(opts) {
50
50
  const { home, name, roles, curriculum, temperament } = opts;
51
- const worktree = guildhallWorktreePath(home);
52
51
  if (roles.length === 0) {
53
52
  throw new Error('At least one role is required.');
54
53
  }
@@ -64,13 +63,13 @@ export function instantiate(opts) {
64
63
  let curriculumSnapshot = null;
65
64
  if (curriculum) {
66
65
  const entry = config.curricula[curriculum];
67
- const { version, content } = readTrainingContent(worktree, 'curricula', curriculum, entry.slot);
66
+ const { version, content } = readTrainingContent(home, 'curricula', curriculum, entry.slot);
68
67
  curriculumSnapshot = { name: curriculum, version, content };
69
68
  }
70
69
  let temperamentSnapshot = null;
71
70
  if (temperament) {
72
71
  const entry = config.temperaments[temperament];
73
- const { version, content } = readTrainingContent(worktree, 'temperaments', temperament, entry.slot);
72
+ const { version, content } = readTrainingContent(home, 'temperaments', temperament, entry.slot);
74
73
  temperamentSnapshot = { name: temperament, version, content };
75
74
  }
76
75
  const db = new Database(ledgerPath(home));
@@ -1 +1 @@
1
- {"version":3,"file":"instantiate.js","sourceRoot":"","sources":["../src/instantiate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instantiate.js","sourceRoot":"","sources":["../src/instantiate.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,21 @@
1
1
  /**
2
- * Resolve NEXUS_HOME from the environment.
3
- * @throws If `NEXUS_HOME` is not set.
2
+ * Find the guild root by walking up from a starting directory looking for guild.json.
3
+ *
4
+ * This replaces the old NEXUS_HOME env var approach. The guild root IS the
5
+ * guildhall — a regular git clone with guild.json at the root.
6
+ *
7
+ * @param startDir - Directory to start searching from (defaults to cwd).
8
+ * @throws If no guild.json is found before reaching the filesystem root.
4
9
  */
5
- export declare function resolveNexusHome(): string;
6
- /** Path to the guildhall bare git repo. */
7
- export declare function guildhallBarePath(home: string): string;
8
- /** Path to the guildhall's standing worktree (`worktrees/guildhall/main`). */
9
- export declare function guildhallWorktreePath(home: string): string;
10
+ export declare function findGuildRoot(startDir?: string): string;
11
+ /** Path to the .nexus framework-managed directory. */
12
+ export declare function nexusDir(home: string): string;
10
13
  /** Path to the Ledger SQLite database. */
11
14
  export declare function ledgerPath(home: string): string;
12
- /** Path to the top-level worktrees directory. */
15
+ /** Path to the top-level worktrees directory (for commission worktrees). */
13
16
  export declare function worktreesPath(home: string): string;
17
+ /** Path to the workshops directory (contains bare clones). */
18
+ export declare function workshopsPath(home: string): string;
19
+ /** Path to a specific workshop's bare clone. */
20
+ export declare function workshopBarePath(home: string, name: string): string;
14
21
  //# sourceMappingURL=nexus-home.d.ts.map