@pellux/goodvibes-sdk 0.18.16 → 0.18.17

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 (39) hide show
  1. package/dist/_internal/platform/config/manager.d.ts +3 -2
  2. package/dist/_internal/platform/config/manager.d.ts.map +1 -1
  3. package/dist/_internal/platform/config/manager.js +12 -7
  4. package/dist/_internal/platform/config/secrets.d.ts +6 -4
  5. package/dist/_internal/platform/config/secrets.d.ts.map +1 -1
  6. package/dist/_internal/platform/config/secrets.js +19 -16
  7. package/dist/_internal/platform/daemon/cli.js +1 -1
  8. package/dist/_internal/platform/discovery/mcp-scanner.d.ts +3 -1
  9. package/dist/_internal/platform/discovery/mcp-scanner.d.ts.map +1 -1
  10. package/dist/_internal/platform/discovery/mcp-scanner.js +6 -5
  11. package/dist/_internal/platform/discovery/scanner.d.ts +3 -1
  12. package/dist/_internal/platform/discovery/scanner.d.ts.map +1 -1
  13. package/dist/_internal/platform/discovery/scanner.js +3 -2
  14. package/dist/_internal/platform/input/keybindings.d.ts +1 -0
  15. package/dist/_internal/platform/input/keybindings.d.ts.map +1 -1
  16. package/dist/_internal/platform/input/keybindings.js +5 -2
  17. package/dist/_internal/platform/plugins/manager.d.ts.map +1 -1
  18. package/dist/_internal/platform/plugins/manager.js +5 -3
  19. package/dist/_internal/platform/runtime/bootstrap-background.d.ts +2 -0
  20. package/dist/_internal/platform/runtime/bootstrap-background.d.ts.map +1 -1
  21. package/dist/_internal/platform/runtime/bootstrap-background.js +6 -6
  22. package/dist/_internal/platform/runtime/guidance.d.ts +1 -0
  23. package/dist/_internal/platform/runtime/guidance.d.ts.map +1 -1
  24. package/dist/_internal/platform/runtime/guidance.js +6 -2
  25. package/dist/_internal/platform/runtime/remote/distributed-runtime-manager.d.ts +1 -1
  26. package/dist/_internal/platform/runtime/remote/distributed-runtime-manager.d.ts.map +1 -1
  27. package/dist/_internal/platform/runtime/remote/distributed-runtime-manager.js +4 -3
  28. package/dist/_internal/platform/runtime/sandbox/provisioning.d.ts +7 -4
  29. package/dist/_internal/platform/runtime/sandbox/provisioning.d.ts.map +1 -1
  30. package/dist/_internal/platform/runtime/sandbox/provisioning.js +9 -8
  31. package/dist/_internal/platform/runtime/services.d.ts.map +1 -1
  32. package/dist/_internal/platform/runtime/services.js +3 -2
  33. package/dist/_internal/platform/runtime/surface-root.d.ts +2 -0
  34. package/dist/_internal/platform/runtime/surface-root.d.ts.map +1 -1
  35. package/dist/_internal/platform/runtime/surface-root.js +7 -0
  36. package/dist/_internal/platform/sessions/orchestration/registry.d.ts +4 -5
  37. package/dist/_internal/platform/sessions/orchestration/registry.d.ts.map +1 -1
  38. package/dist/_internal/platform/sessions/orchestration/registry.js +7 -8
  39. package/package.json +1 -1
@@ -11,6 +11,7 @@ interface ConfigCliOverrides {
11
11
  autoApprove?: boolean;
12
12
  systemPromptFile?: string;
13
13
  workingDir?: string;
14
+ surfaceRoot?: string;
14
15
  }
15
16
  export type ConfigOverrides = ConfigCliOverrides & ({
16
17
  configDir: string;
@@ -27,7 +28,7 @@ export interface ConfigSetOptions {
27
28
  /**
28
29
  * ConfigManager — Layered, mutable, persistent config system.
29
30
  *
30
- * Load order: defaults < global TUI settings < project TUI settings < CLI overrides
31
+ * Load order: defaults < global surface settings < project surface settings < CLI overrides
31
32
  * API keys are never persisted — loaded from env vars only.
32
33
  */
33
34
  export declare class ConfigManager {
@@ -69,7 +70,7 @@ export declare class ConfigManager {
69
70
  getSchema(): ConfigSetting[];
70
71
  /** Persist current config to global TUI settings file. */
71
72
  save(): void;
72
- /** Persist current config to project-level TUI settings file (.goodvibes/goodvibes/settings.json). */
73
+ /** Persist current config to the project-level surface settings file. */
73
74
  saveProject(): void;
74
75
  /** Load config from disk: global then project (project wins). Deep-merges with defaults. */
75
76
  load(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/manager.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { DEFAULT_CONFIG, CONFIG_SCHEMA } from '@pellux/goodvibes-sdk/platform/co
4
4
  import { ConfigError } from '@pellux/goodvibes-sdk/platform/types/errors';
5
5
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
6
6
  import { getManagedSettingLock } from '../runtime/settings/control-plane.js';
7
+ import { requireSurfaceRoot, resolveSurfaceDirectory, resolveSurfaceSharedFile } from '../runtime/surface-root.js';
7
8
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
8
9
  const DEFAULT_CONFIG_SNAPSHOT = structuredClone(DEFAULT_CONFIG);
9
10
  const PERMISSION_TOOL_KEYS = new Set(Object.keys(DEFAULT_CONFIG.permissions.tools));
@@ -36,7 +37,7 @@ function requireAbsoluteOwnedPath(path, name) {
36
37
  return resolve(trimmed);
37
38
  }
38
39
  /**
39
- * Ensure the shared ~/.goodvibes/goodvibes.json exists (empty object if not).
40
+ * Ensure the shared ~/.goodvibes/<surface>.json exists (empty object if not).
40
41
  * This is reserved for future cross-app use — no TUI settings go here.
41
42
  */
42
43
  function ensureSharedConfig(sharedPath) {
@@ -46,14 +47,14 @@ function ensureSharedConfig(sharedPath) {
46
47
  writeFileSync(sharedPath, '{}\n', 'utf-8');
47
48
  }
48
49
  catch (err) {
49
- logger.debug('Could not create shared goodvibes.json (non-fatal)', { error: summarizeError(err) });
50
+ logger.debug('Could not create shared surface config (non-fatal)', { error: summarizeError(err) });
50
51
  }
51
52
  }
52
53
  }
53
54
  /**
54
55
  * ConfigManager — Layered, mutable, persistent config system.
55
56
  *
56
- * Load order: defaults < global TUI settings < project TUI settings < CLI overrides
57
+ * Load order: defaults < global surface settings < project surface settings < CLI overrides
57
58
  * API keys are never persisted — loaded from env vars only.
58
59
  */
59
60
  export class ConfigManager {
@@ -70,16 +71,20 @@ export class ConfigManager {
70
71
  const homeDirectory = requireAbsoluteOwnedPath(roots.homeDir, 'homeDir') ?? null;
71
72
  const workingDirectory = requireAbsoluteOwnedPath(overrides.workingDir, 'workingDir') ?? null;
72
73
  const sharedConfigPath = requireAbsoluteOwnedPath(roots.sharedConfigPath, 'sharedConfigPath');
73
- const base = configDir ?? join(homeDirectory, '.goodvibes', 'goodvibes');
74
+ const surfaceRoot = roots.surfaceRoot ? requireSurfaceRoot(roots.surfaceRoot, 'ConfigManager surfaceRoot') : null;
75
+ if ((!configDir || workingDirectory || homeDirectory) && !surfaceRoot) {
76
+ throw new Error('ConfigManager surfaceRoot is required when deriving config paths from homeDir/workingDir.');
77
+ }
78
+ const base = configDir ?? resolveSurfaceDirectory(homeDirectory, surfaceRoot);
74
79
  this.configDir = base;
75
80
  this.configPath = join(base, 'settings.json');
76
81
  this.workingDirectory = workingDirectory;
77
82
  this.homeDirectory = homeDirectory;
78
83
  this.projectConfigPath = this.workingDirectory
79
- ? join(this.workingDirectory, '.goodvibes', 'goodvibes', 'settings.json')
84
+ ? resolveSurfaceDirectory(this.workingDirectory, surfaceRoot, 'settings.json')
80
85
  : null;
81
86
  this.config = cloneDefaultConfig();
82
- const ownedSharedConfigPath = sharedConfigPath ?? (this.homeDirectory ? join(this.homeDirectory, '.goodvibes', 'goodvibes.json') : null);
87
+ const ownedSharedConfigPath = sharedConfigPath ?? (this.homeDirectory ? resolveSurfaceSharedFile(this.homeDirectory, surfaceRoot) : null);
83
88
  if (ownedSharedConfigPath) {
84
89
  ensureSharedConfig(ownedSharedConfigPath);
85
90
  }
@@ -213,7 +218,7 @@ export class ConfigManager {
213
218
  logger.debug('Config save failed (non-fatal)', { error: summarizeError(err) });
214
219
  }
215
220
  }
216
- /** Persist current config to project-level TUI settings file (.goodvibes/goodvibes/settings.json). */
221
+ /** Persist current config to the project-level surface settings file. */
217
222
  saveProject() {
218
223
  if (!this.projectConfigPath) {
219
224
  throw new Error('ConfigManager.saveProject requires an explicit workingDir.');
@@ -3,10 +3,10 @@
3
3
  *
4
4
  * Resolution order:
5
5
  * 1. Environment variable (process.env[key])
6
- * 2. Project/ancestor secure stores (.goodvibes/goodvibes/secrets.enc), nearest first
7
- * 3. Project/ancestor plaintext stores (.goodvibes/goodvibes.secrets.json), nearest first
8
- * 4. User secure store (~/.goodvibes/goodvibes/secrets.enc)
9
- * 5. User plaintext store (~/.goodvibes/goodvibes.secrets.json)
6
+ * 2. Project/ancestor secure stores (.goodvibes/<surface>/secrets.enc), nearest first
7
+ * 3. Project/ancestor plaintext stores (.goodvibes/<surface>.secrets.json), nearest first
8
+ * 4. User secure store (~/.goodvibes/<surface>/secrets.enc)
9
+ * 5. User plaintext store (~/.goodvibes/<surface>.secrets.json)
10
10
  * 6. If a resolved value is a SecretRef, resolve through the referenced provider
11
11
  *
12
12
  * The active policy decides whether plaintext stores are eligible:
@@ -56,6 +56,7 @@ export interface SecretStorageReview {
56
56
  export interface SecretsManagerOptions {
57
57
  readonly projectRoot: string;
58
58
  readonly globalHome: string;
59
+ readonly surfaceRoot: string;
59
60
  readonly configManager?: Pick<ConfigManager, 'get'>;
60
61
  readonly policy?: SecretStorageMode;
61
62
  readonly secureProjectFilePath?: string;
@@ -66,6 +67,7 @@ export interface SecretsManagerOptions {
66
67
  export declare class SecretsManager {
67
68
  private readonly encKey;
68
69
  private readonly options;
70
+ private readonly surfaceRoot;
69
71
  constructor(options: SecretsManagerOptions);
70
72
  getGlobalHome(): string;
71
73
  get(key: string): Promise<string | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/secrets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/secrets.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@
3
3
  *
4
4
  * Resolution order:
5
5
  * 1. Environment variable (process.env[key])
6
- * 2. Project/ancestor secure stores (.goodvibes/goodvibes/secrets.enc), nearest first
7
- * 3. Project/ancestor plaintext stores (.goodvibes/goodvibes.secrets.json), nearest first
8
- * 4. User secure store (~/.goodvibes/goodvibes/secrets.enc)
9
- * 5. User plaintext store (~/.goodvibes/goodvibes.secrets.json)
6
+ * 2. Project/ancestor secure stores (.goodvibes/<surface>/secrets.enc), nearest first
7
+ * 3. Project/ancestor plaintext stores (.goodvibes/<surface>.secrets.json), nearest first
8
+ * 4. User secure store (~/.goodvibes/<surface>/secrets.enc)
9
+ * 5. User plaintext store (~/.goodvibes/<surface>.secrets.json)
10
10
  * 6. If a resolved value is a SecretRef, resolve through the referenced provider
11
11
  *
12
12
  * The active policy decides whether plaintext stores are eligible:
@@ -22,6 +22,7 @@ import { hostname, userInfo } from 'os';
22
22
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
23
23
  import { getSecretRefSource, isSecretRefInput, resolveSecretRef } from '@pellux/goodvibes-sdk/platform/config/secret-refs';
24
24
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
25
+ import { requireSurfaceRoot, resolveSurfaceDirectory, resolveSurfaceSharedFile } from '../runtime/surface-root.js';
25
26
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
26
27
  function requireAbsoluteOwnedPath(path, name) {
27
28
  const trimmed = path.trim();
@@ -91,8 +92,10 @@ function collectAncestorRoots(start) {
91
92
  export class SecretsManager {
92
93
  encKey;
93
94
  options;
95
+ surfaceRoot;
94
96
  constructor(options) {
95
97
  this.encKey = deriveEncryptionKey();
98
+ this.surfaceRoot = requireSurfaceRoot(options.surfaceRoot, 'SecretsManager surfaceRoot');
96
99
  this.options = {
97
100
  ...options,
98
101
  projectRoot: requireAbsoluteOwnedPath(options.projectRoot, 'projectRoot'),
@@ -300,14 +303,14 @@ export class SecretsManager {
300
303
  for (const root of collectAncestorRoots(projectRoot)) {
301
304
  ordered.push({
302
305
  source: 'project-secure',
303
- path: this.options.secureProjectFilePath ?? join(root, '.goodvibes', 'goodvibes', 'secrets.enc'),
306
+ path: this.options.secureProjectFilePath ?? resolveSurfaceDirectory(root, this.surfaceRoot, 'secrets.enc'),
304
307
  secure: true,
305
308
  scope: 'project',
306
309
  });
307
310
  if (includePlaintext) {
308
311
  ordered.push({
309
312
  source: 'project-plaintext',
310
- path: this.options.plaintextProjectFilePath ?? join(root, '.goodvibes', 'goodvibes.secrets.json'),
313
+ path: this.options.plaintextProjectFilePath ?? resolveSurfaceSharedFile(root, `${this.surfaceRoot}.secrets`, 'json'),
311
314
  secure: false,
312
315
  scope: 'project',
313
316
  });
@@ -315,14 +318,14 @@ export class SecretsManager {
315
318
  }
316
319
  ordered.push({
317
320
  source: 'user-secure',
318
- path: this.options.secureUserFilePath ?? join(userHome, '.goodvibes', 'goodvibes', 'secrets.enc'),
321
+ path: this.options.secureUserFilePath ?? resolveSurfaceDirectory(userHome, this.surfaceRoot, 'secrets.enc'),
319
322
  secure: true,
320
323
  scope: 'user',
321
324
  });
322
325
  if (includePlaintext) {
323
326
  ordered.push({
324
327
  source: 'user-plaintext',
325
- path: this.options.plaintextUserFilePath ?? join(userHome, '.goodvibes', 'goodvibes.secrets.json'),
328
+ path: this.options.plaintextUserFilePath ?? resolveSurfaceSharedFile(userHome, `${this.surfaceRoot}.secrets`, 'json'),
326
329
  secure: false,
327
330
  scope: 'user',
328
331
  });
@@ -336,26 +339,26 @@ export class SecretsManager {
336
339
  for (const root of collectAncestorRoots(projectRoot)) {
337
340
  ordered.push({
338
341
  source: 'project-secure',
339
- path: this.options.secureProjectFilePath ?? join(root, '.goodvibes', 'goodvibes', 'secrets.enc'),
342
+ path: this.options.secureProjectFilePath ?? resolveSurfaceDirectory(root, this.surfaceRoot, 'secrets.enc'),
340
343
  secure: true,
341
344
  scope: 'project',
342
345
  });
343
346
  ordered.push({
344
347
  source: 'project-plaintext',
345
- path: this.options.plaintextProjectFilePath ?? join(root, '.goodvibes', 'goodvibes.secrets.json'),
348
+ path: this.options.plaintextProjectFilePath ?? resolveSurfaceSharedFile(root, `${this.surfaceRoot}.secrets`, 'json'),
346
349
  secure: false,
347
350
  scope: 'project',
348
351
  });
349
352
  }
350
353
  ordered.push({
351
354
  source: 'user-secure',
352
- path: this.options.secureUserFilePath ?? join(userHome, '.goodvibes', 'goodvibes', 'secrets.enc'),
355
+ path: this.options.secureUserFilePath ?? resolveSurfaceDirectory(userHome, this.surfaceRoot, 'secrets.enc'),
353
356
  secure: true,
354
357
  scope: 'user',
355
358
  });
356
359
  ordered.push({
357
360
  source: 'user-plaintext',
358
- path: this.options.plaintextUserFilePath ?? join(userHome, '.goodvibes', 'goodvibes.secrets.json'),
361
+ path: this.options.plaintextUserFilePath ?? resolveSurfaceSharedFile(userHome, `${this.surfaceRoot}.secrets`, 'json'),
359
362
  secure: false,
360
363
  scope: 'user',
361
364
  });
@@ -367,13 +370,13 @@ export class SecretsManager {
367
370
  return medium === 'secure'
368
371
  ? {
369
372
  source: 'project-secure',
370
- path: this.options.secureProjectFilePath ?? join(root, '.goodvibes', 'goodvibes', 'secrets.enc'),
373
+ path: this.options.secureProjectFilePath ?? resolveSurfaceDirectory(root, this.surfaceRoot, 'secrets.enc'),
371
374
  secure: true,
372
375
  scope,
373
376
  }
374
377
  : {
375
378
  source: 'project-plaintext',
376
- path: this.options.plaintextProjectFilePath ?? join(root, '.goodvibes', 'goodvibes.secrets.json'),
379
+ path: this.options.plaintextProjectFilePath ?? resolveSurfaceSharedFile(root, `${this.surfaceRoot}.secrets`, 'json'),
377
380
  secure: false,
378
381
  scope,
379
382
  };
@@ -382,13 +385,13 @@ export class SecretsManager {
382
385
  return medium === 'secure'
383
386
  ? {
384
387
  source: 'user-secure',
385
- path: this.options.secureUserFilePath ?? join(userHome, '.goodvibes', 'goodvibes', 'secrets.enc'),
388
+ path: this.options.secureUserFilePath ?? resolveSurfaceDirectory(userHome, this.surfaceRoot, 'secrets.enc'),
386
389
  secure: true,
387
390
  scope,
388
391
  }
389
392
  : {
390
393
  source: 'user-plaintext',
391
- path: this.options.plaintextUserFilePath ?? join(userHome, '.goodvibes', 'goodvibes.secrets.json'),
394
+ path: this.options.plaintextUserFilePath ?? resolveSurfaceSharedFile(userHome, `${this.surfaceRoot}.secrets`, 'json'),
392
395
  secure: false,
393
396
  scope,
394
397
  };
@@ -23,7 +23,7 @@ function readDaemonCliTokens(env) {
23
23
  }
24
24
  async function main() {
25
25
  const { workingDirectory: workingDir, homeDirectory } = resolveDaemonCliOwnership();
26
- const config = new ConfigManager({ workingDir, homeDir: homeDirectory });
26
+ const config = new ConfigManager({ workingDir, homeDir: homeDirectory, surfaceRoot: 'goodvibes' });
27
27
  new GlobalNetworkTransportInstaller().install(config);
28
28
  const runtimeBus = new RuntimeEventBus();
29
29
  const runtimeStore = createRuntimeStore();
@@ -6,7 +6,9 @@ export interface McpDiscoveryResult {
6
6
  /** Number of locations scanned */
7
7
  locationsScanned: number;
8
8
  }
9
- export type McpDiscoveryRoots = Pick<ShellPathService, 'workingDirectory' | 'homeDirectory'>;
9
+ export type McpDiscoveryRoots = Pick<ShellPathService, 'workingDirectory' | 'homeDirectory'> & {
10
+ readonly surfaceRoot: string;
11
+ };
10
12
  /**
11
13
  * Scan all common MCP server locations and return suggestions for
12
14
  * servers not already registered in the given set of known server names.
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-scanner.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/discovery/mcp-scanner.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,eAAe,CAAC,CAAC;AA4K7F;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,eAAe,GAAE,GAAG,CAAC,MAAM,CAAa,GACvC,OAAO,CAAC,kBAAkB,CAAC,CAiC7B"}
1
+ {"version":3,"file":"mcp-scanner.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/discovery/mcp-scanner.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,eAAe,CAAC,GAAG;IAC7F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AA4KF;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,eAAe,GAAE,GAAG,CAAC,MAAM,CAAa,GACvC,OAAO,CAAC,kBAAkB,CAAC,CAiC7B"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Scan locations (in order):
8
8
  * 1. Project .mcp/ directory — looks for mcp.json or index.js/index.ts scripts
9
- * 2. ~/.goodvibes/goodvibes/mcp/ — user-global MCP server definitions
9
+ * 2. ~/.goodvibes/<surface>/mcp/ — user-global MCP server definitions
10
10
  * 3. Locally installed npx MCP packages (node_modules/.bin/@modelcontextprotocol/*)
11
11
  *
12
12
  * Returns suggested McpServerConfig[] for servers not already in the registry.
@@ -14,6 +14,7 @@
14
14
  import { existsSync, readdirSync, statSync } from 'fs';
15
15
  import { join } from 'path';
16
16
  import { logger } from '../utils/logger.js';
17
+ import { requireSurfaceRoot } from '../runtime/surface-root.js';
17
18
  import { summarizeError } from '../utils/error-display.js';
18
19
  /**
19
20
  * Well-known npx-installable MCP server package names.
@@ -111,13 +112,13 @@ function scanProjectMcpDir(roots, knownNames) {
111
112
  return suggestions;
112
113
  }
113
114
  /**
114
- * Scan ~/.goodvibes/goodvibes/mcp/ for user-global server scripts.
115
+ * Scan ~/.goodvibes/<surface>/mcp/ for user-global server scripts.
115
116
  * Looks for:
116
117
  * - <name>/index.js, <name>/server.js, etc.
117
118
  * - <name>.js, <name>.ts standalone scripts
118
119
  */
119
120
  function scanGoodvibesMcpDir(roots, knownNames) {
120
- const mcpDir = join(roots.homeDirectory, '.goodvibes', 'goodvibes', 'mcp');
121
+ const mcpDir = join(roots.homeDirectory, '.goodvibes', requireSurfaceRoot(roots.surfaceRoot, 'MCP discovery surfaceRoot'), 'mcp');
121
122
  if (!existsSync(mcpDir))
122
123
  return [];
123
124
  const suggestions = [];
@@ -157,7 +158,7 @@ function scanGoodvibesMcpDir(roots, knownNames) {
157
158
  }
158
159
  }
159
160
  catch (err) {
160
- logger.debug('[mcp-scanner] Failed to read ~/.goodvibes/goodvibes/mcp/', { error: summarizeError(err) });
161
+ logger.debug('[mcp-scanner] Failed to read surface MCP directory', { error: summarizeError(err) });
161
162
  }
162
163
  return suggestions;
163
164
  }
@@ -204,7 +205,7 @@ export async function scanMcpServers(roots, registeredNames = new Set()) {
204
205
  // 1. Project .mcp/ directory
205
206
  locationsScanned++;
206
207
  addSuggestions(scanProjectMcpDir(roots, registeredNames));
207
- // 2. ~/.goodvibes/goodvibes/mcp/ user-global directory
208
+ // 2. ~/.goodvibes/<surface>/mcp/ user-global directory
208
209
  locationsScanned++;
209
210
  addSuggestions(scanGoodvibesMcpDir(roots, registeredNames));
210
211
  // 3. Locally installed npx MCP packages
@@ -16,7 +16,9 @@ export interface ScanResult {
16
16
  scannedPorts: number;
17
17
  durationMs: number;
18
18
  }
19
- type DiscoveryRoots = Pick<ShellPathService, 'homeDirectory'>;
19
+ type DiscoveryRoots = Pick<ShellPathService, 'homeDirectory'> & {
20
+ readonly surfaceRoot: string;
21
+ };
20
22
  /** Load previously discovered providers from disk. Returns empty array if file doesn't exist. */
21
23
  export declare function loadPersistedProviders(roots: DiscoveryRoots): DiscoveredServer[];
22
24
  /** Save discovered providers to disk. Merges with existing entries keyed by host:port. */
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/discovery/scanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAMlE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AAEtJ,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,KAAK,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAU9D,iGAAiG;AACjG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,EAAE,CAiBhF;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CA+BzF;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAcrH;AAoMD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0KjC;AA4MD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACtD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkC7B;AAMD;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CASzD;AAED;;;GAGG;AACH,wBAAsB,IAAI,CACxB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACtD,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/discovery/scanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAOlE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AAEtJ,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,KAAK,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG;IAC9D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAUF,iGAAiG;AACjG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,EAAE,CAiBhF;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CA+BzF;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAcrH;AAoMD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0KjC;AA4MD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACtD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkC7B;AAMD;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CASzD;AAED;;;GAGG;AACH,wBAAsB,IAAI,CACxB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACtD,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
@@ -1,10 +1,11 @@
1
1
  import { networkInterfaces } from 'node:os';
2
2
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
3
- import { join, dirname } from 'node:path';
3
+ import { dirname } from 'node:path';
4
4
  import { logger } from '../utils/logger.js';
5
5
  import { discoverContextWindows } from '../providers/context-discovery.js';
6
+ import { resolveSurfaceDirectory } from '../runtime/surface-root.js';
6
7
  function getPersistedPath(roots) {
7
- return join(roots.homeDirectory, '.goodvibes', 'goodvibes', 'discovered-providers.json');
8
+ return resolveSurfaceDirectory(roots.homeDirectory, roots.surfaceRoot, 'discovered-providers.json');
8
9
  }
9
10
  /** Load previously discovered providers from disk. Returns empty array if file doesn't exist. */
10
11
  export function loadPersistedProviders(roots) {
@@ -30,6 +30,7 @@ export interface KeybindingsManagerOptions {
30
30
  readonly configPath?: string;
31
31
  readonly userRoot?: string;
32
32
  readonly homeDirectory?: string;
33
+ readonly surfaceRoot?: string;
33
34
  }
34
35
  /**
35
36
  * KeybindingsManager — owns the resolved keybinding table.
@@ -1 +1 @@
1
- {"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/input/keybindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,sDAAsD;AACtD,MAAM,WAAW,QAAQ;IACvB,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,MAAM,SAAS,GACjB,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,cAAc,GACd,aAAa,GACb,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,aAAa,GACb,uBAAuB,GACvB,qBAAqB,GACrB,WAAW,GACX,cAAc,GACd,MAAM,GACN,MAAM,GACN,OAAO,GACP,cAAc,CAAC;AAEnB,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAuBzD,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,CAuB7D,CAAC;AAKF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAaD;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,yBAAyB;IAM9C,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,YAAY,IAAI,IAAI;IA4BpB,OAAO,CAAC,cAAc;IAQtB;;;;;;OAMG;IACH,OAAO,CACL,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9E,OAAO;IAMV,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,MAAM,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ/E;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAMxC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IASpC,mCAAmC;IACnC,aAAa,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/input/keybindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,sDAAsD;AACtD,MAAM,WAAW,QAAQ;IACvB,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,MAAM,SAAS,GACjB,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,cAAc,GACd,aAAa,GACb,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,aAAa,GACb,uBAAuB,GACvB,qBAAqB,GACrB,WAAW,GACX,cAAc,GACd,MAAM,GACN,MAAM,GACN,OAAO,GACP,cAAc,CAAC;AAEnB,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAuBzD,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,CAuB7D,CAAC;AAKF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAgBD;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,yBAAyB;IAM9C,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,YAAY,IAAI,IAAI;IA4BpB,OAAO,CAAC,cAAc;IAQtB;;;;;;OAMG;IACH,OAAO,CACL,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9E,OAAO;IAMV,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,MAAM,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ/E;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAMxC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IASpC,mCAAmC;IACnC,aAAa,IAAI,MAAM;CAGxB"}
@@ -13,8 +13,8 @@
13
13
  * Each value is a KeyCombo or an array of KeyCombos for multi-binding support.
14
14
  */
15
15
  import { readFileSync, existsSync } from 'node:fs';
16
- import { join } from 'node:path';
17
16
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
17
+ import { resolveSurfaceDirectory } from '../runtime/surface-root.js';
18
18
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
19
19
  /** Human-readable description for each action (used in /keybindings display). */
20
20
  export const ACTION_DESCRIPTIONS = {
@@ -74,7 +74,10 @@ function resolveKeybindingsPath(options) {
74
74
  if (!userRoot) {
75
75
  throw new Error('KeybindingsManager requires configPath or an explicit userRoot/homeDirectory.');
76
76
  }
77
- return join(userRoot, '.goodvibes', 'goodvibes', 'keybindings.json');
77
+ if (!options?.surfaceRoot) {
78
+ throw new Error('KeybindingsManager requires surfaceRoot when deriving a config path.');
79
+ }
80
+ return resolveSurfaceDirectory(userRoot, options.surfaceRoot, 'keybindings.json');
78
81
  }
79
82
  /**
80
83
  * KeybindingsManager — owns the resolved keybinding table.
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/plugins/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/plugins/manager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
2
- import { dirname, join } from 'path';
2
+ import { dirname } from 'path';
3
3
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
4
4
  import { discoverPlugins, getPluginDirectories, loadPlugin, unloadPlugin, } from './loader.js';
5
5
  import { PluginTrustStore, } from '../runtime/plugins/trust.js';
@@ -23,8 +23,10 @@ export class PluginManager {
23
23
  stateFilePath;
24
24
  constructor(options) {
25
25
  this.pathOptions = options.pathOptions;
26
- this.stateFilePath = options.stateFilePath
27
- ?? join(options.pathOptions.homeDir, '.goodvibes', 'goodvibes', 'plugins.json');
26
+ if (!options.stateFilePath) {
27
+ throw new Error('PluginManager requires an explicit stateFilePath.');
28
+ }
29
+ this.stateFilePath = options.stateFilePath;
28
30
  }
29
31
  /**
30
32
  * init — Must be called once at startup with application dependencies.
@@ -18,6 +18,7 @@ export interface BackgroundProviderDiscoveryOptions {
18
18
  restoreSavedModel: (providerRegistry: ProviderRegistry, savedModel: string, savedProvider: string, runtime: RuntimeSelectionState) => void;
19
19
  systemMessageRouter: HostSystemMessageSink;
20
20
  shellPaths: Pick<ShellPathService, 'workingDirectory' | 'homeDirectory'>;
21
+ surfaceRoot: string;
21
22
  }
22
23
  export declare function startBackgroundProviderDiscovery(options: BackgroundProviderDiscoveryOptions): void;
23
24
  export interface BackgroundMcpDiscoveryOptions {
@@ -25,6 +26,7 @@ export interface BackgroundMcpDiscoveryOptions {
25
26
  systemMessageRouter: HostSystemMessageSink;
26
27
  requestRender: () => void;
27
28
  shellPaths: Pick<ShellPathService, 'workingDirectory' | 'homeDirectory'>;
29
+ surfaceRoot: string;
28
30
  }
29
31
  export declare function scheduleBackgroundMcpDiscovery(options: BackgroundMcpDiscoveryOptions): void;
30
32
  export declare const startBackgroundProviderRegistration: typeof startBackgroundProviderDiscovery;
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap-background.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/bootstrap-background.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC3I,mBAAmB,EAAE,qBAAqB,CAAC;IAC3C,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,eAAe,CAAC,CAAC;CAC1E;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,kCAAkC,GAC1C,IAAI,CA6FN;AAED,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,EAAE,qBAAqB,CAAC;IAC3C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,eAAe,CAAC,CAAC;CAC1E;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI,CAqB3F;AAED,eAAO,MAAM,mCAAmC,yCAAmC,CAAC;AACpF,eAAO,MAAM,wBAAwB,uCAAiC,CAAC"}
1
+ {"version":3,"file":"bootstrap-background.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/bootstrap-background.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC3I,mBAAmB,EAAE,qBAAqB,CAAC;IAC3C,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,eAAe,CAAC,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,kCAAkC,GAC1C,IAAI,CA6FN;AAED,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,EAAE,qBAAqB,CAAC;IAC3C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,eAAe,CAAC,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI,CAqB3F;AAED,eAAO,MAAM,mCAAmC,yCAAmC,CAAC;AACpF,eAAO,MAAM,wBAAwB,uCAAiC,CAAC"}
@@ -3,9 +3,9 @@ import { autoRegisterProviders } from '../providers/auto-register.js';
3
3
  import { scan, loadPersistedProviders, persistProviders, removePersistedProviders, scanMcpServers } from '../discovery/index.js';
4
4
  import { summarizeError } from '../utils/error-display.js';
5
5
  export function startBackgroundProviderDiscovery(options) {
6
- const { configManager, providerRegistry, runtime, requestRender, restoreSavedModel, systemMessageRouter, shellPaths } = options;
6
+ const { configManager, providerRegistry, runtime, requestRender, restoreSavedModel, systemMessageRouter, shellPaths, surfaceRoot } = options;
7
7
  autoRegisterProviders(providerRegistry);
8
- const persisted = loadPersistedProviders(shellPaths);
8
+ const persisted = loadPersistedProviders({ ...shellPaths, surfaceRoot });
9
9
  if (persisted.length > 0) {
10
10
  try {
11
11
  providerRegistry.registerDiscoveredProviders(persisted);
@@ -42,7 +42,7 @@ export function startBackgroundProviderDiscovery(options) {
42
42
  systemMessageRouter.low(`[Scan] Found ${server.name} at ${server.host}:${server.port} (${server.models.length} model${server.models.length !== 1 ? 's' : ''})`);
43
43
  }
44
44
  if (result.servers.length > 0 && removedServers.length > 0) {
45
- removePersistedProviders(shellPaths, removedServers);
45
+ removePersistedProviders({ ...shellPaths, surfaceRoot }, removedServers);
46
46
  for (const server of removedServers) {
47
47
  systemMessageRouter.low(`[Scan] ${server.name} at ${server.host}:${server.port} is no longer reachable — removed`);
48
48
  const wasActive = server.models.includes(currentModel);
@@ -64,7 +64,7 @@ export function startBackgroundProviderDiscovery(options) {
64
64
  }
65
65
  }
66
66
  if (result.servers.length > 0) {
67
- persistProviders(shellPaths, result.servers);
67
+ persistProviders({ ...shellPaths, surfaceRoot }, result.servers);
68
68
  }
69
69
  if (newServers.length > 0 || removedServers.length > 0) {
70
70
  requestRender();
@@ -74,13 +74,13 @@ export function startBackgroundProviderDiscovery(options) {
74
74
  });
75
75
  }
76
76
  export function scheduleBackgroundMcpDiscovery(options) {
77
- const { mcpRegistry, systemMessageRouter, requestRender, shellPaths } = options;
77
+ const { mcpRegistry, systemMessageRouter, requestRender, shellPaths, surfaceRoot } = options;
78
78
  mcpRegistry.connectAll(shellPaths).catch((err) => {
79
79
  logger.debug('MCP auto-connect failed (non-fatal)', { error: summarizeError(err) });
80
80
  });
81
81
  setTimeout(() => {
82
82
  const registeredNames = new Set(mcpRegistry.serverNames);
83
- scanMcpServers(shellPaths, registeredNames).then((result) => {
83
+ scanMcpServers({ ...shellPaths, surfaceRoot }, registeredNames).then((result) => {
84
84
  if (result.suggestions.length === 0)
85
85
  return;
86
86
  for (const suggestion of result.suggestions) {
@@ -22,6 +22,7 @@ export interface GuidancePersistenceOptions {
22
22
  readonly guidancePath?: string;
23
23
  readonly userRoot?: string;
24
24
  readonly homeDirectory?: string;
25
+ readonly surfaceRoot?: string;
25
26
  }
26
27
  export declare function dismissGuidance(id: string, options?: GuidancePersistenceOptions): void;
27
28
  export declare function resetGuidance(id?: string, options?: GuidancePersistenceOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/guidance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC;AAE1F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC9D;AAOD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AA6BD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAItF;AAED,wBAAgB,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAQrF;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,0BAA0B,EACpC,WAAW,EAAE,wBAAwB,EACrC,OAAO,CAAC,EAAE,0BAA0B,GACnC,YAAY,EAAE,CAuFhB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAQ5E"}
1
+ {"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/guidance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAG9E,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC;AAE1F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC9D;AAOD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAgCD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAItF;AAED,wBAAgB,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAQrF;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,0BAA0B,EACpC,WAAW,EAAE,wBAAwB,EACrC,OAAO,CAAC,EAAE,0BAA0B,GACnC,YAAY,EAAE,CAuFhB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAQ5E"}
@@ -1,5 +1,6 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
2
- import { dirname, join } from 'path';
2
+ import { dirname } from 'path';
3
+ import { resolveSurfaceDirectory } from './surface-root.js';
3
4
  function resolveGuidancePath(options) {
4
5
  if (options?.guidancePath) {
5
6
  return options.guidancePath;
@@ -8,7 +9,10 @@ function resolveGuidancePath(options) {
8
9
  if (!userRoot) {
9
10
  throw new Error('Guidance persistence requires guidancePath or an explicit userRoot/homeDirectory.');
10
11
  }
11
- return join(userRoot, '.goodvibes', 'goodvibes', 'guidance.json');
12
+ if (!options?.surfaceRoot) {
13
+ throw new Error('Guidance persistence requires surfaceRoot when deriving guidancePath.');
14
+ }
15
+ return resolveSurfaceDirectory(userRoot, options.surfaceRoot, 'guidance.json');
12
16
  }
13
17
  function readDismissals(options) {
14
18
  try {
@@ -12,7 +12,7 @@ export declare class DistributedRuntimeManager implements DistributedRuntimeMana
12
12
  automationBridge: DistributedAutomationBridge | null;
13
13
  eventPublisher: ((event: string, payload: unknown) => void) | null;
14
14
  loaded: boolean;
15
- constructor(store?: PersistentStore<DistributedRuntimeSnapshotStore>);
15
+ constructor(storeOrPath: PersistentStore<DistributedRuntimeSnapshotStore> | string);
16
16
  attachRuntime(input: {
17
17
  readonly sessionBridge?: DistributedSessionBridge | null;
18
18
  readonly approvalBridge?: DistributedApprovalBridge | null;
@@ -1 +1 @@
1
- {"version":3,"file":"distributed-runtime-manager.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/remote/distributed-runtime-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"distributed-runtime-manager.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/remote/distributed-runtime-manager.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import { getDistributedNodeHostContract } from './distributed-runtime-contract.j
3
3
  import { attachDistributedRuntime, getDistributedRuntimeSnapshot, listDistributedRuntimeAudit, listDistributedRuntimePairRequests, listDistributedRuntimePeers, listDistributedRuntimeWork, startDistributedRuntime, } from './distributed-runtime-store.js';
4
4
  import { approveDistributedPairRequest, authenticateDistributedPeerToken, disconnectDistributedPeer, rejectDistributedPairRequest, requestDistributedPairing, revokeDistributedPeerToken, rotateDistributedPeerToken, verifyDistributedPairRequest, heartbeatDistributedPeer, } from './distributed-runtime-pairing.js';
5
5
  import { cancelDistributedWork, claimDistributedWork, completeDistributedWork, enqueueDistributedWork, invokeDistributedPeer, } from './distributed-runtime-work.js';
6
- const STORE_PATH = '.goodvibes/goodvibes/remote/distributed-runtime.json';
7
6
  export class DistributedRuntimeManager {
8
7
  store;
9
8
  pairRequests = new Map();
@@ -16,8 +15,10 @@ export class DistributedRuntimeManager {
16
15
  automationBridge = null;
17
16
  eventPublisher = null;
18
17
  loaded = false;
19
- constructor(store) {
20
- this.store = store ?? new PersistentStore(STORE_PATH);
18
+ constructor(storeOrPath) {
19
+ this.store = typeof storeOrPath === 'string'
20
+ ? new PersistentStore(storeOrPath)
21
+ : storeOrPath;
21
22
  }
22
23
  attachRuntime(input) {
23
24
  attachDistributedRuntime(this, input);
@@ -53,20 +53,23 @@ export interface SandboxQemuSetupManifest {
53
53
  readonly sessionMode: string;
54
54
  };
55
55
  }
56
+ export interface SandboxProvisioningOptions {
57
+ readonly surfaceRoot: string;
58
+ }
56
59
  export declare function buildSandboxDoctorChecks(manager: ConfigManager): SandboxDoctorCheck[];
57
60
  export declare function renderSandboxDoctor(manager: ConfigManager): string;
58
- export declare function exportSandboxGuestBundle(manager: ConfigManager, workspaceRoot: string, pathArg: string): {
61
+ export declare function exportSandboxGuestBundle(manager: ConfigManager, workspaceRoot: string, pathArg: string, _options: SandboxProvisioningOptions): {
59
62
  path: string;
60
63
  bundle: SandboxGuestBundle;
61
64
  };
62
65
  export declare function inspectSandboxGuestBundle(bundle: SandboxGuestBundle): string;
63
- export declare function scaffoldSandboxQemuInitBundle(manager: ConfigManager, workspaceRoot: string, pathArg: string): SandboxQemuInitBundle;
64
- export declare function scaffoldSandboxQemuSetupBundle(manager: ConfigManager, workspaceRoot: string, pathArg: string): SandboxQemuSetupBundle;
66
+ export declare function scaffoldSandboxQemuInitBundle(manager: ConfigManager, workspaceRoot: string, pathArg: string, options: SandboxProvisioningOptions): SandboxQemuInitBundle;
67
+ export declare function scaffoldSandboxQemuSetupBundle(manager: ConfigManager, workspaceRoot: string, pathArg: string, options: SandboxProvisioningOptions): SandboxQemuSetupBundle;
65
68
  export declare function createSandboxQemuImage(workspaceRoot: string, imagePathArg: string, sizeGb: number, qemuImgBinary?: string): {
66
69
  path: string;
67
70
  sizeGb: number;
68
71
  };
69
- export declare function bootstrapSandboxQemuSetupBundle(manager: ConfigManager, workspaceRoot: string, pathArg: string, sizeGb: number): SandboxQemuSetupBundle;
72
+ export declare function bootstrapSandboxQemuSetupBundle(manager: ConfigManager, workspaceRoot: string, pathArg: string, sizeGb: number, options: SandboxProvisioningOptions): SandboxQemuSetupBundle;
70
73
  export declare function inspectSandboxQemuSetupManifest(manifest: SandboxQemuSetupManifest): string;
71
74
  export declare function loadSandboxQemuSetupManifest(workspaceRoot: string, pathArg: string): SandboxQemuSetupManifest;
72
75
  export declare function applySandboxQemuSetupManifest(manager: ConfigManager, manifest: SandboxQemuSetupManifest): void;
@@ -1 +1 @@
1
- {"version":3,"file":"provisioning.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/sandbox/provisioning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provisioning.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/runtime/sandbox/provisioning.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, join, resolve } from 'node:path';
3
3
  import { spawnSync } from 'node:child_process';
4
4
  import { getSandboxConfigSnapshot } from './manager.js';
5
+ import { requireSurfaceRoot } from '../surface-root.js';
5
6
  import { renderQemuWrapperTemplate } from '@pellux/goodvibes-sdk/platform/runtime/sandbox/qemu-wrapper-template';
6
7
  function existsExecutable(pathArg) {
7
8
  if (!pathArg)
@@ -66,7 +67,7 @@ export function renderSandboxDoctor(manager) {
66
67
  : ' next: fix the failing items, then run /sandbox doctor again',
67
68
  ].join('\n');
68
69
  }
69
- export function exportSandboxGuestBundle(manager, workspaceRoot, pathArg) {
70
+ export function exportSandboxGuestBundle(manager, workspaceRoot, pathArg, _options) {
70
71
  const config = getSandboxConfigSnapshot(manager);
71
72
  const targetPath = resolve(workspaceRoot, pathArg);
72
73
  const bundle = {
@@ -106,14 +107,14 @@ export function inspectSandboxGuestBundle(bundle) {
106
107
  ...bundle.nextSteps.map((step) => ` next: ${step}`),
107
108
  ].join('\n');
108
109
  }
109
- export function scaffoldSandboxQemuInitBundle(manager, workspaceRoot, pathArg) {
110
+ export function scaffoldSandboxQemuInitBundle(manager, workspaceRoot, pathArg, options) {
110
111
  const targetDir = resolve(workspaceRoot, pathArg);
111
112
  mkdirSync(targetDir, { recursive: true });
112
113
  const wrapperPath = join(targetDir, 'qemu-wrapper.sh');
113
114
  const guestBundlePath = join(targetDir, 'guest-bundle.json');
114
115
  const readmePath = join(targetDir, 'README.txt');
115
116
  writeFileSync(wrapperPath, renderQemuWrapperTemplate(), { encoding: 'utf-8', mode: 0o755 });
116
- exportSandboxGuestBundle(manager, workspaceRoot, guestBundlePath);
117
+ exportSandboxGuestBundle(manager, workspaceRoot, guestBundlePath, options);
117
118
  const config = getSandboxConfigSnapshot(manager);
118
119
  const readme = [
119
120
  'GoodVibes QEMU Sandbox Init Bundle',
@@ -137,8 +138,8 @@ export function scaffoldSandboxQemuInitBundle(manager, workspaceRoot, pathArg) {
137
138
  writeFileSync(readmePath, `${readme}\n`, 'utf-8');
138
139
  return { directory: targetDir, wrapperPath, guestBundlePath, readmePath };
139
140
  }
140
- export function scaffoldSandboxQemuSetupBundle(manager, workspaceRoot, pathArg) {
141
- const base = scaffoldSandboxQemuInitBundle(manager, workspaceRoot, pathArg);
141
+ export function scaffoldSandboxQemuSetupBundle(manager, workspaceRoot, pathArg, options) {
142
+ const base = scaffoldSandboxQemuInitBundle(manager, workspaceRoot, pathArg, options);
142
143
  const targetDir = base.directory;
143
144
  const config = getSandboxConfigSnapshot(manager);
144
145
  const imageDir = join(targetDir, 'images');
@@ -200,7 +201,7 @@ export function scaffoldSandboxQemuSetupBundle(manager, workspaceRoot, pathArg)
200
201
  ` Port ${config.qemuGuestPort}`,
201
202
  ` User ${config.qemuGuestUser || 'goodvibes'}`,
202
203
  ' StrictHostKeyChecking accept-new',
203
- ' UserKnownHostsFile ~/.goodvibes/goodvibes/known_hosts',
204
+ ` UserKnownHostsFile ~/.goodvibes/${requireSurfaceRoot(options.surfaceRoot, 'Sandbox provisioning surfaceRoot')}/known_hosts`,
204
205
  ' LogLevel ERROR',
205
206
  ].join('\n');
206
207
  writeFileSync(sshConfigPath, `${sshConfig}\n`, 'utf-8');
@@ -278,8 +279,8 @@ export function createSandboxQemuImage(workspaceRoot, imagePathArg, sizeGb, qemu
278
279
  }
279
280
  return { path: targetPath, sizeGb };
280
281
  }
281
- export function bootstrapSandboxQemuSetupBundle(manager, workspaceRoot, pathArg, sizeGb) {
282
- const bundle = scaffoldSandboxQemuSetupBundle(manager, workspaceRoot, pathArg);
282
+ export function bootstrapSandboxQemuSetupBundle(manager, workspaceRoot, pathArg, sizeGb, options) {
283
+ const bundle = scaffoldSandboxQemuSetupBundle(manager, workspaceRoot, pathArg, options);
283
284
  createSandboxQemuImage(workspaceRoot, bundle.imagePath, sizeGb);
284
285
  applySandboxQemuSetupManifest(manager, loadSandboxQemuSetupManifest(workspaceRoot, bundle.manifestPath));
285
286
  return bundle;
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/services.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,7 @@ export function createRuntimeServices(options) {
95
95
  const secretsManager = new SecretsManager({
96
96
  projectRoot: workingDirectory,
97
97
  globalHome: homeDirectory,
98
+ surfaceRoot,
98
99
  configManager,
99
100
  });
100
101
  const subscriptionManager = new SubscriptionManager(shellPaths.resolveUserPath(surfaceRoot, 'subscriptions.json'));
@@ -134,7 +135,7 @@ export function createRuntimeServices(options) {
134
135
  const profileManager = new ProfileManager(shellPaths.resolveUserPath(surfaceRoot, 'profiles'));
135
136
  const bookmarkManager = new BookmarkManager(shellPaths.resolveUserPath(surfaceRoot, 'bookmarks'));
136
137
  const sessionManager = new SessionManager(workingDirectory);
137
- const sessionOrchestration = new CrossSessionTaskRegistry(workingDirectory);
138
+ const sessionOrchestration = new CrossSessionTaskRegistry(shellPaths.resolveProjectPath(surfaceRoot, 'sessions', 'task-graph.json'));
138
139
  const hookActivityTracker = new HookActivityTracker();
139
140
  const watcherRegistry = new WatcherRegistry({
140
141
  storePath: shellPaths.resolveProjectPath(surfaceRoot, 'watchers.json'),
@@ -271,7 +272,7 @@ export function createRuntimeServices(options) {
271
272
  const channelPolicy = new ChannelPolicyManager({
272
273
  storePath: shellPaths.resolveProjectPath(surfaceRoot, 'channels', 'policies.json'),
273
274
  });
274
- const distributedRuntime = new DistributedRuntimeManager();
275
+ const distributedRuntime = new DistributedRuntimeManager(shellPaths.resolveProjectPath(surfaceRoot, 'remote', 'distributed-runtime.json'));
275
276
  distributedRuntime.attachRuntime({
276
277
  sessionBridge: sessionBroker,
277
278
  approvalBridge: approvalBroker,
@@ -1,2 +1,4 @@
1
1
  export declare function requireSurfaceRoot(surfaceRoot: string, source?: string): string;
2
+ export declare function resolveSurfaceDirectory(baseDirectory: string, surfaceRoot: string, ...segments: string[]): string;
3
+ export declare function resolveSurfaceSharedFile(baseDirectory: string, surfaceRoot: string, extension?: string): string;
2
4
  //# sourceMappingURL=surface-root.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"surface-root.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/surface-root.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,SAAgB,GAAG,MAAM,CAMtF"}
1
+ {"version":3,"file":"surface-root.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/runtime/surface-root.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,SAAgB,GAAG,MAAM,CAMtF;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAEjH;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,MAAM,CAE/G"}
@@ -1,3 +1,4 @@
1
+ import { join } from 'node:path';
1
2
  export function requireSurfaceRoot(surfaceRoot, source = 'surfaceRoot') {
2
3
  const normalized = surfaceRoot.trim();
3
4
  if (!normalized || normalized.includes('/') || normalized.includes('\\') || normalized === '.' || normalized === '..') {
@@ -5,3 +6,9 @@ export function requireSurfaceRoot(surfaceRoot, source = 'surfaceRoot') {
5
6
  }
6
7
  return normalized;
7
8
  }
9
+ export function resolveSurfaceDirectory(baseDirectory, surfaceRoot, ...segments) {
10
+ return join(baseDirectory, '.goodvibes', requireSurfaceRoot(surfaceRoot), ...segments);
11
+ }
12
+ export function resolveSurfaceSharedFile(baseDirectory, surfaceRoot, extension = 'json') {
13
+ return join(baseDirectory, '.goodvibes', `${requireSurfaceRoot(surfaceRoot)}.${extension}`);
14
+ }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Multi-session Orchestration — Cross-Session Task Registry
3
3
  *
4
- * Wraps SessionTaskGraph with persistence to
5
- * `.goodvibes/goodvibes/sessions/task-graph.json` and reconnect/resume hydration.
4
+ * Wraps SessionTaskGraph with persistence to a host-owned task graph path
5
+ * and reconnect/resume hydration.
6
6
  *
7
7
  * The registry is the single authoritative source for the cross-session task
8
8
  * graph within a process. Command handlers and sync integrations receive an
@@ -27,10 +27,9 @@ export declare class CrossSessionTaskRegistry {
27
27
  private _flushTimer;
28
28
  _exitHandler: (() => void) | null;
29
29
  /**
30
- * @param baseDir - Project base directory.
31
- * The graph is persisted at `<baseDir>/.goodvibes/goodvibes/sessions/task-graph.json`.
30
+ * @param graphPath - Absolute host-owned task graph path.
32
31
  */
33
- constructor(baseDir: string);
32
+ constructor(graphPath: string);
34
33
  /**
35
34
  * Link a task into the global graph — registers the task as a
36
35
  * cross-session ref and optionally adds a dependency edge.
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/sessions/orchestration/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAQ/E;;;;;;;;GAQG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAA8C;IACjE,YAAY,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAEzC;;;OAGG;gBACgB,OAAO,EAAE,MAAM;IAiBlC;;;;;;;;OAQG;IACI,QAAQ,CACb,GAAG,EAAE,mBAAmB,EACxB,SAAS,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EACjD,MAAM,CAAC,EAAE,MAAM,GACd;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAmBlC;;;;;;;OAOG;IACI,eAAe,CACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,GACzB,OAAO;IAMV;;OAEG;IACI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIjF;;OAEG;IACI,UAAU,IAAI,mBAAmB,EAAE;IAI1C;;OAEG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIjE;;OAEG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIhF;;OAEG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAM9E;;;;;;;;;;;OAWG;IACI,eAAe,CACpB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9C,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IA8BtD;;;;;OAKG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAMrD;;OAEG;IACI,WAAW,IAAI,iBAAiB,EAAE;IAMzC;;;;;OAKG;IACI,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB;IAQ/D;;;OAGG;IACI,QAAQ,IAAI,wBAAwB;IAI3C;;;OAGG;IACI,KAAK,IAAI,IAAI;IAQpB;;;;;OAKG;IACI,OAAO,IAAI,IAAI;IAUtB;;;OAGG;IACH,OAAO,CAAC,KAAK;IA4Bb;;;OAGG;IACH,OAAO,CAAC,MAAM;IAId,+EAA+E;IAC/E,OAAO,CAAC,eAAe;IAmBvB,0EAA0E;IAC1E,OAAO,CAAC,UAAU;CAgBnB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../src/_internal/platform/sessions/orchestration/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAQ/E;;;;;;;;GAQG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAA8C;IACjE,YAAY,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAEzC;;OAEG;gBACgB,SAAS,EAAE,MAAM;IAiBpC;;;;;;;;OAQG;IACI,QAAQ,CACb,GAAG,EAAE,mBAAmB,EACxB,SAAS,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EACjD,MAAM,CAAC,EAAE,MAAM,GACd;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAmBlC;;;;;;;OAOG;IACI,eAAe,CACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,GACzB,OAAO;IAMV;;OAEG;IACI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIjF;;OAEG;IACI,UAAU,IAAI,mBAAmB,EAAE;IAI1C;;OAEG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIjE;;OAEG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAIhF;;OAEG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAM9E;;;;;;;;;;;OAWG;IACI,eAAe,CACpB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9C,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IA8BtD;;;;;OAKG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAMrD;;OAEG;IACI,WAAW,IAAI,iBAAiB,EAAE;IAMzC;;;;;OAKG;IACI,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB;IAQ/D;;;OAGG;IACI,QAAQ,IAAI,wBAAwB;IAI3C;;;OAGG;IACI,KAAK,IAAI,IAAI;IAQpB;;;;;OAKG;IACI,OAAO,IAAI,IAAI;IAUtB;;;OAGG;IACH,OAAO,CAAC,KAAK;IA4Bb;;;OAGG;IACH,OAAO,CAAC,MAAM;IAId,+EAA+E;IAC/E,OAAO,CAAC,eAAe;IAmBvB,0EAA0E;IAC1E,OAAO,CAAC,UAAU;CAgBnB"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Multi-session Orchestration — Cross-Session Task Registry
3
3
  *
4
- * Wraps SessionTaskGraph with persistence to
5
- * `.goodvibes/goodvibes/sessions/task-graph.json` and reconnect/resume hydration.
4
+ * Wraps SessionTaskGraph with persistence to a host-owned task graph path
5
+ * and reconnect/resume hydration.
6
6
  *
7
7
  * The registry is the single authoritative source for the cross-session task
8
8
  * graph within a process. Command handlers and sync integrations receive an
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
12
12
  import { writeFile } from 'node:fs/promises';
13
- import { join } from 'path';
13
+ import { dirname } from 'path';
14
14
  import { logger } from '../../utils/logger.js';
15
15
  import { SessionTaskGraph } from './graph.js';
16
16
  import { makeRefKey } from './types.js';
@@ -35,12 +35,11 @@ export class CrossSessionTaskRegistry {
35
35
  _flushTimer = null;
36
36
  _exitHandler = null;
37
37
  /**
38
- * @param baseDir - Project base directory.
39
- * The graph is persisted at `<baseDir>/.goodvibes/goodvibes/sessions/task-graph.json`.
38
+ * @param graphPath - Absolute host-owned task graph path.
40
39
  */
41
- constructor(baseDir) {
42
- this._dir = join(baseDir, '.goodvibes', 'goodvibes', 'sessions');
43
- this._graphPath = join(this._dir, 'task-graph.json');
40
+ constructor(graphPath) {
41
+ this._graphPath = graphPath;
42
+ this._dir = dirname(graphPath);
44
43
  this._graph = new SessionTaskGraph();
45
44
  this._load();
46
45
  this._exitHandler = () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-sdk",
3
- "version": "0.18.16",
3
+ "version": "0.18.17",
4
4
  "description": "Umbrella GoodVibes SDK with operator, peer, daemon, transport, and runtime-specific integration layers.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",