@pellux/goodvibes-agent 0.1.116 → 1.0.0
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 +48 -661
- package/README.md +64 -57
- package/bin/goodvibes-agent.ts +16 -2
- package/dist/package/main.js +199180 -192185
- package/docs/README.md +15 -8
- package/docs/channels-remote-and-api.md +50 -0
- package/docs/connected-host.md +59 -0
- package/docs/getting-started.md +61 -50
- package/docs/knowledge-artifacts-and-multimodal.md +91 -0
- package/docs/project-planning.md +79 -0
- package/docs/providers-and-routing.md +46 -0
- package/docs/release-and-publishing.md +48 -11
- package/docs/tools-and-commands.md +123 -0
- package/docs/voice-and-live-tts.md +51 -0
- package/package.json +3 -6
- package/src/agent/behavior-discovery-summary.ts +1 -3
- package/src/agent/channel-delivery.ts +201 -0
- package/src/agent/media-generation.ts +159 -0
- package/src/agent/memory-prompt.ts +0 -1
- package/src/agent/note-registry.ts +329 -0
- package/src/agent/operator-actions.ts +343 -0
- package/src/agent/persona-discovery.ts +1 -3
- package/src/agent/persona-registry.ts +19 -16
- package/src/agent/record-labels.ts +107 -0
- package/src/agent/reminder-schedule-format.ts +33 -24
- package/src/agent/reminder-schedule.ts +27 -26
- package/src/agent/routine-registry.ts +54 -14
- package/src/agent/routine-schedule-args.ts +2 -1
- package/src/agent/routine-schedule-format.ts +77 -53
- package/src/agent/routine-schedule-promotion.ts +35 -33
- package/src/agent/routine-schedule-receipts.ts +29 -27
- package/src/agent/runtime-profile-starters.ts +5 -5
- package/src/agent/runtime-profile.ts +91 -12
- package/src/agent/skill-registry.ts +210 -32
- package/src/cli/agent-knowledge-args.ts +5 -1
- package/src/cli/agent-knowledge-command.ts +40 -34
- package/src/cli/agent-knowledge-format.ts +80 -67
- package/src/cli/agent-knowledge-methods.ts +1 -1
- package/src/cli/agent-knowledge-runtime.ts +32 -26
- package/src/cli/bundle-command.ts +14 -9
- package/src/cli/config-overrides.ts +37 -36
- package/src/cli/entrypoint.ts +16 -7
- package/src/cli/external-runtime.ts +10 -4
- package/src/cli/help.ts +54 -29
- package/src/cli/local-library-command.ts +203 -83
- package/src/cli/management-commands.ts +105 -68
- package/src/cli/management.ts +55 -74
- package/src/cli/memory-command.ts +66 -32
- package/src/cli/parser.ts +37 -3
- package/src/cli/profiles-command.ts +166 -31
- package/src/cli/provider-auth-routes.ts +2 -1
- package/src/cli/routines-command.ts +176 -40
- package/src/cli/service-posture.ts +16 -16
- package/src/cli/status.ts +56 -135
- package/src/core/conversation-message-snapshot.ts +131 -0
- package/src/input/agent-workspace-access-command-editor-submission.ts +149 -0
- package/src/input/agent-workspace-access-command-editors.ts +170 -0
- package/src/input/agent-workspace-activation.ts +35 -8
- package/src/input/agent-workspace-basic-command-editor-submission.ts +351 -94
- package/src/input/agent-workspace-basic-command-editors.ts +502 -9
- package/src/input/agent-workspace-categories.ts +423 -51
- package/src/input/agent-workspace-channel-command-editor-submission.ts +83 -0
- package/src/input/agent-workspace-channel-command-editors.ts +65 -0
- package/src/input/agent-workspace-channels.ts +35 -2
- package/src/input/agent-workspace-command-editor.ts +41 -3
- package/src/input/agent-workspace-config-reader.ts +16 -0
- package/src/input/agent-workspace-delegation-editor-submission.ts +55 -0
- package/src/input/agent-workspace-editors.ts +166 -1
- package/src/input/agent-workspace-knowledge-command-editor-submission.ts +132 -0
- package/src/input/agent-workspace-knowledge-command-editors.ts +110 -0
- package/src/input/agent-workspace-knowledge-query-editor.ts +1 -1
- package/src/input/agent-workspace-learned-behavior.ts +67 -0
- package/src/input/agent-workspace-library-command-editor-submission.ts +50 -0
- package/src/input/agent-workspace-library-command-editors.ts +35 -0
- package/src/input/agent-workspace-local-operations.ts +218 -0
- package/src/input/agent-workspace-local-selection.ts +75 -0
- package/src/input/agent-workspace-mcp-command-editor-submission.ts +95 -0
- package/src/input/agent-workspace-media-command-editor-submission.ts +62 -0
- package/src/input/agent-workspace-media-command-editors.ts +27 -0
- package/src/input/agent-workspace-memory-command-editor-submission.ts +232 -0
- package/src/input/agent-workspace-memory-command-editors.ts +180 -0
- package/src/input/agent-workspace-memory-editor.ts +2 -2
- package/src/input/agent-workspace-navigation.ts +81 -0
- package/src/input/agent-workspace-notify-editor-submission.ts +121 -0
- package/src/input/agent-workspace-operations-command-editor-submission.ts +208 -0
- package/src/input/agent-workspace-operations-command-editors.ts +196 -0
- package/src/input/agent-workspace-panel-route.ts +43 -0
- package/src/input/agent-workspace-provider-command-editor-submission.ts +155 -0
- package/src/input/agent-workspace-provider-command-editors.ts +93 -0
- package/src/input/agent-workspace-reminder-schedule-editor.ts +1 -1
- package/src/input/agent-workspace-requirements.ts +11 -0
- package/src/input/agent-workspace-routine-schedule-editor.ts +2 -2
- package/src/input/agent-workspace-search.ts +169 -0
- package/src/input/agent-workspace-secret-editor-submission.ts +153 -0
- package/src/input/agent-workspace-session-command-editor-submission.ts +199 -0
- package/src/input/agent-workspace-session-command-editors.ts +249 -0
- package/src/input/agent-workspace-setup.ts +37 -16
- package/src/input/agent-workspace-skill-bundle-command-editor-submission.ts +101 -0
- package/src/input/agent-workspace-skill-bundle-command-editors.ts +110 -0
- package/src/input/agent-workspace-snapshot.ts +162 -21
- package/src/input/agent-workspace-task-command-editor-submission.ts +61 -0
- package/src/input/agent-workspace-task-command-editors.ts +47 -0
- package/src/input/agent-workspace-token.ts +18 -2
- package/src/input/agent-workspace-types.ts +212 -4
- package/src/input/agent-workspace-voice-media.ts +4 -7
- package/src/input/agent-workspace-web-research-editor.ts +104 -0
- package/src/input/agent-workspace-workplan-editor-submission.ts +153 -0
- package/src/input/agent-workspace.ts +178 -240
- package/src/input/command-registry.ts +5 -2
- package/src/input/commands/agent-runtime-profile-runtime.ts +126 -37
- package/src/input/commands/agent-skills-runtime.ts +149 -72
- package/src/input/commands/agent-workspace-runtime.ts +23 -6
- package/src/input/commands/brief-runtime.ts +55 -25
- package/src/input/commands/channels-runtime.ts +147 -33
- package/src/input/commands/compat-runtime.ts +32 -0
- package/src/input/commands/delegation-runtime.ts +29 -23
- package/src/input/commands/experience-runtime.ts +6 -4
- package/src/input/commands/guidance-runtime.ts +4 -4
- package/src/input/commands/health-runtime.ts +149 -126
- package/src/input/commands/knowledge.ts +82 -60
- package/src/input/commands/local-provider-runtime.ts +43 -21
- package/src/input/commands/local-runtime.ts +138 -16
- package/src/input/commands/local-setup-review.ts +10 -20
- package/src/input/commands/mcp-runtime.ts +63 -46
- package/src/input/commands/notify-runtime.ts +38 -9
- package/src/input/commands/operator-actions-runtime.ts +138 -0
- package/src/input/commands/operator-runtime.ts +6 -76
- package/src/input/commands/personas-runtime.ts +46 -31
- package/src/input/commands/planning-runtime.ts +1 -1
- package/src/input/commands/platform-access-runtime.ts +35 -98
- package/src/input/commands/product-runtime.ts +2 -2
- package/src/input/commands/provider-accounts-runtime.ts +60 -39
- package/src/input/commands/qrcode-runtime.ts +50 -9
- package/src/input/commands/recall-bundle.ts +11 -11
- package/src/input/commands/recall-capture.ts +13 -11
- package/src/input/commands/recall-query.ts +29 -21
- package/src/input/commands/recall-review.ts +2 -1
- package/src/input/commands/routines-runtime.ts +99 -45
- package/src/input/commands/runtime-services.ts +1 -14
- package/src/input/commands/schedule-runtime.ts +33 -20
- package/src/input/commands/security-runtime.ts +6 -11
- package/src/input/commands/session-content.ts +80 -78
- package/src/input/commands/session-workflow.ts +134 -104
- package/src/input/commands/session.ts +3 -174
- package/src/input/commands/shell-core.ts +38 -17
- package/src/input/commands/subscription-runtime.ts +54 -185
- package/src/input/commands/support-bundle-runtime.ts +53 -0
- package/src/input/commands/tasks-runtime.ts +21 -21
- package/src/input/commands/work-plan-runtime.ts +33 -8
- package/src/input/commands.ts +6 -2
- package/src/input/feed-context-factory.ts +2 -2
- package/src/input/file-picker.ts +3 -2
- package/src/input/handler-command-route.ts +4 -7
- package/src/input/handler-content-actions.ts +89 -26
- package/src/input/handler-feed-routes.ts +19 -12
- package/src/input/handler-feed.ts +6 -5
- package/src/input/handler-interactions.ts +9 -36
- package/src/input/handler-modal-stack.ts +3 -3
- package/src/input/handler-onboarding.ts +52 -91
- package/src/input/handler-shortcuts.ts +16 -7
- package/src/input/handler.ts +50 -23
- package/src/input/input-history.ts +5 -6
- package/src/input/keybindings.ts +27 -16
- package/src/input/mcp-workspace.ts +90 -26
- package/src/input/onboarding/handler-onboarding-routes.ts +3 -1
- package/src/input/onboarding/onboarding-wizard-apply.ts +62 -0
- package/src/input/onboarding/onboarding-wizard-constants.ts +1 -0
- package/src/input/onboarding/onboarding-wizard-helpers.ts +1 -1
- package/src/input/onboarding/onboarding-wizard-operator-steps.ts +223 -55
- package/src/input/onboarding/onboarding-wizard-steps.ts +59 -35
- package/src/input/onboarding/onboarding-wizard-types.ts +4 -1
- package/src/input/onboarding/onboarding-wizard.ts +87 -2
- package/src/input/profile-picker-modal.ts +31 -12
- package/src/input/session-picker-modal.ts +21 -4
- package/src/input/settings-modal-agent-policy.ts +6 -6
- package/src/input/settings-modal-behavior.ts +0 -3
- package/src/input/settings-modal-subscriptions.ts +3 -3
- package/src/input/settings-modal-types.ts +2 -13
- package/src/input/settings-modal.ts +20 -66
- package/src/input/submission-intent.ts +0 -1
- package/src/input/submission-router.ts +3 -3
- package/src/main.ts +18 -10
- package/src/panels/approval-panel.ts +8 -8
- package/src/panels/automation-control-panel.ts +4 -4
- package/src/panels/base-panel.ts +1 -1
- package/src/panels/builtin/agent.ts +1 -1
- package/src/panels/builtin/operations.ts +3 -12
- package/src/panels/builtin/session.ts +32 -24
- package/src/panels/builtin/shared.ts +7 -7
- package/src/panels/cost-tracker-panel.ts +1 -1
- package/src/panels/docs-panel.ts +5 -3
- package/src/panels/index.ts +0 -1
- package/src/panels/knowledge-panel.ts +6 -5
- package/src/panels/memory-panel.ts +7 -6
- package/src/panels/panel-list-panel.ts +36 -80
- package/src/panels/project-planning-panel.ts +19 -12
- package/src/panels/provider-account-snapshot.ts +51 -25
- package/src/panels/provider-accounts-panel.ts +33 -18
- package/src/panels/provider-health-domains.ts +48 -7
- package/src/panels/provider-health-panel.ts +5 -4
- package/src/panels/qr-panel.ts +44 -20
- package/src/panels/schedule-panel.ts +9 -17
- package/src/panels/security-panel.ts +8 -8
- package/src/panels/session-browser-panel.ts +10 -10
- package/src/panels/subscription-panel.ts +6 -6
- package/src/panels/system-messages-panel.ts +3 -3
- package/src/panels/tasks-panel.ts +21 -14
- package/src/panels/tool-inspector-panel.ts +19 -12
- package/src/panels/work-plan-panel.ts +5 -5
- package/src/planning/project-planning-coordinator.ts +3 -3
- package/src/provider-auth-route-display.ts +9 -0
- package/src/renderer/agent-workspace-style.ts +34 -0
- package/src/renderer/agent-workspace.ts +254 -57
- package/src/renderer/autocomplete-overlay.ts +25 -6
- package/src/renderer/block-actions.ts +1 -3
- package/src/renderer/bookmark-modal.ts +19 -4
- package/src/renderer/buffer.ts +4 -2
- package/src/renderer/context-inspector.ts +50 -13
- package/src/renderer/diff.ts +1 -1
- package/src/renderer/file-picker-overlay.ts +19 -6
- package/src/renderer/help-overlay.ts +112 -34
- package/src/renderer/history-search-overlay.ts +19 -4
- package/src/renderer/live-tail-modal.ts +27 -5
- package/src/renderer/mcp-workspace.ts +176 -43
- package/src/renderer/model-picker-overlay.ts +58 -3
- package/src/renderer/model-workspace.ts +104 -22
- package/src/renderer/onboarding/onboarding-wizard.ts +20 -4
- package/src/renderer/process-modal.ts +27 -6
- package/src/renderer/profile-picker-modal.ts +21 -5
- package/src/renderer/search-overlay.ts +25 -5
- package/src/renderer/selection-modal-overlay.ts +46 -14
- package/src/renderer/session-picker-modal.ts +18 -1
- package/src/renderer/settings-modal-helpers.ts +2 -40
- package/src/renderer/settings-modal.ts +88 -55
- package/src/renderer/system-message.ts +1 -1
- package/src/renderer/tool-call.ts +20 -11
- package/src/runtime/agent-runtime-events.ts +129 -0
- package/src/runtime/bootstrap-command-context.ts +7 -1
- package/src/runtime/bootstrap-command-parts.ts +11 -8
- package/src/runtime/bootstrap-core.ts +23 -65
- package/src/runtime/bootstrap-hook-bridge.ts +7 -18
- package/src/runtime/bootstrap-shell.ts +46 -8
- package/src/runtime/bootstrap.ts +36 -46
- package/src/runtime/connected-host-auth.ts +47 -0
- package/src/runtime/diagnostics/panels/index.ts +2 -2
- package/src/runtime/diagnostics/panels/panel-resources.ts +1 -1
- package/src/runtime/diagnostics/panels/policy.ts +7 -7
- package/src/runtime/index.ts +2 -5
- package/src/runtime/onboarding/apply-file-helpers.ts +66 -0
- package/src/runtime/onboarding/apply.ts +288 -74
- package/src/runtime/onboarding/derivation.ts +10 -13
- package/src/runtime/onboarding/snapshot.ts +2 -17
- package/src/runtime/onboarding/types.ts +34 -20
- package/src/runtime/onboarding/verify.ts +105 -4
- package/src/runtime/operator-token-cleanup.ts +3 -3
- package/src/runtime/services.ts +95 -11
- package/src/runtime/store/selectors/index.ts +3 -3
- package/src/runtime/store/state.ts +1 -4
- package/src/runtime/surface-feature-flags.ts +41 -6
- package/src/runtime/ui-read-models.ts +3 -4
- package/src/runtime/ui-services.ts +6 -6
- package/src/shell/blocking-input.ts +2 -1
- package/src/shell/service-settings-sync.ts +7 -7
- package/src/shell/ui-openers.ts +17 -38
- package/src/tools/agent-analysis-registry-policy.ts +0 -1
- package/src/tools/agent-channel-send-tool.ts +133 -0
- package/src/tools/agent-context-policy.ts +1 -1
- package/src/tools/agent-knowledge-ingest-tool.ts +405 -0
- package/src/tools/agent-knowledge-tool.ts +170 -0
- package/src/tools/agent-local-registry-tool.ts +279 -73
- package/src/tools/agent-media-generate-tool.ts +133 -0
- package/src/tools/agent-notify-tool.ts +143 -0
- package/src/tools/agent-operator-action-tool.ts +137 -0
- package/src/tools/agent-operator-briefing-tool.ts +217 -0
- package/src/tools/agent-reminder-schedule-tool.ts +237 -0
- package/src/tools/agent-tool-policy-guard.ts +13 -15
- package/src/tools/agent-work-plan-tool.ts +256 -0
- package/src/version.ts +1 -1
- package/docs/connected-services.md +0 -51
- package/src/cli/package-verification.ts +0 -274
- package/src/input/commands/policy-dispatch.ts +0 -339
- package/src/input/commands/policy.ts +0 -17
- package/src/panels/panel-picker.ts +0 -105
- package/src/panels/policy-panel.ts +0 -308
- package/src/renderer/panel-picker-overlay.ts +0 -202
|
@@ -22,7 +22,7 @@ function discoverySample(discovery: AgentBehaviorDiscoverySnapshot | undefined):
|
|
|
22
22
|
...discovery.skills.names,
|
|
23
23
|
...discovery.routines.names,
|
|
24
24
|
].slice(0, 4);
|
|
25
|
-
if (names.length === 0) return '
|
|
25
|
+
if (names.length === 0) return 'Open the Memory & Skills workspace after setup to rescan and import local behavior files.';
|
|
26
26
|
const remaining = discoveryCount(discovery) > names.length ? `, +${discoveryCount(discovery) - names.length} more` : '';
|
|
27
27
|
return `Import candidates: ${names.join(', ')}${remaining}.`;
|
|
28
28
|
}
|
|
@@ -35,17 +35,18 @@ export function buildCommunicationStep(): OnboardingWizardStepDefinition {
|
|
|
35
35
|
description: 'Prepare companion pairing, messaging-channel readiness, notification delivery, and safe outbound communication for day-one Agent use.',
|
|
36
36
|
summaryTitle: 'Communication posture',
|
|
37
37
|
summaryLines: [
|
|
38
|
-
'Companion chat: paired through connected GoodVibes
|
|
38
|
+
'Companion chat: paired through the connected GoodVibes host',
|
|
39
39
|
'Channel accounts: inspect readiness before using them',
|
|
40
40
|
'Outbound messages: explicit user action only',
|
|
41
41
|
],
|
|
42
42
|
fields: [
|
|
43
43
|
{
|
|
44
|
-
kind: '
|
|
44
|
+
kind: 'action',
|
|
45
45
|
id: 'agent-communication.companion',
|
|
46
|
+
action: 'open-agent-workspace:channels',
|
|
46
47
|
label: 'Companion pairing',
|
|
47
|
-
hint: '
|
|
48
|
-
defaultValue: '
|
|
48
|
+
hint: 'Open the Channels workspace to pair companion clients and review channel readiness and delivery safety.',
|
|
49
|
+
defaultValue: 'Open Channels',
|
|
49
50
|
},
|
|
50
51
|
{
|
|
51
52
|
kind: 'status',
|
|
@@ -86,11 +87,12 @@ export function buildToolsStep(): OnboardingWizardStepDefinition {
|
|
|
86
87
|
],
|
|
87
88
|
fields: [
|
|
88
89
|
{
|
|
89
|
-
kind: '
|
|
90
|
+
kind: 'action',
|
|
90
91
|
id: 'agent-tools.mcp',
|
|
92
|
+
action: 'open-agent-workspace:tools',
|
|
91
93
|
label: 'MCP connections and tools',
|
|
92
|
-
hint: '
|
|
93
|
-
defaultValue: '
|
|
94
|
+
hint: 'Open the Tools & MCP workspace to inspect connected MCP servers, roles, trust, and tool readiness.',
|
|
95
|
+
defaultValue: 'Open Tools',
|
|
94
96
|
},
|
|
95
97
|
{
|
|
96
98
|
kind: 'status',
|
|
@@ -122,26 +124,27 @@ export function buildAgentKnowledgeStep(): OnboardingWizardStepDefinition {
|
|
|
122
124
|
id: 'agent-knowledge',
|
|
123
125
|
title: 'Agent Knowledge',
|
|
124
126
|
shortLabel: 'Knowledge',
|
|
125
|
-
description: 'Agent Knowledge is isolated to the GoodVibes Agent product segment. It never falls back to default
|
|
127
|
+
description: 'Agent Knowledge is isolated to the GoodVibes Agent product segment. It never falls back to default knowledge or any non-Agent product segment.',
|
|
126
128
|
summaryTitle: 'Knowledge isolation',
|
|
127
129
|
summaryLines: [
|
|
128
|
-
'Route segment
|
|
129
|
-
'Default
|
|
130
|
-
'Non-Agent route fallback
|
|
130
|
+
'Route segment /api/goodvibes-agent/knowledge/*',
|
|
131
|
+
'Default knowledge fallback disabled',
|
|
132
|
+
'Non-Agent route fallback disabled',
|
|
131
133
|
],
|
|
132
134
|
fields: [
|
|
133
135
|
{
|
|
134
|
-
kind: '
|
|
136
|
+
kind: 'action',
|
|
135
137
|
id: 'agent-knowledge.route',
|
|
138
|
+
action: 'open-agent-workspace:knowledge',
|
|
136
139
|
label: 'Isolated Agent Knowledge route',
|
|
137
|
-
hint: '
|
|
138
|
-
defaultValue: '
|
|
140
|
+
hint: 'Open the Knowledge workspace for isolated Agent ask, search, status, ingest, and review actions.',
|
|
141
|
+
defaultValue: 'Open Knowledge',
|
|
139
142
|
},
|
|
140
143
|
{
|
|
141
144
|
kind: 'status',
|
|
142
|
-
id: 'agent-knowledge.no-default-
|
|
143
|
-
label: 'Default
|
|
144
|
-
hint: 'Agent setup and Agent ask/search must not query the default
|
|
145
|
+
id: 'agent-knowledge.no-default-knowledge',
|
|
146
|
+
label: 'Default knowledge fallback',
|
|
147
|
+
hint: 'Agent setup and Agent ask/search must not query the default knowledge when Agent Knowledge has no answer.',
|
|
145
148
|
defaultValue: 'Blocked',
|
|
146
149
|
},
|
|
147
150
|
{
|
|
@@ -155,6 +158,52 @@ export function buildAgentKnowledgeStep(): OnboardingWizardStepDefinition {
|
|
|
155
158
|
};
|
|
156
159
|
}
|
|
157
160
|
|
|
161
|
+
export function buildResearchStep(): OnboardingWizardStepDefinition {
|
|
162
|
+
return {
|
|
163
|
+
id: 'agent-research',
|
|
164
|
+
title: 'Research and source triage',
|
|
165
|
+
shortLabel: 'Research',
|
|
166
|
+
description: 'Prepare read-only web research and source triage. Research runs in the main Agent conversation; durable source storage uses explicit Agent Knowledge ingest.',
|
|
167
|
+
summaryTitle: 'Research posture',
|
|
168
|
+
summaryLines: [
|
|
169
|
+
'Web research: read-only main-conversation requests',
|
|
170
|
+
'URL inspection: user-directed and visible',
|
|
171
|
+
'Durable sources: explicit Agent Knowledge ingest only',
|
|
172
|
+
],
|
|
173
|
+
fields: [
|
|
174
|
+
{
|
|
175
|
+
kind: 'action',
|
|
176
|
+
id: 'agent-research.workspace',
|
|
177
|
+
action: 'open-agent-workspace:research',
|
|
178
|
+
label: 'Research workspace',
|
|
179
|
+
hint: 'Open the Research workspace to submit web research, inspect URLs, and decide what belongs in Agent Knowledge.',
|
|
180
|
+
defaultValue: 'Open Research',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
kind: 'status',
|
|
184
|
+
id: 'agent-research.read-only',
|
|
185
|
+
label: 'Read-only web use',
|
|
186
|
+
hint: 'Search and URL inspection are normal Agent conversation turns. They should not send messages, mutate connected-host state, or perform browser side effects.',
|
|
187
|
+
defaultValue: 'Serial',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
kind: 'status',
|
|
191
|
+
id: 'agent-research.knowledge-boundary',
|
|
192
|
+
label: 'Source-to-knowledge boundary',
|
|
193
|
+
hint: 'Reviewed sources become durable only through confirmed Agent Knowledge ingest actions. Default knowledge and non-Agent segments are not fallback stores.',
|
|
194
|
+
defaultValue: 'Explicit ingest',
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
kind: 'status',
|
|
198
|
+
id: 'agent-research.context-references',
|
|
199
|
+
label: 'Inline URL context',
|
|
200
|
+
hint: 'Use @https://... in the composer to reference a URL for one turn without ingesting it into Agent Knowledge.',
|
|
201
|
+
defaultValue: 'Available',
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
158
207
|
export function buildLocalStateStep(discovery?: AgentBehaviorDiscoverySnapshot): OnboardingWizardStepDefinition {
|
|
159
208
|
const discoveredCount = discoveryCount(discovery);
|
|
160
209
|
return {
|
|
@@ -163,48 +212,163 @@ export function buildLocalStateStep(discovery?: AgentBehaviorDiscoverySnapshot):
|
|
|
163
212
|
shortLabel: 'Behavior',
|
|
164
213
|
description: discoveredCount > 0
|
|
165
214
|
? 'Review importable Agent-local behavior files, then create an isolated profile from them or import individual records.'
|
|
166
|
-
: 'Review the Agent-local behavior model. Memory, personas, skills, routines, and Agent profiles stay local until a stable shared registry exists.',
|
|
167
|
-
summaryTitle: '
|
|
215
|
+
: 'Review the Agent-local behavior model. Memory, notes, personas, skills, routines, and Agent profiles stay local until a stable shared registry exists.',
|
|
216
|
+
summaryTitle: 'Agent-local state',
|
|
168
217
|
summaryLines: [
|
|
169
|
-
'Memory/personas/skills/routines
|
|
170
|
-
`Discovered behavior files
|
|
171
|
-
'Secrets
|
|
172
|
-
'Profiles
|
|
218
|
+
'Memory/notes/personas/skills/routines use Agent-local registries',
|
|
219
|
+
`Discovered behavior files ${discoverySummary(discovery)}`,
|
|
220
|
+
'Secrets are rejected or stored by secret reference',
|
|
221
|
+
'Profiles use isolated Agent homes',
|
|
173
222
|
],
|
|
174
223
|
fields: [
|
|
175
224
|
{
|
|
176
|
-
kind: '
|
|
225
|
+
kind: 'action',
|
|
177
226
|
id: 'agent-local-state.memory',
|
|
227
|
+
action: 'open-agent-workspace:memory',
|
|
178
228
|
label: 'Local memory',
|
|
179
|
-
hint: '
|
|
180
|
-
defaultValue: '
|
|
229
|
+
hint: 'Open the Memory & Skills workspace to create, review, stale, search, and delete Agent-local memory records.',
|
|
230
|
+
defaultValue: 'Open Memory',
|
|
181
231
|
},
|
|
182
232
|
{
|
|
183
|
-
kind: '
|
|
233
|
+
kind: 'action',
|
|
234
|
+
id: 'agent-local-state.notes',
|
|
235
|
+
action: 'open-agent-workspace:notes',
|
|
236
|
+
label: 'Scratchpad notes',
|
|
237
|
+
hint: 'Open the Notes workspace to capture source triage, temporary decisions, and operator handoff without writing memory or Agent Knowledge.',
|
|
238
|
+
defaultValue: 'Open Notes',
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
kind: 'text',
|
|
242
|
+
id: 'agent-local-state.note-title',
|
|
243
|
+
label: 'Initial note title',
|
|
244
|
+
hint: 'Optional scratchpad note created during setup. Notes are temporary working context, not durable memory or Agent Knowledge.',
|
|
245
|
+
placeholder: 'First things to remember',
|
|
246
|
+
defaultValue: '',
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
kind: 'text',
|
|
250
|
+
id: 'agent-local-state.note-body',
|
|
251
|
+
label: 'Initial note body',
|
|
252
|
+
hint: 'Capture temporary setup context, source-triage notes, or user preferences that should be reviewed before promotion.',
|
|
253
|
+
placeholder: 'Review calendar connection later; user prefers concise daily planning; do not store secrets here.',
|
|
254
|
+
defaultValue: '',
|
|
255
|
+
multiline: true,
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
kind: 'text',
|
|
259
|
+
id: 'agent-local-state.note-tags',
|
|
260
|
+
label: 'Initial note tags',
|
|
261
|
+
hint: 'Optional comma-separated tags for the setup note.',
|
|
262
|
+
placeholder: 'setup, preference',
|
|
263
|
+
defaultValue: '',
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
kind: 'action',
|
|
184
267
|
id: 'agent-local-state.personas',
|
|
268
|
+
action: 'open-agent-workspace:personas',
|
|
185
269
|
label: 'Personas',
|
|
186
270
|
hint: discovery?.personas.count && discovery.personas.count > 0
|
|
187
|
-
? `${discovery.personas.count} persona file(s) are available.
|
|
188
|
-
: '
|
|
189
|
-
defaultValue: discovery?.personas.count && discovery.personas.count > 0 ? `${discovery.personas.count} discovered` : '
|
|
271
|
+
? `${discovery.personas.count} persona file(s) are available. Open the Personas workspace to review, import, activate, or create a profile from discovered behavior.`
|
|
272
|
+
: 'Open the Personas workspace to create and activate serial operating modes for the main conversation.',
|
|
273
|
+
defaultValue: discovery?.personas.count && discovery.personas.count > 0 ? `${discovery.personas.count} discovered` : 'Open Personas',
|
|
190
274
|
},
|
|
191
275
|
{
|
|
192
|
-
kind: '
|
|
276
|
+
kind: 'action',
|
|
193
277
|
id: 'agent-local-state.skills',
|
|
278
|
+
action: 'open-agent-workspace:skills',
|
|
194
279
|
label: 'Skills',
|
|
195
280
|
hint: discovery?.skills.count && discovery.skills.count > 0
|
|
196
|
-
? `${discovery.skills.count} skill file(s) are available.
|
|
197
|
-
: '
|
|
198
|
-
defaultValue: discovery?.skills.count && discovery.skills.count > 0 ? `${discovery.skills.count} discovered` : '
|
|
281
|
+
? `${discovery.skills.count} skill file(s) are available. Open the Skills workspace to review, import, bundle, enable reusable procedures, or create a profile from discovered behavior.`
|
|
282
|
+
: 'Open the Skills workspace to manage reusable Agent procedures.',
|
|
283
|
+
defaultValue: discovery?.skills.count && discovery.skills.count > 0 ? `${discovery.skills.count} discovered` : 'Open Skills',
|
|
199
284
|
},
|
|
200
285
|
{
|
|
201
|
-
kind: '
|
|
286
|
+
kind: 'action',
|
|
202
287
|
id: 'agent-local-state.routines',
|
|
288
|
+
action: 'open-agent-workspace:routines',
|
|
203
289
|
label: 'Routines',
|
|
204
290
|
hint: discovery?.routines.count && discovery.routines.count > 0
|
|
205
|
-
? `${discovery.routines.count} routine file(s) are available.
|
|
206
|
-
: '
|
|
207
|
-
defaultValue: discovery?.routines.count && discovery.routines.count > 0 ? `${discovery.routines.count} discovered` : '
|
|
291
|
+
? `${discovery.routines.count} routine file(s) are available. Open the Routines workspace to review, import, start, promote reviewed routines, or create a profile from discovered behavior. ${discoverySample(discovery)}`
|
|
292
|
+
: 'Open the Routines workspace for reusable local procedures. Starting a routine prints steps in the main conversation; schedule promotion remains explicit.',
|
|
293
|
+
defaultValue: discovery?.routines.count && discovery.routines.count > 0 ? `${discovery.routines.count} discovered` : 'Open Routines',
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
kind: 'text',
|
|
297
|
+
id: 'agent-local-state.persona-name',
|
|
298
|
+
label: 'Initial persona name',
|
|
299
|
+
hint: 'Optional serial Agent persona created and activated during setup. Leave persona fields blank to skip.',
|
|
300
|
+
placeholder: 'Household Operator',
|
|
301
|
+
defaultValue: '',
|
|
302
|
+
spacerBeforeRows: 1,
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
kind: 'text',
|
|
306
|
+
id: 'agent-local-state.persona-description',
|
|
307
|
+
label: 'Initial persona description',
|
|
308
|
+
hint: 'Describe when this persona should shape the main conversation.',
|
|
309
|
+
placeholder: 'Handles day-to-day planning, reminders, device checks, and household coordination.',
|
|
310
|
+
defaultValue: '',
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
kind: 'text',
|
|
314
|
+
id: 'agent-local-state.persona-body',
|
|
315
|
+
label: 'Initial persona instructions',
|
|
316
|
+
hint: 'Tell Agent how to behave when this persona is active.',
|
|
317
|
+
placeholder: 'Be concise, proactive, and use safe local actions before asking for follow-up details.',
|
|
318
|
+
defaultValue: '',
|
|
319
|
+
multiline: true,
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
kind: 'text',
|
|
323
|
+
id: 'agent-local-state.skill-name',
|
|
324
|
+
label: 'Initial skill name',
|
|
325
|
+
hint: 'Optional reusable local procedure created and enabled during setup.',
|
|
326
|
+
placeholder: 'Daily Briefing',
|
|
327
|
+
defaultValue: '',
|
|
328
|
+
spacerBeforeRows: 1,
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
kind: 'text',
|
|
332
|
+
id: 'agent-local-state.skill-description',
|
|
333
|
+
label: 'Initial skill description',
|
|
334
|
+
hint: 'Describe when Agent should use this skill.',
|
|
335
|
+
placeholder: 'Prepares a concise morning briefing from calendar, tasks, and current priorities.',
|
|
336
|
+
defaultValue: '',
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
kind: 'text',
|
|
340
|
+
id: 'agent-local-state.skill-procedure',
|
|
341
|
+
label: 'Initial skill procedure',
|
|
342
|
+
hint: 'Write the procedure Agent should reuse in the main conversation.',
|
|
343
|
+
placeholder: 'Check tasks, summarize important events, identify blockers, and ask only for missing critical inputs.',
|
|
344
|
+
defaultValue: '',
|
|
345
|
+
multiline: true,
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
kind: 'text',
|
|
349
|
+
id: 'agent-local-state.routine-name',
|
|
350
|
+
label: 'Initial routine name',
|
|
351
|
+
hint: 'Optional local routine created and enabled during setup. Routines print steps in the main conversation and do not launch hidden jobs.',
|
|
352
|
+
placeholder: 'Evening Reset',
|
|
353
|
+
defaultValue: '',
|
|
354
|
+
spacerBeforeRows: 1,
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
kind: 'text',
|
|
358
|
+
id: 'agent-local-state.routine-description',
|
|
359
|
+
label: 'Initial routine description',
|
|
360
|
+
hint: 'Describe when the routine should be suggested or started.',
|
|
361
|
+
placeholder: 'Reviews open tasks, tomorrow priorities, and pending approvals before the day ends.',
|
|
362
|
+
defaultValue: '',
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
kind: 'text',
|
|
366
|
+
id: 'agent-local-state.routine-steps',
|
|
367
|
+
label: 'Initial routine steps',
|
|
368
|
+
hint: 'Write the local routine steps. This stays in Agent-local state only.',
|
|
369
|
+
placeholder: 'Review open tasks; summarize unresolved approvals; list tomorrow priorities; ask what to defer.',
|
|
370
|
+
defaultValue: '',
|
|
371
|
+
multiline: true,
|
|
208
372
|
},
|
|
209
373
|
],
|
|
210
374
|
};
|
|
@@ -224,18 +388,20 @@ export function buildAutomationStep(): OnboardingWizardStepDefinition {
|
|
|
224
388
|
],
|
|
225
389
|
fields: [
|
|
226
390
|
{
|
|
227
|
-
kind: '
|
|
391
|
+
kind: 'action',
|
|
228
392
|
id: 'agent-automation.local-routines',
|
|
393
|
+
action: 'open-agent-workspace:routines',
|
|
229
394
|
label: 'Local routine library',
|
|
230
|
-
hint: '
|
|
231
|
-
defaultValue: '
|
|
395
|
+
hint: 'Open the Routines workspace to create, review, enable, and start local routines without hidden jobs.',
|
|
396
|
+
defaultValue: 'Open Routines',
|
|
232
397
|
},
|
|
233
398
|
{
|
|
234
|
-
kind: '
|
|
399
|
+
kind: 'action',
|
|
235
400
|
id: 'agent-automation.schedule-observability',
|
|
401
|
+
action: 'open-agent-workspace:automation',
|
|
236
402
|
label: 'Schedule observability',
|
|
237
|
-
hint: '
|
|
238
|
-
defaultValue: '
|
|
403
|
+
hint: 'Open the Automation workspace to inspect schedules, receipts, reconciliation, externally owned jobs, and runs.',
|
|
404
|
+
defaultValue: 'Open Automation',
|
|
239
405
|
},
|
|
240
406
|
{
|
|
241
407
|
kind: 'status',
|
|
@@ -269,11 +435,12 @@ export function buildVoiceMediaStep(): OnboardingWizardStepDefinition {
|
|
|
269
435
|
],
|
|
270
436
|
fields: [
|
|
271
437
|
{
|
|
272
|
-
kind: '
|
|
438
|
+
kind: 'action',
|
|
273
439
|
id: 'agent-voice-media.voice',
|
|
440
|
+
action: 'open-agent-workspace:voice-media',
|
|
274
441
|
label: 'Voice interaction',
|
|
275
|
-
hint: '
|
|
276
|
-
defaultValue: '
|
|
442
|
+
hint: 'Open the Voice & Media workspace and TTS settings to configure spoken responses for the Agent conversation.',
|
|
443
|
+
defaultValue: 'Open Voice',
|
|
277
444
|
},
|
|
278
445
|
{
|
|
279
446
|
kind: 'status',
|
|
@@ -303,7 +470,7 @@ export function buildDelegationPolicyStep(): OnboardingWizardStepDefinition {
|
|
|
303
470
|
summaryLines: [
|
|
304
471
|
'Normal chat: main Agent conversation',
|
|
305
472
|
'Build/fix/review: explicit GoodVibes TUI delegation',
|
|
306
|
-
'
|
|
473
|
+
'Delegated review: only when explicitly requested for build/fix/review',
|
|
307
474
|
],
|
|
308
475
|
fields: [
|
|
309
476
|
{
|
|
@@ -314,17 +481,18 @@ export function buildDelegationPolicyStep(): OnboardingWizardStepDefinition {
|
|
|
314
481
|
defaultValue: 'Serial',
|
|
315
482
|
},
|
|
316
483
|
{
|
|
317
|
-
kind: '
|
|
484
|
+
kind: 'action',
|
|
318
485
|
id: 'agent-delegation.build-work',
|
|
486
|
+
action: 'open-agent-workspace:delegate',
|
|
319
487
|
label: 'Build/fix/review work',
|
|
320
|
-
hint: '
|
|
321
|
-
defaultValue: '
|
|
488
|
+
hint: 'Open the Delegation workspace for explicit build/fix/review handoff. GoodVibes TUI owns coding execution and delegated review chains.',
|
|
489
|
+
defaultValue: 'Open Delegation',
|
|
322
490
|
},
|
|
323
491
|
{
|
|
324
492
|
kind: 'status',
|
|
325
|
-
id: 'agent-delegation.
|
|
326
|
-
label: '
|
|
327
|
-
hint: 'Agent never
|
|
493
|
+
id: 'agent-delegation.review',
|
|
494
|
+
label: 'Review policy',
|
|
495
|
+
hint: 'Agent never requests delegated review by default; request it only for explicit build, fix, review, or implementation work.',
|
|
328
496
|
defaultValue: 'Explicit only',
|
|
329
497
|
},
|
|
330
498
|
],
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { REASONING_OPTIONS, HITL_MODE_OPTIONS, GUIDANCE_MODE_OPTIONS, PERMISSION_MODE_OPTIONS, SECRET_POLICY_OPTIONS } from './onboarding-wizard-constants.ts';
|
|
2
2
|
import { modelSelectionLabel, normalizeText } from './onboarding-wizard-helpers.ts';
|
|
3
|
-
import { buildAgentKnowledgeStep, buildAutomationStep, buildCommunicationStep, buildDelegationPolicyStep, buildLocalStateStep, buildToolsStep, buildVoiceMediaStep } from './onboarding-wizard-operator-steps.ts';
|
|
3
|
+
import { buildAgentKnowledgeStep, buildAutomationStep, buildCommunicationStep, buildDelegationPolicyStep, buildLocalStateStep, buildResearchStep, buildToolsStep, buildVoiceMediaStep } from './onboarding-wizard-operator-steps.ts';
|
|
4
4
|
import { listAgentRuntimeProfileTemplates } from '../../agent/runtime-profile.ts';
|
|
5
5
|
import type { OnboardingWizardController } from './onboarding-wizard.ts';
|
|
6
6
|
import type { OnboardingWizardActionFieldDefinition, OnboardingWizardFieldDefinition, OnboardingWizardModelPickerFieldDefinition, OnboardingWizardRadioFieldDefinition, OnboardingWizardRadioOption, OnboardingWizardStepDefinition } from './onboarding-wizard-types.ts';
|
|
7
7
|
import type { OnboardingProviderAccountRecord, OnboardingStep1CapabilityId, OnboardingStep1CapabilityItem } from '../../runtime/onboarding/index.ts';
|
|
8
8
|
|
|
9
|
+
const DEFAULT_STARTER_TEMPLATE_ID = 'personal-productivity';
|
|
10
|
+
|
|
11
|
+
function defaultStarterTemplateId(): string {
|
|
12
|
+
const templates = listAgentRuntimeProfileTemplates();
|
|
13
|
+
if (templates.some((template) => template.id === DEFAULT_STARTER_TEMPLATE_ID)) return DEFAULT_STARTER_TEMPLATE_ID;
|
|
14
|
+
return templates[0]?.id ?? 'none';
|
|
15
|
+
}
|
|
16
|
+
|
|
9
17
|
function buildStarterTemplateOptions(): readonly OnboardingWizardRadioOption[] {
|
|
10
18
|
return [
|
|
11
19
|
{
|
|
@@ -30,6 +38,7 @@ export function buildOnboardingWizardSteps(controller: OnboardingWizardControlle
|
|
|
30
38
|
buildDefaultModelStep(controller),
|
|
31
39
|
buildCommunicationStep(),
|
|
32
40
|
buildToolsStep(),
|
|
41
|
+
buildResearchStep(),
|
|
33
42
|
buildAgentKnowledgeStep(),
|
|
34
43
|
buildLocalStateStep(controller.runtimeSnapshot?.localBehaviorDiscovery),
|
|
35
44
|
buildAutomationStep(),
|
|
@@ -114,10 +123,10 @@ function buildReviewReadinessFields(controller: OnboardingWizardController): rea
|
|
|
114
123
|
{
|
|
115
124
|
kind: 'status',
|
|
116
125
|
id: 'review.readiness.connection',
|
|
117
|
-
label: 'Connected
|
|
126
|
+
label: 'Connected host snapshot',
|
|
118
127
|
hint: collectionIssues > 0
|
|
119
128
|
? `${collectionIssues} setup snapshot issue(s) need attention before this Agent is day-one ready.`
|
|
120
|
-
: 'The setup snapshot loaded cleanly from connected GoodVibes
|
|
129
|
+
: 'The setup snapshot loaded cleanly from the connected GoodVibes host.',
|
|
121
130
|
defaultValue: collectionIssues > 0 ? 'Needs attention' : 'Ready',
|
|
122
131
|
spacerBeforeRows: 1,
|
|
123
132
|
},
|
|
@@ -139,14 +148,21 @@ function buildReviewReadinessFields(controller: OnboardingWizardController): rea
|
|
|
139
148
|
kind: 'status',
|
|
140
149
|
id: 'review.readiness.knowledge',
|
|
141
150
|
label: 'Agent Knowledge segment',
|
|
142
|
-
hint: 'Ask, search, status, and ingest stay on /api/goodvibes-agent/knowledge/* with no default
|
|
151
|
+
hint: 'Ask, search, status, and ingest stay on /api/goodvibes-agent/knowledge/* with no default knowledge or non-Agent fallback.',
|
|
143
152
|
defaultValue: 'Isolated',
|
|
144
153
|
},
|
|
154
|
+
{
|
|
155
|
+
kind: 'status',
|
|
156
|
+
id: 'review.readiness.research',
|
|
157
|
+
label: 'Research and source triage',
|
|
158
|
+
hint: 'Web research and URL inspection stay in the main conversation; durable source storage requires explicit Agent Knowledge ingest.',
|
|
159
|
+
defaultValue: 'Read-only',
|
|
160
|
+
},
|
|
145
161
|
{
|
|
146
162
|
kind: 'status',
|
|
147
163
|
id: 'review.readiness.local-behavior',
|
|
148
164
|
label: 'Local behavior library',
|
|
149
|
-
hint: localBehavior?.detail ?? 'Agent-local memory, routines, skills, and personas remain local until a stable shared registry exists.',
|
|
165
|
+
hint: localBehavior?.detail ?? 'Agent-local memory, notes, routines, skills, and personas remain local until a stable shared registry exists.',
|
|
150
166
|
defaultValue: localBehavior?.selected ? 'Customized' : 'Starter ready',
|
|
151
167
|
},
|
|
152
168
|
{
|
|
@@ -206,13 +222,13 @@ export function buildAgentSetupStep(controller: OnboardingWizardController): Onb
|
|
|
206
222
|
id: 'agent-setup',
|
|
207
223
|
title: 'Agent setup',
|
|
208
224
|
shortLabel: 'Agent',
|
|
209
|
-
description: 'Set up the Agent operator workspace
|
|
225
|
+
description: 'Set up the Agent operator workspace with local identity, provider access, isolated Agent Knowledge, reusable local behavior, and explicit build delegation.',
|
|
210
226
|
summaryTitle: 'Agent setup posture',
|
|
211
227
|
summaryLines: [
|
|
212
228
|
'Agent owns the operator TUI and local behavior registry.',
|
|
213
229
|
'Optional starter profile: create an isolated Agent home from setup.',
|
|
214
230
|
'Setup here changes only Agent-owned settings and local state.',
|
|
215
|
-
`Secret policy
|
|
231
|
+
`Secret policy ${controller.getStringFieldValue('agent-setup.secret-policy', secretPolicy)}`,
|
|
216
232
|
collectionIssues > 0 ? `${collectionIssues} setup snapshot issue(s)` : 'Setup snapshot collected cleanly',
|
|
217
233
|
],
|
|
218
234
|
fields: [
|
|
@@ -226,10 +242,10 @@ export function buildAgentSetupStep(controller: OnboardingWizardController): Onb
|
|
|
226
242
|
{
|
|
227
243
|
kind: 'status',
|
|
228
244
|
id: 'agent-setup.connection',
|
|
229
|
-
label: 'Connected GoodVibes
|
|
245
|
+
label: 'Connected GoodVibes host',
|
|
230
246
|
hint: collectionIssues > 0
|
|
231
247
|
? `${collectionIssues} setup snapshot issue(s) were reported. Status and doctor commands show connection details.`
|
|
232
|
-
: 'Agent uses connected GoodVibes
|
|
248
|
+
: 'Agent uses the connected GoodVibes host for companion chat, work plans, approvals, automation, and Agent Knowledge.',
|
|
233
249
|
defaultValue: collectionIssues > 0 ? `${collectionIssues} issue(s)` : 'Connected',
|
|
234
250
|
},
|
|
235
251
|
{
|
|
@@ -244,7 +260,7 @@ export function buildAgentSetupStep(controller: OnboardingWizardController): Onb
|
|
|
244
260
|
kind: 'text',
|
|
245
261
|
id: 'agent-setup.profile-name',
|
|
246
262
|
label: 'Create starter profile',
|
|
247
|
-
hint: 'Optional
|
|
263
|
+
hint: 'Optional Agent profile name creates an isolated home during setup. Leave blank to keep the current home.',
|
|
248
264
|
placeholder: 'research-desk',
|
|
249
265
|
defaultValue: '',
|
|
250
266
|
},
|
|
@@ -252,16 +268,24 @@ export function buildAgentSetupStep(controller: OnboardingWizardController): Onb
|
|
|
252
268
|
kind: 'radio',
|
|
253
269
|
id: 'agent-setup.profile-template',
|
|
254
270
|
label: 'Starter profile template',
|
|
255
|
-
hint: 'Choose the persona, skills, and routine bundle to seed into the optional new Agent profile.',
|
|
271
|
+
hint: 'Choose the persona, skills, and routine bundle to seed into the optional new Agent profile. Select No profile only when you intentionally want an empty Agent home.',
|
|
256
272
|
options: buildStarterTemplateOptions(),
|
|
257
|
-
defaultValue:
|
|
273
|
+
defaultValue: defaultStarterTemplateId(),
|
|
258
274
|
},
|
|
259
275
|
{
|
|
260
|
-
kind: '
|
|
276
|
+
kind: 'checklist',
|
|
277
|
+
id: 'agent-setup.profile-default',
|
|
278
|
+
label: 'Use created profile by default',
|
|
279
|
+
hint: 'When a starter profile name is provided, make that isolated Agent profile the default for later plain goodvibes-agent runs.',
|
|
280
|
+
defaultValue: true,
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
kind: 'action',
|
|
261
284
|
id: 'agent-setup.profile-guide',
|
|
285
|
+
action: 'open-agent-workspace:profiles',
|
|
262
286
|
label: 'Profile guidance',
|
|
263
|
-
hint: '
|
|
264
|
-
defaultValue: '
|
|
287
|
+
hint: 'Open the Profiles workspace to browse starters, export, customize, import, create, and select isolated Agent profiles.',
|
|
288
|
+
defaultValue: 'Open Profiles',
|
|
265
289
|
},
|
|
266
290
|
],
|
|
267
291
|
};
|
|
@@ -306,8 +330,8 @@ export function buildProviderAccessStep(controller: OnboardingWizardController):
|
|
|
306
330
|
id: 'providers.subscription-sessions',
|
|
307
331
|
label: 'Subscription sessions',
|
|
308
332
|
hint: [
|
|
309
|
-
`active
|
|
310
|
-
`pending
|
|
333
|
+
`active ${formatBoundedList(activeSubscriptionProviders, 'none')}`,
|
|
334
|
+
`pending ${formatBoundedList(pendingSubscriptionProviders, 'none')}`,
|
|
311
335
|
].join(' '),
|
|
312
336
|
defaultValue: `${activeSubscriptions.length} active / ${pendingSubscriptions.length} pending`,
|
|
313
337
|
},
|
|
@@ -323,8 +347,8 @@ export function buildProviderAccessStep(controller: OnboardingWizardController):
|
|
|
323
347
|
id: 'providers.openai-api-key',
|
|
324
348
|
label: 'OpenAI API key quick start',
|
|
325
349
|
hint: openAiApiKeyConfigured
|
|
326
|
-
? 'Optional quick start
|
|
327
|
-
: 'Optional quick start
|
|
350
|
+
? 'Optional quick start already has an OpenAI API key stored. Leave blank to keep it; enter a new key to replace it through the secret manager.'
|
|
351
|
+
: 'Optional quick start can store an OpenAI API key now. Other providers can be configured from the Setup workspace, Tools & MCP workspace, and model picker.',
|
|
328
352
|
placeholder: openAiApiKeyConfigured ? 'already configured' : 'sk-...',
|
|
329
353
|
defaultValue: '',
|
|
330
354
|
},
|
|
@@ -373,10 +397,10 @@ export function buildProviderAccessStep(controller: OnboardingWizardController):
|
|
|
373
397
|
description: 'Review provider and model access for the Agent conversation. Credentials stay masked and provider-specific setup remains configurable.',
|
|
374
398
|
summaryTitle: 'Provider access summary',
|
|
375
399
|
summaryLines: [
|
|
376
|
-
`Default route
|
|
377
|
-
`Provider account routes
|
|
378
|
-
`Subscription sessions
|
|
379
|
-
`Provider credential references
|
|
400
|
+
`Default route ${providerRouteLabel}`,
|
|
401
|
+
`Provider account routes ${configuredAccounts.length}`,
|
|
402
|
+
`Subscription sessions ${activeSubscriptions.length} active / ${pendingSubscriptions.length} pending`,
|
|
403
|
+
`Provider credential references ${providerSecretCount}`,
|
|
380
404
|
],
|
|
381
405
|
fields,
|
|
382
406
|
};
|
|
@@ -412,8 +436,8 @@ export function buildDefaultModelStep(controller: OnboardingWizardController): O
|
|
|
412
436
|
description: 'Choose the default provider, model, and reasoning posture for normal Agent conversation.',
|
|
413
437
|
summaryTitle: 'Default model summary',
|
|
414
438
|
summaryLines: [
|
|
415
|
-
`Main
|
|
416
|
-
`Reasoning
|
|
439
|
+
`Main ${modelSelectionLabel(controller.modelSelectionState.get('main') ?? primarySelectionField.defaultSelection)}`,
|
|
440
|
+
`Reasoning ${controller.getFieldValueLabel(reasoningField)}`,
|
|
417
441
|
],
|
|
418
442
|
fields: [primarySelectionField, reasoningField],
|
|
419
443
|
};
|
|
@@ -427,9 +451,9 @@ export function buildExperienceStep(controller: OnboardingWizardController): Onb
|
|
|
427
451
|
description: 'Tune the Agent conversation style and approval posture for day-to-day operator use.',
|
|
428
452
|
summaryTitle: 'Experience posture',
|
|
429
453
|
summaryLines: [
|
|
430
|
-
`Human-in-the-Loop (HITL)
|
|
431
|
-
`Guidance
|
|
432
|
-
`Permissions
|
|
454
|
+
`Human-in-the-Loop (HITL) ${controller.getStringFieldValue('experience.hitl', controller.runtimeSnapshot?.runtimeDefaults.behavior.hitlMode ?? 'balanced')}`,
|
|
455
|
+
`Guidance ${controller.getStringFieldValue('experience.guidance', controller.runtimeSnapshot?.runtimeDefaults.behavior.guidanceMode ?? 'minimal')}`,
|
|
456
|
+
`Permissions ${controller.getStringFieldValue('experience.permissions', controller.runtimeSnapshot?.runtimeDefaults.permissionsMode ?? 'prompt')}`,
|
|
433
457
|
],
|
|
434
458
|
fields: [
|
|
435
459
|
{
|
|
@@ -493,11 +517,11 @@ export function buildReviewStep(controller: OnboardingWizardController): Onboard
|
|
|
493
517
|
description: 'Review the Agent day-one checklist and apply setup directly from the wizard.',
|
|
494
518
|
summaryTitle: 'Agent day-one readiness',
|
|
495
519
|
summaryLines: [
|
|
496
|
-
`Day-one readiness
|
|
520
|
+
`Day-one readiness ${dayOneReadiness}`,
|
|
497
521
|
unsavedLabel,
|
|
498
522
|
`${controller.buildApplyRequest().operations.length} Agent setting change(s) ready to apply`,
|
|
499
|
-
feedback ? `Last apply
|
|
500
|
-
controller.isEditingTextField() ? `Editing
|
|
523
|
+
feedback ? `Last apply ${feedback.title}` : 'No apply errors reported',
|
|
524
|
+
controller.isEditingTextField() ? `Editing ${controller.editingFieldId}` : 'Ready to apply',
|
|
501
525
|
],
|
|
502
526
|
fields: [
|
|
503
527
|
...feedbackFields,
|
|
@@ -505,16 +529,16 @@ export function buildReviewStep(controller: OnboardingWizardController): Onboard
|
|
|
505
529
|
{
|
|
506
530
|
kind: 'status',
|
|
507
531
|
id: 'review.global-marker',
|
|
508
|
-
label: 'Agent setup
|
|
509
|
-
hint: '
|
|
510
|
-
defaultValue: '
|
|
532
|
+
label: 'Agent setup completion',
|
|
533
|
+
hint: 'Successful apply marks Agent setup complete for this user account, so a bare launch opens the operator workspace next time.',
|
|
534
|
+
defaultValue: 'Marked after apply',
|
|
511
535
|
},
|
|
512
536
|
{
|
|
513
537
|
kind: 'action',
|
|
514
538
|
id: 'review.apply',
|
|
515
539
|
action: 'apply',
|
|
516
540
|
label: 'Apply Agent settings and verify',
|
|
517
|
-
hint: 'Persist Agent-owned settings and verify that setup did not request non-Agent entrypoints, default
|
|
541
|
+
hint: 'Persist Agent-owned settings and verify that setup did not request non-Agent entrypoints, default knowledge access, or non-Agent knowledge setup.',
|
|
518
542
|
defaultValue: 'Ready',
|
|
519
543
|
},
|
|
520
544
|
],
|