@pellux/goodvibes-agent 1.0.36 → 1.0.37

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
  Product-facing release notes for GoodVibes Agent.
4
4
 
5
+ ## 1.0.37 - 2026-06-04
6
+
7
+ - Onboarding setup now renders full-bleed across the terminal with no inset edge.
8
+ - The Agent workspace rail now uses shared, meaningful section groups instead of one header per workspace.
9
+
5
10
  ## 1.0.36 - 2026-06-04
6
11
 
7
12
  - Workspace navigation now uses distinct category group names instead of repeated setup headings.
@@ -817145,7 +817145,7 @@ var createStyledCell = (char, overrides = {}) => ({
817145
817145
  // src/version.ts
817146
817146
  import { readFileSync } from "fs";
817147
817147
  import { join } from "path";
817148
- var _version = "1.0.36";
817148
+ var _version = "1.0.37";
817149
817149
  try {
817150
817150
  const pkg = JSON.parse(readFileSync(join(import.meta.dir, "..", "package.json"), "utf-8"));
817151
817151
  _version = typeof pkg.version === "string" ? pkg.version : _version;
@@ -848695,13 +848695,13 @@ init_state3();
848695
848695
 
848696
848696
  // src/input/commands/recall-shared.ts
848697
848697
  var VALID_CLASSES = ["decision", "constraint", "incident", "pattern", "fact", "risk", "runbook", "architecture", "ownership"];
848698
- var VALID_SCOPES2 = ["session", "project", "team"];
848698
+ var VALID_SCOPES = ["session", "project", "team"];
848699
848699
  var VALID_REVIEW_STATES = ["fresh", "reviewed", "stale", "contradicted"];
848700
848700
  function isValidClass(s4) {
848701
848701
  return VALID_CLASSES.includes(s4);
848702
848702
  }
848703
848703
  function isValidScope(s4) {
848704
- return VALID_SCOPES2.includes(s4);
848704
+ return VALID_SCOPES.includes(s4);
848705
848705
  }
848706
848706
  function isValidReviewState(s4) {
848707
848707
  return VALID_REVIEW_STATES.includes(s4);
@@ -848744,7 +848744,7 @@ function handleRecallSearch(args2, context) {
848744
848744
  if (isValidScope(scope))
848745
848745
  filter.scope = scope;
848746
848746
  else {
848747
- context.print(`[memory] Unknown scope "${scope}". Valid values ${VALID_SCOPES2.join(", ")}.`);
848747
+ context.print(`[memory] Unknown scope "${scope}". Valid values ${VALID_SCOPES.join(", ")}.`);
848748
848748
  return;
848749
848749
  }
848750
848750
  }
@@ -848919,7 +848919,7 @@ function handleRecallList(args2, context) {
848919
848919
  if (scopeIdx !== -1 && args2[scopeIdx + 1]) {
848920
848920
  const scope = args2[scopeIdx + 1];
848921
848921
  if (!isValidScope(scope)) {
848922
- context.print(`[memory] Unknown scope "${scope}". Valid values ${VALID_SCOPES2.join(", ")}.`);
848922
+ context.print(`[memory] Unknown scope "${scope}". Valid values ${VALID_SCOPES.join(", ")}.`);
848923
848923
  return;
848924
848924
  }
848925
848925
  filter.scope = scope;
@@ -848969,7 +848969,7 @@ async function handleRecallAdd(args2, context) {
848969
848969
  const tags = tagsRaw ? tagsRaw.split(",").map((token) => token.trim()).filter(Boolean) : [];
848970
848970
  const scope = scopeRaw && isValidScope(scopeRaw) ? scopeRaw : "project";
848971
848971
  if (scopeRaw && !isValidScope(scopeRaw)) {
848972
- context.print(`[memory] Invalid scope "${scopeRaw}". Valid values ${VALID_SCOPES2.join(", ")}.`);
848972
+ context.print(`[memory] Invalid scope "${scopeRaw}". Valid values ${VALID_SCOPES.join(", ")}.`);
848973
848973
  return;
848974
848974
  }
848975
848975
  const provenance = [];
@@ -849103,7 +849103,7 @@ function handleRecallExport(args2, context) {
849103
849103
  if (scopeIdx !== -1 && commandArgs[scopeIdx + 1]) {
849104
849104
  const scope = commandArgs[scopeIdx + 1];
849105
849105
  if (!isValidScope(scope)) {
849106
- context.print(`[memory] Unknown scope "${scope}". Valid values ${VALID_SCOPES2.join(", ")}.`);
849106
+ context.print(`[memory] Unknown scope "${scope}". Valid values ${VALID_SCOPES.join(", ")}.`);
849107
849107
  return;
849108
849108
  }
849109
849109
  filter.scope = scope;
@@ -849182,7 +849182,7 @@ function handleRecallHandoffExport(args2, context) {
849182
849182
  const scopeIdx = commandArgs.indexOf("--scope");
849183
849183
  const scopeRaw = scopeIdx !== -1 ? commandArgs[scopeIdx + 1] : "team";
849184
849184
  if (!scopeRaw || !isValidScope(scopeRaw)) {
849185
- context.print(`[memory] Unknown scope "${scopeRaw ?? ""}". Valid values ${VALID_SCOPES2.join(", ")}.`);
849185
+ context.print(`[memory] Unknown scope "${scopeRaw ?? ""}". Valid values ${VALID_SCOPES.join(", ")}.`);
849186
849186
  return;
849187
849187
  }
849188
849188
  const bundle = memory.exportBundle({ scope: scopeRaw });
@@ -849298,7 +849298,7 @@ function handleRecallPromote(args2, context) {
849298
849298
  const id = parsed.rest[0];
849299
849299
  const scope = parsed.rest[1];
849300
849300
  if (!id || !scope || !isValidScope(scope)) {
849301
- context.print(`[memory] Usage: /memory promote <id> <${VALID_SCOPES2.join("|")}> --yes`);
849301
+ context.print(`[memory] Usage: /memory promote <id> <${VALID_SCOPES.join("|")}> --yes`);
849302
849302
  return;
849303
849303
  }
849304
849304
  if (!parsed.yes) {
@@ -863223,7 +863223,7 @@ import { mkdirSync as mkdirSync64, readFileSync as readFileSync85, writeFileSync
863223
863223
  import { dirname as dirname63, resolve as resolve39 } from "path";
863224
863224
  init_state3();
863225
863225
  var VALID_CLASSES2 = ["decision", "constraint", "incident", "pattern", "fact", "risk", "runbook", "architecture", "ownership"];
863226
- var VALID_SCOPES4 = ["session", "project", "team"];
863226
+ var VALID_SCOPES3 = ["session", "project", "team"];
863227
863227
  var VALID_REVIEW_STATES3 = ["fresh", "reviewed", "stale", "contradicted"];
863228
863228
  var VALID_PROVENANCE_KINDS = ["session", "turn", "task", "event", "file"];
863229
863229
  var VALUE_OPTIONS = new Set([
@@ -863323,7 +863323,7 @@ function isMemoryClass2(value) {
863323
863323
  return VALID_CLASSES2.includes(value);
863324
863324
  }
863325
863325
  function isMemoryScope2(value) {
863326
- return VALID_SCOPES4.includes(value);
863326
+ return VALID_SCOPES3.includes(value);
863327
863327
  }
863328
863328
  function isReviewState(value) {
863329
863329
  return VALID_REVIEW_STATES3.includes(value);
@@ -863338,7 +863338,7 @@ function requireClass(value) {
863338
863338
  }
863339
863339
  function requireScope(value) {
863340
863340
  if (!value || !isMemoryScope2(value))
863341
- throw new Error(`Invalid memory scope "${value ?? ""}". Valid values ${VALID_SCOPES4.join(", ")}`);
863341
+ throw new Error(`Invalid memory scope "${value ?? ""}". Valid values ${VALID_SCOPES3.join(", ")}`);
863342
863342
  return value;
863343
863343
  }
863344
863344
  function optionalScope(value) {
@@ -887350,7 +887350,7 @@ function handleGuidanceOrWorkspaceAction(workspace, action2) {
887350
887350
  var AGENT_WORKSPACE_CATEGORIES = [
887351
887351
  {
887352
887352
  id: "home",
887353
- group: "HOME",
887353
+ group: "START",
887354
887354
  label: "Home",
887355
887355
  summary: "Main operator workspace for normal assistant work.",
887356
887356
  detail: "Use this as the primary Agent workspace: chat in the main conversation, inspect state, choose model/provider, and open setup without switching modes.",
@@ -887382,7 +887382,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887382
887382
  },
887383
887383
  {
887384
887384
  id: "setup",
887385
- group: "CONFIGURE",
887385
+ group: "START",
887386
887386
  label: "Setup",
887387
887387
  summary: "Configuration, auth, provider, and onboarding workspaces.",
887388
887388
  detail: "Use this to configure the assistant: provider/model, setup checklist, Agent Knowledge, local behavior, channels, and voice/media. Changes here stay Agent-owned.",
@@ -887441,7 +887441,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887441
887441
  },
887442
887442
  {
887443
887443
  id: "research",
887444
- group: "RESEARCH",
887444
+ group: "DAY-TO-DAY",
887445
887445
  label: "Research",
887446
887446
  summary: "Read-only web research and source triage in the main conversation.",
887447
887447
  detail: "Use this workspace to ask Agent to search, inspect URLs, compare sources, and decide what belongs in isolated Agent Knowledge. Research requests run in the normal conversation; source ingestion is explicit.",
@@ -887460,7 +887460,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887460
887460
  },
887461
887461
  {
887462
887462
  id: "artifacts",
887463
- group: "ARTIFACTS",
887463
+ group: "DAY-TO-DAY",
887464
887464
  label: "Artifacts",
887465
887465
  summary: "Files, attachments, exports, source ingest, and generated media.",
887466
887466
  detail: "Use this workspace to handle concrete user-visible artifacts: attach images, export conversations, ingest source files into Agent Knowledge, inspect source libraries, and generate media with explicit confirmation.",
@@ -887483,7 +887483,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887483
887483
  },
887484
887484
  {
887485
887485
  id: "conversation",
887486
- group: "CONVERSATION",
887486
+ group: "DAY-TO-DAY",
887487
887487
  label: "Conversation",
887488
887488
  summary: "Transcript, prompt, context, and session controls.",
887489
887489
  detail: "Use this workspace for the main TUI conversation: context review, compaction, prompt helpers, transcript navigation, session continuity, title, export, undo, redo, and retry.",
@@ -887528,7 +887528,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887528
887528
  },
887529
887529
  {
887530
887530
  id: "channels",
887531
- group: "CHANNELS",
887531
+ group: "CAPABILITIES",
887532
887532
  label: "Channels",
887533
887533
  summary: "Companion pairing, channel posture, and delivery safety.",
887534
887534
  detail: "Agent uses connected channel accounts. Pairing, account inspection, and readiness checks are visible here; inbound delivery and public channel exposure stay policy-gated.",
@@ -887556,7 +887556,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887556
887556
  },
887557
887557
  {
887558
887558
  id: "tools",
887559
- group: "TOOLS",
887559
+ group: "CAPABILITIES",
887560
887560
  label: "Tools & MCP",
887561
887561
  summary: "MCP server setup, trust review, and tool inventory.",
887562
887562
  detail: "Configure and inspect task tools from the Agent TUI. Adding or changing tools requires typed confirmation; normal chat still chooses tools serially in the main conversation.",
@@ -887587,7 +887587,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887587
887587
  },
887588
887588
  {
887589
887589
  id: "knowledge",
887590
- group: "KNOWLEDGE",
887590
+ group: "CAPABILITIES",
887591
887591
  label: "Knowledge",
887592
887592
  summary: "Agent Knowledge and source-backed lookup.",
887593
887593
  detail: "Agent knowledge calls use the isolated Agent Knowledge route family only. Default knowledge and non-Agent knowledge segments are not the Agent knowledge environment.",
@@ -887623,7 +887623,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887623
887623
  },
887624
887624
  {
887625
887625
  id: "voice-media",
887626
- group: "VOICE & MEDIA",
887626
+ group: "CAPABILITIES",
887627
887627
  label: "Voice & Media",
887628
887628
  summary: "Voice, TTS, image input, browser tools, and media providers.",
887629
887629
  detail: "Voice, media, browser tools, and image-capable flows are first-class Agent tools. Connected-host administration stays outside Agent and side effects stay explicit.",
@@ -887649,7 +887649,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887649
887649
  },
887650
887650
  {
887651
887651
  id: "profiles",
887652
- group: "PROFILES",
887652
+ group: "LOCAL BEHAVIOR",
887653
887653
  label: "Profiles",
887654
887654
  summary: "Isolated Agent homes, starter templates, and setup bundles.",
887655
887655
  detail: "Agent profiles isolate Agent state. Named homes and starter templates let one install behave like separate assistants for household, research, travel, operations, or personal workflows.",
@@ -887672,7 +887672,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887672
887672
  },
887673
887673
  {
887674
887674
  id: "memory",
887675
- group: "MEMORY",
887675
+ group: "LOCAL BEHAVIOR",
887676
887676
  label: "Memory & Skills",
887677
887677
  summary: "Local assistant memory, notes, routines, skills, and reusable behavior.",
887678
887678
  detail: "Memory, notes, routines, skills, and personas stay Agent-local until stable shared registry contracts exist. Secrets must not be stored as memory or notes.",
@@ -887709,7 +887709,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887709
887709
  },
887710
887710
  {
887711
887711
  id: "notes",
887712
- group: "NOTES",
887712
+ group: "LOCAL BEHAVIOR",
887713
887713
  label: "Notes",
887714
887714
  summary: "Agent-local scratchpad for source triage and temporary context.",
887715
887715
  detail: "Notes are local working context. They are useful for research notes, decisions in progress, and handoff notes, but they are not memory and are not Agent Knowledge.",
@@ -887732,7 +887732,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887732
887732
  },
887733
887733
  {
887734
887734
  id: "personas",
887735
- group: "PERSONAS",
887735
+ group: "LOCAL BEHAVIOR",
887736
887736
  label: "Personas",
887737
887737
  summary: "Local behavior profiles for the main assistant.",
887738
887738
  detail: "Personas shape the serial Agent in the main conversation. They are local behavior profiles, not separate Agent identities.",
@@ -887755,7 +887755,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887755
887755
  },
887756
887756
  {
887757
887757
  id: "skills",
887758
- group: "SKILLS",
887758
+ group: "LOCAL BEHAVIOR",
887759
887759
  label: "Skills",
887760
887760
  summary: "Reusable local procedures with setup readiness.",
887761
887761
  detail: "Skills are local, reviewable procedures with optional env/command requirements. Enabled skills inform the main conversation; secret-looking content is rejected.",
@@ -887790,7 +887790,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887790
887790
  },
887791
887791
  {
887792
887792
  id: "routines",
887793
- group: "ROUTINES",
887793
+ group: "LOCAL BEHAVIOR",
887794
887794
  label: "Routines",
887795
887795
  summary: "Repeatable workflows with setup readiness.",
887796
887796
  detail: "Routines run in the main conversation by default and can declare env/command requirements. Promotion to a connected schedule requires a real schedule command and --yes.",
@@ -887820,7 +887820,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887820
887820
  },
887821
887821
  {
887822
887822
  id: "work",
887823
- group: "WORK",
887823
+ group: "OPERATIONS",
887824
887824
  label: "Work & Approvals",
887825
887825
  summary: "Visible task state, work plan, and approval posture.",
887826
887826
  detail: "Use this workspace to inspect active operator state and update visible work-plan items from confirmed TUI forms.",
@@ -887874,7 +887874,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887874
887874
  },
887875
887875
  {
887876
887876
  id: "host",
887877
- group: "HOST",
887877
+ group: "OPERATIONS",
887878
887878
  label: "Connected Host",
887879
887879
  summary: "Connected-host health, tasks, sessions, channels, and automation.",
887880
887880
  detail: "Use this workspace to inspect the GoodVibes host surfaces that Agent can see: system health, remote routes, host tasks, sessions, channels, schedules, knowledge, media, MCP, provider auth, support bundles, and telemetry/config posture.",
@@ -887918,7 +887918,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887918
887918
  },
887919
887919
  {
887920
887920
  id: "automation",
887921
- group: "AUTOMATION",
887921
+ group: "OPERATIONS",
887922
887922
  label: "Automation",
887923
887923
  summary: "Reminders, schedule observability, and explicit routine promotion.",
887924
887924
  detail: "Agent does not create hidden local automation jobs. Confirmed reminders, reviewed routine promotion, and explicit run/pause/resume controls go through the connected host with confirmation.",
@@ -887945,7 +887945,7 @@ var AGENT_WORKSPACE_CATEGORIES = [
887945
887945
  },
887946
887946
  {
887947
887947
  id: "delegate",
887948
- group: "DELEGATE",
887948
+ group: "OPERATIONS",
887949
887949
  label: "Build Delegation",
887950
887950
  summary: "Explicit handoff to GoodVibes TUI for code work.",
887951
887951
  detail: "Agent does not become the coding TUI. Build, implement, fix, patch, and review work must be handed to GoodVibes TUI with the full original ask and delegated review only when explicitly requested.",
@@ -906567,8 +906567,7 @@ function renderCollapsedLayout(wizard, width, viewportHeight, layout) {
906567
906567
  return lines.slice(0, viewportHeight);
906568
906568
  }
906569
906569
  function renderOnboardingWizard(wizard, width, viewportHeight) {
906570
- const margin = width >= 64 ? 1 : 0;
906571
- const layout = createOverlayBoxLayout(width, margin, Math.max(20, width - margin * 2));
906570
+ const layout = createOverlayBoxLayout(width, 0, Math.max(20, width));
906572
906571
  const collapsed = layout.innerWidth < 86;
906573
906572
  return collapsed ? renderCollapsedLayout(wizard, width, viewportHeight, layout) : renderWideLayout(wizard, width, viewportHeight, layout);
906574
906573
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-agent",
3
- "version": "1.0.36",
3
+ "version": "1.0.37",
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,7 +3,7 @@ import type { AgentWorkspaceCategory } from './agent-workspace-types.ts';
3
3
  export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
4
4
  {
5
5
  id: 'home',
6
- group: 'HOME',
6
+ group: 'START',
7
7
  label: 'Home',
8
8
  summary: 'Main operator workspace for normal assistant work.',
9
9
  detail: 'Use this as the primary Agent workspace: chat in the main conversation, inspect state, choose model/provider, and open setup without switching modes.',
@@ -35,7 +35,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
35
35
  },
36
36
  {
37
37
  id: 'setup',
38
- group: 'CONFIGURE',
38
+ group: 'START',
39
39
  label: 'Setup',
40
40
  summary: 'Configuration, auth, provider, and onboarding workspaces.',
41
41
  detail: 'Use this to configure the assistant: provider/model, setup checklist, Agent Knowledge, local behavior, channels, and voice/media. Changes here stay Agent-owned.',
@@ -94,7 +94,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
94
94
  },
95
95
  {
96
96
  id: 'research',
97
- group: 'RESEARCH',
97
+ group: 'DAY-TO-DAY',
98
98
  label: 'Research',
99
99
  summary: 'Read-only web research and source triage in the main conversation.',
100
100
  detail: 'Use this workspace to ask Agent to search, inspect URLs, compare sources, and decide what belongs in isolated Agent Knowledge. Research requests run in the normal conversation; source ingestion is explicit.',
@@ -113,7 +113,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
113
113
  },
114
114
  {
115
115
  id: 'artifacts',
116
- group: 'ARTIFACTS',
116
+ group: 'DAY-TO-DAY',
117
117
  label: 'Artifacts',
118
118
  summary: 'Files, attachments, exports, source ingest, and generated media.',
119
119
  detail: 'Use this workspace to handle concrete user-visible artifacts: attach images, export conversations, ingest source files into Agent Knowledge, inspect source libraries, and generate media with explicit confirmation.',
@@ -136,7 +136,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
136
136
  },
137
137
  {
138
138
  id: 'conversation',
139
- group: 'CONVERSATION',
139
+ group: 'DAY-TO-DAY',
140
140
  label: 'Conversation',
141
141
  summary: 'Transcript, prompt, context, and session controls.',
142
142
  detail: 'Use this workspace for the main TUI conversation: context review, compaction, prompt helpers, transcript navigation, session continuity, title, export, undo, redo, and retry.',
@@ -181,7 +181,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
181
181
  },
182
182
  {
183
183
  id: 'channels',
184
- group: 'CHANNELS',
184
+ group: 'CAPABILITIES',
185
185
  label: 'Channels',
186
186
  summary: 'Companion pairing, channel posture, and delivery safety.',
187
187
  detail: 'Agent uses connected channel accounts. Pairing, account inspection, and readiness checks are visible here; inbound delivery and public channel exposure stay policy-gated.',
@@ -209,7 +209,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
209
209
  },
210
210
  {
211
211
  id: 'tools',
212
- group: 'TOOLS',
212
+ group: 'CAPABILITIES',
213
213
  label: 'Tools & MCP',
214
214
  summary: 'MCP server setup, trust review, and tool inventory.',
215
215
  detail: 'Configure and inspect task tools from the Agent TUI. Adding or changing tools requires typed confirmation; normal chat still chooses tools serially in the main conversation.',
@@ -240,7 +240,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
240
240
  },
241
241
  {
242
242
  id: 'knowledge',
243
- group: 'KNOWLEDGE',
243
+ group: 'CAPABILITIES',
244
244
  label: 'Knowledge',
245
245
  summary: 'Agent Knowledge and source-backed lookup.',
246
246
  detail: 'Agent knowledge calls use the isolated Agent Knowledge route family only. Default knowledge and non-Agent knowledge segments are not the Agent knowledge environment.',
@@ -276,7 +276,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
276
276
  },
277
277
  {
278
278
  id: 'voice-media',
279
- group: 'VOICE & MEDIA',
279
+ group: 'CAPABILITIES',
280
280
  label: 'Voice & Media',
281
281
  summary: 'Voice, TTS, image input, browser tools, and media providers.',
282
282
  detail: 'Voice, media, browser tools, and image-capable flows are first-class Agent tools. Connected-host administration stays outside Agent and side effects stay explicit.',
@@ -302,7 +302,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
302
302
  },
303
303
  {
304
304
  id: 'profiles',
305
- group: 'PROFILES',
305
+ group: 'LOCAL BEHAVIOR',
306
306
  label: 'Profiles',
307
307
  summary: 'Isolated Agent homes, starter templates, and setup bundles.',
308
308
  detail: 'Agent profiles isolate Agent state. Named homes and starter templates let one install behave like separate assistants for household, research, travel, operations, or personal workflows.',
@@ -325,7 +325,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
325
325
  },
326
326
  {
327
327
  id: 'memory',
328
- group: 'MEMORY',
328
+ group: 'LOCAL BEHAVIOR',
329
329
  label: 'Memory & Skills',
330
330
  summary: 'Local assistant memory, notes, routines, skills, and reusable behavior.',
331
331
  detail: 'Memory, notes, routines, skills, and personas stay Agent-local until stable shared registry contracts exist. Secrets must not be stored as memory or notes.',
@@ -362,7 +362,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
362
362
  },
363
363
  {
364
364
  id: 'notes',
365
- group: 'NOTES',
365
+ group: 'LOCAL BEHAVIOR',
366
366
  label: 'Notes',
367
367
  summary: 'Agent-local scratchpad for source triage and temporary context.',
368
368
  detail: 'Notes are local working context. They are useful for research notes, decisions in progress, and handoff notes, but they are not memory and are not Agent Knowledge.',
@@ -385,7 +385,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
385
385
  },
386
386
  {
387
387
  id: 'personas',
388
- group: 'PERSONAS',
388
+ group: 'LOCAL BEHAVIOR',
389
389
  label: 'Personas',
390
390
  summary: 'Local behavior profiles for the main assistant.',
391
391
  detail: 'Personas shape the serial Agent in the main conversation. They are local behavior profiles, not separate Agent identities.',
@@ -408,7 +408,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
408
408
  },
409
409
  {
410
410
  id: 'skills',
411
- group: 'SKILLS',
411
+ group: 'LOCAL BEHAVIOR',
412
412
  label: 'Skills',
413
413
  summary: 'Reusable local procedures with setup readiness.',
414
414
  detail: 'Skills are local, reviewable procedures with optional env/command requirements. Enabled skills inform the main conversation; secret-looking content is rejected.',
@@ -443,7 +443,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
443
443
  },
444
444
  {
445
445
  id: 'routines',
446
- group: 'ROUTINES',
446
+ group: 'LOCAL BEHAVIOR',
447
447
  label: 'Routines',
448
448
  summary: 'Repeatable workflows with setup readiness.',
449
449
  detail: 'Routines run in the main conversation by default and can declare env/command requirements. Promotion to a connected schedule requires a real schedule command and --yes.',
@@ -473,7 +473,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
473
473
  },
474
474
  {
475
475
  id: 'work',
476
- group: 'WORK',
476
+ group: 'OPERATIONS',
477
477
  label: 'Work & Approvals',
478
478
  summary: 'Visible task state, work plan, and approval posture.',
479
479
  detail: 'Use this workspace to inspect active operator state and update visible work-plan items from confirmed TUI forms.',
@@ -527,7 +527,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
527
527
  },
528
528
  {
529
529
  id: 'host',
530
- group: 'HOST',
530
+ group: 'OPERATIONS',
531
531
  label: 'Connected Host',
532
532
  summary: 'Connected-host health, tasks, sessions, channels, and automation.',
533
533
  detail: 'Use this workspace to inspect the GoodVibes host surfaces that Agent can see: system health, remote routes, host tasks, sessions, channels, schedules, knowledge, media, MCP, provider auth, support bundles, and telemetry/config posture.',
@@ -571,7 +571,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
571
571
  },
572
572
  {
573
573
  id: 'automation',
574
- group: 'AUTOMATION',
574
+ group: 'OPERATIONS',
575
575
  label: 'Automation',
576
576
  summary: 'Reminders, schedule observability, and explicit routine promotion.',
577
577
  detail: 'Agent does not create hidden local automation jobs. Confirmed reminders, reviewed routine promotion, and explicit run/pause/resume controls go through the connected host with confirmation.',
@@ -598,7 +598,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
598
598
  },
599
599
  {
600
600
  id: 'delegate',
601
- group: 'DELEGATE',
601
+ group: 'OPERATIONS',
602
602
  label: 'Build Delegation',
603
603
  summary: 'Explicit handoff to GoodVibes TUI for code work.',
604
604
  detail: 'Agent does not become the coding TUI. Build, implement, fix, patch, and review work must be handed to GoodVibes TUI with the full original ask and delegated review only when explicitly requested.',
@@ -634,8 +634,7 @@ export function renderOnboardingWizard(
634
634
  width: number,
635
635
  viewportHeight: number,
636
636
  ): Line[] {
637
- const margin = width >= 64 ? 1 : 0;
638
- const layout = createOverlayBoxLayout(width, margin, Math.max(20, width - margin * 2));
637
+ const layout = createOverlayBoxLayout(width, 0, Math.max(20, width));
639
638
  const collapsed = layout.innerWidth < 86;
640
639
  return collapsed
641
640
  ? renderCollapsedLayout(wizard, width, viewportHeight, layout)
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 = '1.0.36';
9
+ let _version = '1.0.37';
10
10
  try {
11
11
  const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', 'package.json'), 'utf-8')) as {
12
12
  readonly version?: unknown;