@pellux/goodvibes-agent 0.1.72 → 0.1.73
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 +6 -0
- package/README.md +3 -3
- package/docs/README.md +1 -1
- package/package.json +1 -1
- package/src/cli/agent-knowledge-command.ts +1 -1
- package/src/cli/package-verification.ts +6 -0
- package/src/input/agent-workspace-categories.ts +11 -11
- package/src/input/commands/delegation-runtime.ts +1 -1
- package/src/input/onboarding/onboarding-wizard-steps.ts +8 -8
- package/src/input/settings-modal-types.ts +6 -6
- package/src/renderer/settings-modal-helpers.ts +7 -7
- package/src/renderer/settings-modal.ts +12 -12
- package/src/runtime/bootstrap.ts +1 -1
- package/src/runtime/onboarding/derivation.ts +87 -58
- package/src/runtime/onboarding/types.ts +13 -11
- package/src/tools/wrfc-agent-guard.ts +1 -1
- package/src/version.ts +1 -1
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.73 - 2026-05-31
|
|
6
|
+
|
|
7
|
+
- Replaced copied first-run capability language with Agent-specific setup: operator TUI, provider access, isolated Agent Knowledge, local memory/skills, channels, automation review, and explicit TUI delegation.
|
|
8
|
+
- Reworked the fullscreen settings workspace grouping and descriptions around Agent experience, models, local Agent state, tools/automation, and external runtime connection.
|
|
9
|
+
- Added package-facing guards and regressions so copied browser/network/listener setup wording does not return to shipped Agent docs.
|
|
10
|
+
|
|
5
11
|
## 0.1.72 - 2026-05-31
|
|
6
12
|
|
|
7
13
|
- Removed copied runtime lifecycle and transport words from the Agent CLI parser, command handler, detailed help, and package exports.
|
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ bun run package:install-check
|
|
|
50
50
|
bun run publish:check
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
Inside the Agent TUI, use `/agent`, `/home`, or `/operator` to open the operator workspace. It is the Agent-first fullscreen
|
|
53
|
+
Inside the Agent TUI, use `/agent`, `/home`, or `/operator` to open the operator workspace. It is the Agent-first fullscreen workspace for setup, status, knowledge, local memory/skills, work-plan/approval review, automation observability, and explicit build delegation to GoodVibes TUI.
|
|
54
54
|
|
|
55
55
|
Inside the workspace, use `/agent-profile guide` to author custom profile starters without leaving the Agent TUI. The guided flow lists starters, exports starter JSON, imports edited local starters, and creates isolated Agent profiles from them.
|
|
56
56
|
|
|
@@ -91,11 +91,11 @@ Agent reports unavailable, unauthenticated, or incompatible runtime state throug
|
|
|
91
91
|
|
|
92
92
|
## Product Boundary
|
|
93
93
|
|
|
94
|
-
GoodVibes Agent owns the operator assistant
|
|
94
|
+
GoodVibes Agent owns the operator assistant TUI: serial assistant flow, proactive safe actions, local memory/routines/skills/personas, Agent knowledge routes, companion chat, approvals/automation observability, and explicit build delegation.
|
|
95
95
|
|
|
96
96
|
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.
|
|
97
97
|
|
|
98
|
-
GoodVibes TUI owns coding execution: file edits, git/worktree workflows, coding panels,
|
|
98
|
+
GoodVibes TUI owns coding execution: file edits, git/worktree workflows, coding panels, execution 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.
|
|
99
99
|
|
|
100
100
|
## Package Docs
|
|
101
101
|
|
package/docs/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Important baseline constraints:
|
|
|
18
18
|
- Agent Knowledge/Wiki uses only `/api/goodvibes-agent/knowledge/*`; there is no default Knowledge/Wiki or non-Agent product fallback.
|
|
19
19
|
- 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>`.
|
|
20
20
|
- 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.
|
|
21
|
-
- Local personas, routines, and Agent skills are stored under the Agent
|
|
21
|
+
- Local personas, routines, and Agent skills are stored under the Agent home and are injected only into the serial Agent conversation.
|
|
22
22
|
- Normal assistant chat is not coding-session delegation.
|
|
23
23
|
- Build/fix/review delegation to GoodVibes TUI must be explicit; WRFC is not the default Agent behavior.
|
|
24
24
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.73",
|
|
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",
|
|
@@ -407,7 +407,7 @@ function buildDelegationBody(task: string, wrfcRequested: boolean): string {
|
|
|
407
407
|
'Agent policy:',
|
|
408
408
|
'- GoodVibes Agent is not the coding TUI.',
|
|
409
409
|
'- Preserve the full original ask.',
|
|
410
|
-
'- GoodVibes TUI owns file edits, git/worktree flows,
|
|
410
|
+
'- GoodVibes TUI owns file edits, git/worktree flows, execution isolation UX, and any WRFC owner chain.',
|
|
411
411
|
wrfcRequested
|
|
412
412
|
? '- WRFC was explicitly requested by the Agent user for this build/fix/review delegation.'
|
|
413
413
|
: '- WRFC was not explicitly requested; do not turn this into WRFC solely because it came from Agent.',
|
|
@@ -74,6 +74,12 @@ const PACKAGE_FACING_FORBIDDEN_TEXT = [
|
|
|
74
74
|
['capabilities', ' audit'].join(''),
|
|
75
75
|
['capabilities', ' command'].join(''),
|
|
76
76
|
['near', '-fork'].join(''),
|
|
77
|
+
['Optional ', 'Browser Access'].join(''),
|
|
78
|
+
['Optional ', 'Other-Device Access'].join(''),
|
|
79
|
+
['Optional ', 'Incoming Events'].join(''),
|
|
80
|
+
['Service ', '& Network'].join(''),
|
|
81
|
+
['Surfaces ', '& Integrations'].join(''),
|
|
82
|
+
['runtime', '-isolation'].join(''),
|
|
77
83
|
['goodvibes-agent', 'serve'].join(' '),
|
|
78
84
|
['goodvibes-agent', 'service'].join(' '),
|
|
79
85
|
['goodvibes-agent', 'services'].join(' '),
|
|
@@ -5,7 +5,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
5
5
|
id: 'home',
|
|
6
6
|
group: 'OPERATE',
|
|
7
7
|
label: 'Home',
|
|
8
|
-
summary: 'Main operator
|
|
8
|
+
summary: 'Main operator workspace for normal assistant work.',
|
|
9
9
|
detail: 'Use this as the Agent front door: chat in the main conversation, inspect state, choose model/provider, and open setup without switching modes.',
|
|
10
10
|
actions: [
|
|
11
11
|
{ id: 'chat', label: 'Continue assistant chat', detail: 'Close this workspace and type a normal message. Agent work stays serial in the main conversation.', kind: 'guidance', safety: 'safe' },
|
|
@@ -16,14 +16,14 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
16
16
|
{ id: 'channels-home', label: 'Channels', detail: 'Jump to companion pairing and channel readiness without changing runtime connectivity.', targetCategoryId: 'channels', kind: 'workspace', safety: 'read-only' },
|
|
17
17
|
{ id: 'voice-home', label: 'Voice and media', detail: 'Jump to voice, TTS, image input, browser-tool, and media setup.', targetCategoryId: 'voice-media', kind: 'workspace', safety: 'safe' },
|
|
18
18
|
{ id: 'help', label: 'Browse commands', detail: 'Open registry-driven command help.', command: '/help', kind: 'command', safety: 'safe' },
|
|
19
|
-
{ id: 'health', label: 'Review health', detail: 'Show
|
|
19
|
+
{ id: 'health', label: 'Review health', detail: 'Show local health and runtime connection status without starting or mutating anything.', command: '/health review', kind: 'command', safety: 'read-only' },
|
|
20
20
|
],
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
id: 'setup',
|
|
24
24
|
group: 'SETUP',
|
|
25
25
|
label: 'Setup',
|
|
26
|
-
summary: 'Configuration, auth, provider, and onboarding
|
|
26
|
+
summary: 'Configuration, auth, provider, and onboarding workspaces.',
|
|
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' },
|
|
@@ -46,9 +46,9 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
46
46
|
group: 'SETUP',
|
|
47
47
|
label: 'Channels',
|
|
48
48
|
summary: 'Companion pairing, channel posture, and delivery safety.',
|
|
49
|
-
detail: 'Agent uses externally managed
|
|
49
|
+
detail: 'Agent uses externally managed channels. Pairing, account inspection, and readiness checks are visible here; inbound delivery and public channel exposure stay policy-gated.',
|
|
50
50
|
actions: [
|
|
51
|
-
{ id: 'pair', label: 'Pair companion', detail: 'Open the QR pairing
|
|
51
|
+
{ id: 'pair', label: 'Pair companion', detail: 'Open the QR pairing view for companion app setup.', command: '/pair', kind: 'command', safety: 'safe' },
|
|
52
52
|
{ id: 'communication', label: 'Communication routes', detail: 'Inspect structured communication routes and recent activity.', command: '/communication', kind: 'command', safety: 'read-only' },
|
|
53
53
|
{ id: 'setup-review', label: 'Channel setup review', detail: 'Review setup posture without starting inbound endpoints or mutating channel state.', command: '/setup review', kind: 'command', safety: 'read-only' },
|
|
54
54
|
{ id: 'channel-safety', label: 'Delivery safety', detail: 'External messages, channel DMs, and public delivery targets require explicit user action and runtime policy. Agent will not silently send or expose channels from this workspace.', kind: 'guidance', safety: 'blocked' },
|
|
@@ -75,13 +75,13 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
75
75
|
group: 'SETUP',
|
|
76
76
|
label: 'Voice & Media',
|
|
77
77
|
summary: 'Voice, TTS, image input, browser tools, and media providers.',
|
|
78
|
-
detail: 'Voice, media, browser tools, and image-capable flows are first-class Agent
|
|
78
|
+
detail: 'Voice, media, browser tools, and image-capable flows are first-class Agent tools. Runtime ownership stays external and side effects stay explicit.',
|
|
79
79
|
actions: [
|
|
80
80
|
{ id: 'tts-config', label: 'Configure live TTS', detail: 'Open the settings workspace at the TTS group.', command: '/config tts', kind: 'command', safety: 'safe' },
|
|
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 runtime
|
|
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
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
|
},
|
|
@@ -93,7 +93,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
93
93
|
detail: 'Profiles isolate Agent state. GoodVibes Agent exposes named homes, config profile pickers, profile-sync bundles, setup transfer bundles, and support bundles while keeping the shared runtime external.',
|
|
94
94
|
actions: [
|
|
95
95
|
{ id: 'profiles-open', label: 'Open config profiles', detail: 'Open the config profile picker for display/provider/behavior profile files.', command: '/profiles', kind: 'command', safety: 'safe' },
|
|
96
|
-
{ id: 'runtime-profile-guide', label: 'Starter authoring guide', detail: 'Open the Agent-local starter authoring flow inside the TUI
|
|
96
|
+
{ id: 'runtime-profile-guide', label: 'Starter authoring guide', detail: 'Open the Agent-local starter authoring flow inside the Agent TUI.', command: '/agent-profile guide', kind: 'command', safety: 'safe' },
|
|
97
97
|
{ id: 'runtime-profile-templates', label: 'Browse starter templates', detail: 'List built-in and local Agent starter templates with persona, skill, routine, and source details.', command: '/agent-profile templates', kind: 'command', safety: 'read-only' },
|
|
98
98
|
{ id: 'profile-sync-list', label: 'Profile sync list', detail: 'Inspect saved config profiles available for export/import.', command: '/profilesync list', kind: 'command', safety: 'read-only' },
|
|
99
99
|
{ id: 'profile-sync-export', label: 'Export profile sync', detail: 'Export config profiles to a portable bundle. Requires a real path and explicit --yes.', command: '/profilesync export <path> --yes', kind: 'command', safety: 'safe' },
|
|
@@ -110,7 +110,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
110
110
|
summary: 'Local assistant memory, routines, skills, and reusable behavior.',
|
|
111
111
|
detail: 'Memory, routines, skills, and personas stay Agent-local until stable shared registry contracts exist. Secrets must not be stored as memory.',
|
|
112
112
|
actions: [
|
|
113
|
-
{ id: 'memory', label: 'Open memory', detail: 'Inspect local/session memory
|
|
113
|
+
{ id: 'memory', label: 'Open memory', detail: 'Inspect local/session memory records and commands.', command: '/memory', kind: 'command', safety: 'read-only' },
|
|
114
114
|
{ id: 'personas', label: 'Persona library', detail: 'Open the local persona workspace for active role selection and review.', targetCategoryId: 'personas', kind: 'workspace', safety: 'safe' },
|
|
115
115
|
{ id: 'skills', label: 'Local skill library', detail: 'Open the local skill workspace for reusable procedures and review.', targetCategoryId: 'skills', kind: 'workspace', safety: 'safe' },
|
|
116
116
|
{ id: 'routines', label: 'Routine library', detail: 'Open the local routine workspace for repeatable workflows and schedule promotion review.', targetCategoryId: 'routines', kind: 'workspace', safety: 'safe' },
|
|
@@ -181,7 +181,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
181
181
|
group: 'TRACK',
|
|
182
182
|
label: 'Work & Approvals',
|
|
183
183
|
summary: 'Visible task state, work plan, and approval posture.',
|
|
184
|
-
detail: 'Use
|
|
184
|
+
detail: 'Use this workspace to inspect active operator state. Side-effecting approval decisions require explicit commands and confirmation outside this workspace.',
|
|
185
185
|
actions: [
|
|
186
186
|
{ id: 'workplan', label: 'Open work plan', detail: 'Open the workspace-scoped work plan panel.', command: '/workplan panel', kind: 'command', safety: 'read-only' },
|
|
187
187
|
{ id: 'workplan-list', label: 'List work plan', detail: 'Print a concise work plan summary.', command: '/workplan list', kind: 'command', safety: 'read-only' },
|
|
@@ -200,7 +200,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
200
200
|
{ id: 'schedule-receipts', label: 'Promotion receipts', detail: 'Review local redacted receipt history for routine-to-schedule promotion attempts.', command: '/schedule receipts', kind: 'command', safety: 'read-only' },
|
|
201
201
|
{ id: 'schedule-reconcile', label: 'Reconcile schedules', detail: 'Compare local promotion receipts with live external schedules using schedules.list.', command: '/schedule reconcile', kind: 'command', safety: 'read-only' },
|
|
202
202
|
{ id: 'schedule-policy', label: 'Local scheduler blocked', detail: 'Local schedule add/run/remove/enable/disable remain blocked; only explicit external schedule promotion is allowed here.', kind: 'guidance', safety: 'blocked' },
|
|
203
|
-
{ id: 'health-services', label: 'Runtime
|
|
203
|
+
{ id: 'health-services', label: 'Runtime status', detail: 'Inspect runtime readiness without starting, stopping, or restarting anything.', command: '/health review', kind: 'command', safety: 'read-only' },
|
|
204
204
|
],
|
|
205
205
|
},
|
|
206
206
|
{
|
|
@@ -29,7 +29,7 @@ function buildDelegationBody(task: string, wrfcRequested: boolean): string {
|
|
|
29
29
|
'Agent policy:',
|
|
30
30
|
'- GoodVibes Agent is not the coding TUI.',
|
|
31
31
|
'- Preserve the full original ask.',
|
|
32
|
-
'- GoodVibes TUI owns file edits, git/worktree flows,
|
|
32
|
+
'- GoodVibes TUI owns file edits, git/worktree flows, execution isolation UX, and any WRFC owner chain.',
|
|
33
33
|
wrfcRequested
|
|
34
34
|
? '- WRFC was explicitly requested by the Agent user for this build/fix/review delegation.'
|
|
35
35
|
: '- WRFC was not explicitly requested; do not turn this into WRFC solely because it came from Agent.',
|
|
@@ -47,7 +47,7 @@ export function buildCommunicationStep(): OnboardingWizardStepDefinition {
|
|
|
47
47
|
id: 'agent-communication',
|
|
48
48
|
title: 'Channels and notifications',
|
|
49
49
|
shortLabel: 'Channels',
|
|
50
|
-
description: 'Prepare the Agent for companion pairing, messaging-channel awareness, notification delivery, and safe outbound communication
|
|
50
|
+
description: 'Prepare the Agent for companion pairing, messaging-channel awareness, notification delivery, and safe outbound communication while leaving runtime hosting external.',
|
|
51
51
|
summaryTitle: 'Communication posture',
|
|
52
52
|
summaryLines: [
|
|
53
53
|
'Companion chat: paired through the GoodVibes runtime',
|
|
@@ -60,13 +60,13 @@ export function buildCommunicationStep(): OnboardingWizardStepDefinition {
|
|
|
60
60
|
id: 'agent-communication.companion',
|
|
61
61
|
label: 'Companion pairing',
|
|
62
62
|
hint: 'Use /pair from the Agent workspace to pair companion clients through the already-running GoodVibes runtime.',
|
|
63
|
-
defaultValue: 'External
|
|
63
|
+
defaultValue: 'External runtime route',
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
kind: 'status',
|
|
67
67
|
id: 'agent-communication.channels',
|
|
68
68
|
label: 'Messaging channels',
|
|
69
|
-
hint: 'Use the Channels workspace to inspect account readiness, delivery posture, and recent communication without changing runtime
|
|
69
|
+
hint: 'Use the Channels workspace to inspect account readiness, delivery posture, and recent communication without changing runtime hosting.',
|
|
70
70
|
defaultValue: 'Inspectable',
|
|
71
71
|
},
|
|
72
72
|
{
|
|
@@ -97,7 +97,7 @@ export function buildToolsStep(): OnboardingWizardStepDefinition {
|
|
|
97
97
|
summaryLines: [
|
|
98
98
|
'MCP and tools: inspect before use',
|
|
99
99
|
'Read/search/summarize: safe by default',
|
|
100
|
-
'Writes, installs, external sends, and
|
|
100
|
+
'Writes, installs, external sends, and account changes: require explicit user action',
|
|
101
101
|
],
|
|
102
102
|
fields: [
|
|
103
103
|
{
|
|
@@ -111,14 +111,14 @@ export function buildToolsStep(): OnboardingWizardStepDefinition {
|
|
|
111
111
|
kind: 'status',
|
|
112
112
|
id: 'agent-tools.browser-media',
|
|
113
113
|
label: 'Browser and media helpers',
|
|
114
|
-
hint: 'Browser, image, audio, and file helpers are
|
|
114
|
+
hint: 'Browser, image, audio, and file helpers are task-scoped tools. Agent uses them only when the current task needs them and policy allows it.',
|
|
115
115
|
defaultValue: 'Task scoped',
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
kind: 'status',
|
|
119
119
|
id: 'agent-tools.approval-boundary',
|
|
120
120
|
label: 'Power action boundary',
|
|
121
|
-
hint: 'Workspace writes, package installs, external sends,
|
|
121
|
+
hint: 'Workspace writes, package installs, external sends, and account changes require an explicit command or confirmation.',
|
|
122
122
|
defaultValue: 'Approval required',
|
|
123
123
|
},
|
|
124
124
|
{
|
|
@@ -468,10 +468,10 @@ export function buildVoiceMediaStep(): OnboardingWizardStepDefinition {
|
|
|
468
468
|
id: 'agent-voice-media',
|
|
469
469
|
title: 'Voice and media',
|
|
470
470
|
shortLabel: 'Voice',
|
|
471
|
-
description: 'Prepare voice, speech, image input, and media understanding as Agent operator
|
|
471
|
+
description: 'Prepare voice, speech, image input, and media understanding as Agent operator tools rather than runtime lifecycle features.',
|
|
472
472
|
summaryTitle: 'Voice and media posture',
|
|
473
473
|
summaryLines: [
|
|
474
|
-
'Voice and speech: optional operator
|
|
474
|
+
'Voice and speech: optional operator tools',
|
|
475
475
|
'Image/audio inputs: explicit attachment workflows',
|
|
476
476
|
'Media generation and playback: provider-backed and policy-gated',
|
|
477
477
|
],
|
|
@@ -55,12 +55,12 @@ export const SETTINGS_CATEGORY_GROUPS: ReadonlyArray<{
|
|
|
55
55
|
readonly label: string;
|
|
56
56
|
readonly categories: readonly SettingsCategory[];
|
|
57
57
|
}> = [
|
|
58
|
-
{ label: '
|
|
59
|
-
{ label: '
|
|
60
|
-
{ label: '
|
|
61
|
-
{ label: '
|
|
62
|
-
{ label: '
|
|
63
|
-
{ label: '
|
|
58
|
+
{ label: 'Agent Experience', categories: ['display', 'ui', 'behavior', 'permissions'] },
|
|
59
|
+
{ label: 'Models and Providers', categories: ['provider', 'subscriptions', 'helper', 'tools', 'tts'] },
|
|
60
|
+
{ label: 'Local Agent State', categories: ['storage', 'runtime', 'cache', 'telemetry'] },
|
|
61
|
+
{ label: 'Tools and Automation', categories: ['mcp', 'batch', 'automation', 'watchers'] },
|
|
62
|
+
{ label: 'External Runtime Connection', categories: ['network', 'controlPlane', 'httpListener', 'web', 'service', 'surfaces'] },
|
|
63
|
+
{ label: 'Delegation Compatibility', categories: ['orchestration', 'wrfc'] },
|
|
64
64
|
{ label: 'Advanced', categories: ['flags', 'release', 'danger'] },
|
|
65
65
|
];
|
|
66
66
|
|
|
@@ -86,10 +86,10 @@ export const CATEGORY_LABELS: Record<(typeof SETTINGS_CATEGORIES)[number], strin
|
|
|
86
86
|
wrfc: 'WRFC Delegation',
|
|
87
87
|
helper: 'Helper',
|
|
88
88
|
tts: 'TTS',
|
|
89
|
-
service: '
|
|
89
|
+
service: 'Runtime Install',
|
|
90
90
|
controlPlane: 'Runtime API',
|
|
91
|
-
httpListener: '
|
|
92
|
-
web: '
|
|
91
|
+
httpListener: 'Inbound Events',
|
|
92
|
+
web: 'Browser Companion',
|
|
93
93
|
batch: 'Batch',
|
|
94
94
|
automation: 'Automation',
|
|
95
95
|
watchers: 'Watchers',
|
|
@@ -97,7 +97,7 @@ export const CATEGORY_LABELS: Record<(typeof SETTINGS_CATEGORIES)[number], strin
|
|
|
97
97
|
telemetry: 'Telemetry',
|
|
98
98
|
cache: 'Cache',
|
|
99
99
|
mcp: 'MCP',
|
|
100
|
-
surfaces: '
|
|
100
|
+
surfaces: 'Channels',
|
|
101
101
|
release: 'Release',
|
|
102
102
|
danger: 'Danger',
|
|
103
103
|
tools: 'Tools',
|
|
@@ -109,7 +109,7 @@ export const SETTING_LABELS: Partial<Record<string, string>> = {
|
|
|
109
109
|
'ui.systemMessages': 'System Message Target',
|
|
110
110
|
'ui.operationalMessages': 'Operational Message Target',
|
|
111
111
|
'ui.wrfcMessages': 'Delegated WRFC Message Target',
|
|
112
|
-
'ui.voiceEnabled': 'Voice
|
|
112
|
+
'ui.voiceEnabled': 'Voice Interaction',
|
|
113
113
|
'behavior.autoCompactThreshold': 'Auto-Compact %',
|
|
114
114
|
'behavior.staleContextWarnings': 'Context Warnings',
|
|
115
115
|
'behavior.returnContextMode': 'Return Context',
|
|
@@ -135,14 +135,14 @@ export const SETTING_LABELS: Partial<Record<string, string>> = {
|
|
|
135
135
|
'controlPlane.tls.mode': 'Runtime API TLS Mode',
|
|
136
136
|
'controlPlane.tls.certFile': 'Runtime API TLS Cert',
|
|
137
137
|
'controlPlane.tls.keyFile': 'Runtime API TLS Key',
|
|
138
|
-
//
|
|
138
|
+
// Inbound event endpoint
|
|
139
139
|
'httpListener.hostMode': 'HTTP Host Mode',
|
|
140
140
|
'httpListener.host': 'HTTP Host',
|
|
141
141
|
'httpListener.port': 'HTTP Port',
|
|
142
142
|
'httpListener.trustProxy': 'HTTP Trust Proxy',
|
|
143
143
|
'httpListener.tls.mode': 'HTTP TLS Mode',
|
|
144
144
|
'httpListener.tls.certFile': 'HTTP TLS Cert',
|
|
145
|
-
//
|
|
145
|
+
// Browser companion
|
|
146
146
|
'web.enabled': 'Web Enabled',
|
|
147
147
|
'web.hostMode': 'Web Host Mode',
|
|
148
148
|
'web.host': 'Web Host',
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
|
|
25
25
|
const CATEGORY_INFO: Record<SettingsCategory, string> = {
|
|
26
26
|
display: 'Presentation settings for the terminal transcript: streaming, line numbers, thinking visibility, reasoning summaries, token speed, and tool previews.',
|
|
27
|
-
ui: 'Controls where operational messages render and whether voice
|
|
27
|
+
ui: 'Controls where operational messages render and whether voice interaction is enabled. These settings change visibility, not provider behavior.',
|
|
28
28
|
provider: 'Default model routing for normal chat turns, embeddings, reasoning effort, and persistent system prompt file.',
|
|
29
29
|
subscriptions: 'Provider subscription login state and routing posture. Active sessions can be reviewed or signed out here; API keys remain managed through secrets.',
|
|
30
30
|
behavior: 'Day-to-day shell behavior: approval posture, compaction, history, guidance, notifications, stale-context warnings, return context, and Human-in-the-Loop mode.',
|
|
@@ -34,10 +34,10 @@ const CATEGORY_INFO: Record<SettingsCategory, string> = {
|
|
|
34
34
|
wrfc: 'WRFC is external to normal Agent operation. Review these copied compatibility values only for explicit GoodVibes TUI build delegation.',
|
|
35
35
|
helper: 'Helper model defaults used by helper subsystems when they do not use the main chat route.',
|
|
36
36
|
tts: 'Text-to-speech provider, voice, and optional spoken-turn LLM overrides.',
|
|
37
|
-
service: 'External
|
|
38
|
-
controlPlane: 'External
|
|
39
|
-
httpListener: '
|
|
40
|
-
web: 'External browser
|
|
37
|
+
service: 'External runtime installation posture. Agent shows these compatibility keys for inspection only and does not install, start, stop, restart, or autostart anything.',
|
|
38
|
+
controlPlane: 'External runtime API connection settings. Agent connects to that runtime and does not mutate its bind posture.',
|
|
39
|
+
httpListener: 'Inbound event endpoint settings owned by the external runtime. Agent inspects readiness and does not expose endpoints.',
|
|
40
|
+
web: 'External browser companion settings. Agent does not own browser hosting or network bind lifecycle.',
|
|
41
41
|
batch: 'Batch execution settings reported from the external GoodVibes runtime. Agent does not own remote queue provisioning.',
|
|
42
42
|
automation: 'Scheduled and automated run settings, concurrency, timeout, catch-up, cooldown, and retention behavior.',
|
|
43
43
|
watchers: 'File/process watcher heartbeat, polling, and recovery-window behavior.',
|
|
@@ -45,12 +45,12 @@ const CATEGORY_INFO: Record<SettingsCategory, string> = {
|
|
|
45
45
|
telemetry: 'Telemetry payload policy.',
|
|
46
46
|
cache: 'Provider and model cache behavior, TTL, and hit-rate monitoring.',
|
|
47
47
|
mcp: 'MCP server trust and scope review. Trust changes can expose local files, tools, databases, browsers, or remote automation depending on the server.',
|
|
48
|
-
surfaces: '
|
|
48
|
+
surfaces: 'Messaging and notification channel accounts such as Slack, Discord, ntfy, Telegram, chat bridges, and delivery providers.',
|
|
49
49
|
release: 'Release-channel preference.',
|
|
50
|
-
danger: 'High-impact runtime
|
|
50
|
+
danger: 'High-impact runtime switches. Agent renders host-owned switches read-only; use the owning GoodVibes runtime host to change them.',
|
|
51
51
|
tools: 'Tool LLM and helper model routing. Empty provider/model values inherit the active chat route unless a specific helper/tool route is set.',
|
|
52
52
|
flags: 'Feature flags are SDK runtime gates. They are separate from normal config keys because they enable or disable staged runtime behavior.',
|
|
53
|
-
network: 'Read-only view of external
|
|
53
|
+
network: 'Read-only view of external runtime API, inbound-event, and browser companion bind posture plus editable Agent network settings.',
|
|
54
54
|
};
|
|
55
55
|
|
|
56
56
|
const ENUM_VALUE_DESCRIPTIONS: Record<string, Record<string, string>> = {
|
|
@@ -86,7 +86,7 @@ const ENUM_VALUE_DESCRIPTIONS: Record<string, Record<string, string>> = {
|
|
|
86
86
|
},
|
|
87
87
|
'httpListener.hostMode': {
|
|
88
88
|
localhost: 'Bind only to this computer.',
|
|
89
|
-
network: 'Bind for LAN
|
|
89
|
+
network: 'Bind for LAN event delivery using the default network host.',
|
|
90
90
|
custom: 'Use the explicit host value in the related host setting.',
|
|
91
91
|
},
|
|
92
92
|
'web.hostMode': {
|
|
@@ -110,12 +110,12 @@ const ENUM_VALUE_DESCRIPTIONS: Record<string, Record<string, string>> = {
|
|
|
110
110
|
both: 'Show explicit delegated-build WRFC messages in both panels and the transcript.',
|
|
111
111
|
},
|
|
112
112
|
'surfaces.telegram.mode': {
|
|
113
|
-
webhook: 'Receive Telegram updates through
|
|
114
|
-
polling: 'Poll Telegram for updates from the
|
|
113
|
+
webhook: 'Receive Telegram updates through externally hosted delivery.',
|
|
114
|
+
polling: 'Poll Telegram for updates from the configured account.',
|
|
115
115
|
},
|
|
116
116
|
'surfaces.whatsapp.provider': {
|
|
117
117
|
'meta-cloud': 'Use Meta Cloud API credentials and identifiers.',
|
|
118
|
-
bridge: 'Use a bridge
|
|
118
|
+
bridge: 'Use a bridge endpoint URL/token flow instead of direct Meta Cloud API delivery.',
|
|
119
119
|
},
|
|
120
120
|
};
|
|
121
121
|
|
package/src/runtime/bootstrap.ts
CHANGED
|
@@ -52,7 +52,7 @@ const GOODVIBES_AGENT_OPERATOR_POLICY = [
|
|
|
52
52
|
'- WRFC is never the default Agent reasoning path. Do not create local WRFC chains for planning, research, operations, knowledge, memory, configuration, approvals, automation observability, or ordinary assistant work.',
|
|
53
53
|
'- GoodVibes Agent is not the coding TUI. Do not use the `agent` tool to spawn local Engineer, Reviewer, Tester, Verifier, or batch-spawn roots from Agent.',
|
|
54
54
|
'- When the user explicitly asks to build, implement, fix, patch, or review code, preserve the full original user ask and delegate one build request to GoodVibes TUI through the public shared-session/build-delegation contract. Include clear executionIntent and request WRFC only for explicit build/fix/review work or when the user explicitly asks for WRFC/agent review.',
|
|
55
|
-
'- Do not narrow explicit build/fix/review requests into design-only, read-only, or no-write work unless the user explicitly requested that limitation. TUI owns file edits, git/worktree work,
|
|
55
|
+
'- Do not narrow explicit build/fix/review requests into design-only, read-only, or no-write work unless the user explicitly requested that limitation. TUI owns file edits, git/worktree work, execution isolation UX, and the WRFC owner chain.',
|
|
56
56
|
'- If a stable public delegation route is unavailable, say that the task needs GoodVibes TUI delegation and report the missing route instead of pretending to implement it locally or spawning sibling local agents.',
|
|
57
57
|
].join('\n');
|
|
58
58
|
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
OnboardingNetworkMode,
|
|
7
7
|
OnboardingReopenEditAcknowledgementState,
|
|
8
8
|
OnboardingSnapshotState,
|
|
9
|
+
OnboardingStep1CapabilityFlags,
|
|
9
10
|
OnboardingStep1CapabilityItem,
|
|
10
11
|
OnboardingStepDerivationState,
|
|
11
12
|
} from './types.ts';
|
|
@@ -185,10 +186,6 @@ function hasAnyServerEnabled(snapshot: OnboardingSnapshotState): boolean {
|
|
|
185
186
|
|| snapshot.bindSettings.web.enabled;
|
|
186
187
|
}
|
|
187
188
|
|
|
188
|
-
function hasBrowserAccess(snapshot: OnboardingSnapshotState): boolean {
|
|
189
|
-
return snapshot.bindSettings.web.enabled;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
189
|
function isLoopbackHost(host: string | null | undefined): boolean {
|
|
193
190
|
const normalized = (host ?? '').trim().toLowerCase();
|
|
194
191
|
if (normalized.length === 0) return false;
|
|
@@ -251,43 +248,72 @@ function hasExternalIntegrations(snapshot: OnboardingSnapshotState): boolean {
|
|
|
251
248
|
|| countConfiguredSurfaceKinds(snapshot) > 0;
|
|
252
249
|
}
|
|
253
250
|
|
|
254
|
-
function
|
|
251
|
+
function hasLocalBehaviorCustomization(snapshot: OnboardingSnapshotState): boolean {
|
|
252
|
+
return hasCustomizedWorkspaceDefaults(snapshot)
|
|
253
|
+
|| countPermissionToolOverrides(snapshot) > 0
|
|
254
|
+
|| snapshot.runtimeDefaults.secretStoragePolicy !== DEFAULT_CONFIG.storage.secretPolicy;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function hasCommunicationChannelSignals(snapshot: OnboardingSnapshotState): boolean {
|
|
258
|
+
return hasExternalIntegrations(snapshot);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function hasAutomationReviewSignals(snapshot: OnboardingSnapshotState): boolean {
|
|
262
|
+
return hasWebhookOrEventIngress(snapshot);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
function describeOperatorTerminal(snapshot: OnboardingSnapshotState): string {
|
|
255
266
|
if (!hasAnyServerEnabled(snapshot)) {
|
|
256
|
-
return 'Use GoodVibes Agent
|
|
267
|
+
return 'Use GoodVibes Agent as the terminal operator while connecting to the existing GoodVibes runtime. Agent setup does not create new entrypoints.';
|
|
257
268
|
}
|
|
258
269
|
|
|
259
|
-
return '
|
|
270
|
+
return 'Use GoodVibes Agent as the terminal operator; runtime host settings are shown only so the connection is understandable.';
|
|
260
271
|
}
|
|
261
272
|
|
|
262
|
-
function
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
273
|
+
function describeProviderAccess(snapshot: OnboardingSnapshotState): string {
|
|
274
|
+
const configuredCount = getConfiguredProviderSignalIds(snapshot).length;
|
|
275
|
+
if (configuredCount === 0 && !hasCustomizedProviderRouting(snapshot)) {
|
|
276
|
+
return 'Choose the model route the Agent should use for normal assistant turns, tool reasoning, and embeddings.';
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return `Review ${Math.max(configuredCount, 1)} provider auth or routing signal(s) already available to Agent.`;
|
|
266
280
|
}
|
|
267
281
|
|
|
268
|
-
function
|
|
269
|
-
return
|
|
270
|
-
? 'Review runtime access reachable from other devices on your LAN. Local authentication is required.'
|
|
271
|
-
: 'Other-device access is optional and remains controlled by the runtime owner.';
|
|
282
|
+
function describeAgentKnowledge(): string {
|
|
283
|
+
return 'Agent Knowledge uses the isolated /api/goodvibes-agent/knowledge segment only; it never falls back to another knowledge segment.';
|
|
272
284
|
}
|
|
273
285
|
|
|
274
|
-
function
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
286
|
+
function describeLocalBehavior(snapshot: OnboardingSnapshotState): string {
|
|
287
|
+
if (!hasLocalBehaviorCustomization(snapshot)) {
|
|
288
|
+
return 'Configure local memory, routines, skills, personas, permissions, and secret handling before the Agent starts doing useful work.';
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
return 'Review existing local behavior, permission, display, or secret-handling choices before applying Agent setup.';
|
|
278
292
|
}
|
|
279
293
|
|
|
280
|
-
function
|
|
294
|
+
function describeCommunicationChannels(snapshot: OnboardingSnapshotState): string {
|
|
281
295
|
const integrationCount = new Set<string>([
|
|
282
296
|
...getExternalIntegrationServiceIds(snapshot),
|
|
283
297
|
...getConfiguredSurfaceKinds(snapshot),
|
|
284
298
|
]).size;
|
|
285
299
|
|
|
286
300
|
if (integrationCount === 0) {
|
|
287
|
-
return 'Connect only the channels
|
|
301
|
+
return 'Connect only the channels the Agent should use, and keep outbound delivery explicit until a user action allows it.';
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return `Review ${integrationCount} configured channel or integration signal(s) before the Agent uses them for delivery.`;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function describeAutomationReview(snapshot: OnboardingSnapshotState): string {
|
|
308
|
+
if (!hasAutomationReviewSignals(snapshot)) {
|
|
309
|
+
return 'Review schedules, routine promotion, approvals, and automation visibility without starting hidden background work.';
|
|
288
310
|
}
|
|
289
311
|
|
|
290
|
-
return
|
|
312
|
+
return 'Review existing event, schedule, or automation signals and keep all side effects behind explicit commands or confirmations.';
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function describeTuiDelegation(): string {
|
|
316
|
+
return 'Delegate explicit build, fix, implementation, and review work to GoodVibes TUI; WRFC is requested only when the user explicitly asks for it.';
|
|
291
317
|
}
|
|
292
318
|
|
|
293
319
|
function getAcknowledgementAccepted(
|
|
@@ -329,61 +355,64 @@ export function deriveStep1Capabilities(
|
|
|
329
355
|
): readonly OnboardingStep1CapabilityItem[] {
|
|
330
356
|
return [
|
|
331
357
|
{
|
|
332
|
-
id: '
|
|
333
|
-
label: 'Agent
|
|
334
|
-
selected:
|
|
335
|
-
detail:
|
|
358
|
+
id: 'operator-terminal',
|
|
359
|
+
label: 'Agent Operator TUI',
|
|
360
|
+
selected: true,
|
|
361
|
+
detail: describeOperatorTerminal(snapshot),
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
id: 'provider-access',
|
|
365
|
+
label: 'Provider and Model Access',
|
|
366
|
+
selected: hasConfiguredProviderState(snapshot) || hasCustomizedProviderRouting(snapshot),
|
|
367
|
+
detail: describeProviderAccess(snapshot),
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
id: 'agent-knowledge',
|
|
371
|
+
label: 'Isolated Agent Knowledge',
|
|
372
|
+
selected: true,
|
|
373
|
+
detail: describeAgentKnowledge(),
|
|
336
374
|
},
|
|
337
375
|
{
|
|
338
|
-
id: '
|
|
339
|
-
label: '
|
|
340
|
-
selected:
|
|
341
|
-
detail:
|
|
376
|
+
id: 'local-behavior',
|
|
377
|
+
label: 'Local Memory and Skills',
|
|
378
|
+
selected: hasLocalBehaviorCustomization(snapshot),
|
|
379
|
+
detail: describeLocalBehavior(snapshot),
|
|
342
380
|
},
|
|
343
381
|
{
|
|
344
|
-
id: '
|
|
345
|
-
label: '
|
|
346
|
-
selected:
|
|
347
|
-
detail:
|
|
382
|
+
id: 'communication-channels',
|
|
383
|
+
label: 'Channels and Notifications',
|
|
384
|
+
selected: hasCommunicationChannelSignals(snapshot),
|
|
385
|
+
detail: describeCommunicationChannels(snapshot),
|
|
348
386
|
},
|
|
349
387
|
{
|
|
350
|
-
id: '
|
|
351
|
-
label: '
|
|
352
|
-
selected:
|
|
353
|
-
detail:
|
|
388
|
+
id: 'automation-review',
|
|
389
|
+
label: 'Routines and Automation Review',
|
|
390
|
+
selected: hasAutomationReviewSignals(snapshot),
|
|
391
|
+
detail: describeAutomationReview(snapshot),
|
|
354
392
|
},
|
|
355
393
|
{
|
|
356
|
-
id: '
|
|
357
|
-
label: '
|
|
358
|
-
selected:
|
|
359
|
-
detail:
|
|
394
|
+
id: 'tui-delegation',
|
|
395
|
+
label: 'Explicit Build Delegation',
|
|
396
|
+
selected: true,
|
|
397
|
+
detail: describeTuiDelegation(),
|
|
360
398
|
},
|
|
361
399
|
];
|
|
362
400
|
}
|
|
363
401
|
|
|
364
402
|
export function deriveStep1CapabilityFlags(
|
|
365
403
|
snapshot: OnboardingSnapshotState,
|
|
366
|
-
): {
|
|
367
|
-
readonly providers: boolean;
|
|
368
|
-
readonly services: boolean;
|
|
369
|
-
readonly subscriptions: boolean;
|
|
370
|
-
readonly auth: boolean;
|
|
371
|
-
readonly controlPlane: boolean;
|
|
372
|
-
readonly httpListener: boolean;
|
|
373
|
-
readonly web: boolean;
|
|
374
|
-
readonly surfaces: boolean;
|
|
375
|
-
} {
|
|
404
|
+
): OnboardingStep1CapabilityFlags {
|
|
376
405
|
return {
|
|
377
|
-
|
|
378
|
-
services: snapshot.services.total > 0,
|
|
406
|
+
providerAccess: hasConfiguredProviderState(snapshot) || hasCustomizedProviderRouting(snapshot),
|
|
379
407
|
subscriptions: snapshot.subscriptions.active.length > 0 || snapshot.subscriptions.pending.length > 0,
|
|
380
408
|
auth: snapshot.auth.snapshot.userCount > 0
|
|
381
409
|
|| snapshot.auth.snapshot.sessionCount > 0
|
|
382
410
|
|| snapshot.auth.snapshot.bootstrapCredentialPresent,
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
411
|
+
agentKnowledge: true,
|
|
412
|
+
localBehavior: hasLocalBehaviorCustomization(snapshot),
|
|
413
|
+
communicationChannels: hasCommunicationChannelSignals(snapshot),
|
|
414
|
+
automationReview: hasAutomationReviewSignals(snapshot),
|
|
415
|
+
tuiDelegation: true,
|
|
387
416
|
};
|
|
388
417
|
}
|
|
389
418
|
|
|
@@ -193,11 +193,13 @@ export interface OnboardingSnapshotState {
|
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
export type OnboardingStep1CapabilityId =
|
|
196
|
-
| '
|
|
197
|
-
| '
|
|
198
|
-
| '
|
|
199
|
-
| '
|
|
200
|
-
| '
|
|
196
|
+
| 'operator-terminal'
|
|
197
|
+
| 'provider-access'
|
|
198
|
+
| 'agent-knowledge'
|
|
199
|
+
| 'local-behavior'
|
|
200
|
+
| 'communication-channels'
|
|
201
|
+
| 'automation-review'
|
|
202
|
+
| 'tui-delegation';
|
|
201
203
|
|
|
202
204
|
export interface OnboardingStep1CapabilityItem {
|
|
203
205
|
readonly id: OnboardingStep1CapabilityId;
|
|
@@ -207,14 +209,14 @@ export interface OnboardingStep1CapabilityItem {
|
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
export interface OnboardingStep1CapabilityFlags {
|
|
210
|
-
readonly
|
|
211
|
-
readonly services: boolean;
|
|
212
|
+
readonly providerAccess: boolean;
|
|
212
213
|
readonly subscriptions: boolean;
|
|
213
214
|
readonly auth: boolean;
|
|
214
|
-
readonly
|
|
215
|
-
readonly
|
|
216
|
-
readonly
|
|
217
|
-
readonly
|
|
215
|
+
readonly agentKnowledge: boolean;
|
|
216
|
+
readonly localBehavior: boolean;
|
|
217
|
+
readonly communicationChannels: boolean;
|
|
218
|
+
readonly automationReview: boolean;
|
|
219
|
+
readonly tuiDelegation: boolean;
|
|
218
220
|
}
|
|
219
221
|
|
|
220
222
|
export interface OnboardingAcknowledgementState {
|
|
@@ -130,7 +130,7 @@ const LOCAL_AGENT_DENIAL = [
|
|
|
130
130
|
].join(' ');
|
|
131
131
|
|
|
132
132
|
const LOCAL_CODING_TOOL_DENIAL = [
|
|
133
|
-
'GoodVibes Agent does not perform direct local file mutation, local WRFC workflow execution, or local
|
|
133
|
+
'GoodVibes Agent does not perform direct local file mutation, local WRFC workflow execution, or local execution-isolation work from the main conversation.',
|
|
134
134
|
'For explicit build/fix/review/code execution work, delegate one request to GoodVibes TUI through the public shared-session/build-delegation contract with the full original user ask.',
|
|
135
135
|
'For durable Agent memory, skills, personas, routines, and knowledge, use the Agent-owned commands and isolated Agent Knowledge routes.',
|
|
136
136
|
].join(' ');
|
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.
|
|
9
|
+
let _version = '0.1.73';
|
|
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 {
|