@pellux/goodvibes-agent 0.1.104 → 0.1.106

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 (34) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +9 -2
  3. package/docs/getting-started.md +9 -2
  4. package/docs/release-and-publishing.md +5 -3
  5. package/package.json +1 -1
  6. package/src/cli/help.ts +11 -11
  7. package/src/cli/management-commands.ts +1 -1
  8. package/src/cli/package-verification.ts +5 -5
  9. package/src/cli/service-posture.ts +11 -10
  10. package/src/cli/status.ts +29 -25
  11. package/src/input/agent-workspace-categories.ts +5 -5
  12. package/src/input/commands/guidance-runtime.ts +2 -2
  13. package/src/input/commands/health-runtime.ts +1 -1
  14. package/src/input/commands/onboarding-runtime.ts +4 -3
  15. package/src/input/commands/platform-access-runtime.ts +31 -79
  16. package/src/input/commands/session-content.ts +24 -41
  17. package/src/input/commands.ts +15 -0
  18. package/src/input/handler-content-actions.ts +1 -1
  19. package/src/input/keybindings.ts +2 -2
  20. package/src/input/onboarding/onboarding-wizard-operator-steps.ts +295 -0
  21. package/src/input/onboarding/onboarding-wizard-steps.ts +63 -309
  22. package/src/main.ts +1 -1
  23. package/src/panels/builtin/usage.ts +21 -0
  24. package/src/panels/builtin-panels.ts +2 -2
  25. package/src/panels/panel-list-panel.ts +1 -2
  26. package/src/panels/panel-picker.ts +1 -2
  27. package/src/panels/types.ts +1 -1
  28. package/src/renderer/help-overlay.ts +4 -4
  29. package/src/renderer/settings-modal.ts +1 -1
  30. package/src/runtime/bootstrap.ts +2 -2
  31. package/src/tools/agent-context-policy.ts +4 -4
  32. package/src/tools/agent-tool-policy-guard.ts +9 -9
  33. package/src/version.ts +1 -1
  34. package/src/panels/builtin/development.ts +0 -31
package/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  All notable changes to GoodVibes Agent will be recorded here.
4
4
 
5
+ ## 0.1.106 - 2026-06-01
6
+
7
+ - b67a2fe Polish Agent setup entrypoint
8
+ - Harden Bun global install with `bun add -g --trust`, zero-untrusted lifecycle verification, and packed TUI launch smoke.
9
+ - Make Agent status and doctor output client/operator focused, including external runtime diagnostics and fail-closed isolated Agent Knowledge readiness.
10
+ - Route `/memory` to Agent-local durable memory and move conversation-pinned compaction notes to `/session-memory`.
11
+ - Remove copied file-edit undo/redo behavior from Agent conversation commands.
12
+ - Remove stale hidden-share shortcut guidance and keep diff/file operations delegation-oriented.
13
+ - Make provider onboarding generic across provider routes, subscription sessions, and credential inventory while keeping OpenAI as an optional quick-start path.
14
+ - Remove internal audit phrase leakage from source/package-facing guards and neutralize non-Agent knowledge wording.
15
+ - Shorten release workflow validation by relying on the single branch-CI gate run instead of duplicating release checks.
16
+
17
+ ## 0.1.105 - 2026-06-01
18
+
19
+ - 7ea88c8 Remove development panel surface
20
+
5
21
  ## 0.1.104 - 2026-06-01
6
22
 
7
23
  - 37fe253 Add Agent memory workspace controls
package/README.md CHANGED
@@ -12,7 +12,7 @@ The Agent product connects to an already-running GoodVibes runtime. It does not
12
12
  Install the public alpha package with Bun:
13
13
 
14
14
  ```sh
15
- bun add -g @pellux/goodvibes-agent
15
+ bun add -g --trust @pellux/goodvibes-agent
16
16
  goodvibes-agent --help
17
17
  goodvibes-agent status
18
18
  goodvibes-agent profiles templates
@@ -31,10 +31,17 @@ export PATH="$(bun pm bin -g):$PATH"
31
31
  goodvibes-agent --help
32
32
  ```
33
33
 
34
- If Bun reports untrusted lifecycle dependencies, trust only the package and dependencies required by this package:
34
+ `--trust` lets Bun run the package lifecycle scripts required by the shipped SDK and parser dependencies during global install. A healthy install should report no pending lifecycle scripts:
35
+
36
+ ```sh
37
+ bun pm -g untrusted
38
+ ```
39
+
40
+ If you previously installed without `--trust`, run the targeted trust command once and then re-check:
35
41
 
36
42
  ```sh
37
43
  bun pm trust -g @pellux/goodvibes-agent @pellux/goodvibes-sdk core-js tree-sitter-css tree-sitter-javascript tree-sitter-json tree-sitter-python tree-sitter-typescript
44
+ bun pm -g untrusted
38
45
  ```
39
46
 
40
47
  ## Source Usage
@@ -13,7 +13,7 @@ Agent does not launch the runtime for you.
13
13
  ## Install From Package
14
14
 
15
15
  ```sh
16
- bun add -g @pellux/goodvibes-agent
16
+ bun add -g --trust @pellux/goodvibes-agent
17
17
  goodvibes-agent --help
18
18
  goodvibes-agent status
19
19
  goodvibes-agent personas list
@@ -28,10 +28,17 @@ export PATH="$(bun pm bin -g):$PATH"
28
28
  goodvibes-agent --help
29
29
  ```
30
30
 
31
- If Bun requires lifecycle trust:
31
+ `--trust` lets Bun run the lifecycle scripts required by the shipped SDK and parser dependencies. A clean global install should leave no pending lifecycle scripts:
32
+
33
+ ```sh
34
+ bun pm -g untrusted
35
+ ```
36
+
37
+ If you previously installed without `--trust`, run the targeted trust command once and then re-check:
32
38
 
33
39
  ```sh
34
40
  bun pm trust -g @pellux/goodvibes-agent @pellux/goodvibes-sdk core-js tree-sitter-css tree-sitter-javascript tree-sitter-json tree-sitter-python tree-sitter-typescript
41
+ bun pm -g untrusted
35
42
  ```
36
43
 
37
44
  ## Run From Source
@@ -14,11 +14,11 @@ GoodVibes Agent's current installable public alpha version is recorded in `packa
14
14
  End users install and run GoodVibes Agent with Bun:
15
15
 
16
16
  ```sh
17
- bun add -g @pellux/goodvibes-agent
17
+ bun add -g --trust @pellux/goodvibes-agent
18
18
  goodvibes-agent --help
19
19
  ```
20
20
 
21
- Do not add non-Bun install instructions for this product. The package is hosted on the public package registry, but the supported install and smoke path is Bun.
21
+ Do not add non-Bun install instructions for this product. The package is hosted on the public package registry, but the supported install and smoke path is Bun with `--trust`, followed by `bun pm -g untrusted` reporting zero pending lifecycle scripts.
22
22
 
23
23
  ## Required Gates
24
24
 
@@ -38,7 +38,7 @@ git diff --check
38
38
 
39
39
  The GitHub release workflow publishes to npm only when the repository variable `PUBLISH_NPM` is `true` and the repository secret `NPM_TOKEN` is configured. Without those repository settings, the workflow still validates and creates the GitHub release, but npm publish must be run from a local environment with an exported token.
40
40
 
41
- Branch CI is the only workflow that runs the full test suite. It runs `bun run test` once for the release SHA. The release workflow must not run tests again; it verifies that branch CI passed for the exact checked-out SHA and then continues with non-test release validation.
41
+ Branch CI is the only workflow that runs the full test suite and release gates. It runs `bun run test` once for the release SHA, along with typecheck, architecture, performance, build, publish, and packed install checks. The release workflow must not run tests or duplicate those gates; it verifies that branch CI passed for the exact checked-out SHA and then performs only package packing, GitHub Release creation, and optional npm publish.
42
42
 
43
43
  Do not add targeted `bun test` passes or separate release-only test gates to CI, release, or aggregate scripts. Tests that matter for release must be included in the single full branch-CI suite.
44
44
 
@@ -47,6 +47,8 @@ Also run the package install smoke from a packed artifact. It must prove:
47
47
  - the installed command is on `PATH`
48
48
  - the bin target is `bin/goodvibes-agent.ts`
49
49
  - the Bun shebang survives pack/install
50
+ - Bun global install uses `bun add -g --trust`
51
+ - `bun pm -g untrusted` reports zero pending lifecycle scripts after install
50
52
  - `goodvibes-agent --help` works
51
53
  - `goodvibes-agent --version` reports the package version
52
54
  - the installed TUI launches in a PTY and does not exit immediately
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-agent",
3
- "version": "0.1.104",
3
+ "version": "0.1.106",
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",
package/src/cli/help.ts CHANGED
@@ -31,9 +31,9 @@ export function renderGoodVibesHelp(binary = 'goodvibes-agent'): string {
31
31
  'Commands:',
32
32
  ' tui [path] Start the interactive Agent terminal UI (default)',
33
33
  ' run|exec [prompt] Run non-interactively with text/json/stream-json output',
34
- ' status Print config, provider, auth, and onboarding posture',
34
+ ' status Print config, provider, auth, and setup posture',
35
35
  ' doctor Print status plus setup warnings',
36
- ' onboarding [status] Open Agent onboarding, or print onboarding status',
36
+ ' setup|onboarding [status] Open Agent setup, or print setup status',
37
37
  ' models [provider] List/use/pin selectable models and recent model history',
38
38
  ' providers List/inspect/use provider config/auth posture',
39
39
  ' profiles Manage isolated Agent profile homes',
@@ -83,8 +83,8 @@ export function renderGoodVibesHelp(binary = 'goodvibes-agent'): string {
83
83
  ` ${binary}`,
84
84
  ` ${binary} --no-alt-screen`,
85
85
  ` ${binary} --cd ~/work/project --model openai:gpt-5.2`,
86
- ` ${binary} onboarding`,
87
- ` ${binary} onboarding status`,
86
+ ` ${binary} setup`,
87
+ ` ${binary} setup status`,
88
88
  ` ${binary} status`,
89
89
  ` ${binary} --runtime-url http://127.0.0.1:3421 status`,
90
90
  ` ${binary} models current`,
@@ -128,14 +128,14 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
128
128
  summary: 'Run a single non-interactive agent turn and write the result to stdout.',
129
129
  examples: ['run "summarize the current project"', 'run --output json "list risks"', 'exec --output stream-json "check runtime status"'],
130
130
  },
131
- onboarding: {
132
- usage: ['onboarding', 'setup', 'onboarding status'],
133
- summary: 'Open the setup wizard, or inspect whether onboarding has already been shown for this user.',
134
- examples: ['onboarding', 'onboarding status'],
131
+ setup: {
132
+ usage: ['setup', 'setup status', 'onboarding', 'onboarding status'],
133
+ summary: 'Open Agent setup, or inspect whether setup has already been shown for this user.',
134
+ examples: ['setup', 'setup status', 'onboarding status'],
135
135
  },
136
136
  status: {
137
137
  usage: ['status', 'status --json', '--runtime-url http://127.0.0.1:3421 status'],
138
- summary: 'Print Agent config, provider, auth, runtime connection, and onboarding posture.',
138
+ summary: 'Print Agent config, provider, auth, runtime connection, and setup posture.',
139
139
  examples: ['status', 'status --json', '--runtime-url http://127.0.0.1:3421 status'],
140
140
  },
141
141
  doctor: {
@@ -321,7 +321,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
321
321
  },
322
322
  tasks: {
323
323
  usage: ['tasks list', 'tasks show <taskId>'],
324
- summary: 'Inspect in-process runtime tasks. Agent blocks copied task submission; use run for one-shot work or delegate for explicit build/fix/review handoff.',
324
+ summary: 'Inspect in-process runtime tasks. Agent blocks runtime-owned task submission; use run for one-shot work or delegate for explicit build/fix/review handoff.',
325
325
  examples: ['tasks list', 'tasks show task-123', 'run "check provider readiness"', 'delegate "fix the failing tests"'],
326
326
  },
327
327
  bundle: {
@@ -344,7 +344,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
344
344
  const HELP_ALIASES: Record<string, string> = {
345
345
  app: 'tui',
346
346
  exec: 'run',
347
- setup: 'onboarding',
347
+ onboarding: 'setup',
348
348
  provider: 'providers',
349
349
  model: 'models',
350
350
  profile: 'profiles',
@@ -279,7 +279,7 @@ export async function handleTasks(runtime: CliCommandRuntime): Promise<string> {
279
279
  const [sub = 'list', ...rest] = runtime.cli.commandArgs;
280
280
  if (sub === 'submit') {
281
281
  return [
282
- 'GoodVibes Agent blocks CLI task submission from the copied task workflow.',
282
+ 'GoodVibes Agent blocks CLI task submission from the runtime-owned task workflow.',
283
283
  ' policy: do normal assistant work in the main Agent conversation or use `goodvibes-agent run <prompt>` for an explicit one-shot run.',
284
284
  ' build/fix/review: use `goodvibes-agent delegate <task>` for explicit GoodVibes TUI handoff.',
285
285
  ' result: no local task was started.',
@@ -82,8 +82,8 @@ const PACKAGE_FACING_FORBIDDEN_TEXT = [
82
82
  ['Cloud', 'flare'].join(''),
83
83
  ['Open', 'Claw'].join(''),
84
84
  ['Her', 'mes'].join(''),
85
- ['capabilities', ' audit'].join(''),
86
- ['capabilities', ' command'].join(''),
85
+ ['cap', 'abilities audit'].join(''),
86
+ ['cap', 'abilities command'].join(''),
87
87
  ['near', '-fork'].join(''),
88
88
  ['Optional ', 'Browser Access'].join(''),
89
89
  ['Optional ', 'Other-Device Access'].join(''),
@@ -113,11 +113,11 @@ const PACKAGE_FACING_REQUIRED_TEXT: readonly {
113
113
  readonly path: typeof PACKAGE_FACING_TEXT_PATHS[number];
114
114
  readonly required: readonly string[];
115
115
  }[] = [
116
- { path: 'README.md', required: ['/api/goodvibes-agent/knowledge'] },
116
+ { path: 'README.md', required: ['/api/goodvibes-agent/knowledge', 'bun add -g --trust @pellux/goodvibes-agent', 'bun pm -g untrusted'] },
117
117
  { path: 'docs/README.md', required: ['/api/goodvibes-agent/knowledge'] },
118
- { path: 'docs/getting-started.md', required: ['/api/goodvibes-agent/knowledge'] },
118
+ { path: 'docs/getting-started.md', required: ['/api/goodvibes-agent/knowledge', 'bun add -g --trust @pellux/goodvibes-agent', 'bun pm -g untrusted'] },
119
119
  { path: 'docs/runtime-connection.md', required: ['/api/goodvibes-agent/knowledge'] },
120
- { path: 'docs/release-and-publishing.md', required: ['/api/goodvibes-agent/knowledge'] },
120
+ { path: 'docs/release-and-publishing.md', required: ['/api/goodvibes-agent/knowledge', 'bun add -g --trust @pellux/goodvibes-agent', 'bun pm -g untrusted'] },
121
121
  ];
122
122
  const NON_COMMAND_ROUTE_ROOTS = new Set(['api', 'status']);
123
123
 
@@ -61,9 +61,9 @@ export interface CliServicePosture {
61
61
  }
62
62
 
63
63
  const ENDPOINTS: readonly { readonly id: RuntimeEndpointId; readonly label: string; readonly enabledKey: string }[] = [
64
- { id: 'controlPlane', label: 'runtime API', enabledKey: 'controlPlane.enabled' },
65
- { id: 'httpListener', label: 'incoming webhook listener', enabledKey: 'danger.httpListener' },
66
- { id: 'web', label: 'browser companion', enabledKey: 'web.enabled' },
64
+ { id: 'controlPlane', label: 'runtime connection', enabledKey: 'controlPlane.enabled' },
65
+ { id: 'httpListener', label: 'inbound events endpoint', enabledKey: 'danger.httpListener' },
66
+ { id: 'web', label: 'browser companion route', enabledKey: 'web.enabled' },
67
67
  ];
68
68
 
69
69
  interface CliServicePostureOptions {
@@ -184,7 +184,7 @@ export async function buildCliServicePosture(
184
184
  const issues: string[] = [];
185
185
 
186
186
  if (serverBackedEnabled && !config.enabled) {
187
- issues.push('External runtime endpoints are configured, but Agent runtime ownership is disabled by design.');
187
+ issues.push('External runtime connection settings are present, but Agent runtime lifecycle ownership is disabled by design.');
188
188
  }
189
189
  if (config.enabled && !config.autostart) {
190
190
  issues.push('External runtime host config has autostart off.');
@@ -229,16 +229,17 @@ function yesNo(value: boolean): string {
229
229
  export function formatCliServicePosture(posture: CliServicePosture, json = false): string {
230
230
  if (json) return JSON.stringify(posture, null, 2);
231
231
  return [
232
- 'GoodVibes external runtime diagnostics',
232
+ 'GoodVibes Agent runtime connection diagnostics',
233
233
  ' ownership: managed outside goodvibes-agent',
234
- ` host config enabled: ${yesNo(posture.config.enabled)}`,
235
- ` autostart config: ${yesNo(posture.config.autostart)}`,
236
- ` restartOnFailure config: ${yesNo(posture.config.restartOnFailure)}`,
237
- ` runtime host flag: ${yesNo(posture.config.daemonEnabled)}`,
234
+ ' Agent owns lifecycle: no',
235
+ ` external host config present: ${yesNo(posture.config.enabled)}`,
236
+ ` external host autostart config: ${yesNo(posture.config.autostart)}`,
237
+ ` external host restart config: ${yesNo(posture.config.restartOnFailure)}`,
238
+ ` legacy host switch present: ${yesNo(posture.config.daemonEnabled)}`,
238
239
  ` log: ${posture.log.path ?? 'n/a'} (${posture.log.exists ? 'present' : 'missing'})`,
239
240
  ...(posture.log.readError ? [` log read error: ${posture.log.readError}`] : []),
240
241
  '',
241
- 'Runtime endpoints:',
242
+ 'Runtime connection checks:',
242
243
  ...posture.endpoints.map((endpoint) =>
243
244
  ` ${endpoint.label}: enabled=${yesNo(endpoint.enabled)} ${endpoint.binding.hostMode} ${endpoint.binding.host}:${endpoint.binding.port} posture=${endpoint.bindPosture.label}${endpoint.reachable === undefined ? '' : ` reachable=${yesNo(endpoint.reachable)}`}`,
244
245
  ),
package/src/cli/status.ts CHANGED
@@ -113,9 +113,9 @@ export function buildCliDoctorFindings(options: CliStatusOptions): readonly CliD
113
113
  const marker = options.onboardingMarkers?.effective;
114
114
  const serverBackedEnabled = daemonEnabled || controlPlaneEnabled || listenerEnabled || webEnabled;
115
115
  const networkFacingSurfaces = [
116
- ['runtime API', controlPlaneEnabled, controlPlaneBinding],
117
- ['incoming webhook listener', listenerEnabled, httpListenerBinding],
118
- ['browser companion', webEnabled, webBinding],
116
+ ['runtime connection', controlPlaneEnabled, controlPlaneBinding],
117
+ ['inbound events endpoint', listenerEnabled, httpListenerBinding],
118
+ ['browser companion route', webEnabled, webBinding],
119
119
  ].filter(([, enabled, binding]) => isNetworkFacing(enabled, binding as typeof controlPlaneBinding));
120
120
 
121
121
  const findings: CliDoctorFinding[] = [];
@@ -162,7 +162,7 @@ export function buildCliDoctorFindings(options: CliStatusOptions): readonly CliD
162
162
  severity: 'warning',
163
163
  summary: 'Isolated Agent Knowledge route is not ready.',
164
164
  cause: `${options.externalRuntime.agentKnowledge.route} returned ${options.externalRuntime.agentKnowledge.kind}${options.externalRuntime.agentKnowledge.statusCode === null ? '' : ` (${options.externalRuntime.agentKnowledge.statusCode})`}.`,
165
- impact: 'Agent Knowledge ask/search will not use any fallback wiki or HomeGraph segment; it will fail closed until the Agent route is available.',
165
+ impact: 'Agent Knowledge ask/search will not use any fallback wiki or non-Agent knowledge segment; it will fail closed until the Agent route is available.',
166
166
  action: 'Update/restart the external runtime to the Agent-compatible SDK and verify goodvibes-agent compat.',
167
167
  });
168
168
  }
@@ -173,8 +173,8 @@ export function buildCliDoctorFindings(options: CliStatusOptions): readonly CliD
173
173
  id: 'runtime-ownership-external',
174
174
  area: 'runtime',
175
175
  severity: 'warning',
176
- summary: 'External runtime endpoints are configured while Agent runtime ownership is disabled by design.',
177
- cause: 'One or more runtime API, listener, or web settings are enabled while service.enabled is false.',
176
+ summary: 'External runtime connection settings are present while Agent lifecycle ownership is disabled by design.',
177
+ cause: 'One or more runtime connection, inbound events, or browser companion settings are enabled while service.enabled is false.',
178
178
  impact: 'The external GoodVibes runtime must own availability for those endpoints; Agent will not start or enable them.',
179
179
  action: 'Manage runtime availability from GoodVibes TUI or the owning host, then use Agent for read-only diagnostics.',
180
180
  });
@@ -224,10 +224,10 @@ export function buildCliDoctorFindings(options: CliStatusOptions): readonly CliD
224
224
  id: 'onboarding-incomplete',
225
225
  area: 'onboarding',
226
226
  severity: 'warning',
227
- summary: 'Onboarding has not been shown for this user.',
228
- cause: 'No global user onboarding check marker was found.',
227
+ summary: 'Agent setup has not been shown for this user.',
228
+ cause: 'No global user setup check marker was found.',
229
229
  impact: 'Important runtime, network, provider, auth, or permission choices may still be implicit defaults.',
230
- action: 'Run /onboarding in GoodVibes Agent or goodvibes-agent onboarding status to review setup state.',
230
+ action: 'Run /setup in GoodVibes Agent or goodvibes-agent setup status to review setup state.',
231
231
  });
232
232
  }
233
233
 
@@ -284,10 +284,10 @@ export function buildCliDoctorFindings(options: CliStatusOptions): readonly CliD
284
284
  id: 'network-http-listener-enabled',
285
285
  area: 'network',
286
286
  severity: 'warning',
287
- summary: 'The incoming webhook listener is reachable beyond loopback.',
288
- cause: `Incoming webhook listener is enabled on ${httpListenerBinding.host}:${httpListenerBinding.port} with ${httpListenerBinding.hostMode} binding.`,
287
+ summary: 'The inbound events endpoint is reachable beyond loopback.',
288
+ cause: `Inbound events endpoint is enabled on ${httpListenerBinding.host}:${httpListenerBinding.port} with ${httpListenerBinding.hostMode} binding.`,
289
289
  impact: 'External tools and devices may be able to reach incoming event endpoints.',
290
- action: 'Keep listener secrets/signature checks configured for every enabled webhook endpoint.',
290
+ action: 'Keep inbound-event secrets/signature checks configured for every enabled endpoint.',
291
291
  });
292
292
  }
293
293
 
@@ -379,7 +379,7 @@ export function renderCliStatus(options: CliStatusOptions): string {
379
379
  ? ` operatorTokens: ${options.auth.operatorTokenPresent ? 'present' : 'missing'} (${options.auth.operatorTokenPath})`
380
380
  : ' operatorTokens: unknown',
381
381
  '',
382
- 'External Runtime:',
382
+ 'Runtime Connection:',
383
383
  ...(externalRuntime ? [
384
384
  ` baseUrl: ${externalRuntime.baseUrl}`,
385
385
  ` reachable: ${yesNo(externalRuntime.reachable)}${externalRuntime.statusCode === null ? '' : ` (HTTP ${externalRuntime.statusCode})`}`,
@@ -393,11 +393,9 @@ export function renderCliStatus(options: CliStatusOptions): string {
393
393
  ]),
394
394
  '',
395
395
  'Runtime Ownership:',
396
- ' Agent hosting: external only',
397
- ` Agent starts runtime: no`,
398
- ` legacy host config present: ${yesNo(serviceEnabled)}`,
399
- ` legacy host autostart: ${yesNo(serviceAutostart)}`,
400
- ` legacy host restart policy: ${yesNo(restartOnFailure)}`,
396
+ ' Agent role: client/operator TUI only',
397
+ ' hosting lifecycle: external',
398
+ ' Agent starts runtime: no',
401
399
  ...(options.service ? [
402
400
  ` platform: ${options.service.managed.platform}`,
403
401
  ` installed: ${yesNo(options.service.managed.installed)}`,
@@ -405,12 +403,6 @@ export function renderCliStatus(options: CliStatusOptions): string {
405
403
  ` definition: ${options.service.managed.path}`,
406
404
  ` log: ${options.service.log.path ?? 'n/a'} (${options.service.log.exists ? 'present' : 'missing'})`,
407
405
  ] : []),
408
- '',
409
- 'Runtime Endpoint Diagnostics:',
410
- bindLine('runtimeApi', controlPlaneEnabled, controlPlaneBinding),
411
- bindLine('incomingWebhook', listenerEnabled, httpListenerBinding),
412
- bindLine('browserCompanion', webEnabled, webBinding),
413
- '',
414
406
  'Onboarding:',
415
407
  ` checked: ${marker?.exists ? 'yes' : 'no'}`,
416
408
  ` scope: ${marker?.scope ?? 'none'}`,
@@ -418,6 +410,18 @@ export function renderCliStatus(options: CliStatusOptions): string {
418
410
  ];
419
411
 
420
412
  if (options.doctor) {
413
+ lines.push(
414
+ '',
415
+ 'External Runtime Config Signals:',
416
+ ` host config present: ${yesNo(serviceEnabled)}`,
417
+ ` host autostart: ${yesNo(serviceAutostart)}`,
418
+ ` host restart policy: ${yesNo(restartOnFailure)}`,
419
+ '',
420
+ 'Endpoint Diagnostics:',
421
+ bindLine('runtimeApi', controlPlaneEnabled, controlPlaneBinding),
422
+ bindLine('incomingWebhook', listenerEnabled, httpListenerBinding),
423
+ bindLine('browserCompanion', webEnabled, webBinding),
424
+ );
421
425
  lines.push('', 'Warnings:');
422
426
  if (findings.length === 0) {
423
427
  lines.push(' none');
@@ -439,7 +443,7 @@ export function renderCliStatus(options: CliStatusOptions): string {
439
443
  export function renderOnboardingCliStatus(options: CliStatusOptions): string {
440
444
  const marker = options.onboardingMarkers?.effective;
441
445
  return [
442
- 'GoodVibes Agent onboarding status',
446
+ 'GoodVibes Agent setup status',
443
447
  ` checked: ${marker?.exists ? 'yes' : 'no'}`,
444
448
  ` scope: ${marker?.scope ?? 'none'}`,
445
449
  ` source: ${marker?.payload?.source ?? 'n/a'}`,
@@ -27,14 +27,14 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
27
27
  detail: 'Agent connects to an existing GoodVibes runtime and owns local assistant configuration only. Runtime lifecycle and connectivity posture remain external.',
28
28
  actions: [
29
29
  { id: 'config', label: 'Open settings', detail: 'Open the fullscreen Agent settings workspace.', command: '/config', kind: 'command', safety: 'safe' },
30
- { id: 'onboarding', label: 'Run setup', detail: 'Review Agent settings in the fullscreen setup flow.', command: '/onboarding', kind: 'command', safety: 'safe' },
30
+ { id: 'setup', label: 'Run setup', detail: 'Review Agent settings in the fullscreen setup flow.', command: '/setup', kind: 'command', safety: 'safe' },
31
31
  { id: 'setup-provider-model', label: 'Provider and model', detail: 'Choose the provider/model route for normal assistant chat.', command: '/model', kind: 'command', safety: 'safe' },
32
32
  { id: 'setup-agent-knowledge', label: 'Agent Knowledge', detail: 'Inspect the isolated Agent Knowledge store before ingesting source-backed material.', command: '/knowledge status', kind: 'command', safety: 'read-only' },
33
33
  { id: 'setup-runtime-profiles', label: 'Agent profiles', detail: 'Browse starter templates for isolated Agent homes and operator identities.', command: '/agent-profile templates', kind: 'command', safety: 'read-only' },
34
34
  { id: 'setup-personas', label: 'Personas', detail: 'Create or select the active local Agent persona.', targetCategoryId: 'personas', kind: 'workspace', safety: 'safe' },
35
35
  { id: 'setup-skills', label: 'Skills', detail: 'Create, review, and enable reusable local Agent skills.', targetCategoryId: 'skills', kind: 'workspace', safety: 'safe' },
36
36
  { id: 'setup-routines', label: 'Routines', detail: 'Create, review, and enable local Agent routines before any explicit schedule promotion.', targetCategoryId: 'routines', kind: 'workspace', safety: 'safe' },
37
- { id: 'setup-memory', label: 'Local memory', detail: 'Inspect local/session memory; secrets stay rejected or redacted.', command: '/memory', kind: 'command', safety: 'read-only' },
37
+ { id: 'setup-memory', label: 'Local memory', detail: 'Inspect Agent-local memory; secrets stay rejected or redacted.', command: '/memory', kind: 'command', safety: 'read-only' },
38
38
  { id: 'setup-channels', label: 'Channels', detail: 'Open companion pairing and channel readiness setup.', command: '/pair', kind: 'command', safety: 'safe' },
39
39
  { id: 'setup-voice-media', label: 'Voice and media', detail: 'Open TTS/media settings for voice and image-capable Agent flows.', command: '/config tts', kind: 'command', safety: 'safe' },
40
40
  { id: 'provider', label: 'Provider status', detail: 'Review provider/model posture.', command: '/provider', kind: 'command', safety: 'read-only' },
@@ -66,7 +66,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
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
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
- { 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' },
69
+ { id: 'knowledge-sources', label: 'Source library', detail: 'List source-backed records already ingested into the isolated Agent Knowledge segment.', command: '/knowledge list --kind sources', 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
  ],
72
72
  },
@@ -81,8 +81,8 @@ 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-tools', label: 'Browser tools', detail: 'Inspect browser/tool readiness without starting inbound endpoints or mutating runtime state.', command: '/mcp servers', kind: 'command', safety: 'read-only' },
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' },
84
+ { id: 'browser-tools', label: 'Browser tools', detail: 'Inspect browser/tool server readiness without starting inbound endpoints or mutating runtime state.', command: '/mcp servers', kind: 'command', safety: 'read-only' },
85
+ { id: 'mcp-tools', label: 'MCP tool inventory', detail: 'List available MCP tools, including browser and automation roles, without changing server trust or setup.', command: '/mcp tools', kind: 'command', safety: 'read-only' },
86
86
  ],
87
87
  },
88
88
  {
@@ -13,13 +13,13 @@ export function registerGuidanceRuntimeCommands(registry: CommandRegistry): void
13
13
  ctx.openOnboardingWizard({ mode: 'edit' });
14
14
  return;
15
15
  }
16
- ctx.print('Use /onboarding to open the setup wizard.');
16
+ ctx.print('Use /setup to open Agent setup.');
17
17
  return;
18
18
  }
19
19
  if (sub === 'print') {
20
20
  ctx.print([
21
21
  'Welcome To GoodVibes Agent',
22
- ' /onboarding - open the onboarding wizard with current settings preloaded',
22
+ ' /setup - open Agent setup with current settings preloaded',
23
23
  ' /agent - open the Agent operator workspace',
24
24
  ' /knowledge - inspect isolated Agent Knowledge status, ask, and search',
25
25
  ' /memory - manage local Agent memory',
@@ -326,7 +326,7 @@ export function registerHealthRuntimeCommands(registry: CommandRegistry): void {
326
326
  ' /health remote',
327
327
  ' /health maintenance',
328
328
  ' /health repair <domain>',
329
- ' /onboarding',
329
+ ' /setup',
330
330
  ].join('\n'));
331
331
  },
332
332
  });
@@ -3,12 +3,13 @@ import { openOnboardingWizard } from './runtime-services.ts';
3
3
 
4
4
  export function registerOnboardingRuntimeCommands(registry: CommandRegistry): void {
5
5
  registry.register({
6
- name: 'onboarding',
7
- description: 'Open the onboarding wizard with current settings preloaded for review and editing',
6
+ name: 'setup',
7
+ aliases: ['onboarding'],
8
+ description: 'Open Agent setup with current settings preloaded for review and editing',
8
9
  usage: '',
9
10
  handler(_args, ctx) {
10
11
  openOnboardingWizard(ctx, { mode: 'edit', reset: true });
11
- ctx.print('Opening onboarding wizard.');
12
+ ctx.print('Opening Agent setup.');
12
13
  },
13
14
  });
14
15
  }