@pellux/goodvibes-agent 0.1.79 → 0.1.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  All notable changes to GoodVibes Agent will be recorded here.
4
4
 
5
+ ## 0.1.80 - 2026-06-01
6
+
7
+ - Added an Agent day-one readiness checklist to the onboarding review step covering runtime connection, default model route, profile setup, isolated Agent Knowledge, local behavior, channels, routines/schedules, and explicit build delegation.
8
+ - Kept the first-run review focused on Agent setup outcomes instead of copied runtime lifecycle or non-Agent knowledge behavior.
9
+
5
10
  ## 0.1.79 - 2026-06-01
6
11
 
7
12
  - Expanded the Voice & Media workspace into a provider readiness matrix covering selected TTS readiness, missing secret key names, media understanding/generation posture, and browser-tool state.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-agent",
3
- "version": "0.1.79",
3
+ "version": "0.1.80",
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",
@@ -3,6 +3,7 @@ import { modelSelectionLabel, normalizeText } from './onboarding-wizard-helpers.
3
3
  import { listAgentRuntimeProfileTemplates } from '../../agent/runtime-profile.ts';
4
4
  import type { OnboardingWizardController } from './onboarding-wizard.ts';
5
5
  import type { OnboardingWizardActionFieldDefinition, OnboardingWizardFieldDefinition, OnboardingWizardModelPickerFieldDefinition, OnboardingWizardRadioFieldDefinition, OnboardingWizardRadioOption, OnboardingWizardStepDefinition } from './onboarding-wizard-types.ts';
6
+ import type { OnboardingStep1CapabilityId, OnboardingStep1CapabilityItem } from '../../runtime/onboarding/index.ts';
6
7
 
7
8
  function buildStarterTemplateOptions(): readonly OnboardingWizardRadioOption[] {
8
9
  return [
@@ -58,6 +59,98 @@ function addApplyAndContinueAction(step: OnboardingWizardStepDefinition): Onboar
58
59
  };
59
60
  }
60
61
 
62
+ function findRuntimeCapability(
63
+ controller: OnboardingWizardController,
64
+ id: OnboardingStep1CapabilityId,
65
+ ): OnboardingStep1CapabilityItem | null {
66
+ return controller.runtimeDerived.step1Capabilities.find((capability) => capability.id === id) ?? null;
67
+ }
68
+
69
+ function currentMainModelLabel(controller: OnboardingWizardController): string {
70
+ const routing = controller.runtimeSnapshot?.providerRouting;
71
+ return modelSelectionLabel(controller.modelSelectionState.get('main') ?? {
72
+ providerId: normalizeText(routing?.primaryProviderId),
73
+ modelId: normalizeText(routing?.primaryModelId),
74
+ enabled: true,
75
+ });
76
+ }
77
+
78
+ function profileSetupLabel(controller: OnboardingWizardController): string {
79
+ const profileName = normalizeText(controller.getStringFieldValue('agent-setup.profile-name', ''));
80
+ const templateId = controller.getStringFieldValue('agent-setup.profile-template', 'none');
81
+ if (profileName.length === 0) return 'Current home';
82
+ return templateId === 'none' ? `Create ${profileName}` : `Create ${profileName} from ${templateId}`;
83
+ }
84
+
85
+ function buildReviewReadinessFields(controller: OnboardingWizardController): readonly OnboardingWizardFieldDefinition[] {
86
+ const localBehavior = findRuntimeCapability(controller, 'local-behavior');
87
+ const channels = findRuntimeCapability(controller, 'communication-channels');
88
+ const automation = findRuntimeCapability(controller, 'automation-review');
89
+ const collectionIssues = controller.runtimeSnapshot?.collectionIssues.length ?? 0;
90
+
91
+ return [
92
+ {
93
+ kind: 'status',
94
+ id: 'review.readiness.connection',
95
+ label: 'Runtime connection snapshot',
96
+ hint: collectionIssues > 0
97
+ ? `${collectionIssues} setup snapshot issue(s) need attention before this Agent is day-one ready.`
98
+ : 'The setup snapshot loaded cleanly from the external GoodVibes runtime.',
99
+ defaultValue: collectionIssues > 0 ? 'Needs attention' : 'Ready',
100
+ spacerBeforeRows: 1,
101
+ },
102
+ {
103
+ kind: 'status',
104
+ id: 'review.readiness.model',
105
+ label: 'Default model route',
106
+ hint: 'Normal assistant turns use this selected provider/model route unless changed later from the model picker.',
107
+ defaultValue: currentMainModelLabel(controller),
108
+ },
109
+ {
110
+ kind: 'status',
111
+ id: 'review.readiness.profile',
112
+ label: 'Agent profile',
113
+ hint: 'Profiles isolate Agent-local config, sessions, memory, personas, skills, routines, and setup state.',
114
+ defaultValue: profileSetupLabel(controller),
115
+ },
116
+ {
117
+ kind: 'status',
118
+ id: 'review.readiness.knowledge',
119
+ label: 'Agent Knowledge segment',
120
+ hint: 'Ask, search, status, and ingest stay on /api/goodvibes-agent/knowledge/* with no default wiki or non-Agent fallback.',
121
+ defaultValue: 'Isolated',
122
+ },
123
+ {
124
+ kind: 'status',
125
+ id: 'review.readiness.local-behavior',
126
+ label: 'Local behavior library',
127
+ hint: localBehavior?.detail ?? 'Agent-local memory, routines, skills, and personas remain local until a stable shared registry exists.',
128
+ defaultValue: localBehavior?.selected ? 'Customized' : 'Starter ready',
129
+ },
130
+ {
131
+ kind: 'status',
132
+ id: 'review.readiness.channels',
133
+ label: 'Channels and notifications',
134
+ hint: channels?.detail ?? 'Connect only the channels the Agent should use, and keep outbound delivery explicit.',
135
+ defaultValue: channels?.selected ? 'Review configured' : 'Optional setup',
136
+ },
137
+ {
138
+ kind: 'status',
139
+ id: 'review.readiness.automation',
140
+ label: 'Routines and schedules',
141
+ hint: automation?.detail ?? 'Local routines run in the main conversation; external schedules require explicit promotion and confirmation.',
142
+ defaultValue: automation?.selected ? 'Review configured' : 'Local first',
143
+ },
144
+ {
145
+ kind: 'status',
146
+ id: 'review.readiness.delegation',
147
+ label: 'Build delegation',
148
+ hint: 'Build, fix, implementation, and review work is handed to GoodVibes TUI only when explicitly requested.',
149
+ defaultValue: 'Explicit only',
150
+ },
151
+ ];
152
+ }
153
+
61
154
  export function buildCommunicationStep(): OnboardingWizardStepDefinition {
62
155
  return {
63
156
  id: 'agent-communication',
@@ -636,14 +729,17 @@ export function buildReviewStep(controller: OnboardingWizardController): Onboard
636
729
  const unsavedLabel = controller.dirtyStepCount === 1
637
730
  ? '1 screen has unapplied changes'
638
731
  : `${controller.dirtyStepCount} screens have unapplied changes`;
732
+ const collectionIssues = controller.runtimeSnapshot?.collectionIssues.length ?? 0;
733
+ const dayOneReadiness = collectionIssues > 0 ? `${collectionIssues} connection issue(s) before day-one ready` : 'operator checklist ready';
639
734
 
640
735
  return {
641
736
  id: 'review',
642
737
  title: 'Review and apply',
643
738
  shortLabel: 'Review',
644
- description: 'Review Agent-owned settings and apply them directly from the wizard.',
645
- summaryTitle: 'Review posture',
739
+ description: 'Review the Agent day-one checklist and apply setup directly from the wizard.',
740
+ summaryTitle: 'Agent day-one readiness',
646
741
  summaryLines: [
742
+ `Day-one readiness: ${dayOneReadiness}`,
647
743
  unsavedLabel,
648
744
  `${controller.buildApplyRequest().operations.length} Agent setting change(s) ready to apply`,
649
745
  feedback ? `Last apply: ${feedback.title}` : 'No apply errors reported',
@@ -651,6 +747,7 @@ export function buildReviewStep(controller: OnboardingWizardController): Onboard
651
747
  ],
652
748
  fields: [
653
749
  ...feedbackFields,
750
+ ...buildReviewReadinessFields(controller),
654
751
  {
655
752
  kind: 'status',
656
753
  id: 'review.global-marker',
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.79';
9
+ let _version = '0.1.80';
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 {