@pellux/goodvibes-agent 0.1.107 → 0.1.109
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 +42 -13
- package/README.md +27 -11
- package/docs/README.md +5 -5
- package/docs/{runtime-connection.md → connected-services.md} +8 -8
- package/docs/getting-started.md +28 -12
- package/docs/release-and-publishing.md +4 -4
- package/package.json +2 -12
- package/src/agent/memory-prompt.ts +35 -0
- package/src/agent/reminder-schedule-format.ts +75 -0
- package/src/agent/reminder-schedule.ts +494 -0
- package/src/agent/routine-schedule-format.ts +7 -7
- package/src/agent/routine-schedule-promotion.ts +1 -1
- package/src/agent/routine-schedule-receipts.ts +1 -1
- package/src/agent/skill-discovery.ts +2 -0
- package/src/cli/agent-knowledge-args.ts +93 -0
- package/src/cli/agent-knowledge-command.ts +200 -369
- package/src/cli/agent-knowledge-format.ts +58 -7
- package/src/cli/agent-knowledge-methods.ts +84 -0
- package/src/cli/agent-knowledge-runtime.ts +240 -0
- package/src/cli/completion.ts +0 -2
- package/src/cli/config-overrides.ts +2 -2
- package/src/cli/help.ts +34 -15
- package/src/cli/management-commands.ts +2 -2
- package/src/cli/management.ts +8 -8
- package/src/cli/package-verification.ts +7 -3
- package/src/cli/parser.ts +10 -4
- package/src/cli/service-posture.ts +6 -6
- package/src/cli/status.ts +32 -32
- package/src/input/agent-workspace-activation.ts +24 -13
- package/src/input/agent-workspace-basic-command-editors.ts +448 -0
- package/src/input/agent-workspace-categories.ts +42 -34
- package/src/input/agent-workspace-channels.ts +3 -3
- package/src/input/agent-workspace-command-editor.ts +65 -0
- package/src/input/agent-workspace-editors.ts +17 -2
- package/src/input/agent-workspace-knowledge-query-editor.ts +74 -0
- package/src/input/agent-workspace-knowledge-url-editor.ts +95 -0
- package/src/input/agent-workspace-reminder-schedule-editor.ts +125 -0
- package/src/input/agent-workspace-routine-schedule-editor.ts +127 -0
- package/src/input/agent-workspace-setup.ts +2 -2
- package/src/input/agent-workspace-snapshot.ts +5 -2
- package/src/input/agent-workspace-types.ts +21 -2
- package/src/input/agent-workspace-voice-media.ts +5 -5
- package/src/input/agent-workspace.ts +39 -2
- package/src/input/commands/agent-runtime-profile-runtime.ts +1 -1
- package/src/input/commands/agent-skills-runtime.ts +94 -2
- package/src/input/commands/brief-runtime.ts +126 -0
- package/src/input/commands/channels-runtime.ts +47 -0
- package/src/input/commands/health-runtime.ts +10 -10
- package/src/input/commands/knowledge.ts +176 -1
- package/src/input/commands/planning-runtime.ts +1 -1
- package/src/input/commands/platform-access-runtime.ts +10 -10
- package/src/input/commands/policy-dispatch.ts +1 -1
- package/src/input/commands/schedule-runtime.ts +42 -5
- package/src/input/commands/security-runtime.ts +1 -1
- package/src/input/commands/session-content.ts +1 -1
- package/src/input/commands/session-workflow.ts +1 -1
- package/src/input/commands/shell-core.ts +4 -2
- package/src/input/commands/tasks-runtime.ts +3 -3
- package/src/input/commands.ts +4 -0
- package/src/input/handler-onboarding.ts +4 -4
- package/src/input/handler.ts +3 -2
- package/src/input/onboarding/onboarding-wizard-helpers.ts +1 -1
- package/src/input/onboarding/onboarding-wizard-operator-steps.ts +13 -13
- package/src/input/onboarding/onboarding-wizard-steps.ts +8 -8
- package/src/input/settings-modal-agent-policy.ts +1 -1
- package/src/input/slash-command-parser.ts +60 -0
- package/src/panels/builtin/agent.ts +1 -1
- package/src/panels/builtin/operations.ts +2 -2
- package/src/panels/provider-account-snapshot.ts +1 -1
- package/src/panels/provider-health-domains.ts +6 -6
- package/src/panels/subscription-panel.ts +1 -1
- package/src/panels/tasks-panel.ts +3 -3
- package/src/renderer/agent-workspace.ts +44 -31
- package/src/renderer/help-overlay.ts +1 -1
- package/src/renderer/settings-modal.ts +13 -13
- package/src/runtime/bootstrap-core.ts +1 -1
- package/src/runtime/bootstrap-hook-bridge.ts +1 -1
- package/src/runtime/bootstrap.ts +11 -9
- package/src/runtime/index.ts +2 -2
- package/src/runtime/onboarding/derivation.ts +6 -6
- package/src/shell/service-settings-sync.ts +1 -1
- package/src/tools/agent-local-registry-tool.ts +208 -9
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,11 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GoodVibes Agent will be recorded here.
|
|
4
4
|
|
|
5
|
-
## 0.1.
|
|
5
|
+
## 0.1.109 - 2026-06-02
|
|
6
|
+
|
|
7
|
+
- 4152420 Let Agent remember through local registry tool
|
|
8
|
+
|
|
9
|
+
## 0.1.108 - 2026-06-02
|
|
10
|
+
|
|
11
|
+
- f6b278c Harden Agent install and briefing
|
|
12
|
+
- 46fa071 Split Agent Knowledge CLI helpers
|
|
13
|
+
- ec03fc0 Add Agent Knowledge connector ingest
|
|
14
|
+
- 8c908ca Add Agent Knowledge connector inspection
|
|
15
|
+
- 4dda70e Add Agent Knowledge browser history import
|
|
16
|
+
- 95bbdbd Add Agent Knowledge file ingest
|
|
17
|
+
- 2440959 Add discovered skill import workflow
|
|
18
|
+
- 692c0fa Add confirmed reminder scheduling
|
|
19
|
+
- a392cc0 Use connected services product language
|
|
20
|
+
- 5843cb4 Clean Agent launch and service wording
|
|
21
|
+
- ee31dac Open routine starts through command router
|
|
22
|
+
- c9512e5 Use Agent-first connected service language
|
|
23
|
+
- 2d8d7f4 Focus onboarding on Agent setup
|
|
24
|
+
- 855ed91 Trim unused root package dependencies
|
|
25
|
+
- d74ae6c Add profile starter workspace forms
|
|
26
|
+
- 0f7e834 Add workspace forms for bookmarks media and skill bundles
|
|
27
|
+
- c140c9d Tolerate SDK overflow fail-closed refs
|
|
28
|
+
- 5093419 Add Agent Knowledge workspace query forms
|
|
29
|
+
- c76b249 Add routine schedule workspace form
|
|
30
|
+
- 8615c68 Tighten Agent runtime boundary wording
|
|
31
|
+
- f4cb026 Add Agent Knowledge URL workspace form
|
|
32
|
+
- f523594 Add Agent channel readiness command
|
|
33
|
+
- 65f0bfd Make Agent help TUI first
|
|
34
|
+
|
|
35
|
+
## 0.1.107 - 2026-06-01
|
|
6
36
|
|
|
7
|
-
- Add `goodvibes-agent launch` and `goodvibes-agent start` as explicit aliases for starting the Agent TUI.
|
|
8
37
|
- Open the Agent operator workspace automatically on normal TUI launch after first-run setup has been shown.
|
|
9
|
-
- Document the Bun global install path with `goodvibes-agent
|
|
38
|
+
- Document the Bun global install path with bare `goodvibes-agent` as the interactive smoke.
|
|
39
|
+
- Add an in-TUI `/channels` readiness command and workspace action for read-only channel setup review without sending messages or exposing token values.
|
|
40
|
+
- Add a confirmed in-workspace Agent Knowledge URL ingest form that writes only through the isolated Agent Knowledge route.
|
|
10
41
|
|
|
11
42
|
## 0.1.106 - 2026-06-01
|
|
12
43
|
|
|
@@ -17,7 +48,7 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
17
48
|
- Remove copied file-edit undo/redo behavior from Agent conversation commands.
|
|
18
49
|
- Remove stale hidden-share shortcut guidance and keep diff/file operations delegation-oriented.
|
|
19
50
|
- Make provider onboarding generic across provider routes, subscription sessions, and credential inventory while keeping OpenAI as an optional quick-start path.
|
|
20
|
-
-
|
|
51
|
+
- Tighten package-facing language around isolated Agent Knowledge and non-Agent knowledge boundaries.
|
|
21
52
|
- Shorten release workflow validation by relying on the single branch-CI gate run instead of duplicating release checks.
|
|
22
53
|
|
|
23
54
|
## 0.1.105 - 2026-06-01
|
|
@@ -97,7 +128,7 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
97
128
|
|
|
98
129
|
## 0.1.88 - 2026-06-01
|
|
99
130
|
|
|
100
|
-
- e97d2a2 Fix release test
|
|
131
|
+
- e97d2a2 Fix release test service port allocation
|
|
101
132
|
|
|
102
133
|
## 0.1.87 - 2026-06-01
|
|
103
134
|
|
|
@@ -115,13 +146,11 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
115
146
|
|
|
116
147
|
- 35dbf3d Show live external runtime status
|
|
117
148
|
|
|
118
|
-
##
|
|
149
|
+
## 0.1.83 - 2026-06-01
|
|
119
150
|
|
|
120
151
|
- Foregrounded live external-runtime reachability, SDK compatibility, operator-token state, and isolated Agent Knowledge readiness in `status`/`doctor` output.
|
|
121
152
|
- Removed the deprecated `actions/cache@v4` setup step so future CI/CD runs avoid Node 20 deprecation annotations from the shared workflow setup action.
|
|
122
153
|
|
|
123
|
-
## 0.1.83 - 2026-06-01
|
|
124
|
-
|
|
125
154
|
- f5099c1 Hide runtime-owned settings from Agent workspace
|
|
126
155
|
|
|
127
156
|
## 0.1.82 - 2026-06-01
|
|
@@ -132,8 +161,8 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
132
161
|
|
|
133
162
|
- Added local Agent skill bundles so users can group related local skills, enable or disable the bundle, and inject the bundle's member procedures into the same serial assistant conversation.
|
|
134
163
|
- Added `/agent-skills bundle ...` commands plus Agent workspace visibility for skill bundle counts, enabled bundle state, active skill count, and bundle membership.
|
|
135
|
-
- Restored the GitHub CI eval gate script and replaced the copied
|
|
136
|
-
- Kept bundles Agent-local and reviewable with no
|
|
164
|
+
- Restored the GitHub CI eval gate script and replaced the copied release workflow with an Agent package release workflow that validates Bun global install, package contents, compiled binary launch, and optional registry publish.
|
|
165
|
+
- Kept bundles Agent-local and reviewable with no connected-service lifecycle behavior, hidden background agents, or non-Agent knowledge fallback.
|
|
137
166
|
|
|
138
167
|
## 0.1.80 - 2026-06-01
|
|
139
168
|
|
|
@@ -226,7 +255,7 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
226
255
|
|
|
227
256
|
- Made the operator workspace more product-facing by replacing foundation/setup jargon with Agent profile, runtime status, voice/media, and browser-tool language.
|
|
228
257
|
- Removed the remote-runner item from the first-run voice/media workspace so day-one setup stays focused on user-facing assistant capabilities.
|
|
229
|
-
- Reworded settings, status panels, profile commands, and docs away from
|
|
258
|
+
- Reworded settings, status panels, profile commands, and docs away from internal runtime terminology while preserving the same underlying contracts.
|
|
230
259
|
|
|
231
260
|
## 0.1.64 - 2026-05-31
|
|
232
261
|
|
|
@@ -283,7 +312,7 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
283
312
|
|
|
284
313
|
## 0.1.55 - 2026-05-31
|
|
285
314
|
|
|
286
|
-
- d8f4eee Remove
|
|
315
|
+
- d8f4eee Remove developer-only setup surfaces
|
|
287
316
|
|
|
288
317
|
## 0.1.54 - 2026-05-31
|
|
289
318
|
|
|
@@ -316,7 +345,7 @@ All notable changes to GoodVibes Agent will be recorded here.
|
|
|
316
345
|
|
|
317
346
|
## 0.1.48 - 2026-05-31
|
|
318
347
|
|
|
319
|
-
- 67f8ce0
|
|
348
|
+
- 67f8ce0 Surface the Agent setup checklist
|
|
320
349
|
- 34c3d0b Remove internal development-only surfaces
|
|
321
350
|
|
|
322
351
|
## 0.1.47 - 2026-05-31
|
package/README.md
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
|
|
6
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
|
-
The Agent product connects to
|
|
8
|
+
The Agent product connects to GoodVibes services owned outside this package. It does not install, start, stop, restart, or own those services.
|
|
9
|
+
|
|
10
|
+
Most work happens in the interactive TUI. The installed CLI exists to launch that TUI, inspect setup, and script local Agent libraries when that is useful.
|
|
9
11
|
|
|
10
12
|
## Install
|
|
11
13
|
|
|
@@ -14,7 +16,7 @@ Install the public alpha package with Bun:
|
|
|
14
16
|
```sh
|
|
15
17
|
bun add -g --trust @pellux/goodvibes-agent
|
|
16
18
|
goodvibes-agent --help
|
|
17
|
-
goodvibes-agent
|
|
19
|
+
goodvibes-agent
|
|
18
20
|
goodvibes-agent status
|
|
19
21
|
goodvibes-agent profiles templates
|
|
20
22
|
goodvibes-agent personas list
|
|
@@ -25,6 +27,15 @@ goodvibes-agent knowledge list --kind sources
|
|
|
25
27
|
goodvibes-agent knowledge import-urls ./agent-sources.txt --yes
|
|
26
28
|
```
|
|
27
29
|
|
|
30
|
+
The bare Bun global install path is also supported:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
bun add -g @pellux/goodvibes-agent
|
|
34
|
+
goodvibes-agent
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If Bun reports blocked lifecycle scripts, the command should still install, but provider parsers and SDK helper dependencies may not be fully prepared until the package is trusted. Run the trust check and targeted trust command below.
|
|
38
|
+
|
|
28
39
|
If `goodvibes-agent` is not found after installation, add Bun's global bin directory to `PATH`:
|
|
29
40
|
|
|
30
41
|
```sh
|
|
@@ -32,7 +43,7 @@ export PATH="$(bun pm bin -g):$PATH"
|
|
|
32
43
|
goodvibes-agent --help
|
|
33
44
|
```
|
|
34
45
|
|
|
35
|
-
`goodvibes-agent`
|
|
46
|
+
`goodvibes-agent` starts the interactive Agent TUI. On a fresh Agent home, the TUI opens Agent setup first.
|
|
36
47
|
|
|
37
48
|
`--trust` lets Bun run the package lifecycle scripts required by the shipped SDK and parser dependencies during global install. A healthy install should report no pending lifecycle scripts:
|
|
38
49
|
|
|
@@ -65,10 +76,12 @@ bun run package:install-check
|
|
|
65
76
|
bun run publish:check
|
|
66
77
|
```
|
|
67
78
|
|
|
68
|
-
After setup has been shown once, the Agent TUI opens directly into the operator workspace. You can also reopen it with `/agent`, `/home`, or `/operator`. It is the Agent-first fullscreen workspace for setup,
|
|
79
|
+
After setup has been shown once, the Agent TUI opens directly into the operator workspace. You can also reopen it with `/agent`, `/home`, or `/operator`. It is the Agent-first fullscreen workspace for setup, model/provider selection, isolated Agent Knowledge, local memory/skills/routines/personas, channel readiness, voice/media setup, work-plan/approval review, automation observability, and explicit build delegation to GoodVibes TUI.
|
|
69
80
|
|
|
70
81
|
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.
|
|
71
82
|
|
|
83
|
+
The Knowledge area includes an in-workspace URL ingest form. It writes only to Agent Knowledge, requires typed confirmation, and dispatches the existing isolated `/knowledge ingest-url ... --yes` route.
|
|
84
|
+
|
|
72
85
|
Use isolated Agent profiles when one machine needs separate operator identities or local state:
|
|
73
86
|
|
|
74
87
|
```sh
|
|
@@ -83,7 +96,7 @@ goodvibes-agent --agent-profile household status
|
|
|
83
96
|
GOODVIBES_AGENT_HOME=/path/to/agent-home goodvibes-agent status
|
|
84
97
|
```
|
|
85
98
|
|
|
86
|
-
Profiles isolate Agent-local config, sessions, local memory, personas, skills, routines, and setup state. Starter templates seed local personas, skills, and routines for household, research, travel, operations, and personal productivity profiles; exported starter JSON can be edited and re-imported as a local starter.
|
|
99
|
+
Profiles isolate Agent-local config, sessions, local memory, personas, skills, routines, and setup state. Starter templates seed local personas, skills, and routines for household, research, travel, operations, and personal productivity profiles; exported starter JSON can be edited and re-imported as a local starter. Connected GoodVibes services remain shared unless the owning host is separately configured otherwise.
|
|
87
100
|
|
|
88
101
|
The same local behavior libraries are available without opening the TUI: `goodvibes-agent personas ...`, `goodvibes-agent skills ...`, `goodvibes-agent memory ...`, and `goodvibes-agent routines ...` list, create, review, enable, stale, export/import where relevant, and delete local Agent records with explicit confirmation for destructive actions.
|
|
89
102
|
|
|
@@ -97,21 +110,24 @@ Local Agent behavior is editable from the TUI:
|
|
|
97
110
|
/schedule promote-routine evening-review --cron "0 17 * * 1-5" --timezone America/Chicago --delivery-channel slack --yes
|
|
98
111
|
/schedule receipts
|
|
99
112
|
/schedule reconcile
|
|
113
|
+
/channels
|
|
100
114
|
/agent-skills create --name "Morning Brief" --description "Daily briefing flow" --procedure "Check tasks, approvals, calendar, and unread state before summarizing." --enabled true
|
|
101
115
|
/skills local list
|
|
102
116
|
/recall add fact Prefers concise morning briefings --scope project --tags preference
|
|
103
117
|
/recall search morning
|
|
104
118
|
```
|
|
105
119
|
|
|
106
|
-
Starting a routine records local usage and prints its steps; it does not spawn background agents or automation jobs. Promotion to
|
|
120
|
+
Starting a routine records local usage and prints its steps; it does not spawn background agents or automation jobs. Promotion to a connected schedule is separate and explicit: it calls the public `schedules.create` route only after `--yes`, can include explicit delivery targets such as `--delivery-channel slack`, records a redacted local receipt, and the generated scheduled prompt keeps Agent Knowledge isolated from default Knowledge/Wiki and non-Agent knowledge segments. Use `/schedule reconcile` to compare those local receipts against live connected schedules through public `schedules.list`.
|
|
121
|
+
|
|
122
|
+
Use `/channels` inside the TUI for a read-only channel readiness matrix. It shows enabled channels, missing config key names, delivery posture, and risk labels without sending messages or rendering token values.
|
|
107
123
|
|
|
108
|
-
##
|
|
124
|
+
## Connected Services
|
|
109
125
|
|
|
110
|
-
Start
|
|
126
|
+
Start connected GoodVibes services from GoodVibes TUI or the owning host before launching Agent. Agent status and companion/knowledge routes normally connect on `http://127.0.0.1:3421`.
|
|
111
127
|
|
|
112
|
-
Use `--runtime-url http://host:port` for a one-off launch, or set `GOODVIBES_AGENT_RUNTIME_URL=http://host:port` when
|
|
128
|
+
Use `--runtime-url http://host:port` for a one-off launch, or set `GOODVIBES_AGENT_RUNTIME_URL=http://host:port` when connected GoodVibes services are not on the default local port. The legacy `GOODVIBES_AGENT_BASE_URL` env var is also accepted as an alias. These only change the connection target; Agent still does not host or start services.
|
|
113
129
|
|
|
114
|
-
Agent reports unavailable, unauthenticated, or incompatible
|
|
130
|
+
Agent reports unavailable, unauthenticated, or incompatible connected-service state through `goodvibes-agent status`, `goodvibes-agent doctor`, and the TUI status views. Service lifecycle commands remain outside the Agent product.
|
|
115
131
|
|
|
116
132
|
## Product Boundary
|
|
117
133
|
|
|
@@ -128,7 +144,7 @@ GoodVibes TUI owns coding execution: file edits, git/worktree workflows, coding
|
|
|
128
144
|
Package-facing docs:
|
|
129
145
|
|
|
130
146
|
- [Getting Started](docs/getting-started.md)
|
|
131
|
-
- [
|
|
147
|
+
- [Connected Services](docs/connected-services.md)
|
|
132
148
|
- [Release And Publishing](docs/release-and-publishing.md)
|
|
133
149
|
|
|
134
150
|
The package-facing Agent documentation is limited to the docs listed above.
|
package/docs/README.md
CHANGED
|
@@ -5,7 +5,7 @@ These are the package-facing docs for GoodVibes Agent, the personal operator ass
|
|
|
5
5
|
Current package docs:
|
|
6
6
|
|
|
7
7
|
- [Getting Started](getting-started.md)
|
|
8
|
-
- [
|
|
8
|
+
- [Connected Services](connected-services.md)
|
|
9
9
|
- [Release And Publishing](release-and-publishing.md)
|
|
10
10
|
|
|
11
11
|
Important baseline constraints:
|
|
@@ -13,11 +13,11 @@ Important baseline constraints:
|
|
|
13
13
|
- Agent installs one executable: `goodvibes-agent`.
|
|
14
14
|
- Agent uses Bun and TypeScript-authored source.
|
|
15
15
|
- Agent depends on `@pellux/goodvibes-sdk@0.33.35`.
|
|
16
|
-
- Agent connects to
|
|
17
|
-
- Agent does not start, stop, restart, install, uninstall, or own
|
|
16
|
+
- Agent connects to GoodVibes services owned outside this product.
|
|
17
|
+
- Agent does not start, stop, restart, install, uninstall, or own those connected GoodVibes services.
|
|
18
18
|
- Agent Knowledge/Wiki uses only `/api/goodvibes-agent/knowledge/*`; there is no default Knowledge/Wiki or non-Agent product fallback.
|
|
19
|
-
- Agent supports isolated
|
|
20
|
-
- Agent supports
|
|
19
|
+
- Agent supports isolated Agent homes with `GOODVIBES_AGENT_HOME=<path>` and named profile homes with `goodvibes-agent profiles create <name> --template <starter> --yes` plus `--agent-profile <name>`.
|
|
20
|
+
- Agent supports connected-service URL overrides with `--runtime-url http://host:port` or `GOODVIBES_AGENT_RUNTIME_URL=http://host:port`; these only change the Agent connection target.
|
|
21
21
|
- 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.
|
|
22
22
|
- Local memory, personas, routines, and Agent skills are stored under the Agent home and are injected only into the serial Agent conversation.
|
|
23
23
|
- Normal assistant chat is not coding-session delegation.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Connected Services
|
|
2
2
|
|
|
3
|
-
GoodVibes Agent is a TUI client for
|
|
3
|
+
GoodVibes Agent is a TUI client for connected GoodVibes services owned outside this package. The package exposes one executable:
|
|
4
4
|
|
|
5
5
|
```sh
|
|
6
6
|
goodvibes-agent
|
|
@@ -13,9 +13,9 @@ The installed command is backed by TypeScript-authored source with a Bun shebang
|
|
|
13
13
|
- `goodvibes-agent status --json`
|
|
14
14
|
- `goodvibes-agent` launches the TUI in a real PTY
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## Service Prerequisite
|
|
17
17
|
|
|
18
|
-
Start
|
|
18
|
+
Start connected GoodVibes services from GoodVibes TUI or the owning host before launching Agent. Agent expects those services to expose public operator routes and the isolated Agent Knowledge routes:
|
|
19
19
|
|
|
20
20
|
```text
|
|
21
21
|
http://127.0.0.1:3421
|
|
@@ -24,7 +24,7 @@ http://127.0.0.1:3421
|
|
|
24
24
|
/api/goodvibes-agent/knowledge/search
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
If the
|
|
27
|
+
If the GoodVibes API is on a different host or port, use a one-off override:
|
|
28
28
|
|
|
29
29
|
```sh
|
|
30
30
|
goodvibes-agent --runtime-url http://127.0.0.1:3421 status
|
|
@@ -36,15 +36,15 @@ For a persistent shell/session override, set:
|
|
|
36
36
|
export GOODVIBES_AGENT_RUNTIME_URL=http://127.0.0.1:3421
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
`GOODVIBES_AGENT_BASE_URL` is accepted as a legacy alias. These values only select the
|
|
39
|
+
`GOODVIBES_AGENT_BASE_URL` is accepted as a legacy alias. These values only select the connected GoodVibes API root; they do not make Agent own services.
|
|
40
40
|
|
|
41
|
-
If
|
|
41
|
+
If connected GoodVibes services are unavailable, unauthenticated, or on an incompatible SDK version, Agent commands report actionable diagnostics without printing token values.
|
|
42
42
|
|
|
43
43
|
## Product Boundary
|
|
44
44
|
|
|
45
45
|
Agent owns the operator assistant TUI, local profiles, local memory/routines/skills/personas, isolated Agent Knowledge calls, companion chat, approvals/automation visibility, and explicit build delegation.
|
|
46
46
|
|
|
47
|
-
Agent does not
|
|
47
|
+
Agent does not own connected-service lifecycle. It does not provide commands to install, expose, start, stop, restart, or mutate connected GoodVibes services.
|
|
48
48
|
|
|
49
49
|
Agent Knowledge/Wiki is its own product segment. Agent uses `/api/goodvibes-agent/knowledge/*` only and must not fall back to default Knowledge/Wiki or other product-specific knowledge routes.
|
|
50
50
|
|
package/docs/getting-started.md
CHANGED
|
@@ -5,23 +5,34 @@ GoodVibes Agent is the installable public alpha of the personal operator assista
|
|
|
5
5
|
## Requirements
|
|
6
6
|
|
|
7
7
|
- Bun `1.3.10` or newer
|
|
8
|
-
-
|
|
9
|
-
- A
|
|
8
|
+
- Connected GoodVibes services compatible with `@pellux/goodvibes-sdk@0.33.35`
|
|
9
|
+
- A token/config path accepted by connected GoodVibes services
|
|
10
10
|
|
|
11
|
-
Agent does not launch
|
|
11
|
+
Agent does not launch connected GoodVibes services for you.
|
|
12
|
+
|
|
13
|
+
Use the interactive TUI first. CLI subcommands are secondary support paths for install checks, setup inspection, and scriptable local Agent libraries.
|
|
12
14
|
|
|
13
15
|
## Install From Package
|
|
14
16
|
|
|
15
17
|
```sh
|
|
16
18
|
bun add -g --trust @pellux/goodvibes-agent
|
|
17
19
|
goodvibes-agent --help
|
|
18
|
-
goodvibes-agent
|
|
20
|
+
goodvibes-agent
|
|
19
21
|
goodvibes-agent status
|
|
20
22
|
goodvibes-agent personas list
|
|
21
23
|
goodvibes-agent skills list
|
|
22
24
|
goodvibes-agent memory list
|
|
23
25
|
```
|
|
24
26
|
|
|
27
|
+
The exact bare Bun command is supported too:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
bun add -g @pellux/goodvibes-agent
|
|
31
|
+
goodvibes-agent
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
If Bun blocks lifecycle scripts during the bare install, the executable should still be present. Run `bun pm -g untrusted` and trust the listed GoodVibes/parser dependencies before relying on provider parsing, native parser helpers, or SDK postinstall setup.
|
|
35
|
+
|
|
25
36
|
If the installed command is not found, add Bun's global bin directory to `PATH`:
|
|
26
37
|
|
|
27
38
|
```sh
|
|
@@ -53,13 +64,15 @@ bun run dev
|
|
|
53
64
|
|
|
54
65
|
`bun run dev` starts the Agent TUI. The same entrypoint backs the installed `goodvibes-agent` command.
|
|
55
66
|
|
|
56
|
-
`goodvibes-agent`
|
|
67
|
+
`goodvibes-agent` starts the interactive Agent TUI. On a fresh Agent home, the TUI opens Agent setup first.
|
|
57
68
|
|
|
58
|
-
After setup has been shown once, the TUI opens directly into the Agent operator workspace. You can also reopen it with `/agent`, `/home`, or `/operator`. That fullscreen workspace is the current front door for setup/config,
|
|
69
|
+
After setup has been shown once, the TUI opens directly into the Agent operator workspace. You can also reopen it with `/agent`, `/home`, or `/operator`. That fullscreen workspace is the current front door for setup/config, provider/model selection, Agent Knowledge, local memory/skills/routines/personas, channel readiness, voice/media setup, read-only work/approval/automation views, and explicit GoodVibes TUI build delegation.
|
|
59
70
|
|
|
60
71
|
Use `/agent-profile guide` inside that workspace to walk through starter-profile authoring. It lists built-in and local starters, exports a JSON starter for editing, imports the edited starter back into this Agent home, and creates isolated profiles from the result.
|
|
61
72
|
|
|
62
|
-
Use
|
|
73
|
+
Use the Knowledge area in that workspace to ingest a source URL without leaving the TUI. The form requires typed confirmation and writes only to the isolated Agent Knowledge segment.
|
|
74
|
+
|
|
75
|
+
Use `/schedule receipts` to review redacted local routine promotion history and `/schedule reconcile` to compare those receipts with live connected schedules through public `schedules.list`.
|
|
63
76
|
|
|
64
77
|
The local behavior libraries are also available from the installed CLI:
|
|
65
78
|
|
|
@@ -89,7 +102,7 @@ goodvibes-agent --agent-profile household status
|
|
|
89
102
|
goodvibes-agent --agent-profile household
|
|
90
103
|
```
|
|
91
104
|
|
|
92
|
-
Named profiles isolate Agent-local config, sessions, memory, personas, skills, routines, and setup state under a profile-specific home. Starter templates seed local personas, skills, and routines for household, research, travel, operations, and personal productivity profiles; exported starter JSON can be edited and re-imported as a local starter. They do not start or isolate
|
|
105
|
+
Named profiles isolate Agent-local config, sessions, memory, personas, skills, routines, and setup state under a profile-specific home. Starter templates seed local personas, skills, and routines for household, research, travel, operations, and personal productivity profiles; exported starter JSON can be edited and re-imported as a local starter. They do not start or isolate connected GoodVibes services by themselves.
|
|
93
106
|
|
|
94
107
|
## Local Memory, Personas, Routines, And Skills
|
|
95
108
|
|
|
@@ -102,6 +115,7 @@ Memory, personas, routines, and reusable Agent skills are local to GoodVibes Age
|
|
|
102
115
|
/routines create --name "Evening Review" --description "Review open work before shutdown" --steps "Check work plan, approvals, and Agent Knowledge status before summarizing." --enabled true
|
|
103
116
|
/routines start evening-review
|
|
104
117
|
/schedule promote-routine evening-review --cron "0 17 * * 1-5" --timezone America/Chicago --yes
|
|
118
|
+
/channels
|
|
105
119
|
/agent-skills create --name "Morning Brief" --description "Daily briefing flow" --procedure "Check tasks, approvals, calendar, and unread state before summarizing." --enabled true
|
|
106
120
|
/agent-skills enabled
|
|
107
121
|
/skills local list
|
|
@@ -111,9 +125,11 @@ Memory, personas, routines, and reusable Agent skills are local to GoodVibes Age
|
|
|
111
125
|
|
|
112
126
|
The active persona plus enabled Agent routines, reviewed memory, and skills are injected into the main serial assistant conversation. Starting a routine records local usage and prints its steps; it does not spawn background agents or automation jobs. Promoting a routine to a schedule is an explicit `schedules.create` call, requires `--yes`, writes a local redacted promotion receipt, and preserves the rule that Agent Knowledge never falls back to default Knowledge/Wiki or non-Agent knowledge segments.
|
|
113
127
|
|
|
114
|
-
|
|
128
|
+
Use `/channels` inside the TUI for a read-only channel readiness matrix. It shows enabled channels, missing config key names, delivery posture, and risk labels without sending messages or rendering token values.
|
|
129
|
+
|
|
130
|
+
## Connected GoodVibes Services
|
|
115
131
|
|
|
116
|
-
Start
|
|
132
|
+
Start connected GoodVibes services from GoodVibes TUI or the owning host before using service-backed Agent features. Agent expects those services to expose the public operator/Agent routes, including:
|
|
117
133
|
|
|
118
134
|
- `/status`
|
|
119
135
|
- `/api/goodvibes-agent/knowledge/status`
|
|
@@ -121,11 +137,11 @@ Start the runtime from GoodVibes TUI or the owning host before using runtime-bac
|
|
|
121
137
|
- `/api/goodvibes-agent/knowledge/search`
|
|
122
138
|
- `/api/goodvibes-agent/knowledge/ingest/url`
|
|
123
139
|
|
|
124
|
-
If the
|
|
140
|
+
If the GoodVibes API is not on `http://127.0.0.1:3421`, use `goodvibes-agent --runtime-url http://host:port status` for a one-off check or set `GOODVIBES_AGENT_RUNTIME_URL=http://host:port` before launching the TUI.
|
|
125
141
|
|
|
126
142
|
Agent Knowledge/Wiki is an Agent-owned product segment. Agent commands must not fall back to default Knowledge/Wiki or other product-specific knowledge spaces.
|
|
127
143
|
|
|
128
|
-
|
|
144
|
+
Service-hosting commands are not part of GoodVibes Agent. Use `goodvibes-agent status`, `goodvibes-agent doctor`, and the Agent TUI status views for diagnostics.
|
|
129
145
|
|
|
130
146
|
## Current Product Notes
|
|
131
147
|
|
|
@@ -9,7 +9,7 @@ GoodVibes Agent's current installable public alpha version is recorded in `packa
|
|
|
9
9
|
- SDK dependency: exact pin to `@pellux/goodvibes-sdk@0.33.35`
|
|
10
10
|
- runtime: Bun
|
|
11
11
|
- source language: TypeScript
|
|
12
|
-
-
|
|
12
|
+
- connected services ownership: outside Agent
|
|
13
13
|
|
|
14
14
|
End users install and run GoodVibes Agent with Bun:
|
|
15
15
|
|
|
@@ -52,16 +52,16 @@ Also run the package install smoke from a packed artifact. It must prove:
|
|
|
52
52
|
- `goodvibes-agent --help` works
|
|
53
53
|
- `goodvibes-agent --version` reports the package version
|
|
54
54
|
- the installed TUI launches in a PTY and does not exit immediately
|
|
55
|
-
-
|
|
55
|
+
- connected-service commands fail clearly when GoodVibes services are unavailable or unauthenticated
|
|
56
56
|
- no token value is printed
|
|
57
57
|
|
|
58
58
|
## Do Not Ship
|
|
59
59
|
|
|
60
|
-
Do not publish if package-facing docs or install commands refer to another package name, another executable, or Agent-owned
|
|
60
|
+
Do not publish if package-facing docs or install commands refer to another package name, another executable, or Agent-owned connected-service lifecycle.
|
|
61
61
|
|
|
62
62
|
Do not publish if Agent Knowledge commands can fall back to default Knowledge/Wiki or another product-specific knowledge route. Agent Knowledge must use the isolated `/api/goodvibes-agent/knowledge/*` segment.
|
|
63
63
|
|
|
64
|
-
Do not ship
|
|
64
|
+
Do not ship GoodVibes service binaries from this package. If Agent later gets compiled artifacts, they must use Agent artifact names and remain separate from connected-service ownership.
|
|
65
65
|
|
|
66
66
|
## Product Rule
|
|
67
67
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.109",
|
|
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",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"CHANGELOG.md",
|
|
23
23
|
"docs/README.md",
|
|
24
24
|
"docs/getting-started.md",
|
|
25
|
-
"docs/
|
|
25
|
+
"docs/connected-services.md",
|
|
26
26
|
"docs/release-and-publishing.md"
|
|
27
27
|
],
|
|
28
28
|
"scripts": {
|
|
@@ -82,17 +82,7 @@
|
|
|
82
82
|
"bun": ">=1.3.10"
|
|
83
83
|
},
|
|
84
84
|
"dependencies": {
|
|
85
|
-
"@agentclientprotocol/sdk": "^0.16.1",
|
|
86
|
-
"@anthropic-ai/bedrock-sdk": "^0.28.1",
|
|
87
|
-
"@anthropic-ai/sdk": "^0.82.0",
|
|
88
|
-
"@anthropic-ai/vertex-sdk": "^0.16.0",
|
|
89
|
-
"@aws/bedrock-token-generator": "^1.1.0",
|
|
90
85
|
"@pellux/goodvibes-sdk": "0.33.35",
|
|
91
|
-
"fuse.js": "^7.1.0",
|
|
92
|
-
"graphql": "^16.13.2",
|
|
93
|
-
"jszip": "^3.10.1",
|
|
94
|
-
"node-edge-tts": "^1.2.10",
|
|
95
|
-
"openai": "^6.29.0",
|
|
96
86
|
"sql.js": "^1.14.1",
|
|
97
87
|
"sqlite-vec": "^0.1.9",
|
|
98
88
|
"zustand": "^5.0.12"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { MemoryRecord, MemoryRegistry } from '@pellux/goodvibes-sdk/platform/state';
|
|
2
|
+
|
|
3
|
+
const DEFAULT_LIMIT = 10;
|
|
4
|
+
export const MIN_PROMPT_MEMORY_CONFIDENCE = 50;
|
|
5
|
+
|
|
6
|
+
export function isPromptActiveMemory(record: MemoryRecord): boolean {
|
|
7
|
+
return record.reviewState === 'reviewed' && record.confidence >= MIN_PROMPT_MEMORY_CONFIDENCE;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function sortMemoryForPrompt(left: MemoryRecord, right: MemoryRecord): number {
|
|
11
|
+
if (right.confidence !== left.confidence) return right.confidence - left.confidence;
|
|
12
|
+
return right.updatedAt - left.updatedAt;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function formatMemoryLine(record: MemoryRecord): string {
|
|
16
|
+
const tags = record.tags.length > 0 ? ` tags=${record.tags.join(',')}` : '';
|
|
17
|
+
const provenance = record.provenance.length > 0
|
|
18
|
+
? ` source=${record.provenance.slice(0, 2).map((entry) => `${entry.kind}:${entry.ref}`).join(',')}`
|
|
19
|
+
: '';
|
|
20
|
+
return `- [${record.scope}/${record.cls} ${record.confidence}%${tags}${provenance}] ${record.summary}`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function buildReviewedMemoryPrompt(memoryRegistry: MemoryRegistry, limit = DEFAULT_LIMIT): string | null {
|
|
24
|
+
const records = memoryRegistry.getAll()
|
|
25
|
+
.filter(isPromptActiveMemory)
|
|
26
|
+
.sort(sortMemoryForPrompt)
|
|
27
|
+
.slice(0, Math.max(0, limit));
|
|
28
|
+
|
|
29
|
+
if (records.length === 0) return null;
|
|
30
|
+
return [
|
|
31
|
+
'## Reviewed GoodVibes Agent Memory',
|
|
32
|
+
'Use these local, reviewed, non-secret memory records to avoid asking repeat questions and to preserve durable user preferences, constraints, and operating facts.',
|
|
33
|
+
...records.map(formatMemoryLine),
|
|
34
|
+
].join('\n');
|
|
35
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
REMINDER_SCHEDULE_METHOD,
|
|
3
|
+
type ReminderScheduleFailure,
|
|
4
|
+
type ReminderSchedulePreview,
|
|
5
|
+
type ReminderScheduleSuccess,
|
|
6
|
+
} from './reminder-schedule.ts';
|
|
7
|
+
|
|
8
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
9
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function readString(record: Record<string, unknown>, key: string): string | null {
|
|
13
|
+
const value = record[key];
|
|
14
|
+
return typeof value === 'string' ? value : null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function scheduleValue(preview: ReminderSchedulePreview): string {
|
|
18
|
+
if (preview.payload.kind === 'cron') {
|
|
19
|
+
return `${preview.payload.cron}${preview.payload.timezone ? ` [${preview.payload.timezone}]` : ''}`;
|
|
20
|
+
}
|
|
21
|
+
if (preview.payload.kind === 'every') return String(preview.payload.every);
|
|
22
|
+
return String(preview.payload.at);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function formatReminderSchedulePreview(preview: ReminderSchedulePreview): string {
|
|
26
|
+
const delivery = preview.payload.delivery;
|
|
27
|
+
const deliveryTargetCount = delivery?.targets.length ?? 0;
|
|
28
|
+
return [
|
|
29
|
+
'GoodVibes schedule preview for Agent reminder',
|
|
30
|
+
` route: ${preview.method} ${preview.route}`,
|
|
31
|
+
` name: ${String(preview.payload.name ?? '(service default)')}`,
|
|
32
|
+
` reminder: ${preview.message}`,
|
|
33
|
+
` schedule: ${preview.payload.kind} ${scheduleValue(preview)}`,
|
|
34
|
+
` enabled: ${preview.payload.enabled === false ? 'no' : 'yes'}`,
|
|
35
|
+
` delivery: ${delivery?.mode ?? 'none'}${deliveryTargetCount > 0 ? ` (${deliveryTargetCount} target${deliveryTargetCount === 1 ? '' : 's'})` : ''}`,
|
|
36
|
+
' target: connected GoodVibes services/main conversation route',
|
|
37
|
+
' policy: reminder delivery only; isolated Agent Knowledge only; no default wiki/non-Agent fallback',
|
|
38
|
+
' next: rerun with --yes to create this connected reminder schedule',
|
|
39
|
+
].join('\n');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function formatReminderScheduleSuccess(result: ReminderScheduleSuccess): string {
|
|
43
|
+
const record: Record<string, unknown> = isRecord(result.schedule) ? result.schedule : {};
|
|
44
|
+
const id = readString(record, 'id') ?? '(unknown)';
|
|
45
|
+
const status = readString(record, 'status') ?? (record.enabled === false ? 'paused' : 'enabled');
|
|
46
|
+
return [
|
|
47
|
+
'Created GoodVibes schedule for Agent reminder',
|
|
48
|
+
` schedule: ${id}`,
|
|
49
|
+
` status: ${status}`,
|
|
50
|
+
` route: ${result.kind} ${result.route}`,
|
|
51
|
+
` reminder: ${result.message}`,
|
|
52
|
+
' next: inspect with /schedule list',
|
|
53
|
+
].join('\n');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function formatReminderScheduleFailure(failure: ReminderScheduleFailure): string {
|
|
57
|
+
return [
|
|
58
|
+
`GoodVibes reminder schedule error: ${failure.kind}`,
|
|
59
|
+
` ${failure.error}`,
|
|
60
|
+
failure.baseUrl ? ` service: ${failure.baseUrl}` : null,
|
|
61
|
+
` route: ${REMINDER_SCHEDULE_METHOD} ${failure.route}`,
|
|
62
|
+
failure.kind === 'version_mismatch' && failure.daemonVersion && failure.expectedSdkVersion
|
|
63
|
+
? ` versions: service=${failure.daemonVersion} expected=${failure.expectedSdkVersion}`
|
|
64
|
+
: null,
|
|
65
|
+
failure.kind === 'auth_required'
|
|
66
|
+
? ' next: pair/authenticate with connected GoodVibes services, then retry with --yes.'
|
|
67
|
+
: null,
|
|
68
|
+
failure.kind === 'daemon_unavailable'
|
|
69
|
+
? ' next: make connected GoodVibes services available outside Agent, then retry.'
|
|
70
|
+
: null,
|
|
71
|
+
failure.kind === 'version_mismatch' || failure.kind === 'daemon_route_unavailable'
|
|
72
|
+
? ' next: update connected GoodVibes services so public schedules.create is available.'
|
|
73
|
+
: null,
|
|
74
|
+
].filter((line): line is string => Boolean(line)).join('\n');
|
|
75
|
+
}
|