@pellux/goodvibes-agent 0.1.65 → 0.1.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to GoodVibes Agent will be recorded here.
4
4
 
5
+ ## 0.1.66 - 2026-05-31
6
+
7
+ - Removed remote-runner and node/device posture wording from first-run Agent setup surfaces.
8
+ - Replaced the blocked remote-runner workspace action with a read-only build-delegation status action.
9
+ - Added onboarding/workspace regressions to keep visible setup focused on Agent features instead of copied runner internals.
10
+
5
11
  ## 0.1.65 - 2026-05-31
6
12
 
7
13
  - Made the operator workspace more product-facing by replacing foundation/setup jargon with Agent profile, runtime status, voice/media, and browser-tool language.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-agent",
3
- "version": "0.1.65",
3
+ "version": "0.1.66",
4
4
  "private": false,
5
5
  "description": "GoodVibes personal operator assistant TUI with a proactive Agent product brain, isolated Agent Knowledge, local profiles, routines, skills, personas, and explicit build delegation.",
6
6
  "type": "module",
@@ -65,7 +65,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
65
65
  { id: 'knowledge-search', label: 'Search Agent knowledge', detail: 'Search the isolated Agent Knowledge index. Close this workspace and provide an actual query.', command: '/knowledge search <query>', kind: 'command', safety: 'read-only' },
66
66
  { id: 'knowledge-ingest-url', label: 'Ingest URL', detail: 'Ingest a URL into Agent Knowledge only. Requires an explicit --yes command with a real URL.', command: '/knowledge ingest-url <url> --yes', kind: 'command', safety: 'safe' },
67
67
  { id: 'knowledge-import-bookmarks', label: 'Import bookmarks', detail: 'Import a browser bookmark export into Agent Knowledge only. Requires an explicit --yes command with a real path.', command: '/knowledge import-bookmarks <path> --yes', kind: 'command', safety: 'safe' },
68
- { id: 'knowledge-review-queue', label: 'Review queue', detail: 'Inspect source/node/issue review work before accepting, rejecting, or resolving anything.', command: '/knowledge queue', kind: 'command', safety: 'read-only' },
68
+ { id: 'knowledge-review-queue', label: 'Review queue', detail: 'Inspect source, item, and issue review work before accepting, rejecting, or resolving anything.', command: '/knowledge queue', kind: 'command', safety: 'read-only' },
69
69
  { id: 'knowledge-consolidation', label: 'Consolidation review', detail: 'Inspect consolidation candidates and reports before running Agent Knowledge mutations.', command: '/knowledge candidates', kind: 'command', safety: 'read-only' },
70
70
  { id: 'knowledge-ask', label: 'Ask Agent knowledge', detail: 'Close this workspace and run /knowledge ask <question> or ask normally in chat.', kind: 'guidance', safety: 'read-only' },
71
71
  ],
@@ -81,7 +81,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
81
81
  { id: 'tts-provider', label: 'Choose TTS provider', detail: 'Open provider/model routing for spoken responses through the settings flow.', command: '/config tts.provider', kind: 'command', safety: 'safe' },
82
82
  { id: 'tts-speak', label: 'Speak a prompt', detail: 'Submit a normal assistant turn and play the reply through configured live TTS. Close this workspace and provide real prompt text.', command: '/tts <prompt>', kind: 'command', safety: 'safe' },
83
83
  { id: 'image-attach', label: 'Attach image input', detail: 'Attach an image to the next assistant turn. Close this workspace and provide a real path and prompt.', command: '/image <path> <prompt>', kind: 'command', safety: 'safe' },
84
- { id: 'browser-surface', label: 'Browser tools', detail: 'Inspect browser/tool readiness without starting inbound endpoints or runtime services.', command: '/setup services', kind: 'command', safety: 'read-only' },
84
+ { id: 'browser-tools', label: 'Browser tools', detail: 'Inspect browser/tool readiness without starting inbound endpoints or runtime services.', command: '/setup services', kind: 'command', safety: 'read-only' },
85
85
  { id: 'mcp-browser', label: 'Browser MCP tools', detail: 'Inspect MCP servers and tools, including browser/automation roles, without mutating server setup.', command: '/mcp servers', kind: 'command', safety: 'read-only' },
86
86
  ],
87
87
  },
@@ -212,7 +212,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
212
212
  actions: [
213
213
  { id: 'delegate-guidance', label: 'Delegation rule', detail: 'For build/fix/review work, delegate one request to GoodVibes TUI instead of spawning local Engineer/Reviewer/Tester roots.', kind: 'guidance', safety: 'delegates' },
214
214
  { id: 'review-command', label: 'Review delegation command', detail: 'Use /delegate --wrfc <task> only when the user explicitly asks for code review/build execution. Close this workspace and include the actual task text.', kind: 'guidance', safety: 'delegates' },
215
- { id: 'remote-policy', label: 'Remote runner policy', detail: 'Remote dispatch/rerun is blocked in Agent; TUI owns runner topology for delegated build work.', command: '/remote dispatch', kind: 'command', safety: 'blocked' },
215
+ { id: 'delegation-status', label: 'Delegation status', detail: 'Inspect build-delegation receipts and shared-session status without starting coding work.', command: '/delegate status', kind: 'command', safety: 'read-only' },
216
216
  ],
217
217
  },
218
218
  ];
@@ -145,14 +145,14 @@ export function registerExperienceRuntimeCommands(registry: CommandRegistry): vo
145
145
  });
146
146
 
147
147
  registry.register({
148
- name: 'runner-pool',
148
+ name: 'worker-pool',
149
149
  aliases: ['pool'],
150
- description: 'Dedicated front-door for remote runner pool review and assignment flows',
150
+ description: 'Dedicated front-door for remote worker pool review flows',
151
151
  usage: '[list|show <id>|create <id> <label...>|assign <pool> <runner>|unassign <pool> <runner>]',
152
152
  async handler(args, ctx) {
153
153
  const sub = (args[0] ?? 'list').toLowerCase();
154
154
  if (!ctx.executeCommand) {
155
- ctx.print('Runner pool controls are not available in this runtime.');
155
+ ctx.print('Remote worker pool controls are not available in this runtime.');
156
156
  return;
157
157
  }
158
158
  if (sub === 'list') {
@@ -171,7 +171,7 @@ export function registerExperienceRuntimeCommands(registry: CommandRegistry): vo
171
171
  await ctx.executeCommand('remote', ['pool', sub, args[1], args[2]]);
172
172
  return;
173
173
  }
174
- ctx.print('Usage: /runner-pool [list|show <id>|create <id> <label...>|assign <pool> <runner>|unassign <pool> <runner>]');
174
+ ctx.print('Usage: /worker-pool [list|show <id>]');
175
175
  },
176
176
  });
177
177
 
@@ -317,7 +317,7 @@ export function registerHealthRuntimeCommands(registry: CommandRegistry): void {
317
317
  ` settings conflicts: ${settingsSnapshot.conflicts.length}`,
318
318
  ` managed locks: ${settingsSnapshot.managedLockCount}`,
319
319
  ` local auth users: ${readModels.localAuth.getSnapshot().userCount}`,
320
- ` remote runners: ${snapshot.remoteRunnerCount}`,
320
+ ` remote workers: ${snapshot.remoteRunnerCount}`,
321
321
  ...formatSessionMaintenanceLines(maintenance, 'guided').map((line) => ` ${line}`),
322
322
  ...(snapshot.issues.length > 0 ? ['', ...snapshot.issues.map((issue) => ` [${issue.severity.toUpperCase()}] ${issue.area}: ${issue.message}`)] : []),
323
323
  ...(snapshot.serviceIssues.length > 0 ? ['', ...snapshot.serviceIssues.map((issue) => ` service: ${issue}`)] : []),
@@ -89,7 +89,7 @@ export async function buildSetupReviewSnapshot(ctx: CommandContext): Promise<Set
89
89
  {
90
90
  severity: remoteRunnerCount > 0 ? 'pass' : 'warn',
91
91
  area: 'remote',
92
- message: remoteRunnerCount > 0 ? `${remoteRunnerCount} remote runner contract(s)` : 'no remote runner contracts registered',
92
+ message: remoteRunnerCount > 0 ? `${remoteRunnerCount} remote worker contract(s)` : 'no remote worker contracts registered',
93
93
  },
94
94
  ];
95
95
 
@@ -56,7 +56,7 @@ export function inspectSetupTransferBundle(bundle: SetupTransferBundle): string
56
56
  ` services: ${bundle.startupReview.serviceCount}`,
57
57
  ` plugins: ${bundle.startupReview.pluginCount}`,
58
58
  ` skills: ${bundle.startupReview.skillCount}`,
59
- ` remote runners: ${bundle.startupReview.remoteRunnerCount}`,
59
+ ` remote workers: ${bundle.startupReview.remoteRunnerCount}`,
60
60
  ` config keys: ${Object.keys(bundle.config ?? {}).length}`,
61
61
  ` curated plugins: ${ecosystemPluginCount}`,
62
62
  ` curated skills: ${ecosystemSkillCount}`,
@@ -57,7 +57,7 @@ export function registerLocalSetupCommands(registry: CommandRegistry): void {
57
57
  ` mcp servers known: ${snapshot.mcpServerCount}`,
58
58
  ` mcp quarantined: ${snapshot.quarantinedMcpCount}`,
59
59
  ` mcp elevated: ${snapshot.elevatedMcpCount}`,
60
- ` remote runners: ${snapshot.remoteRunnerCount}`,
60
+ ` remote workers: ${snapshot.remoteRunnerCount}`,
61
61
  '',
62
62
  ` service ids: ${snapshot.services.join(', ') || '(none)'}`,
63
63
  ` plugin dirs: ${snapshot.pluginDirectories.join(', ') || '(none)'}`,
@@ -111,7 +111,7 @@ export function registerLocalSetupCommands(registry: CommandRegistry): void {
111
111
  const runners = ctx.ops.remoteRuntime?.listContracts() ?? [];
112
112
  ctx.print([
113
113
  'Startup Remote',
114
- ` runner contracts: ${snapshot.remoteRunnerCount}`,
114
+ ` worker contracts: ${snapshot.remoteRunnerCount}`,
115
115
  ...runners.map((runner) => ` ${runner.id} [${runner.trustClass}] ${runner.label}`),
116
116
  ].join('\n'));
117
117
  return;
@@ -131,14 +131,14 @@ export function registerProductRuntimeCommands(registry: CommandRegistry): void
131
131
  });
132
132
  registry.register({
133
133
  name: 'bridge',
134
- description: 'Review and operate self-hosted bridge and remote runner flows',
134
+ description: 'Review self-hosted bridge and remote worker flows',
135
135
  usage: '[status|pools|assign <pool> <runner> --yes|runner <id>|review <artifactId>|export <artifactId> [path] --yes|import <path> --yes]',
136
136
  async handler(args, ctx) {
137
137
  const parsed = stripYesFlag(args);
138
138
  const commandArgs = [...parsed.rest];
139
139
  const shellPaths = requireShellPaths(ctx);
140
140
  if (!ctx.ops.remoteRuntime) {
141
- ctx.print('Remote runner registry is not available in this runtime.');
141
+ ctx.print('Remote worker registry is not available in this runtime.');
142
142
  return;
143
143
  }
144
144
  const remoteRegistry = ctx.ops.remoteRuntime;
@@ -148,7 +148,7 @@ export function registerProductRuntimeCommands(registry: CommandRegistry): void
148
148
  ctx.print([
149
149
  'Bridge Status',
150
150
  ` remote pools: ${remote.pools.length}`,
151
- ` runner contracts: ${remote.contracts.length}`,
151
+ ` worker contracts: ${remote.contracts.length}`,
152
152
  ` review artifacts: ${remote.artifacts.length}`,
153
153
  ].join('\n'));
154
154
  return;
@@ -157,7 +157,7 @@ export function registerProductRuntimeCommands(registry: CommandRegistry): void
157
157
  const pools = remoteRegistry.listPools();
158
158
  ctx.print(pools.length > 0
159
159
  ? ['Bridge Pools', ...pools.map((pool) => ` ${pool.id} runners=${pool.runnerIds.length} trust=${pool.trustClass}`)].join('\n')
160
- : 'Bridge Pools\n No runner pools registered yet.');
160
+ : 'Bridge Pools\n No worker pools registered yet.');
161
161
  return;
162
162
  }
163
163
  if (sub === 'assign') {
@@ -13,9 +13,6 @@ type RemotePoolLike = {
13
13
  type RemoteRegistryLike = {
14
14
  listPools(): readonly RemotePoolLike[];
15
15
  getPool(id: string): RemotePoolLike | null | undefined;
16
- createPool(input: { id: string; label: string }): RemotePoolLike;
17
- assignRunnerToPool(poolId: string, runnerId: string): RemotePoolLike | null | undefined;
18
- removeRunnerFromPool(poolId: string, runnerId: string): RemotePoolLike | null | undefined;
19
16
  };
20
17
 
21
18
  export function handleRemotePoolCommand(
@@ -29,12 +26,12 @@ export function handleRemotePoolCommand(
29
26
  if (mode === 'list') {
30
27
  const pools = remoteRegistry.listPools();
31
28
  if (pools.length === 0) {
32
- ctx.print('No remote runner pools defined yet.');
29
+ ctx.print('No remote worker pools defined yet.');
33
30
  return true;
34
31
  }
35
32
  ctx.print([
36
- `Remote Runner Pools (${pools.length})`,
37
- ...pools.map((pool) => ` ${pool.id} ${pool.runnerIds.length} runners trust=${pool.trustClass} template=${pool.preferredTemplate ?? '(none)'}`),
33
+ `Remote Worker Pools (${pools.length})`,
34
+ ...pools.map((pool) => ` ${pool.id} ${pool.runnerIds.length} workers trust=${pool.trustClass} template=${pool.preferredTemplate ?? '(none)'}`),
38
35
  ].join('\n'));
39
36
  return true;
40
37
  }
@@ -46,59 +43,45 @@ export function handleRemotePoolCommand(
46
43
  }
47
44
  const pool = remoteRegistry.getPool(poolId);
48
45
  if (!pool) {
49
- ctx.print(`Unknown remote runner pool: ${poolId}`);
46
+ ctx.print(`Unknown remote worker pool: ${poolId}`);
50
47
  return true;
51
48
  }
52
49
  ctx.print([
53
- `Remote Runner Pool ${pool.id}`,
50
+ `Remote Worker Pool ${pool.id}`,
54
51
  ` label: ${pool.label}`,
55
52
  ` trustClass: ${pool.trustClass}`,
56
53
  ` preferredTemplate: ${pool.preferredTemplate ?? '(none)'}`,
57
- ` maxRunners: ${pool.maxRunners ?? '(unbounded)'}`,
58
- ` runners: ${pool.runnerIds.join(', ') || '(none)'}`,
54
+ ` maxWorkers: ${pool.maxRunners ?? '(unbounded)'}`,
55
+ ` workers: ${pool.runnerIds.join(', ') || '(none)'}`,
59
56
  ` description: ${pool.description ?? '(none)'}`,
60
57
  ].join('\n'));
61
58
  return true;
62
59
  }
63
60
  if (mode === 'create') {
64
- const poolId = args[2];
65
- if (!poolId) {
66
- ctx.print('Usage: /remote pool create <poolId> [label]');
67
- return true;
68
- }
69
- const label = args.slice(3).join(' ').trim() || poolId;
70
- const pool = remoteRegistry.createPool({ id: poolId, label });
71
- ctx.print(`Created remote runner pool ${pool.id} (${pool.label}).`);
61
+ ctx.print([
62
+ 'Remote worker pool mutation is blocked in GoodVibes Agent.',
63
+ ' requested: /remote pool create',
64
+ ' policy: Agent inspects remote worker pools but does not manage worker topology',
65
+ ' next: use the owning GoodVibes runtime or delegated build environment for worker-pool administration',
66
+ ].join('\n'));
72
67
  return true;
73
68
  }
74
69
  if (mode === 'assign') {
75
- const poolId = args[2];
76
- const runnerId = args[3];
77
- if (!poolId || !runnerId) {
78
- ctx.print('Usage: /remote pool assign <poolId> <runnerId>');
79
- return true;
80
- }
81
- const pool = remoteRegistry.assignRunnerToPool(poolId, runnerId);
82
- if (!pool) {
83
- ctx.print(`Could not assign ${runnerId} to pool ${poolId}.`);
84
- return true;
85
- }
86
- ctx.print(`Assigned remote runner ${runnerId} to pool ${poolId}.`);
70
+ ctx.print([
71
+ 'Remote worker pool mutation is blocked in GoodVibes Agent.',
72
+ ' requested: /remote pool assign',
73
+ ' policy: Agent inspects remote worker pools but does not manage worker topology',
74
+ ' next: use the owning GoodVibes runtime or delegated build environment for worker-pool administration',
75
+ ].join('\n'));
87
76
  return true;
88
77
  }
89
78
  if (mode === 'unassign') {
90
- const poolId = args[2];
91
- const runnerId = args[3];
92
- if (!poolId || !runnerId) {
93
- ctx.print('Usage: /remote pool unassign <poolId> <runnerId>');
94
- return true;
95
- }
96
- const pool = remoteRegistry.removeRunnerFromPool(poolId, runnerId);
97
- if (!pool) {
98
- ctx.print(`Unknown remote runner pool: ${poolId}`);
99
- return true;
100
- }
101
- ctx.print(`Removed remote runner ${runnerId} from pool ${poolId}.`);
79
+ ctx.print([
80
+ 'Remote worker pool mutation is blocked in GoodVibes Agent.',
81
+ ' requested: /remote pool unassign',
82
+ ' policy: Agent inspects remote worker pools but does not manage worker topology',
83
+ ' next: use the owning GoodVibes runtime or delegated build environment for worker-pool administration',
84
+ ].join('\n'));
102
85
  return true;
103
86
  }
104
87
  ctx.print('Usage: /remote pool <list|show|create|assign|unassign> ...');
@@ -45,7 +45,7 @@ export async function handleRemoteSetupCommand(
45
45
  ` acp agent command: ${command.join(' ')}`,
46
46
  ` runtime host enabled: ${danger.daemon ? 'yes' : 'no'}`,
47
47
  ` inbound listener enabled: ${danger.httpListener ? 'yes' : 'no'}`,
48
- ` remote runner contracts: ${remoteRegistry.listContracts().length}`,
48
+ ` remote worker contracts: ${remoteRegistry.listContracts().length}`,
49
49
  ` active acp connections: ${activeConnections.length}`,
50
50
  '',
51
51
  ' guidance:',
@@ -11,11 +11,11 @@ type RemoteCancelContext = Pick<CommandContext, 'print'>;
11
11
 
12
12
  function printRemoteDelegationBoundary(ctx: Pick<CommandContext, 'print'>, requestedAction: string): void {
13
13
  ctx.print([
14
- 'GoodVibes Agent does not dispatch remote/local coding runners from this surface.',
14
+ 'GoodVibes Agent does not dispatch remote/local coding workers from this surface.',
15
15
  ` requested: ${requestedAction}`,
16
16
  ' policy: keep ordinary work serial in the main assistant conversation',
17
17
  ' build/fix/review: delegate one request to GoodVibes TUI through the public shared-session/build-delegation contract',
18
- ' preserve: full original user ask and executionIntent; let TUI own runner/WRFC topology when explicitly requested',
18
+ ' preserve: full original user ask and executionIntent; let TUI own execution and WRFC chain details when explicitly requested',
19
19
  ].join('\n'));
20
20
  }
21
21
 
@@ -45,8 +45,8 @@ export function registerRemoteRuntimeCommands(registry: CommandRegistry): void {
45
45
  registry.register({
46
46
  name: 'remote',
47
47
  aliases: [],
48
- description: 'Inspect, dispatch, and review self-hosted remote runners and artifacts',
49
- usage: '[list | show [agentId] | supervisor [runnerId] | support [runnerId] | recover [runnerId] | setup [export <path> --yes] | env [export <path> --yes] | tunnel [review|export <path> --yes] | bootstrap [export <path> --yes|inspect <path>] | session <export|inspect|import> <path> [--yes] | pool <list|show|create|assign|unassign> ... | dispatch [template] <description> | dispatch-pool <pool> [template] <description> | contract [agentId] | cancel <agentId> | export <agentId> [path] --yes | artifact list | artifact show <id> | artifact export <id> [path] --yes | review <id> | rerun-local <id> | import <path> --yes]',
48
+ description: 'Inspect remote workers, delegated work receipts, and review artifacts',
49
+ usage: '[list | show [agentId] | supervisor [workerId] | support [workerId] | recover [workerId] | setup [export <path> --yes] | env [export <path> --yes] | tunnel [review|export <path> --yes] | bootstrap [export <path> --yes|inspect <path>] | session <export|inspect|import> <path> [--yes] | pool <list|show> ... | dispatch [template] <description> | dispatch-pool <pool> [template] <description> | contract [agentId] | cancel <agentId> | export <agentId> [path] --yes | artifact list | artifact show <id> | artifact export <id> [path] --yes | review <id> | rerun-local <id> | import <path> --yes]',
50
50
  async handler(args, ctx) {
51
51
  if (args.length === 0) {
52
52
  if (ctx.openRemotePanel) {
@@ -85,8 +85,8 @@ export function registerRemoteRuntimeCommands(registry: CommandRegistry): void {
85
85
  const lines = [
86
86
  'Remote Control Surface',
87
87
  ` active connections: ${activeConnections.length}`,
88
- ` runner contracts: ${contracts.length}`,
89
- ` runner pools: ${pools.length}`,
88
+ ` worker contracts: ${contracts.length}`,
89
+ ` worker pools: ${pools.length}`,
90
90
  ` review artifacts: ${artifacts.length}`,
91
91
  ` supervisor sessions: ${supervisor.sessions.length}`,
92
92
  ` degraded sessions: ${supervisor.degradedConnections}`,
@@ -131,7 +131,7 @@ export function registerRemoteRuntimeCommands(registry: CommandRegistry): void {
131
131
  ` messageCount: ${selected.messageCount}`,
132
132
  ` errorCount: ${selected.errorCount}`,
133
133
  ...(selected.lastError ? [` lastError: ${selected.lastError}`] : []),
134
- ' runner support:',
134
+ ' worker support:',
135
135
  ...selected.capabilities.map((capability) => ` ${capability.id}: ${capability.supported ? 'yes' : 'no'} (${capability.detail})`),
136
136
  ' recovery:',
137
137
  ...selected.recovery.map((action) => ` ${action.command} — ${action.reason}`),
@@ -146,7 +146,7 @@ export function registerRemoteRuntimeCommands(registry: CommandRegistry): void {
146
146
  ? snapshot.sessions.find((entry) => entry.runnerId === runnerId)
147
147
  : snapshot.sessions[0];
148
148
  if (!selected) {
149
- ctx.print(runnerId ? `Unknown remote runner: ${runnerId}` : 'No remote supervisor sessions are currently tracked.');
149
+ ctx.print(runnerId ? `Unknown remote worker: ${runnerId}` : 'No remote supervisor sessions are currently tracked.');
150
150
  return;
151
151
  }
152
152
  ctx.print([
@@ -157,7 +157,7 @@ export function registerRemoteRuntimeCommands(registry: CommandRegistry): void {
157
157
  ` reviewMode: ${selected.negotiation.reviewMode}`,
158
158
  ` communicationLane: ${selected.negotiation.communicationLane}`,
159
159
  ` trustClass: ${selected.negotiation.trustClass}`,
160
- ' runner support:',
160
+ ' worker support:',
161
161
  ...selected.capabilities.map((capability) => (
162
162
  ` ${capability.id}: ${capability.supported ? 'supported' : 'missing'} — ${capability.detail}`
163
163
  )),
@@ -172,7 +172,7 @@ export function registerRemoteRuntimeCommands(registry: CommandRegistry): void {
172
172
  ? snapshot.sessions.find((entry) => entry.runnerId === runnerId)
173
173
  : snapshot.sessions.find((entry) => entry.recovery.length > 0) ?? snapshot.sessions[0];
174
174
  if (!selected) {
175
- ctx.print(runnerId ? `Unknown remote runner: ${runnerId}` : 'No remote supervisor sessions are currently tracked.');
175
+ ctx.print(runnerId ? `Unknown remote worker: ${runnerId}` : 'No remote supervisor sessions are currently tracked.');
176
176
  return;
177
177
  }
178
178
  const nextSteps = selected.recovery.length > 0
@@ -254,7 +254,7 @@ export function registerRemoteRuntimeCommands(registry: CommandRegistry): void {
254
254
  }
255
255
  const pool = remoteRunners.getPool(poolId);
256
256
  if (!pool) {
257
- ctx.print(`Unknown remote runner pool: ${poolId}`);
257
+ ctx.print(`Unknown remote worker pool: ${poolId}`);
258
258
  return;
259
259
  }
260
260
  let template = pool.preferredTemplate ?? 'general';
@@ -275,16 +275,16 @@ export function registerRemoteRuntimeCommands(registry: CommandRegistry): void {
275
275
  if (subcommand === 'contract') {
276
276
  const agentId = args[1] ?? activeConnections[0]?.agentId;
277
277
  if (!agentId) {
278
- ctx.print('No remote runner contracts are available yet.');
278
+ ctx.print('No remote worker contracts are available yet.');
279
279
  return;
280
280
  }
281
281
  const contract = remoteRunners.upsertContractForAgent(agentId);
282
282
  if (!contract) {
283
- ctx.print(`Unknown remote runner: ${agentId}`);
283
+ ctx.print(`Unknown remote worker: ${agentId}`);
284
284
  return;
285
285
  }
286
286
  ctx.print([
287
- `Remote runner contract ${contract.id}`,
287
+ `Remote worker contract ${contract.id}`,
288
288
  ` runnerId: ${contract.runnerId}`,
289
289
  ` label: ${contract.label}`,
290
290
  ` pool: ${contract.poolId ?? '(none)'}`,
@@ -35,7 +35,7 @@ export function registerTeleportRuntimeCommands(registry: CommandRegistry): void
35
35
  try {
36
36
  peerClient = requirePeerClient(ctx);
37
37
  } catch {
38
- ctx.print('Remote runner registry is not available in this runtime.');
38
+ ctx.print('Remote worker registry is not available in this runtime.');
39
39
  return;
40
40
  }
41
41
  const targetPath = shellPaths.resolveWorkspacePath(pathArg);
@@ -497,13 +497,6 @@ export function buildVoiceMediaStep(): OnboardingWizardStepDefinition {
497
497
  hint: 'Media output uses configured providers and visible command/turn flow; external publication still requires explicit approval.',
498
498
  defaultValue: 'Policy gated',
499
499
  },
500
- {
501
- kind: 'status',
502
- id: 'agent-voice-media.nodes',
503
- label: 'Node and device posture',
504
- hint: 'Remote devices and nodes are inspected only when useful. Agent onboarding does not launch runners or background service processes.',
505
- defaultValue: 'External',
506
- },
507
500
  ],
508
501
  };
509
502
  }
@@ -196,7 +196,7 @@ function snapshotLines(workspace: AgentWorkspace, category: AgentWorkspaceCatego
196
196
  { text: `TTS config: provider ${snapshot.ttsProvider}; voice ${snapshot.ttsVoice}; response model ${snapshot.ttsResponseModel}.`, fg: PALETTE.info },
197
197
  { text: `Media providers: ${snapshot.mediaProviderCount}; understanding: ${snapshot.mediaUnderstandingProviderCount}; generation: ${snapshot.mediaGenerationProviderCount}.`, fg: PALETTE.info },
198
198
  { text: `Browser tools: ${snapshot.browserSurfaceEnabled ? 'available' : 'not advertised'}; public base URL ${snapshot.browserSurfacePublicBaseUrl}.`, fg: snapshot.browserSurfaceEnabled ? PALETTE.warn : PALETTE.muted },
199
- { text: 'Remote runner posture is hidden from this setup surface; build dispatch remains explicit delegation.', fg: PALETTE.good },
199
+ { text: 'Build dispatch stays out of setup; explicit delegation is handled from the Build Delegation workspace.', fg: PALETTE.good },
200
200
  { text: 'Image input uses prompt attachments; media generation/provider setup stays behind explicit commands and configured providers.', fg: PALETTE.muted },
201
201
  );
202
202
  } else if (category.id === 'profiles') {
package/src/version.ts CHANGED
@@ -6,7 +6,7 @@ import { join } from 'node:path';
6
6
  // The prebuild script updates the fallback value before compilation.
7
7
  // Uses import.meta.dir (Bun) to locate package.json relative to this file,
8
8
  // which is correct regardless of the process working directory.
9
- let _version = '0.1.65';
9
+ let _version = '0.1.66';
10
10
  let _sdkVersion = '0.33.35';
11
11
  try {
12
12
  const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', 'package.json'), 'utf-8')) as {