@pellux/goodvibes-agent 0.1.67 → 0.1.69
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 +14 -2
- package/README.md +4 -12
- package/docs/README.md +2 -4
- package/docs/deployment-and-services.md +3 -9
- package/docs/getting-started.md +2 -2
- package/docs/release-and-publishing.md +2 -2
- package/package.json +1 -1
- package/src/cli/completion.ts +0 -9
- package/src/cli/package-verification.ts +4 -0
- package/src/input/onboarding/onboarding-wizard-constants.ts +6 -6
- package/src/input/onboarding/onboarding-wizard-helpers.ts +1 -1
- package/src/input/onboarding/onboarding-wizard-steps.ts +4 -4
- package/src/renderer/onboarding/onboarding-wizard.ts +24 -12
- package/src/runtime/index.ts +1 -1
- package/src/tools/wrfc-agent-guard.ts +1 -1
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GoodVibes Agent will be recorded here.
|
|
4
4
|
|
|
5
|
+
## 0.1.69 - 2026-05-31
|
|
6
|
+
|
|
7
|
+
- Made the first-run onboarding detail area wrap selected-row guidance across multiple lines instead of hiding setup context behind single-line truncation.
|
|
8
|
+
- Shortened first-screen setup labels and values so Agent identity, runtime connection, secret policy, profiles, and continue actions remain readable at normal terminal widths.
|
|
9
|
+
- Fixed tiny-view onboarding scroll behavior so the selected action stays visible when field capacity is minimal.
|
|
10
|
+
|
|
11
|
+
## 0.1.68 - 2026-05-31
|
|
12
|
+
|
|
13
|
+
- Removed internal foundation-phase language and blocked lifecycle command examples from package-facing docs.
|
|
14
|
+
- Stopped advertising runtime lifecycle and surface-management commands in shell completion while keeping safety blocks for accidental invocations.
|
|
15
|
+
- Added package text guards so shipped docs stay focused on the Agent TUI product path.
|
|
16
|
+
|
|
5
17
|
## 0.1.67 - 2026-05-31
|
|
6
18
|
|
|
7
19
|
- Reworked remote bridge and remote review language from copied runner/control-room wording to Agent-facing worker/review wording.
|
|
@@ -377,7 +389,7 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
377
389
|
## 0.1.0 - 2026-05-28
|
|
378
390
|
|
|
379
391
|
- Published the first public alpha package for `@pellux/goodvibes-agent`.
|
|
380
|
-
- Kept the
|
|
392
|
+
- Kept the GoodVibes TUI-derived shell, renderer, input, fullscreen workspace, command registry, and release foundation.
|
|
381
393
|
- Preserved Agent product policy: serial/proactive main conversation by default, no local Agent-owned WRFC/spawn fanout, and explicit GoodVibes TUI delegation for build/fix/review work.
|
|
382
394
|
- Moved Agent-owned runtime state to `.goodvibes/agent` surface roots.
|
|
383
395
|
- Updated packaged Agent guidance, reviewer persona, and provider skill to avoid copied TUI WRFC/multi-agent defaults.
|
|
@@ -386,7 +398,7 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
386
398
|
|
|
387
399
|
## 0.0.0 - Private Baseline
|
|
388
400
|
|
|
389
|
-
-
|
|
401
|
+
- Adopted the GoodVibes terminal foundation as the starting point for the Agent product.
|
|
390
402
|
- Renamed package identity to `@pellux/goodvibes-agent` and exposed one executable, `goodvibes-agent`.
|
|
391
403
|
- Pinned `@pellux/goodvibes-sdk` to `0.33.35`.
|
|
392
404
|
- Removed packaged runtime-host binaries and blocked Agent-owned runtime/service lifecycle commands.
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://opensource.org/licenses/MIT)
|
|
4
4
|
[](#install)
|
|
5
5
|
|
|
6
|
-
GoodVibes Agent is the personal operator assistant
|
|
6
|
+
GoodVibes Agent is the personal operator assistant TUI for GoodVibes. It is built for day-to-day operator work: chat, setup, local profiles, routines, skills, personas, isolated Agent Knowledge, status review, approvals, automation visibility, and explicit build delegation.
|
|
7
7
|
|
|
8
8
|
The Agent product connects to an already-running GoodVibes runtime. It does not install, start, stop, restart, or own runtime connectivity or service lifecycle.
|
|
9
9
|
|
|
@@ -87,15 +87,7 @@ Starting a routine records local usage and prints its steps; it does not spawn b
|
|
|
87
87
|
|
|
88
88
|
Start or restart the GoodVibes runtime from GoodVibes TUI or the owning host before launching Agent. Agent status and companion/knowledge routes connect to that external runtime, normally on `http://127.0.0.1:3421`.
|
|
89
89
|
|
|
90
|
-
Agent
|
|
91
|
-
|
|
92
|
-
```sh
|
|
93
|
-
goodvibes-agent serve
|
|
94
|
-
goodvibes-agent service start
|
|
95
|
-
goodvibes-agent surfaces enable web
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Those commands should return explicit external-runtime guidance instead of mutating local service posture.
|
|
90
|
+
Agent reports unavailable, unauthenticated, or incompatible runtime state through `goodvibes-agent status`, `goodvibes-agent doctor`, and the TUI status surfaces. It does not provide runtime lifecycle setup commands.
|
|
99
91
|
|
|
100
92
|
## Product Boundary
|
|
101
93
|
|
|
@@ -107,10 +99,10 @@ GoodVibes TUI owns coding execution: file edits, git/worktree workflows, coding
|
|
|
107
99
|
|
|
108
100
|
## Package Docs
|
|
109
101
|
|
|
110
|
-
Package-facing docs
|
|
102
|
+
Package-facing docs:
|
|
111
103
|
|
|
112
104
|
- [Getting Started](docs/getting-started.md)
|
|
113
105
|
- [Deployment And Services](docs/deployment-and-services.md)
|
|
114
106
|
- [Release And Publishing](docs/release-and-publishing.md)
|
|
115
107
|
|
|
116
|
-
|
|
108
|
+
The package-facing Agent documentation is limited to the docs listed above.
|
package/docs/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# GoodVibes Agent Docs
|
|
2
2
|
|
|
3
|
-
These are the package-facing docs for GoodVibes Agent.
|
|
4
|
-
|
|
5
|
-
GoodVibes Agent is a near-fork of the GoodVibes terminal foundation with a different product brain. It uses the copied terminal shell, renderer, input, fullscreen workspace, command, and release bones while the Agent-specific assistant behavior is being rebuilt.
|
|
3
|
+
These are the package-facing docs for GoodVibes Agent, the personal operator assistant TUI for GoodVibes.
|
|
6
4
|
|
|
7
5
|
Current package docs:
|
|
8
6
|
|
|
@@ -24,4 +22,4 @@ Important baseline constraints:
|
|
|
24
22
|
- Normal assistant chat is not coding-session delegation.
|
|
25
23
|
- Build/fix/review delegation to GoodVibes TUI must be explicit; WRFC is not the default Agent behavior.
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
The Agent docs above define the supported alpha behavior.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Deployment And Services
|
|
2
2
|
|
|
3
|
-
GoodVibes Agent is a client/operator
|
|
3
|
+
GoodVibes Agent is a client/operator TUI. It connects to an already-running GoodVibes runtime and does not own runtime or listener deployment.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Runtime Ownership
|
|
6
6
|
|
|
7
7
|
Agent must not:
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@ Agent must not:
|
|
|
12
12
|
- start, stop, or restart runtime services
|
|
13
13
|
- enable web, listener, control-plane, or channel surface posture
|
|
14
14
|
|
|
15
|
-
Those operations belong to GoodVibes TUI or the owning runtime host.
|
|
15
|
+
Those operations belong to GoodVibes TUI or the owning runtime host. Agent reports external runtime readiness but does not configure that host.
|
|
16
16
|
|
|
17
17
|
## Agent Runtime
|
|
18
18
|
|
|
@@ -40,12 +40,6 @@ http://127.0.0.1:3421
|
|
|
40
40
|
|
|
41
41
|
If the runtime is unavailable, unauthenticated, or on an incompatible SDK version, Agent commands should report actionable diagnostics without printing token values.
|
|
42
42
|
|
|
43
|
-
## Surface Commands
|
|
44
|
-
|
|
45
|
-
`goodvibes-agent surfaces`, `surfaces check`, and `surfaces show <surfaceId>` are read-only diagnostics.
|
|
46
|
-
|
|
47
|
-
`surfaces enable` and `surfaces disable` are intentionally blocked in Agent because they can mutate runtime/listener/web/channel posture.
|
|
48
|
-
|
|
49
43
|
## Release Rule
|
|
50
44
|
|
|
51
45
|
Only publish Agent releases that preserve the Agent product policy:
|
package/docs/getting-started.md
CHANGED
|
@@ -101,6 +101,6 @@ Agent Knowledge/Wiki is an Agent-owned product segment. Agent commands must not
|
|
|
101
101
|
|
|
102
102
|
Agent lifecycle commands that would start or mutate runtime posture are blocked intentionally. Use `goodvibes-agent status`, `goodvibes-agent doctor`, and read-only surface checks for diagnostics.
|
|
103
103
|
|
|
104
|
-
## Current
|
|
104
|
+
## Current Product Notes
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
Agent uses the mature GoodVibes terminal shell, renderer, input, fullscreen workspace, command registry, and release foundation. The active Agent policy is serial/proactive by default, blocks local Agent-owned WRFC/spawn fanout, and delegates explicit build/fix/review work to GoodVibes TUI instead of turning the Agent into a coding TUI.
|
|
@@ -55,6 +55,6 @@ Do not publish if Agent Knowledge commands can fall back to default Knowledge/Wi
|
|
|
55
55
|
|
|
56
56
|
Do not ship runtime host binaries from this package. If Agent later gets compiled artifacts, they must use Agent artifact names and remain separate from runtime ownership.
|
|
57
57
|
|
|
58
|
-
##
|
|
58
|
+
## Product Rule
|
|
59
59
|
|
|
60
|
-
The public alpha can include
|
|
60
|
+
The public alpha can include mature terminal foundation code, but package-facing behavior must follow Agent product policy. Follow-up work should continue pruning or reshaping coding-first surfaces while preserving the renderer, input, fullscreen workspace, command registry, and release bones.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.69",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "GoodVibes personal operator assistant TUI with a proactive Agent product brain, isolated Agent Knowledge, local profiles, routines, skills, personas, and explicit build delegation.",
|
|
6
6
|
"type": "module",
|
package/src/cli/completion.ts
CHANGED
|
@@ -2,9 +2,6 @@ const COMMANDS = [
|
|
|
2
2
|
'tui',
|
|
3
3
|
'run',
|
|
4
4
|
'exec',
|
|
5
|
-
'serve',
|
|
6
|
-
'web',
|
|
7
|
-
'service',
|
|
8
5
|
'onboarding',
|
|
9
6
|
'setup',
|
|
10
7
|
'doctor',
|
|
@@ -25,9 +22,6 @@ const COMMANDS = [
|
|
|
25
22
|
'tasks',
|
|
26
23
|
'pair',
|
|
27
24
|
'qrcode',
|
|
28
|
-
'surfaces',
|
|
29
|
-
'listener',
|
|
30
|
-
'control-plane',
|
|
31
25
|
'bundle',
|
|
32
26
|
'remote',
|
|
33
27
|
'bridge',
|
|
@@ -44,7 +38,6 @@ const OPTIONS = [
|
|
|
44
38
|
'--agent-profile',
|
|
45
39
|
'--cd',
|
|
46
40
|
'--working-dir',
|
|
47
|
-
'--daemon-home',
|
|
48
41
|
'--config',
|
|
49
42
|
'--enable',
|
|
50
43
|
'--disable',
|
|
@@ -54,8 +47,6 @@ const OPTIONS = [
|
|
|
54
47
|
'--output-format',
|
|
55
48
|
'--json',
|
|
56
49
|
'--no-alt-screen',
|
|
57
|
-
'--port',
|
|
58
|
-
'--hostname',
|
|
59
50
|
'--open',
|
|
60
51
|
'--resume',
|
|
61
52
|
'--session',
|
|
@@ -73,6 +73,10 @@ const PACKAGE_FACING_FORBIDDEN_TEXT = [
|
|
|
73
73
|
['Her', 'mes'].join(''),
|
|
74
74
|
['capabilities', ' audit'].join(''),
|
|
75
75
|
['capabilities', ' command'].join(''),
|
|
76
|
+
['near', '-fork'].join(''),
|
|
77
|
+
['goodvibes-agent', 'serve'].join(' '),
|
|
78
|
+
['goodvibes-agent', 'service start'].join(' '),
|
|
79
|
+
['goodvibes-agent', 'surfaces enable'].join(' '),
|
|
76
80
|
'Every plan must have a multi-agent execution strategy',
|
|
77
81
|
'NEVER skip WRFC',
|
|
78
82
|
'ALWAYS work in parallel when implementing a plan',
|
|
@@ -35,13 +35,13 @@ export const GUIDANCE_MODE_OPTIONS: readonly OnboardingWizardRadioOption[] = [
|
|
|
35
35
|
];
|
|
36
36
|
|
|
37
37
|
export const PERMISSION_MODE_OPTIONS: readonly OnboardingWizardRadioOption[] = [
|
|
38
|
-
{ id: 'prompt', label: 'Ask
|
|
39
|
-
{ id: 'allow-all', label: 'Allow
|
|
40
|
-
{ id: 'custom', label: 'Custom
|
|
38
|
+
{ id: 'prompt', label: 'Ask first', hint: 'Prompt before write, edit, network, and execution tools.' },
|
|
39
|
+
{ id: 'allow-all', label: 'Allow all', hint: 'Allow tools without approval prompts.' },
|
|
40
|
+
{ id: 'custom', label: 'Custom', hint: 'Use tool-specific permission rules.' },
|
|
41
41
|
];
|
|
42
42
|
|
|
43
43
|
export const SECRET_POLICY_OPTIONS: readonly OnboardingWizardRadioOption[] = [
|
|
44
|
-
{ id: 'preferred_secure', label: '
|
|
45
|
-
{ id: 'require_secure', label: 'Require secure
|
|
46
|
-
{ id: 'plaintext_allowed', label: '
|
|
44
|
+
{ id: 'preferred_secure', label: 'Secure', hint: 'Prefer the secure secret backend and fall back only when needed.' },
|
|
45
|
+
{ id: 'require_secure', label: 'Require secure', hint: 'Refuse plaintext secret persistence.' },
|
|
46
|
+
{ id: 'plaintext_allowed', label: 'Plaintext allowed', hint: 'Permit local plaintext secret storage.' },
|
|
47
47
|
];
|
|
@@ -112,5 +112,5 @@ export function getOnboardingWizardBodyRows(viewportHeight: number): number {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
export function getOnboardingWizardVisibleFieldCount(viewportHeight: number): number {
|
|
115
|
-
return Math.max(1, getOnboardingWizardBodyRows(viewportHeight) -
|
|
115
|
+
return Math.max(1, getOnboardingWizardBodyRows(viewportHeight) - 8);
|
|
116
116
|
}
|
|
@@ -27,7 +27,7 @@ function buildApplyAndContinueAction(step: OnboardingWizardStepDefinition): Onbo
|
|
|
27
27
|
kind: 'action',
|
|
28
28
|
id: `${step.id}.apply-and-continue`,
|
|
29
29
|
action: 'apply-and-continue',
|
|
30
|
-
label: 'Apply & Continue
|
|
30
|
+
label: 'Apply & Continue',
|
|
31
31
|
hint: 'Save the current wizard selections in this onboarding session and move to the next section. Settings are persisted on the final Review apply.',
|
|
32
32
|
defaultValue: 'Apply & next',
|
|
33
33
|
spacerBeforeRows: 2,
|
|
@@ -179,7 +179,7 @@ export function buildAgentSetupStep(controller: OnboardingWizardController): Onb
|
|
|
179
179
|
id: 'agent-setup.identity',
|
|
180
180
|
label: 'Product identity',
|
|
181
181
|
hint: 'GoodVibes Agent is a personal operator TUI with Agent-local profiles, memory, skills, personas, routines, and isolated Agent Knowledge.',
|
|
182
|
-
defaultValue: '
|
|
182
|
+
defaultValue: 'Operator',
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
kind: 'status',
|
|
@@ -188,7 +188,7 @@ export function buildAgentSetupStep(controller: OnboardingWizardController): Onb
|
|
|
188
188
|
hint: collectionIssues > 0
|
|
189
189
|
? `${collectionIssues} setup snapshot issue(s) were reported. Status and doctor commands show connection details.`
|
|
190
190
|
: 'Agent connects to an already-running GoodVibes runtime for companion chat, work plans, approvals, automation, and Agent Knowledge.',
|
|
191
|
-
defaultValue: collectionIssues > 0 ? `${collectionIssues} issue(s)` : 'External
|
|
191
|
+
defaultValue: collectionIssues > 0 ? `${collectionIssues} issue(s)` : 'External',
|
|
192
192
|
},
|
|
193
193
|
{
|
|
194
194
|
kind: 'radio',
|
|
@@ -203,7 +203,7 @@ export function buildAgentSetupStep(controller: OnboardingWizardController): Onb
|
|
|
203
203
|
id: 'agent-setup.profile-guide',
|
|
204
204
|
label: 'Agent profiles',
|
|
205
205
|
hint: 'Use /agent-profile guide after setup to create household, research, travel, operations, or custom Agent profiles.',
|
|
206
|
-
defaultValue: '
|
|
206
|
+
defaultValue: 'Profiles',
|
|
207
207
|
},
|
|
208
208
|
],
|
|
209
209
|
};
|
|
@@ -112,13 +112,18 @@ function buildFieldRows(
|
|
|
112
112
|
if (selectedRowIndex >= start + capacity) start = selectedRowIndex - capacity + 1;
|
|
113
113
|
start = clamp(start, 0, maxStart);
|
|
114
114
|
|
|
115
|
-
if (start > 0 && selectedRowIndex === start) start = Math.max(0, start - 1);
|
|
116
|
-
if (start + capacity < allRows.length && selectedRowIndex === start + capacity - 1) {
|
|
115
|
+
if (capacity > 1 && start > 0 && selectedRowIndex === start) start = Math.max(0, start - 1);
|
|
116
|
+
if (capacity > 1 && start + capacity < allRows.length && selectedRowIndex === start + capacity - 1) {
|
|
117
117
|
start = Math.min(maxStart, start + 1);
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
rows.push(...allRows.slice(start, start + capacity));
|
|
121
|
-
|
|
121
|
+
const firstVisibleRow = rows[0];
|
|
122
|
+
if (
|
|
123
|
+
start > 0
|
|
124
|
+
&& rows.length > 0
|
|
125
|
+
&& !(firstVisibleRow?.kind === 'field' && firstVisibleRow.absoluteIndex === selectedFieldIndex)
|
|
126
|
+
) {
|
|
122
127
|
rows[0] = {
|
|
123
128
|
kind: 'moreAbove',
|
|
124
129
|
text: `${OVERLAY_GLYPHS.moreAbove} ${start} more above`,
|
|
@@ -126,7 +131,12 @@ function buildFieldRows(
|
|
|
126
131
|
}
|
|
127
132
|
|
|
128
133
|
const hiddenBelow = Math.max(0, allRows.length - (start + capacity));
|
|
129
|
-
|
|
134
|
+
const lastVisibleRow = rows[rows.length - 1];
|
|
135
|
+
if (
|
|
136
|
+
hiddenBelow > 0
|
|
137
|
+
&& rows.length > 0
|
|
138
|
+
&& !(lastVisibleRow?.kind === 'field' && lastVisibleRow.absoluteIndex === selectedFieldIndex)
|
|
139
|
+
) {
|
|
130
140
|
rows[rows.length - 1] = {
|
|
131
141
|
kind: 'moreBelow',
|
|
132
142
|
text: `${OVERLAY_GLYPHS.moreBelow} ${hiddenBelow} more below`,
|
|
@@ -253,9 +263,9 @@ function footerText(wizard: OnboardingWizardController): string {
|
|
|
253
263
|
|
|
254
264
|
function controlsText(wizard: OnboardingWizardController): string {
|
|
255
265
|
if (wizard.isEditingTextField()) {
|
|
256
|
-
return 'Controls: Enter saves
|
|
266
|
+
return 'Controls: Enter saves, Esc cancels, Backspace deletes, Del clears.';
|
|
257
267
|
}
|
|
258
|
-
return 'Controls: Enter
|
|
268
|
+
return 'Controls: Enter selects, Del clears, Tab moves.';
|
|
259
269
|
}
|
|
260
270
|
|
|
261
271
|
function renderWideLayout(
|
|
@@ -302,8 +312,9 @@ function renderWideLayout(
|
|
|
302
312
|
`Fields ${wizard.getCompletedFieldCount(wizard.stepIndex)}/${wizard.getStepFieldCount(wizard.stepIndex)} complete`,
|
|
303
313
|
changedScreensLabel(wizard),
|
|
304
314
|
];
|
|
305
|
-
const fieldStartRow = 6;
|
|
306
315
|
const selectedText = selectedFieldText(wizard);
|
|
316
|
+
const selectedHintLines = wrapText(selectedText.hint, Math.max(18, centerWidth - 2)).slice(0, 3);
|
|
317
|
+
const fieldStartRow = 8;
|
|
307
318
|
const fieldRows = buildFieldRows(wizard, visibleFields, Math.max(0, bodyRows - fieldStartRow));
|
|
308
319
|
|
|
309
320
|
const topLine = createOverlayFilledBorderLine(
|
|
@@ -397,9 +408,9 @@ function renderWideLayout(
|
|
|
397
408
|
bg: DEFAULT_OVERLAY_PALETTE.selectedBg,
|
|
398
409
|
bold: true,
|
|
399
410
|
});
|
|
400
|
-
} else if (row
|
|
411
|
+
} else if (row >= 5 && row <= 7) {
|
|
401
412
|
fillWidth(line, centerStart, centerWidth, DEFAULT_OVERLAY_PALETTE.selectedBg);
|
|
402
|
-
putOverlayText(line, centerStart + 1, centerWidth - 2,
|
|
413
|
+
putOverlayText(line, centerStart + 1, centerWidth - 2, selectedHintLines[row - 5] ?? '', {
|
|
403
414
|
fg: UI_TONES.fg.secondary,
|
|
404
415
|
bg: DEFAULT_OVERLAY_PALETTE.selectedBg,
|
|
405
416
|
});
|
|
@@ -482,8 +493,9 @@ function renderCollapsedLayout(
|
|
|
482
493
|
const innerStart = layout.margin + 1;
|
|
483
494
|
const innerWidth = layout.innerWidth;
|
|
484
495
|
const descriptionLines = wrapText(currentStep.description, Math.max(14, innerWidth - 2)).slice(0, 2);
|
|
485
|
-
const fieldStartRow = 6;
|
|
486
496
|
const selectedText = selectedFieldText(wizard);
|
|
497
|
+
const selectedHintLines = wrapText(selectedText.hint, Math.max(14, innerWidth - 2)).slice(0, 3);
|
|
498
|
+
const fieldStartRow = 8;
|
|
487
499
|
const fieldRows = buildFieldRows(wizard, visibleFields, Math.max(0, bodyRows - fieldStartRow));
|
|
488
500
|
|
|
489
501
|
const topLine = createOverlayFilledBorderLine(
|
|
@@ -559,9 +571,9 @@ function renderCollapsedLayout(
|
|
|
559
571
|
bg: DEFAULT_OVERLAY_PALETTE.selectedBg,
|
|
560
572
|
bold: true,
|
|
561
573
|
});
|
|
562
|
-
} else if (row
|
|
574
|
+
} else if (row >= 5 && row <= 7) {
|
|
563
575
|
fillWidth(line, innerStart, innerWidth, DEFAULT_OVERLAY_PALETTE.selectedBg);
|
|
564
|
-
putOverlayText(line, innerStart + 1, innerWidth - 2,
|
|
576
|
+
putOverlayText(line, innerStart + 1, innerWidth - 2, selectedHintLines[row - 5] ?? '', {
|
|
565
577
|
fg: UI_TONES.fg.secondary,
|
|
566
578
|
bg: DEFAULT_OVERLAY_PALETTE.selectedBg,
|
|
567
579
|
});
|
package/src/runtime/index.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Runtime module barrel for GoodVibes Agent.
|
|
3
3
|
*
|
|
4
4
|
* SDK 0.33 intentionally removed private deep imports and the runtime root
|
|
5
|
-
* god-barrel. This file keeps the
|
|
5
|
+
* god-barrel. This file keeps the Agent app on public SDK seams
|
|
6
6
|
* while preserving the local import surface used by the shell.
|
|
7
7
|
*/
|
|
8
8
|
|
|
@@ -783,7 +783,7 @@ function narrowStringEnumProperty(
|
|
|
783
783
|
property.description = description;
|
|
784
784
|
}
|
|
785
785
|
|
|
786
|
-
// Compatibility exports for
|
|
786
|
+
// Compatibility exports for inherited terminal-foundation tests/imports.
|
|
787
787
|
export const installWrfcAgentToolGuard = installAgentToolPolicyGuard;
|
|
788
788
|
export const wrapWrfcAgentTool = wrapAgentToolForAgentPolicy;
|
|
789
789
|
export const validateWrfcAgentToolInvocation = validateAgentToolInvocationForAgentPolicy;
|
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.69';
|
|
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 {
|