@pellux/goodvibes-agent 0.1.102 → 0.1.104

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.
Files changed (47) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +10 -0
  3. package/docs/README.md +1 -1
  4. package/docs/getting-started.md +17 -3
  5. package/package.json +1 -1
  6. package/src/agent/memory-safety.ts +16 -0
  7. package/src/cli/help.ts +86 -0
  8. package/src/cli/local-library-command.ts +516 -0
  9. package/src/cli/management.ts +17 -0
  10. package/src/cli/memory-command.ts +630 -0
  11. package/src/cli/package-verification.ts +10 -0
  12. package/src/cli/parser.ts +8 -0
  13. package/src/cli/types.ts +3 -0
  14. package/src/input/agent-workspace-activation.ts +170 -0
  15. package/src/input/agent-workspace-categories.ts +8 -1
  16. package/src/input/agent-workspace-editors.ts +36 -0
  17. package/src/input/agent-workspace-memory-editor.ts +88 -0
  18. package/src/input/agent-workspace-setup.ts +7 -5
  19. package/src/input/agent-workspace-snapshot.ts +40 -4
  20. package/src/input/agent-workspace-token.ts +51 -0
  21. package/src/input/agent-workspace-types.ts +13 -3
  22. package/src/input/agent-workspace.ts +130 -185
  23. package/src/input/feed-context-factory.ts +1 -3
  24. package/src/input/handler-feed.ts +1 -4
  25. package/src/input/handler-interactions.ts +0 -1
  26. package/src/input/handler-modal-stack.ts +0 -1
  27. package/src/input/handler-modal-token-routes.ts +0 -11
  28. package/src/input/handler-picker-routes.ts +11 -20
  29. package/src/input/handler-ui-state.ts +0 -6
  30. package/src/input/handler.ts +1 -17
  31. package/src/main.ts +0 -6
  32. package/src/panels/builtin/agent.ts +0 -17
  33. package/src/panels/index.ts +0 -2
  34. package/src/renderer/agent-workspace.ts +8 -3
  35. package/src/renderer/conversation-overlays.ts +0 -6
  36. package/src/renderer/live-tail-modal.ts +10 -69
  37. package/src/renderer/process-modal.ts +28 -530
  38. package/src/runtime/bootstrap-core.ts +1 -1
  39. package/src/runtime/services.ts +3 -4
  40. package/src/tools/{wrfc-agent-guard.ts → agent-tool-policy-guard.ts} +0 -6
  41. package/src/version.ts +1 -1
  42. package/src/panels/agent-inspector-panel.ts +0 -521
  43. package/src/panels/agent-inspector-shared.ts +0 -94
  44. package/src/panels/agent-logs-panel.ts +0 -559
  45. package/src/panels/agent-logs-shared.ts +0 -129
  46. package/src/renderer/agent-detail-modal.ts +0 -331
  47. package/src/renderer/process-summary.ts +0 -67
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to GoodVibes Agent will be recorded here.
4
4
 
5
+ ## 0.1.104 - 2026-06-01
6
+
7
+ - 37fe253 Add Agent memory workspace controls
8
+
9
+ ## 0.1.103 - 2026-06-01
10
+
11
+ - ed9895a Add CLI controls for Agent memory
12
+ - da48bc2 Add CLI controls for local agent libraries
13
+ - ef18975 Use runtime naming in agent workspace
14
+ - c172f38 Rename Agent tool policy guard
15
+ - 7708f3e Prune local agent activity modals
16
+ - 24eae8e Remove local agent activity panel
17
+ - 90dcd58 Remove legacy release test runner
18
+
5
19
  ## 0.1.102 - 2026-06-01
6
20
 
7
21
  - 34aaea8 Prune hidden copied panel surfaces
package/README.md CHANGED
@@ -16,6 +16,9 @@ bun add -g @pellux/goodvibes-agent
16
16
  goodvibes-agent --help
17
17
  goodvibes-agent status
18
18
  goodvibes-agent profiles templates
19
+ goodvibes-agent personas list
20
+ goodvibes-agent skills list
21
+ goodvibes-agent memory list
19
22
  goodvibes-agent knowledge status
20
23
  goodvibes-agent knowledge list --kind sources
21
24
  goodvibes-agent knowledge import-urls ./agent-sources.txt --yes
@@ -61,6 +64,9 @@ Use isolated Agent profiles when one machine needs separate operator identities
61
64
  ```sh
62
65
  goodvibes-agent profiles templates
63
66
  goodvibes-agent profiles create household --template household --yes
67
+ goodvibes-agent personas create --name "Travel Planner" --description "Plan trips" --body "Compare options before booking" --use
68
+ goodvibes-agent skills create --name "Daily Brief" --description "Summarize operator state" --procedure "Review Agent Knowledge, work plans, approvals, and routines" --enabled
69
+ goodvibes-agent memory add fact "Prefers concise morning briefings" --scope project --tags preference
64
70
  goodvibes-agent profiles templates export research ./research-starter.json --yes
65
71
  goodvibes-agent profiles templates import ./research-starter.json --yes
66
72
  goodvibes-agent --agent-profile household status
@@ -69,6 +75,8 @@ GOODVIBES_AGENT_HOME=/path/to/agent-home goodvibes-agent status
69
75
 
70
76
  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. The GoodVibes runtime is still external and shared unless the owning host is separately configured otherwise.
71
77
 
78
+ 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.
79
+
72
80
  Local Agent behavior is editable from the TUI:
73
81
 
74
82
  ```text
@@ -81,6 +89,8 @@ Local Agent behavior is editable from the TUI:
81
89
  /schedule reconcile
82
90
  /agent-skills create --name "Morning Brief" --description "Daily briefing flow" --procedure "Check tasks, approvals, calendar, and unread state before summarizing." --enabled true
83
91
  /skills local list
92
+ /recall add fact Prefers concise morning briefings --scope project --tags preference
93
+ /recall search morning
84
94
  ```
85
95
 
86
96
  Starting a routine records local usage and prints its steps; it does not spawn background agents or automation jobs. Promotion to an external 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 external schedules through public `schedules.list`.
package/docs/README.md CHANGED
@@ -19,7 +19,7 @@ Important baseline constraints:
19
19
  - Agent supports isolated runtime homes with `GOODVIBES_AGENT_HOME=<path>` and named profile homes with `goodvibes-agent profiles create <name> --template <starter> --yes` plus `--agent-profile <name>`.
20
20
  - Agent supports external runtime URL overrides with `--runtime-url http://host:port` or `GOODVIBES_AGENT_RUNTIME_URL=http://host:port`; these do not make Agent own runtime hosting.
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
- - Local personas, routines, and Agent skills are stored under the Agent home and are injected only into the serial Agent conversation.
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.
24
24
  - Build/fix/review delegation to GoodVibes TUI must be explicit; WRFC is not the default Agent behavior.
25
25
 
@@ -16,6 +16,9 @@ Agent does not launch the runtime for you.
16
16
  bun add -g @pellux/goodvibes-agent
17
17
  goodvibes-agent --help
18
18
  goodvibes-agent status
19
+ goodvibes-agent personas list
20
+ goodvibes-agent skills list
21
+ goodvibes-agent memory list
19
22
  ```
20
23
 
21
24
  If the installed command is not found, add Bun's global bin directory to `PATH`:
@@ -48,6 +51,15 @@ Use `/agent-profile guide` inside that workspace to walk through starter-profile
48
51
 
49
52
  Use `/schedule receipts` to review redacted local routine promotion history and `/schedule reconcile` to compare those receipts with live external schedules through public `schedules.list`.
50
53
 
54
+ The local behavior libraries are also available from the installed CLI:
55
+
56
+ ```sh
57
+ goodvibes-agent personas create --name "Research Analyst" --description "Source-backed research" --body "Check sources and call out uncertainty" --use
58
+ goodvibes-agent skills create --name "Morning Brief" --description "Daily briefing flow" --procedure "Check tasks, approvals, routines, and Agent Knowledge before summarizing" --enabled
59
+ goodvibes-agent memory add fact "Prefers concise morning briefings" --scope project --tags preference
60
+ goodvibes-agent routines list
61
+ ```
62
+
51
63
  ## Isolated Agent Profiles
52
64
 
53
65
  Use a separate Agent home when you want isolated local state:
@@ -69,9 +81,9 @@ goodvibes-agent --agent-profile household
69
81
 
70
82
  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 the external GoodVibes runtime by themselves.
71
83
 
72
- ## Local Personas, Routines, And Skills
84
+ ## Local Memory, Personas, Routines, And Skills
73
85
 
74
- Personas, routines, and reusable Agent skills are local to GoodVibes Agent. They do not write into default Knowledge/Wiki or non-Agent knowledge segments.
86
+ Memory, personas, routines, and reusable Agent skills are local to GoodVibes Agent. They do not write into default Knowledge/Wiki or non-Agent knowledge segments.
75
87
 
76
88
  ```text
77
89
  /personas list
@@ -83,9 +95,11 @@ Personas, routines, and reusable Agent skills are local to GoodVibes Agent. They
83
95
  /agent-skills create --name "Morning Brief" --description "Daily briefing flow" --procedure "Check tasks, approvals, calendar, and unread state before summarizing." --enabled true
84
96
  /agent-skills enabled
85
97
  /skills local list
98
+ /recall add fact Prefers concise morning briefings --scope project --tags preference
99
+ /recall search morning
86
100
  ```
87
101
 
88
- The active persona plus enabled Agent routines 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.
102
+ 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.
89
103
 
90
104
  ## External Runtime
91
105
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-agent",
3
- "version": "0.1.102",
3
+ "version": "0.1.104",
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",
@@ -0,0 +1,16 @@
1
+ const SECRET_PATTERNS: readonly RegExp[] = [
2
+ /-----BEGIN [A-Z ]*PRIVATE KEY-----/i,
3
+ /\bsk-[A-Za-z0-9_-]{16,}\b/,
4
+ /\bgh[pousr]_[A-Za-z0-9_]{16,}\b/i,
5
+ /\b(?:password|passwd|api[_-]?key|token|secret)\s*[:=]\s*\S{6,}/i,
6
+ ];
7
+
8
+ export function containsSecretLikeText(text: string): boolean {
9
+ return SECRET_PATTERNS.some((pattern) => pattern.test(text));
10
+ }
11
+
12
+ export function assertNoSecretLikeMemoryText(fields: readonly string[]): void {
13
+ if (fields.some((field) => containsSecretLikeText(field))) {
14
+ throw new Error('Agent memory cannot store secret-looking values. Store a secret reference or remove the sensitive text.');
15
+ }
16
+ }
package/src/cli/help.ts CHANGED
@@ -37,6 +37,9 @@ export function renderGoodVibesHelp(binary = 'goodvibes-agent'): string {
37
37
  ' models [provider] List/use/pin selectable models and recent model history',
38
38
  ' providers List/inspect/use provider config/auth posture',
39
39
  ' profiles Manage isolated Agent profile homes',
40
+ ' personas Manage local Agent personas',
41
+ ' skills Manage local Agent skills and skill bundles',
42
+ ' memory Manage Agent-owned durable memory records',
40
43
  ' routines Inspect local routines and explicitly promote one to an external schedule',
41
44
  ' auth Inspect Agent auth posture and external runtime token state',
42
45
  ' compat Inspect Agent SDK pin, runtime version, and Agent knowledge route readiness',
@@ -89,6 +92,10 @@ export function renderGoodVibesHelp(binary = 'goodvibes-agent'): string {
89
92
  ` ${binary} providers inspect openai`,
90
93
  ` ${binary} profiles create household --template household --yes`,
91
94
  ` ${binary} --agent-profile household`,
95
+ ` ${binary} personas create --name "Travel Planner" --description "Plan trips" --body "Compare options before booking"`,
96
+ ` ${binary} skills create --name "Daily Brief" --description "Summarize operator state" --procedure "Review Agent Knowledge, work plans, approvals, and routines" --enabled`,
97
+ ` ${binary} memory add fact "Prefers concise morning briefings" --scope project --tags preference`,
98
+ ` ${binary} memory search "morning briefings"`,
92
99
  ` ${binary} routines promote daily-operations-sweep --cron "0 9 * * *" --timezone America/Chicago --yes`,
93
100
  ` ${binary} compat`,
94
101
  ` ${binary} knowledge status`,
@@ -146,6 +153,80 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
146
153
  summary: 'Create and inspect isolated Agent profile homes, with starter templates for household, research, travel, operations, personal productivity, and local imported starters. A profile changes Agent-local config, sessions, memory, personas, skills, routines, and setup paths without changing the shared GoodVibes runtime.',
147
154
  examples: ['profiles templates', 'profiles templates export research ./research-starter.json --yes', 'profiles templates import ./research-starter.json --yes', 'profiles create household --template household --yes', '--agent-profile household status'],
148
155
  },
156
+ personas: {
157
+ usage: [
158
+ 'personas list',
159
+ 'personas active',
160
+ 'personas search <query>',
161
+ 'personas show <id>',
162
+ 'personas create --name <name> --description <summary> --body <instructions> [--tags a,b] [--triggers a,b] [--use]',
163
+ 'personas update <id> [--name <name>] [--description <summary>] [--body <instructions>] [--tags a,b] [--triggers a,b]',
164
+ 'personas use <id>',
165
+ 'personas clear',
166
+ 'personas review <id>',
167
+ 'personas stale <id> <reason>',
168
+ 'personas delete <id> --yes',
169
+ ],
170
+ summary: 'Manage Agent-local personas for the serial main conversation. Personas do not spawn worker agents.',
171
+ examples: [
172
+ 'personas list',
173
+ 'personas create --name "Travel Planner" --description "Plan trips" --body "Compare options before booking" --use',
174
+ 'personas review travel-planner',
175
+ 'personas delete travel-planner --yes',
176
+ ],
177
+ },
178
+ skills: {
179
+ usage: [
180
+ 'skills list',
181
+ 'skills enabled',
182
+ 'skills active',
183
+ 'skills search <query>',
184
+ 'skills show <id>',
185
+ 'skills create --name <name> --description <summary> --procedure <steps> [--tags a,b] [--triggers a,b] [--enabled]',
186
+ 'skills update <id> [--name <name>] [--description <summary>] [--procedure <steps>] [--tags a,b] [--triggers a,b]',
187
+ 'skills enable <id>',
188
+ 'skills disable <id>',
189
+ 'skills review <id>',
190
+ 'skills stale <id> <reason>',
191
+ 'skills delete <id> --yes',
192
+ 'skills bundle [list|enabled|show|create|update|enable|disable|review|stale|delete]',
193
+ ],
194
+ summary: 'Manage reusable Agent-local procedures and skill bundles for the main conversation.',
195
+ examples: [
196
+ 'skills list',
197
+ 'skills create --name "Daily Brief" --description "Summarize operator state" --procedure "Review Agent Knowledge, work plans, approvals, and routines" --enabled',
198
+ 'skills bundle create --name "Ops Pack" --description "Daily operations bundle" --skills daily-brief --enabled',
199
+ 'skills delete daily-brief --yes',
200
+ ],
201
+ },
202
+ memory: {
203
+ usage: [
204
+ 'memory list [class] [--scope session|project|team] [--limit <n>]',
205
+ 'memory search <query> [--semantic] [--cls <class>] [--scope <scope>] [--limit <n>]',
206
+ 'memory add <class> <summary> [--scope <scope>] [--detail <text>] [--tags a,b] [--confidence <0-100>]',
207
+ 'memory show <id>',
208
+ 'memory queue [limit]',
209
+ 'memory review <id> <fresh|reviewed|stale|contradicted> [--confidence <0-100>] [--by <name>] [--reason <text>]',
210
+ 'memory stale <id> <reason>',
211
+ 'memory contradict <id> <reason>',
212
+ 'memory promote <id> <session|project|team> --yes',
213
+ 'memory link <fromId> <toId> <relation> --yes',
214
+ 'memory delete <id> --yes',
215
+ 'memory export <path> [--scope <scope>] [--cls <class>] --yes',
216
+ 'memory import <path> --yes',
217
+ 'memory handoff-inspect <path>',
218
+ 'memory vector [status|doctor|rebuild]',
219
+ ],
220
+ summary: 'Manage Agent-owned durable memory. This uses the Agent memory store only; it never falls back to default Knowledge/Wiki or non-Agent knowledge segments.',
221
+ examples: [
222
+ 'memory list',
223
+ 'memory add fact "Prefers concise morning briefings" --scope project --tags preference',
224
+ 'memory search "morning briefings"',
225
+ 'memory review mem-1 reviewed --confidence 92',
226
+ 'memory export ./agent-memory.json --scope project --yes',
227
+ 'memory delete mem-1 --yes',
228
+ ],
229
+ },
149
230
  routines: {
150
231
  usage: [
151
232
  'routines list',
@@ -267,6 +348,11 @@ const HELP_ALIASES: Record<string, string> = {
267
348
  provider: 'providers',
268
349
  model: 'models',
269
350
  profile: 'profiles',
351
+ persona: 'personas',
352
+ skill: 'skills',
353
+ 'agent-skills': 'skills',
354
+ memories: 'memory',
355
+ recall: 'memory',
270
356
  subscriptions: 'subscription',
271
357
  secret: 'secrets',
272
358
  session: 'sessions',