@pellux/goodvibes-agent 0.1.60 → 0.1.62

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,19 @@
2
2
 
3
3
  All notable changes to GoodVibes Agent will be recorded here.
4
4
 
5
+ ## 0.1.62 - 2026-05-31
6
+
7
+ - Tightened primary CLI help around Agent workflows instead of advanced runtime diagnostics.
8
+ - Reworded onboarding, workspace, and routine schedule surfaces toward Agent/operator language.
9
+ - Kept schedule promotion explicit while removing stale daemon-schedule wording from user-facing flows.
10
+
11
+ ## 0.1.61 - 2026-05-31
12
+
13
+ - ff6766d Stop shipping repo-local skills
14
+ - 2eedcf5 Focus primary CLI help on Agent use
15
+ - 0ec6af0 Document Bun trust path for SDK native deps
16
+ - f9a6c76 Surface Agent actions in slash help
17
+
5
18
  ## 0.1.60 - 2026-05-31
6
19
 
7
20
  - f3f2486 Stop shipping developer guidance in package
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  GoodVibes Agent is the personal operator assistant built on the GoodVibes terminal UI foundation. This repository is intentionally in a near-fork baseline phase: the shell, renderer, input, fullscreen workspace, command, and release bones are copied from the terminal product first, then the coding-specific behavior is removed or reshaped deliberately.
7
7
 
8
- The Agent product connects to an already-running GoodVibes daemon. It does not install, start, stop, restart, or own the daemon, HTTP listener, web surface, or service lifecycle.
8
+ The Agent product connects to an already-running GoodVibes runtime. It does not install, start, stop, restart, or own runtime connectivity or service lifecycle.
9
9
 
10
10
  ## Install
11
11
 
@@ -29,7 +29,7 @@ goodvibes-agent --help
29
29
  If Bun reports untrusted lifecycle dependencies, trust only the package and dependencies required by this package:
30
30
 
31
31
  ```sh
32
- bun pm trust -g @pellux/goodvibes-agent @pellux/goodvibes-sdk core-js
32
+ 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
33
33
  ```
34
34
 
35
35
  ## Source Usage
@@ -65,7 +65,7 @@ goodvibes-agent --agent-profile household status
65
65
  GOODVIBES_AGENT_HOME=/path/to/agent-home goodvibes-agent status
66
66
  ```
67
67
 
68
- Profiles isolate Agent-local config, sessions, local memory, personas, skills, routines, and setup state. Starter templates seed local personas, skills, and routines for household, research, travel, operations, and personal productivity profiles; exported starter JSON can be edited and re-imported as a local starter. The daemon is still external and shared unless your daemon host is separately configured otherwise.
68
+ Profiles isolate Agent-local config, sessions, local memory, personas, skills, routines, and setup state. Starter templates seed local personas, skills, and routines for household, research, travel, operations, and personal productivity profiles; exported starter JSON can be edited and re-imported as a local starter. The GoodVibes runtime is still external and shared unless the owning host is separately configured otherwise.
69
69
 
70
70
  Local Agent behavior is editable from the TUI:
71
71
 
@@ -81,13 +81,13 @@ Local Agent behavior is editable from the TUI:
81
81
  /skills local list
82
82
  ```
83
83
 
84
- Starting a routine records local usage and prints its steps; it does not spawn background agents or daemon automation jobs. Promotion to a daemon schedule is separate and explicit: it calls the public `schedules.create` route on the externally managed daemon only after `--yes`, can include explicit delivery targets such as `--delivery-surface slack`, records a redacted local receipt, and the generated scheduled prompt keeps Agent Knowledge isolated from default Knowledge/Wiki and non-Agent knowledge segments. Use `/schedule reconcile` to compare those local receipts against live externally owned daemon schedules through public `schedules.list`.
84
+ Starting a routine records local usage and prints its steps; it does not spawn background agents or automation jobs. Promotion to an external schedule is separate and explicit: it calls the public `schedules.create` route only after `--yes`, can include explicit delivery targets such as `--delivery-surface slack`, records a redacted local receipt, and the generated scheduled prompt keeps Agent Knowledge isolated from default Knowledge/Wiki and non-Agent knowledge segments. Use `/schedule reconcile` to compare those local receipts against live external schedules through public `schedules.list`.
85
85
 
86
- ## Daemon Prerequisite
86
+ ## Runtime Prerequisite
87
87
 
88
- Start or restart the daemon from GoodVibes TUI or the daemon host before launching Agent. Agent status and companion/knowledge routes connect to that external daemon, normally on `http://127.0.0.1:3421`.
88
+ Start or restart the GoodVibes runtime from GoodVibes TUI or the owning host before launching Agent. Agent status and companion/knowledge routes connect to that external runtime, normally on `http://127.0.0.1:3421`.
89
89
 
90
- Agent intentionally blocks daemon lifecycle commands:
90
+ Agent intentionally blocks runtime lifecycle commands:
91
91
 
92
92
  ```sh
93
93
  goodvibes-agent serve
@@ -95,7 +95,7 @@ goodvibes-agent service start
95
95
  goodvibes-agent surfaces enable web
96
96
  ```
97
97
 
98
- Those commands should return explicit external-daemon guidance instead of mutating local service posture.
98
+ Those commands should return explicit external-runtime guidance instead of mutating local service posture.
99
99
 
100
100
  ## Product Boundary
101
101
 
@@ -103,7 +103,7 @@ GoodVibes Agent owns the operator assistant surface: serial assistant flow, proa
103
103
 
104
104
  Agent Knowledge/Wiki is its own product segment. Agent uses `/api/goodvibes-agent/knowledge/*` and must not fall back to default Knowledge/Wiki or other product-specific knowledge routes.
105
105
 
106
- GoodVibes TUI owns coding execution: file edits, git/worktree workflows, coding panels, runtime-isolation UX, and WRFC execution. Agent may delegate explicit build/fix/review work to TUI through public daemon/session contracts; normal assistant chat must not use shared coding sessions.
106
+ GoodVibes TUI owns coding execution: file edits, git/worktree workflows, coding panels, runtime-isolation UX, and WRFC execution. Agent may delegate explicit build/fix/review work to TUI through public runtime/session contracts; normal assistant chat must not use shared coding sessions.
107
107
 
108
108
  ## Package Docs
109
109
 
package/docs/README.md CHANGED
@@ -15,8 +15,8 @@ Important baseline constraints:
15
15
  - Agent installs one executable: `goodvibes-agent`.
16
16
  - Agent uses Bun and TypeScript-authored source.
17
17
  - Agent depends on `@pellux/goodvibes-sdk@0.33.35`.
18
- - Agent connects to an externally managed daemon.
19
- - Agent does not start, stop, restart, install, uninstall, or own daemon/listener/web/service lifecycle.
18
+ - Agent connects to an externally managed GoodVibes runtime.
19
+ - Agent does not start, stop, restart, install, uninstall, or own runtime connectivity or service lifecycle.
20
20
  - Agent Knowledge/Wiki uses only `/api/goodvibes-agent/knowledge/*`; there is no default Knowledge/Wiki or non-Agent product fallback.
21
21
  - Agent supports isolated runtime homes with `GOODVIBES_AGENT_HOME=<path>` and named profile homes with `goodvibes-agent profiles create <name> --template <starter> --yes` plus `--agent-profile <name>`.
22
22
  - Agent ships starter profile templates for household, research, travel, operations, and personal productivity local state; `profiles templates export/import` and `/agent-profile guide` support local custom starters.
@@ -1,18 +1,18 @@
1
1
  # Deployment And Services
2
2
 
3
- GoodVibes Agent is a client/operator surface. It does not own daemon or listener deployment.
3
+ GoodVibes Agent is a client/operator surface. It does not own runtime or listener deployment.
4
4
 
5
5
  ## Service Ownership
6
6
 
7
7
  Agent must not:
8
8
 
9
- - start an embedded daemon
9
+ - start an embedded runtime
10
10
  - start an embedded HTTP listener
11
11
  - install or uninstall OS services
12
- - start, stop, or restart daemon services
12
+ - start, stop, or restart runtime services
13
13
  - enable web, listener, control-plane, or channel surface posture
14
14
 
15
- Those operations belong to GoodVibes TUI or the daemon host.
15
+ Those operations belong to GoodVibes TUI or the owning runtime host.
16
16
 
17
17
  ## Agent Runtime
18
18
 
@@ -30,21 +30,21 @@ The executable is backed by TypeScript-authored source with a Bun shebang. Packa
30
30
  - `goodvibes-agent` launches the TUI in a real PTY
31
31
  - `goodvibes-agent smoke --json` when that command is available in the baseline being tested
32
32
 
33
- ## External Daemon Connection
33
+ ## External Runtime Connection
34
34
 
35
- Agent reads configuration and tokens, then connects to an already-running daemon. The default local control-plane URL is normally:
35
+ Agent reads configuration and tokens, then connects to an already-running GoodVibes runtime. The default local control-plane URL is normally:
36
36
 
37
37
  ```text
38
38
  http://127.0.0.1:3421
39
39
  ```
40
40
 
41
- If the daemon is unavailable, unauthenticated, or on an incompatible SDK version, Agent commands should report actionable diagnostics without printing token values.
41
+ If the runtime is unavailable, unauthenticated, or on an incompatible SDK version, Agent commands should report actionable diagnostics without printing token values.
42
42
 
43
43
  ## Surface Commands
44
44
 
45
45
  `goodvibes-agent surfaces`, `surfaces check`, and `surfaces show <surfaceId>` are read-only diagnostics.
46
46
 
47
- `surfaces enable` and `surfaces disable` are intentionally blocked in Agent because they can mutate daemon/listener/web/channel posture.
47
+ `surfaces enable` and `surfaces disable` are intentionally blocked in Agent because they can mutate runtime/listener/web/channel posture.
48
48
 
49
49
  ## Release Rule
50
50
 
@@ -5,10 +5,10 @@ GoodVibes Agent is the installable public alpha of the personal operator assista
5
5
  ## Requirements
6
6
 
7
7
  - Bun `1.3.10` or newer
8
- - An already-running GoodVibes daemon compatible with `@pellux/goodvibes-sdk@0.33.35`
9
- - A daemon token/config path accepted by the external daemon
8
+ - An already-running GoodVibes runtime compatible with `@pellux/goodvibes-sdk@0.33.35`
9
+ - A runtime token/config path accepted by that external runtime
10
10
 
11
- Agent does not launch the daemon for you.
11
+ Agent does not launch the runtime for you.
12
12
 
13
13
  ## Install From Package
14
14
 
@@ -28,7 +28,7 @@ goodvibes-agent --help
28
28
  If Bun requires lifecycle trust:
29
29
 
30
30
  ```sh
31
- bun pm trust -g @pellux/goodvibes-agent @pellux/goodvibes-sdk core-js
31
+ 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
32
32
  ```
33
33
 
34
34
  ## Run From Source
@@ -46,7 +46,7 @@ Once the TUI opens, run `/agent`, `/home`, or `/operator` to open the Agent oper
46
46
 
47
47
  Use `/agent-profile guide` inside that workspace to walk through starter-profile authoring. It lists built-in and local starters, exports a JSON starter for editing, imports the edited starter back into this Agent home, and creates isolated profiles from the result.
48
48
 
49
- Use `/schedule receipts` to review redacted local routine promotion history and `/schedule reconcile` to compare those receipts with live externally owned daemon schedules through public `schedules.list`.
49
+ Use `/schedule receipts` to review redacted local routine promotion history and `/schedule reconcile` to compare those receipts with live external schedules through public `schedules.list`.
50
50
 
51
51
  ## Isolated Agent Profiles
52
52
 
@@ -67,7 +67,7 @@ goodvibes-agent --agent-profile household status
67
67
  goodvibes-agent --agent-profile household
68
68
  ```
69
69
 
70
- Named profiles isolate Agent-local config, sessions, memory, personas, skills, routines, and setup state under a profile-specific home. Starter templates seed local personas, skills, and routines for household, research, travel, operations, and personal productivity profiles; exported starter JSON can be edited and re-imported as a local starter. They do not start or isolate the external daemon by themselves.
70
+ Named profiles isolate Agent-local config, sessions, memory, personas, skills, routines, and setup state under a profile-specific home. Starter templates seed local personas, skills, and routines for household, research, travel, operations, and personal productivity profiles; exported starter JSON can be edited and re-imported as a local starter. They do not start or isolate the external GoodVibes runtime by themselves.
71
71
 
72
72
  ## Local Personas, Routines, And Skills
73
73
 
@@ -85,11 +85,11 @@ Personas, routines, and reusable Agent skills are local to GoodVibes Agent. They
85
85
  /skills local list
86
86
  ```
87
87
 
88
- The active persona plus enabled Agent routines and skills are injected into the main serial assistant conversation. Starting a routine records local usage and prints its steps; it does not spawn background agents or daemon automation jobs. Promoting a routine to a schedule is an explicit `schedules.create` call to the external daemon, requires `--yes`, writes a local redacted promotion receipt, and preserves the rule that Agent Knowledge never falls back to default Knowledge/Wiki or non-Agent knowledge segments.
88
+ The active persona plus enabled Agent routines and skills are injected into the main serial assistant conversation. Starting a routine records local usage and prints its steps; it does not spawn background agents or automation jobs. Promoting a routine to a schedule is an explicit `schedules.create` call, requires `--yes`, writes a local redacted promotion receipt, and preserves the rule that Agent Knowledge never falls back to default Knowledge/Wiki or non-Agent knowledge segments.
89
89
 
90
- ## External Daemon
90
+ ## External Runtime
91
91
 
92
- Start the daemon from GoodVibes TUI or the daemon host before using daemon-backed Agent features. Agent expects the daemon to expose the public operator/Agent routes, including:
92
+ Start the runtime from GoodVibes TUI or the owning host before using runtime-backed Agent features. Agent expects the runtime to expose the public operator/Agent routes, including:
93
93
 
94
94
  - `/status`
95
95
  - `/api/goodvibes-agent/knowledge/status`
@@ -99,7 +99,7 @@ Start the daemon from GoodVibes TUI or the daemon host before using daemon-backe
99
99
 
100
100
  Agent Knowledge/Wiki is an Agent-owned product segment. Agent commands must not fall back to default Knowledge/Wiki or other product-specific knowledge spaces.
101
101
 
102
- Agent lifecycle commands that would start or mutate daemon posture are blocked intentionally. Use `goodvibes-agent status`, `goodvibes-agent doctor`, and read-only surface checks for diagnostics.
102
+ Agent lifecycle commands that would start or mutate runtime posture are blocked intentionally. Use `goodvibes-agent status`, `goodvibes-agent doctor`, and read-only surface checks for diagnostics.
103
103
 
104
104
  ## Current Baseline Notes
105
105
 
@@ -9,7 +9,7 @@ GoodVibes Agent's current installable public alpha version is recorded in `packa
9
9
  - SDK dependency: exact pin to `@pellux/goodvibes-sdk@0.33.35`
10
10
  - runtime: Bun
11
11
  - source language: TypeScript
12
- - daemon ownership: external only
12
+ - runtime ownership: external only
13
13
 
14
14
  End users install and run GoodVibes Agent with Bun:
15
15
 
@@ -44,16 +44,16 @@ Also run the package install smoke from a packed artifact. It must prove:
44
44
  - `goodvibes-agent --help` works
45
45
  - `goodvibes-agent --version` reports the package version
46
46
  - the installed TUI launches in a PTY and does not exit immediately
47
- - daemon-backed commands fail clearly when the external daemon is unavailable or unauthenticated
47
+ - runtime-backed commands fail clearly when the external GoodVibes runtime is unavailable or unauthenticated
48
48
  - no token value is printed
49
49
 
50
50
  ## Do Not Ship
51
51
 
52
- Do not publish if package-facing docs or install commands refer to another package name, another executable, or Agent-owned daemon lifecycle.
52
+ Do not publish if package-facing docs or install commands refer to another package name, another executable, or Agent-owned runtime lifecycle.
53
53
 
54
54
  Do not publish if Agent Knowledge commands can fall back to default Knowledge/Wiki or another product-specific knowledge route. Agent Knowledge must use the isolated `/api/goodvibes-agent/knowledge/*` segment.
55
55
 
56
- Do not ship daemon binaries from this package. If Agent later gets compiled artifacts, they must use Agent artifact names and remain separate from daemon ownership.
56
+ Do not ship runtime host binaries from this package. If Agent later gets compiled artifacts, they must use Agent artifact names and remain separate from runtime ownership.
57
57
 
58
58
  ## Near-Fork Baseline Rule
59
59
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-agent",
3
- "version": "0.1.60",
3
+ "version": "0.1.62",
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",
@@ -12,7 +12,6 @@
12
12
  "files": [
13
13
  "bin",
14
14
  "LICENSE",
15
- ".goodvibes/skills",
16
15
  "src",
17
16
  "!src/test",
18
17
  "!src/**/*.test.ts",
@@ -107,7 +106,12 @@
107
106
  },
108
107
  "trustedDependencies": [
109
108
  "@pellux/goodvibes-sdk",
110
- "core-js"
109
+ "core-js",
110
+ "tree-sitter-css",
111
+ "tree-sitter-javascript",
112
+ "tree-sitter-json",
113
+ "tree-sitter-python",
114
+ "tree-sitter-typescript"
111
115
  ],
112
116
  "overrides": {
113
117
  "minimatch": "^10.2.5"
@@ -27,16 +27,16 @@ export function formatRoutineSchedulePreview(preview: RoutineSchedulePromotionPr
27
27
  const delivery = preview.payload.delivery;
28
28
  const deliveryTargetCount = delivery?.targets.length ?? 0;
29
29
  return [
30
- 'Daemon schedule preview for Agent routine',
30
+ 'GoodVibes schedule preview for Agent routine',
31
31
  ` routine: ${preview.routineName} (${preview.routineId})`,
32
32
  ` route: ${preview.method} ${preview.route}`,
33
- ` name: ${String(preview.payload.name ?? '(daemon default)')}`,
33
+ ` name: ${String(preview.payload.name ?? '(runtime default)')}`,
34
34
  ` schedule: ${preview.payload.kind} ${schedule}`,
35
35
  ` enabled: ${preview.payload.enabled === false ? 'no' : 'yes'}`,
36
36
  ` delivery: ${delivery?.mode ?? 'none'}${deliveryTargetCount > 0 ? ` (${deliveryTargetCount} target${deliveryTargetCount === 1 ? '' : 's'})` : ''}`,
37
- ' target: external daemon service/main conversation route',
37
+ ' target: GoodVibes runtime/main conversation route',
38
38
  ' policy: isolated Agent Knowledge only; no default wiki/non-Agent fallback; no WRFC unless explicitly delegated',
39
- ' next: rerun with --yes to create this daemon schedule',
39
+ ' next: rerun with --yes to create this external schedule',
40
40
  ].join('\n');
41
41
  }
42
42
 
@@ -45,12 +45,12 @@ export function formatRoutineScheduleSuccess(result: RoutineSchedulePromotionSuc
45
45
  const id = readString(record, 'id') ?? '(unknown)';
46
46
  const status = readString(record, 'status') ?? (record.enabled === false ? 'paused' : 'enabled');
47
47
  return [
48
- 'Created daemon schedule for Agent routine',
48
+ 'Created GoodVibes schedule for Agent routine',
49
49
  ` routine: ${result.routineName} (${result.routineId})`,
50
50
  ` schedule: ${id}`,
51
51
  ` status: ${status}`,
52
52
  ` route: ${result.kind} ${result.route}`,
53
- ' next: inspect with /schedule list or daemon schedule observability',
53
+ ' next: inspect with /schedule list or schedule observability',
54
54
  ].join('\n');
55
55
  }
56
56
 
@@ -83,7 +83,7 @@ export function formatRoutineScheduleReceipt(receipt: RoutineScheduleReceipt): s
83
83
  ` status: ${receipt.status}`,
84
84
  ` routine: ${receipt.routineName} (${receipt.routineId})`,
85
85
  ` route: ${receipt.method} ${receipt.route}`,
86
- ` daemon: ${receipt.daemonBaseUrl}`,
86
+ ` runtime: ${receipt.daemonBaseUrl}`,
87
87
  ` schedule: ${receipt.scheduleName}${receipt.scheduleId ? ` (${receipt.scheduleId})` : ''}`,
88
88
  receipt.scheduleStatus ? ` schedule status: ${receipt.scheduleStatus}` : '',
89
89
  ` cadence: ${receipt.scheduleKind} ${receipt.scheduleValue}${receipt.timezone ? ` [${receipt.timezone}]` : ''}`,
@@ -101,18 +101,18 @@ export function formatRoutineScheduleReceipt(receipt: RoutineScheduleReceipt): s
101
101
  export function formatRoutineScheduleCorrelation(result: RoutineScheduleCorrelationResult, limit = 10): string {
102
102
  if (!result.ok) {
103
103
  return [
104
- `Daemon schedule reconciliation error: ${result.kind}`,
104
+ `GoodVibes schedule reconciliation error: ${result.kind}`,
105
105
  ` ${result.error}`,
106
- result.baseUrl ? ` daemon: ${result.baseUrl}` : null,
106
+ result.baseUrl ? ` runtime: ${result.baseUrl}` : null,
107
107
  ` route: ${ROUTINE_SCHEDULE_LIST_METHOD} ${result.route}`,
108
108
  result.kind === 'auth_required'
109
- ? ' next: pair/authenticate with the externally managed GoodVibes daemon, then retry.'
109
+ ? ' next: pair/authenticate with the external GoodVibes runtime, then retry.'
110
110
  : null,
111
111
  result.kind === 'daemon_unavailable'
112
- ? ' next: start/restart the external GoodVibes daemon from TUI or daemon host tooling; Agent does not own daemon lifecycle.'
112
+ ? ' next: start/restart the external GoodVibes runtime from TUI or host tooling; Agent does not own runtime lifecycle.'
113
113
  : null,
114
114
  result.kind === 'version_mismatch' || result.kind === 'daemon_route_unavailable'
115
- ? ' next: update/restart the external GoodVibes daemon so public schedules.list is available.'
115
+ ? ' next: update/restart the external GoodVibes runtime so public schedules.list is available.'
116
116
  : null,
117
117
  ].filter((line): line is string => Boolean(line)).join('\n');
118
118
  }
@@ -120,7 +120,7 @@ export function formatRoutineScheduleCorrelation(result: RoutineScheduleCorrelat
120
120
  if (result.receiptCount === 0) {
121
121
  return [
122
122
  'Agent routine schedule reconciliation',
123
- ` daemon: ${result.baseUrl}`,
123
+ ` runtime: ${result.baseUrl}`,
124
124
  ` route: ${result.kind} ${result.route}`,
125
125
  ` live schedules: ${result.scheduleCount}`,
126
126
  ' No local routine promotion receipts exist yet.',
@@ -132,7 +132,7 @@ export function formatRoutineScheduleCorrelation(result: RoutineScheduleCorrelat
132
132
  const failed = result.correlations.filter((entry) => entry.liveStatus === 'failed-receipt').length;
133
133
  return [
134
134
  'Agent routine schedule reconciliation',
135
- ` daemon: ${result.baseUrl}`,
135
+ ` runtime: ${result.baseUrl}`,
136
136
  ` route: ${result.kind} ${result.route}`,
137
137
  ` receipts: ${result.receiptCount}; live schedules: ${result.scheduleCount}; matched: ${matched}; missing: ${missing}; failed receipts: ${failed}`,
138
138
  ...correlations.map((entry) => {
@@ -153,21 +153,21 @@ export function formatRoutineScheduleCorrelation(result: RoutineScheduleCorrelat
153
153
 
154
154
  export function formatRoutineScheduleFailure(failure: RoutineSchedulePromotionFailure): string {
155
155
  return [
156
- `Daemon schedule error: ${failure.kind}`,
156
+ `GoodVibes schedule error: ${failure.kind}`,
157
157
  ` ${failure.error}`,
158
- failure.baseUrl ? ` daemon: ${failure.baseUrl}` : null,
158
+ failure.baseUrl ? ` runtime: ${failure.baseUrl}` : null,
159
159
  ` route: ${ROUTINE_SCHEDULE_METHOD} ${failure.route}`,
160
160
  failure.kind === 'version_mismatch' && failure.daemonVersion && failure.expectedSdkVersion
161
- ? ` versions: daemon=${failure.daemonVersion} expected=${failure.expectedSdkVersion}`
161
+ ? ` versions: runtime=${failure.daemonVersion} expected=${failure.expectedSdkVersion}`
162
162
  : null,
163
163
  failure.kind === 'auth_required'
164
- ? ' next: pair/authenticate with the externally managed GoodVibes daemon, then retry with --yes.'
164
+ ? ' next: pair/authenticate with the external GoodVibes runtime, then retry with --yes.'
165
165
  : null,
166
166
  failure.kind === 'daemon_unavailable'
167
- ? ' next: start/restart the external GoodVibes daemon from TUI or daemon host tooling; Agent does not own daemon lifecycle.'
167
+ ? ' next: start/restart the external GoodVibes runtime from TUI or host tooling; Agent does not own runtime lifecycle.'
168
168
  : null,
169
169
  failure.kind === 'version_mismatch' || failure.kind === 'daemon_route_unavailable'
170
- ? ' next: update/restart the external GoodVibes daemon so public schedules.create is available.'
170
+ ? ' next: update/restart the external GoodVibes runtime so public schedules.create is available.'
171
171
  : null,
172
172
  ].filter((line): line is string => Boolean(line)).join('\n');
173
173
  }
@@ -393,7 +393,7 @@ async function classifyScheduleError(
393
393
  return {
394
394
  ok: false,
395
395
  kind: 'version_mismatch',
396
- error: `External daemon SDK version ${daemonVersion} does not match Agent SDK pin ${SDK_VERSION}; schedules.create is unavailable.`,
396
+ error: `External runtime SDK version ${daemonVersion} does not match Agent SDK pin ${SDK_VERSION}; schedules.create is unavailable.`,
397
397
  route: ROUTINE_SCHEDULE_ROUTE,
398
398
  baseUrl: connection.baseUrl,
399
399
  daemonVersion,
@@ -454,7 +454,7 @@ async function classifyScheduleListError(
454
454
  return {
455
455
  ok: false,
456
456
  kind: 'version_mismatch',
457
- error: `External daemon SDK version ${daemonVersion} does not match Agent SDK pin ${SDK_VERSION}; schedules.list is unavailable.`,
457
+ error: `External runtime SDK version ${daemonVersion} does not match Agent SDK pin ${SDK_VERSION}; schedules.list is unavailable.`,
458
458
  route: ROUTINE_SCHEDULE_ROUTE,
459
459
  baseUrl: connection.baseUrl,
460
460
  daemonVersion,
@@ -214,7 +214,7 @@ async function classifyKnowledgeError(error: unknown, connection: AgentDaemonCon
214
214
  return {
215
215
  ok: false,
216
216
  kind: 'version_mismatch',
217
- error: `External daemon SDK version ${daemonVersion} does not match Agent SDK pin ${metadata.sdkVersion}; Agent Knowledge route is unavailable.`,
217
+ error: `External runtime SDK version ${daemonVersion} does not match Agent SDK pin ${metadata.sdkVersion}; Agent Knowledge route is unavailable.`,
218
218
  baseUrl: connection.baseUrl,
219
219
  route,
220
220
  daemonVersion,
@@ -419,16 +419,16 @@ function formatFailure(failure: AgentKnowledgeFailure, json: boolean): string {
419
419
  return [
420
420
  `Agent Knowledge error: ${failure.kind}`,
421
421
  ` ${failure.error}`,
422
- ` daemon: ${failure.baseUrl}`,
422
+ ` runtime: ${failure.baseUrl}`,
423
423
  ` route: ${failure.route}`,
424
424
  failure.kind === 'version_mismatch' && failure.daemonVersion && failure.expectedSdkVersion
425
- ? ` versions: daemon=${failure.daemonVersion} expected=${failure.expectedSdkVersion}`
425
+ ? ` versions: runtime=${failure.daemonVersion} expected=${failure.expectedSdkVersion}`
426
426
  : null,
427
427
  failure.kind === 'version_mismatch'
428
- ? ' next: update/restart the external GoodVibes daemon so /status matches the Agent SDK pin.'
428
+ ? ' next: update/restart the external GoodVibes runtime so /status matches the Agent SDK pin.'
429
429
  : null,
430
430
  failure.kind === 'daemon_route_unavailable'
431
- ? ' next: update/restart the external GoodVibes daemon to the SDK version required by this Agent package.'
431
+ ? ' next: update/restart the external GoodVibes runtime to the SDK version required by this Agent package.'
432
432
  : null,
433
433
  ].filter((line): line is string => Boolean(line)).join('\n');
434
434
  }
@@ -615,11 +615,11 @@ export async function handleCompatCommand(runtime: CliCommandRuntime): Promise<C
615
615
  'GoodVibes Agent compatibility',
616
616
  ` package: ${metadata.version}`,
617
617
  ` SDK pin: ${metadata.sdkVersion}`,
618
- ` daemon: ${daemonVersion} at ${connection.baseUrl} (${daemon.ok ? 'reachable' : 'unreachable'})`,
618
+ ` runtime: ${daemonVersion} at ${connection.baseUrl} (${daemon.ok ? 'reachable' : 'unreachable'})`,
619
619
  ` version compatible: ${yesNo(versionCompatible)}`,
620
620
  ` operator token: ${connection.token ? 'present' : 'missing'} (${connection.tokenPath})`,
621
621
  ` Agent knowledge route: ${knowledgeRouteReady ? 'ready' : `not ready (${knowledgeRoute.ok ? 'unknown' : knowledgeRoute.kind})`}`,
622
- ...(versionCompatible ? [] : [' next: update/restart the external GoodVibes daemon so /status matches the Agent SDK pin.']),
622
+ ...(versionCompatible ? [] : [' next: update/restart the external GoodVibes runtime so /status matches the Agent SDK pin.']),
623
623
  ].join('\n');
624
624
  return {
625
625
  output: runtime.cli.flags.outputFormat === 'json' ? JSON.stringify(value, null, 2) : text,
@@ -89,8 +89,8 @@ export async function prepareShellCliRuntime(
89
89
  }
90
90
 
91
91
  if (cli.command === 'serve') {
92
- console.error(`${binary} connects to an already-running GoodVibes daemon and does not start or own daemon lifecycle.`);
93
- console.error('Start or manage the daemon from GoodVibes TUI or your daemon host tooling, then run this Agent against it.');
92
+ console.error(`${binary} connects to an already-running GoodVibes runtime and does not start or own runtime lifecycle.`);
93
+ console.error('Start or manage the runtime from GoodVibes TUI or host tooling, then run this Agent against it.');
94
94
  process.exit(2);
95
95
  }
96
96
 
package/src/cli/help.ts CHANGED
@@ -31,31 +31,24 @@ 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
- ' web Show browser surface bind URL and enablement',
35
- ' service Inspect existing daemon service posture (read-only)',
36
- ' status Print config, provider, service, and onboarding posture',
34
+ ' status Print config, provider, auth, and onboarding posture',
37
35
  ' doctor Print status plus setup warnings',
38
36
  ' onboarding [status] Open Agent onboarding, or print onboarding status',
39
37
  ' models [provider] List/use/pin selectable models and recent model history',
40
38
  ' providers List/inspect/use provider config/auth posture',
41
39
  ' profiles Manage isolated Agent runtime profile homes',
42
- ' routines Inspect local routines and explicitly promote one to a daemon schedule',
40
+ ' routines Inspect local routines and explicitly promote one to an external schedule',
43
41
  ' auth Inspect and manage local users, sessions, and bootstrap auth',
44
- ' compat Inspect Agent SDK pin, daemon version, and Agent knowledge route readiness',
42
+ ' compat Inspect Agent SDK pin, runtime version, and Agent knowledge route readiness',
45
43
  ' knowledge Use isolated Agent Knowledge/Wiki routes',
46
44
  ' ask|search Shortcuts for isolated Agent Knowledge ask/search',
47
45
  ' delegate Explicitly delegate build/fix/review work to GoodVibes TUI',
48
46
  ' subscription Start/finish/logout provider subscription sessions',
49
47
  ' secrets List, set, link, delete, and test GoodVibes secret refs',
50
48
  ' sessions List, show, export, or resume saved sessions',
51
- ' tasks List/show in-process runtime tasks (read-only)',
52
49
  ' pair|qrcode Print companion pairing payload and QR code',
53
- ' surfaces Inspect/check browser/listener/external surfaces (read-only)',
54
- ' listener test Test HTTP listener/webhook readiness',
55
- ' control-plane status Inspect daemon auth, local admin, tokens, and ports',
56
50
  ' bundle export|inspect|import',
57
51
  ' Move setup/profile/trust/support bundles',
58
- ' remote|bridge Inspect remote runner/node posture',
59
52
  ' completion <shell> Generate shell completion script',
60
53
  ' help [command] Print this help or command-specific help',
61
54
  ' version Print version',
@@ -66,7 +59,6 @@ export function renderGoodVibesHelp(binary = 'goodvibes-agent'): string {
66
59
  ' --agent-profile <name> Use an isolated Agent runtime profile home',
67
60
  ' -C, --cd <dir> Set working directory for this launch',
68
61
  ' --working-dir <dir> Alias for --cd',
69
- ' --daemon-home <dir> Override daemon home for daemon-backed commands',
70
62
  ' -c, --config <key=value> Override a config value for this launch',
71
63
  ' --enable <feature> Enable a feature flag for this launch',
72
64
  ' --disable <feature> Disable a feature flag for this launch',
@@ -76,9 +68,6 @@ export function renderGoodVibesHelp(binary = 'goodvibes-agent'): string {
76
68
  ' --output-format <format> Alias for --output',
77
69
  ' --json Alias for --output-format json',
78
70
  ' --no-alt-screen Keep output in normal terminal scrollback',
79
- ' --port <port> Port for server/web commands',
80
- ' --hostname <host> Hostname for server/web commands',
81
- ' --open Open browser when supported',
82
71
  ' -r, --resume [id|latest] Resume saved session when supported',
83
72
  ' -s, --session <id> Use a specific session when supported',
84
73
  ' --continue Continue the latest session when supported',
@@ -105,13 +94,10 @@ export function renderGoodVibesHelp(binary = 'goodvibes-agent'): string {
105
94
  ` ${binary} ask "What is GoodVibes Agent?"`,
106
95
  ` ${binary} search "release checklist"`,
107
96
  ` ${binary} delegate --wrfc "fix the failing tests in ~/work/project"`,
108
- ` ${binary} surfaces`,
109
- ` ${binary} surfaces check`,
110
- ` ${binary} service check`,
111
- ` ${binary} listener test`,
112
- ` ${binary} control-plane status`,
113
97
  ` ${binary} subscription providers`,
114
98
  ` ${binary} subscription login openai start --open`,
99
+ ` ${binary} pair`,
100
+ ` ${binary} routines list`,
115
101
  ].join('\n');
116
102
  }
117
103
 
@@ -131,7 +117,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
131
117
  run: {
132
118
  usage: ['run [prompt] [--output text|json|stream-json]', 'exec [prompt]'],
133
119
  summary: 'Run a single non-interactive agent turn and write the result to stdout.',
134
- examples: ['run "summarize the current project"', 'run --output json "list risks"', 'exec --output stream-json "check daemon status"'],
120
+ examples: ['run "summarize the current project"', 'run --output json "list risks"', 'exec --output stream-json "check runtime status"'],
135
121
  },
136
122
  onboarding: {
137
123
  usage: ['onboarding', 'setup', 'onboarding status'],
@@ -140,7 +126,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
140
126
  },
141
127
  status: {
142
128
  usage: ['status', 'status --json'],
143
- summary: 'Print config, provider, auth, service, surface, and onboarding posture.',
129
+ summary: 'Print Agent config, provider, auth, runtime connection, and onboarding posture.',
144
130
  examples: ['status', 'status --json'],
145
131
  },
146
132
  doctor: {
@@ -155,7 +141,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
155
141
  },
156
142
  profiles: {
157
143
  usage: ['profiles list', 'profiles templates', 'profiles templates export <id> <path> --yes', 'profiles templates import <path> --yes', 'profiles show <name>', 'profiles create <name> [--template <id>] --yes', 'profiles delete <name> --yes', '--agent-profile <name>'],
158
- summary: 'Create and inspect isolated Agent runtime profile homes, with starter templates for household, research, travel, operations, personal productivity, and local imported starters. A profile changes Agent-local config, sessions, memory, personas, skills, routines, and setup paths without changing the externally owned daemon.',
144
+ summary: 'Create and inspect isolated Agent runtime profile homes, with starter templates for household, research, travel, operations, personal productivity, and local imported starters. A profile changes Agent-local config, sessions, memory, personas, skills, routines, and setup paths without changing the shared GoodVibes runtime.',
159
145
  examples: ['profiles templates', 'profiles templates export research ./research-starter.json --yes', 'profiles templates import ./research-starter.json --yes', 'profiles create household --template household --yes', '--agent-profile household status'],
160
146
  },
161
147
  routines: {
@@ -168,7 +154,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
168
154
  'routines receipt <receipt-id>',
169
155
  'routines promote <id> (--cron <expr>|--every <interval>|--at <iso-time>) [--timezone <tz>] [--name <schedule-name>] [--provider <id>] [--model <model>] [--delivery-surface <surface[:route[:label]]>|--delivery-route <route[:label]>|--delivery-webhook <url>|--delivery-link <url>] [--disabled] --yes',
170
156
  ],
171
- summary: 'Inspect Agent-local routines, review local promotion receipts, reconcile receipts against live daemon schedules, and explicitly promote a reviewed routine into an external daemon schedule. Without --yes, promote only prints the schedules.create preview.',
157
+ summary: 'Inspect Agent-local routines, review local promotion receipts, reconcile receipts against live external schedules, and explicitly promote a reviewed routine into a GoodVibes schedule. Without --yes, promote only prints the schedules.create preview.',
172
158
  examples: [
173
159
  'routines list',
174
160
  'routines show daily-operations-sweep',
@@ -190,7 +176,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
190
176
  },
191
177
  compat: {
192
178
  usage: ['compat', 'compat --json'],
193
- summary: 'Inspect package SDK pin, live daemon version, and Agent-specific knowledge route readiness.',
179
+ summary: 'Inspect package SDK pin, live runtime version, and Agent-specific knowledge route readiness.',
194
180
  examples: ['compat', 'compat --json'],
195
181
  },
196
182
  knowledge: {
@@ -248,17 +234,17 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
248
234
  },
249
235
  surfaces: {
250
236
  usage: ['surfaces [list]', 'surfaces check', 'surfaces show <surfaceId>'],
251
- summary: 'Inspect browser, control-plane, HTTP listener, and external integration surfaces. Agent does not mutate daemon/listener posture.',
237
+ summary: 'Inspect advanced browser, channel, and runtime connection surfaces. Agent does not mutate runtime connection posture.',
252
238
  examples: ['surfaces', 'surfaces check', 'surfaces show slack'],
253
239
  },
254
240
  listener: {
255
241
  usage: ['listener test'],
256
- summary: 'Check HTTP listener/webhook readiness, network posture, service posture, auth, and enabled surface requirements.',
242
+ summary: 'Check advanced inbound webhook readiness, network posture, auth, and enabled channel requirements.',
257
243
  examples: ['listener test', 'listener test --json'],
258
244
  },
259
245
  'control-plane': {
260
246
  usage: ['control-plane status'],
261
- summary: 'Inspect daemon control-plane bind posture, reachability, local auth, bootstrap credentials, and operator tokens.',
247
+ summary: 'Inspect advanced runtime API reachability, local auth, bootstrap credentials, and operator tokens.',
262
248
  examples: ['control-plane status', 'control-plane status --json'],
263
249
  },
264
250
  bundle: {
@@ -278,7 +264,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
278
264
  },
279
265
  service: {
280
266
  usage: ['service status', 'service check'],
281
- summary: 'Inspect the externally owned GoodVibes daemon service posture. Agent does not install, start, stop, restart, or uninstall the daemon.',
267
+ summary: 'Inspect the externally owned GoodVibes runtime service posture. Agent does not install, start, stop, restart, or uninstall the runtime.',
282
268
  examples: ['service status', 'service check --json'],
283
269
  },
284
270
  completion: {
@@ -288,7 +274,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
288
274
  },
289
275
  serve: {
290
276
  usage: ['serve [--hostname <host>] [--port <port>]', 'daemon [--hostname <host>] [--port <port>]'],
291
- summary: 'Unavailable in GoodVibes Agent. Agent connects to an already-running GoodVibes daemon owned by GoodVibes TUI/daemon tooling.',
277
+ summary: 'Unavailable in GoodVibes Agent. Agent connects to an already-running GoodVibes runtime owned by GoodVibes TUI/host tooling.',
292
278
  examples: [],
293
279
  },
294
280
  remote: {