@pellux/goodvibes-agent 0.1.117 → 1.0.1

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 (255) hide show
  1. package/CHANGELOG.md +20 -4
  2. package/README.md +35 -14
  3. package/bin/goodvibes-agent.ts +16 -2
  4. package/dist/package/main.js +176093 -171065
  5. package/docs/README.md +11 -5
  6. package/docs/channels-remote-and-api.md +50 -0
  7. package/docs/connected-host.md +3 -3
  8. package/docs/getting-started.md +29 -15
  9. package/docs/knowledge-artifacts-and-multimodal.md +91 -0
  10. package/docs/project-planning.md +79 -0
  11. package/docs/providers-and-routing.md +46 -0
  12. package/docs/release-and-publishing.md +44 -9
  13. package/docs/tools-and-commands.md +123 -0
  14. package/docs/voice-and-live-tts.md +51 -0
  15. package/package.json +2 -5
  16. package/src/agent/channel-delivery.ts +201 -0
  17. package/src/agent/media-generation.ts +159 -0
  18. package/src/agent/memory-prompt.ts +0 -1
  19. package/src/agent/note-registry.ts +329 -0
  20. package/src/agent/operator-actions.ts +343 -0
  21. package/src/agent/persona-registry.ts +15 -14
  22. package/src/agent/record-labels.ts +107 -0
  23. package/src/agent/reminder-schedule-format.ts +33 -24
  24. package/src/agent/reminder-schedule.ts +26 -25
  25. package/src/agent/routine-registry.ts +13 -12
  26. package/src/agent/routine-schedule-args.ts +2 -1
  27. package/src/agent/routine-schedule-format.ts +77 -53
  28. package/src/agent/routine-schedule-promotion.ts +34 -32
  29. package/src/agent/routine-schedule-receipts.ts +28 -26
  30. package/src/agent/runtime-profile-starters.ts +2 -2
  31. package/src/agent/runtime-profile.ts +18 -17
  32. package/src/agent/skill-registry.ts +25 -24
  33. package/src/cli/agent-knowledge-args.ts +5 -1
  34. package/src/cli/agent-knowledge-command.ts +39 -33
  35. package/src/cli/agent-knowledge-format.ts +80 -67
  36. package/src/cli/agent-knowledge-methods.ts +1 -1
  37. package/src/cli/agent-knowledge-runtime.ts +32 -26
  38. package/src/cli/bundle-command.ts +13 -8
  39. package/src/cli/config-overrides.ts +37 -36
  40. package/src/cli/external-runtime.ts +10 -4
  41. package/src/cli/help.ts +29 -11
  42. package/src/cli/local-library-command.ts +159 -73
  43. package/src/cli/management-commands.ts +98 -62
  44. package/src/cli/management.ts +52 -26
  45. package/src/cli/memory-command.ts +66 -32
  46. package/src/cli/parser.ts +37 -24
  47. package/src/cli/profiles-command.ts +52 -35
  48. package/src/cli/provider-auth-routes.ts +2 -1
  49. package/src/cli/routines-command.ts +59 -39
  50. package/src/cli/service-posture.ts +6 -6
  51. package/src/cli/status.ts +46 -121
  52. package/src/core/conversation-message-snapshot.ts +131 -0
  53. package/src/input/agent-workspace-activation.ts +33 -7
  54. package/src/input/agent-workspace-basic-command-editor-submission.ts +7 -3
  55. package/src/input/agent-workspace-basic-command-editors.ts +30 -10
  56. package/src/input/agent-workspace-categories.ts +276 -64
  57. package/src/input/agent-workspace-channel-command-editor-submission.ts +34 -0
  58. package/src/input/agent-workspace-channel-command-editors.ts +23 -5
  59. package/src/input/agent-workspace-channels.ts +35 -2
  60. package/src/input/agent-workspace-command-editor.ts +18 -2
  61. package/src/input/agent-workspace-config-reader.ts +16 -0
  62. package/src/input/agent-workspace-delegation-editor-submission.ts +1 -1
  63. package/src/input/agent-workspace-editors.ts +140 -2
  64. package/src/input/agent-workspace-knowledge-query-editor.ts +1 -1
  65. package/src/input/agent-workspace-knowledge-url-editor.ts +4 -11
  66. package/src/input/agent-workspace-learned-behavior.ts +2 -2
  67. package/src/input/agent-workspace-library-command-editor-submission.ts +1 -1
  68. package/src/input/agent-workspace-library-command-editors.ts +2 -2
  69. package/src/input/agent-workspace-local-operations.ts +218 -0
  70. package/src/input/agent-workspace-local-selection.ts +75 -0
  71. package/src/input/agent-workspace-media-command-editor-submission.ts +62 -0
  72. package/src/input/agent-workspace-media-command-editors.ts +27 -0
  73. package/src/input/agent-workspace-memory-command-editors.ts +1 -1
  74. package/src/input/agent-workspace-memory-editor.ts +2 -2
  75. package/src/input/agent-workspace-navigation.ts +38 -2
  76. package/src/input/agent-workspace-notify-editor-submission.ts +16 -2
  77. package/src/input/agent-workspace-operations-command-editor-submission.ts +63 -1
  78. package/src/input/agent-workspace-operations-command-editors.ts +80 -3
  79. package/src/input/agent-workspace-panel-route.ts +43 -0
  80. package/src/input/agent-workspace-reminder-schedule-editor.ts +1 -1
  81. package/src/input/agent-workspace-routine-schedule-editor.ts +2 -2
  82. package/src/input/agent-workspace-search.ts +169 -0
  83. package/src/input/agent-workspace-setup.ts +22 -11
  84. package/src/input/agent-workspace-skill-bundle-command-editor-submission.ts +6 -6
  85. package/src/input/agent-workspace-skill-bundle-command-editors.ts +10 -10
  86. package/src/input/agent-workspace-snapshot.ts +112 -13
  87. package/src/input/agent-workspace-task-command-editors.ts +4 -4
  88. package/src/input/agent-workspace-token.ts +18 -2
  89. package/src/input/agent-workspace-types.ts +92 -4
  90. package/src/input/agent-workspace-voice-media.ts +3 -6
  91. package/src/input/agent-workspace-web-research-editor.ts +104 -0
  92. package/src/input/agent-workspace.ts +136 -208
  93. package/src/input/command-registry.ts +4 -1
  94. package/src/input/commands/agent-local-library-args.ts +52 -0
  95. package/src/input/commands/agent-runtime-profile-runtime.ts +45 -41
  96. package/src/input/commands/agent-skills-runtime.ts +87 -99
  97. package/src/input/commands/agent-workspace-runtime.ts +23 -7
  98. package/src/input/commands/brief-runtime.ts +25 -24
  99. package/src/input/commands/channels-runtime.ts +145 -31
  100. package/src/input/commands/delegation-runtime.ts +29 -23
  101. package/src/input/commands/experience-runtime.ts +6 -4
  102. package/src/input/commands/guidance-runtime.ts +4 -4
  103. package/src/input/commands/health-runtime.ts +140 -115
  104. package/src/input/commands/knowledge.ts +57 -56
  105. package/src/input/commands/local-provider-runtime.ts +36 -18
  106. package/src/input/commands/local-runtime.ts +138 -16
  107. package/src/input/commands/local-setup-review.ts +7 -7
  108. package/src/input/commands/mcp-runtime.ts +118 -50
  109. package/src/input/commands/notify-runtime.ts +38 -9
  110. package/src/input/commands/operator-actions-runtime.ts +138 -0
  111. package/src/input/commands/operator-runtime.ts +6 -17
  112. package/src/input/commands/personas-runtime.ts +49 -59
  113. package/src/input/commands/planning-runtime.ts +1 -1
  114. package/src/input/commands/platform-access-runtime.ts +29 -29
  115. package/src/input/commands/provider-accounts-runtime.ts +60 -39
  116. package/src/input/commands/qrcode-runtime.ts +45 -6
  117. package/src/input/commands/recall-bundle.ts +11 -11
  118. package/src/input/commands/recall-capture.ts +13 -11
  119. package/src/input/commands/recall-query.ts +29 -21
  120. package/src/input/commands/recall-review.ts +2 -1
  121. package/src/input/commands/routines-runtime.ts +63 -72
  122. package/src/input/commands/schedule-runtime.ts +33 -20
  123. package/src/input/commands/security-runtime.ts +4 -4
  124. package/src/input/commands/session-content.ts +80 -78
  125. package/src/input/commands/session-workflow.ts +132 -93
  126. package/src/input/commands/session.ts +3 -174
  127. package/src/input/commands/shell-core.ts +32 -17
  128. package/src/input/commands/subscription-runtime.ts +53 -179
  129. package/src/input/commands/tasks-runtime.ts +20 -20
  130. package/src/input/commands/work-plan-runtime.ts +33 -8
  131. package/src/input/commands.ts +2 -2
  132. package/src/input/feed-context-factory.ts +2 -1
  133. package/src/input/file-picker.ts +3 -2
  134. package/src/input/handler-command-route.ts +4 -7
  135. package/src/input/handler-content-actions.ts +89 -1
  136. package/src/input/handler-feed-routes.ts +19 -12
  137. package/src/input/handler-feed.ts +6 -3
  138. package/src/input/handler-interactions.ts +7 -5
  139. package/src/input/handler-modal-stack.ts +3 -3
  140. package/src/input/handler-onboarding.ts +24 -80
  141. package/src/input/handler-shortcuts.ts +15 -4
  142. package/src/input/handler.ts +47 -17
  143. package/src/input/input-history.ts +5 -6
  144. package/src/input/keybindings.ts +22 -11
  145. package/src/input/onboarding/onboarding-wizard-apply.ts +13 -0
  146. package/src/input/onboarding/onboarding-wizard-constants.ts +1 -0
  147. package/src/input/onboarding/onboarding-wizard-operator-steps.ts +147 -57
  148. package/src/input/onboarding/onboarding-wizard-steps.ts +46 -29
  149. package/src/input/onboarding/onboarding-wizard-types.ts +3 -1
  150. package/src/input/onboarding/onboarding-wizard.ts +68 -0
  151. package/src/input/profile-picker-modal.ts +31 -12
  152. package/src/input/session-picker-modal.ts +22 -4
  153. package/src/input/settings-modal-behavior.ts +0 -3
  154. package/src/input/settings-modal-subscriptions.ts +3 -3
  155. package/src/input/settings-modal-types.ts +2 -13
  156. package/src/input/settings-modal.ts +6 -52
  157. package/src/input/submission-intent.ts +0 -1
  158. package/src/input/submission-router.ts +3 -3
  159. package/src/main.ts +18 -8
  160. package/src/panels/approval-panel.ts +8 -8
  161. package/src/panels/automation-control-panel.ts +2 -2
  162. package/src/panels/base-panel.ts +1 -1
  163. package/src/panels/builtin/agent.ts +1 -1
  164. package/src/panels/builtin/operations.ts +1 -10
  165. package/src/panels/builtin/session.ts +9 -9
  166. package/src/panels/builtin/shared.ts +2 -2
  167. package/src/panels/cost-tracker-panel.ts +1 -1
  168. package/src/panels/docs-panel.ts +5 -3
  169. package/src/panels/index.ts +0 -1
  170. package/src/panels/knowledge-panel.ts +6 -5
  171. package/src/panels/memory-panel.ts +7 -6
  172. package/src/panels/panel-list-panel.ts +36 -80
  173. package/src/panels/project-planning-panel.ts +18 -11
  174. package/src/panels/provider-account-snapshot.ts +51 -25
  175. package/src/panels/provider-accounts-panel.ts +33 -18
  176. package/src/panels/provider-health-domains.ts +45 -4
  177. package/src/panels/provider-health-panel.ts +5 -4
  178. package/src/panels/qr-panel.ts +1 -1
  179. package/src/panels/schedule-panel.ts +9 -17
  180. package/src/panels/security-panel.ts +8 -8
  181. package/src/panels/session-browser-panel.ts +10 -10
  182. package/src/panels/subscription-panel.ts +3 -3
  183. package/src/panels/system-messages-panel.ts +1 -1
  184. package/src/panels/tasks-panel.ts +20 -13
  185. package/src/panels/tool-inspector-panel.ts +19 -12
  186. package/src/panels/work-plan-panel.ts +5 -5
  187. package/src/planning/project-planning-coordinator.ts +1 -1
  188. package/src/provider-auth-route-display.ts +9 -0
  189. package/src/renderer/agent-workspace-style.ts +34 -0
  190. package/src/renderer/agent-workspace.ts +228 -52
  191. package/src/renderer/autocomplete-overlay.ts +25 -6
  192. package/src/renderer/bookmark-modal.ts +19 -4
  193. package/src/renderer/buffer.ts +4 -2
  194. package/src/renderer/context-inspector.ts +50 -13
  195. package/src/renderer/diff.ts +1 -1
  196. package/src/renderer/file-picker-overlay.ts +19 -6
  197. package/src/renderer/help-overlay.ts +106 -33
  198. package/src/renderer/history-search-overlay.ts +19 -4
  199. package/src/renderer/live-tail-modal.ts +27 -5
  200. package/src/renderer/mcp-workspace.ts +164 -50
  201. package/src/renderer/model-picker-overlay.ts +58 -2
  202. package/src/renderer/model-workspace.ts +104 -20
  203. package/src/renderer/process-modal.ts +27 -6
  204. package/src/renderer/profile-picker-modal.ts +20 -4
  205. package/src/renderer/search-overlay.ts +25 -5
  206. package/src/renderer/selection-modal-overlay.ts +46 -14
  207. package/src/renderer/session-picker-modal.ts +18 -1
  208. package/src/renderer/settings-modal-helpers.ts +2 -40
  209. package/src/renderer/settings-modal.ts +83 -50
  210. package/src/renderer/tool-call.ts +20 -11
  211. package/src/runtime/agent-runtime-events.ts +6 -6
  212. package/src/runtime/bootstrap-command-context.ts +7 -1
  213. package/src/runtime/bootstrap-command-parts.ts +9 -7
  214. package/src/runtime/bootstrap-core.ts +19 -1
  215. package/src/runtime/bootstrap-hook-bridge.ts +7 -18
  216. package/src/runtime/bootstrap-shell.ts +4 -4
  217. package/src/runtime/bootstrap.ts +31 -22
  218. package/src/runtime/connected-host-auth.ts +7 -2
  219. package/src/runtime/diagnostics/panels/index.ts +2 -2
  220. package/src/runtime/diagnostics/panels/policy.ts +7 -7
  221. package/src/runtime/index.ts +2 -1
  222. package/src/runtime/onboarding/apply-file-helpers.ts +66 -0
  223. package/src/runtime/onboarding/apply.ts +80 -79
  224. package/src/runtime/onboarding/derivation.ts +5 -8
  225. package/src/runtime/onboarding/snapshot.ts +0 -15
  226. package/src/runtime/onboarding/types.ts +8 -19
  227. package/src/runtime/onboarding/verify.ts +32 -10
  228. package/src/runtime/operator-token-cleanup.ts +1 -1
  229. package/src/runtime/services.ts +91 -22
  230. package/src/runtime/store/selectors/index.ts +3 -3
  231. package/src/runtime/store/state.ts +1 -4
  232. package/src/runtime/surface-feature-flags.ts +41 -6
  233. package/src/runtime/ui-read-models.ts +3 -4
  234. package/src/runtime/ui-services.ts +6 -6
  235. package/src/shell/blocking-input.ts +2 -1
  236. package/src/shell/ui-openers.ts +3 -13
  237. package/src/tools/agent-analysis-registry-policy.ts +0 -1
  238. package/src/tools/agent-channel-send-tool.ts +133 -0
  239. package/src/tools/agent-context-policy.ts +1 -1
  240. package/src/tools/agent-knowledge-ingest-tool.ts +405 -0
  241. package/src/tools/agent-knowledge-tool.ts +170 -0
  242. package/src/tools/agent-local-registry-tool.ts +269 -69
  243. package/src/tools/agent-media-generate-tool.ts +133 -0
  244. package/src/tools/agent-notify-tool.ts +143 -0
  245. package/src/tools/agent-operator-action-tool.ts +137 -0
  246. package/src/tools/agent-operator-briefing-tool.ts +217 -0
  247. package/src/tools/agent-reminder-schedule-tool.ts +237 -0
  248. package/src/tools/agent-tool-policy-guard.ts +8 -8
  249. package/src/tools/agent-work-plan-tool.ts +256 -0
  250. package/src/version.ts +1 -1
  251. package/src/input/commands/policy-dispatch.ts +0 -339
  252. package/src/input/commands/policy.ts +0 -13
  253. package/src/panels/panel-picker.ts +0 -105
  254. package/src/panels/policy-panel.ts +0 -308
  255. package/src/renderer/panel-picker-overlay.ts +0 -202
@@ -17,6 +17,7 @@ import {
17
17
  type AgentRuntimeProfileInfo,
18
18
  type AgentRuntimeProfileTemplateSummary,
19
19
  } from '../../agent/runtime-profile.ts';
20
+ import { formatAgentRecordSource } from '../../agent/record-labels.ts';
20
21
  import type { CommandContext, CommandRegistry } from '../command-registry.ts';
21
22
  import { requireYesFlag, stripYesFlag } from './confirmation.ts';
22
23
  import { requireShellPaths } from './runtime-services.ts';
@@ -35,19 +36,19 @@ function parseCsvFlag(args: readonly string[], name: string): readonly string[]
35
36
  }
36
37
 
37
38
  function profileLine(profile: AgentRuntimeProfileInfo): string {
38
- const created = profile.createdAt ? ` created=${profile.createdAt}` : '';
39
- const starter = profile.starterTemplateId ? ` starter=${profile.starterTemplateId}` : '';
40
- return ` ${profile.id} home=${profile.homeDirectory}${created}${starter}`;
39
+ const created = profile.createdAt ? ` created ${profile.createdAt}` : '';
40
+ const starter = profile.starterTemplateId ? ` starter=${profile.starterTemplateId}` : '';
41
+ return ` ${profile.id} home ${profile.homeDirectory}${created}${starter}`;
41
42
  }
42
43
 
43
44
  function templateLine(template: AgentRuntimeProfileTemplateSummary): string {
44
- const source = template.source === 'local' ? `local ${template.path ?? ''}`.trim() : 'builtin';
45
+ const origin = template.source === 'local' ? `local ${template.path ?? ''}`.trim() : formatAgentRecordSource(template.source).toLowerCase();
45
46
  return [
46
- ` ${template.id} [${source}]`,
47
- ` ${template.name}: ${template.description}`,
48
- ` persona: ${template.personaName}`,
49
- ` skills: ${template.skillNames.join(', ')}`,
50
- ` routines: ${template.routineNames.join(', ')}`,
47
+ ` ${template.id} [${origin}]`,
48
+ ` ${template.name} - ${template.description}`,
49
+ ` persona ${template.personaName}`,
50
+ ` skills ${template.skillNames.join(', ')}`,
51
+ ` routines ${template.routineNames.join(', ')}`,
51
52
  ].join('\n');
52
53
  }
53
54
 
@@ -72,9 +73,9 @@ function renderProfileDetail(homeDirectory: string, name: string): string {
72
73
  const starter = info.starterTemplateId ? [` starter: ${info.starterTemplateId} (${info.starterTemplateName ?? info.starterTemplateId})`] : [];
73
74
  return [
74
75
  `Agent profile: ${profile.id}`,
75
- ` home: ${profile.homeDirectory}`,
76
+ ` home ${profile.homeDirectory}`,
76
77
  ...starter,
77
- ` use: goodvibes-agent --agent-profile ${profile.id}`,
78
+ ` use goodvibes-agent --agent-profile ${profile.id}`,
78
79
  ].join('\n');
79
80
  }
80
81
 
@@ -98,8 +99,8 @@ function renderGuide(homeDirectory: string): string {
98
99
  const localCount = templates.filter((template) => template.source === 'local').length;
99
100
  return [
100
101
  'Agent Starter Authoring Guide',
101
- ` built-in starters: ${templates.length - localCount}`,
102
- ` local starters: ${localCount}`,
102
+ ` built-in starters ${templates.length - localCount}`,
103
+ ` local starters ${localCount}`,
103
104
  '',
104
105
  '1. Pick a base starter:',
105
106
  ' /agent-profile templates',
@@ -111,20 +112,20 @@ function renderGuide(homeDirectory: string): string {
111
112
  '5. Create an Agent profile from the imported starter:',
112
113
  ' /agent-profile create <name> --template <imported-id> --yes',
113
114
  '',
114
- 'This writes only Agent-local starter/profile state. It does not mutate connected GoodVibes host, default wiki, or non-Agent knowledge segments.',
115
+ 'This writes only Agent-local starter/profile state. It does not mutate connected GoodVibes host, default knowledge, or non-Agent knowledge segments.',
115
116
  ].join('\n');
116
117
  }
117
118
 
118
119
  function renderTemplatePreview(homeDirectory: string, templateId: string): string {
119
120
  const file = getAgentRuntimeProfileTemplateFile(templateId, homeDirectory);
120
121
  return [
121
- `Agent Starter Template: ${file.template.id}`,
122
- ` name: ${file.template.name}`,
123
- ` source: ${file.template.source}`,
124
- ` description: ${file.template.description}`,
125
- ` persona: ${file.template.persona.name}`,
126
- ` skills: ${file.template.skills.map((skill) => skill.name).join(', ')}`,
127
- ` routines: ${file.template.routines.map((routine) => routine.name).join(', ')}`,
122
+ `Agent Starter Template ${file.template.id}`,
123
+ ` name ${file.template.name}`,
124
+ ` origin ${formatAgentRecordSource(file.template.source)}`,
125
+ ` description ${file.template.description}`,
126
+ ` persona ${file.template.persona.name}`,
127
+ ` skills ${file.template.skills.map((skill) => skill.name).join(', ')}`,
128
+ ` routines ${file.template.routines.map((routine) => routine.name).join(', ')}`,
128
129
  '',
129
130
  'Export/edit/import to customize this starter:',
130
131
  ` /agent-profile template export ${file.template.id} ./agent-starter.json --yes`,
@@ -184,9 +185,9 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
184
185
  const selected = setAgentRuntimeProfileSelection(homeDirectory, target);
185
186
  ctx.print([
186
187
  `Default Agent profile selected: ${selected.id}`,
187
- ` home: ${selected.homeDirectory}`,
188
+ ` home ${selected.homeDirectory}`,
188
189
  ' next launch: goodvibes-agent',
189
- ' explicit override: goodvibes-agent --agent-profile <name>',
190
+ ' explicit override goodvibes-agent --agent-profile <name>',
190
191
  ].join('\n'));
191
192
  return;
192
193
  }
@@ -194,7 +195,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
194
195
  ctx.print(selected
195
196
  ? [
196
197
  `Default Agent profile: ${selected.id}${selected.exists ? '' : ' (missing)'}`,
197
- ` home: ${selected.homeDirectory}`,
198
+ ` home ${selected.homeDirectory}`,
198
199
  ' next launch: goodvibes-agent',
199
200
  ].join('\n')
200
201
  : 'No default Agent profile selected. Next launch uses the base Agent home.');
@@ -214,9 +215,9 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
214
215
  const selected = setAgentRuntimeProfileSelection(homeDirectory, name);
215
216
  ctx.print([
216
217
  `Default Agent profile selected: ${selected.id}`,
217
- ` home: ${selected.homeDirectory}`,
218
+ ` home ${selected.homeDirectory}`,
218
219
  ' next launch: goodvibes-agent',
219
- ' explicit override: goodvibes-agent --agent-profile <name>',
220
+ ' explicit override goodvibes-agent --agent-profile <name>',
220
221
  ].join('\n'));
221
222
  return;
222
223
  }
@@ -251,7 +252,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
251
252
  const targetPath = shellPaths.resolveWorkspacePath(pathArg);
252
253
  mkdirSync(dirname(targetPath), { recursive: true });
253
254
  const template = exportAgentRuntimeProfileTemplate(homeDirectory, templateId, targetPath);
254
- ctx.print(`Agent starter template exported: ${template.id}\n path: ${template.path ?? targetPath}\n edit it, then import it with /agent-profile template import <path> --yes`);
255
+ ctx.print(`Agent starter template exported: ${template.id}\n path ${template.path ?? targetPath}\n edit it, then import it with /agent-profile template import <path> --yes`);
255
256
  return;
256
257
  }
257
258
  if (mode === 'import') {
@@ -266,7 +267,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
266
267
  }
267
268
  const sourcePath = shellPaths.resolveWorkspacePath(pathArg);
268
269
  const template = importAgentRuntimeProfileTemplate(homeDirectory, sourcePath);
269
- ctx.print(`Agent starter template imported: ${template.id}\n source: ${template.source}\n use: /agent-profile create <name> --template ${template.id} --yes`);
270
+ ctx.print(`Agent starter template imported: ${template.id}\n origin ${formatAgentRecordSource(template.source).toLowerCase()}\n use /agent-profile create <name> --template ${template.id} --yes`);
270
271
  return;
271
272
  }
272
273
  if (mode === 'from-discovered' || mode === 'import-discovered') {
@@ -290,10 +291,10 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
290
291
  });
291
292
  ctx.print([
292
293
  `Agent starter template created from discovered behavior: ${template.id}`,
293
- ` persona: ${template.personaName}`,
294
- ` skills: ${template.skillNames.join(', ')}`,
295
- ` routines: ${template.routineNames.join(', ')}`,
296
- ` use: /agent-profile create <name> --template ${template.id} --yes`,
294
+ ` persona ${template.personaName}`,
295
+ ` skills ${template.skillNames.join(', ')}`,
296
+ ` routines ${template.routineNames.join(', ')}`,
297
+ ` use /agent-profile create <name> --template ${template.id} --yes`,
297
298
  ].join('\n'));
298
299
  return;
299
300
  }
@@ -315,9 +316,9 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
315
316
  const profile = createAgentRuntimeProfile(homeDirectory, name, { templateId });
316
317
  ctx.print([
317
318
  `Agent profile created: ${profile.id}`,
318
- ` home: ${profile.homeDirectory}`,
319
+ ` home ${profile.homeDirectory}`,
319
320
  profile.starterTemplateId ? ` starter: ${profile.starterTemplateId}` : '',
320
- ` launch: goodvibes-agent --agent-profile ${profile.id}`,
321
+ ` launch goodvibes-agent --agent-profile ${profile.id}`,
321
322
  ].filter(Boolean).join('\n'));
322
323
  return;
323
324
  }
@@ -344,12 +345,12 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
344
345
  });
345
346
  ctx.print([
346
347
  `Agent profile created from discovered behavior: ${created.profile.id}`,
347
- ` home: ${created.profile.homeDirectory}`,
348
+ ` home ${created.profile.homeDirectory}`,
348
349
  ` starter: ${created.template.id}`,
349
- ` persona: ${created.template.personaName}`,
350
- ` skills: ${created.template.skillNames.join(', ')}`,
351
- ` routines: ${created.template.routineNames.join(', ')}`,
352
- ` launch: goodvibes-agent --agent-profile ${created.profile.id}`,
350
+ ` persona ${created.template.personaName}`,
351
+ ` skills ${created.template.skillNames.join(', ')}`,
352
+ ` routines ${created.template.routineNames.join(', ')}`,
353
+ ` launch goodvibes-agent --agent-profile ${created.profile.id}`,
353
354
  ].join('\n'));
354
355
  return;
355
356
  }
@@ -364,13 +365,16 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
364
365
  requireYesFlag(ctx, `delete Agent profile ${name}`, '/agent-profile delete <name> --yes');
365
366
  return;
366
367
  }
367
- ctx.print(deleteAgentRuntimeProfile(homeDirectory, name) ? `Agent profile deleted: ${name}` : `Agent profile not found: ${name}`);
368
+ ctx.print(deleteAgentRuntimeProfile(homeDirectory, name) ? `Agent profile deleted: ${name}` : `Agent profile not found ${name}`);
368
369
  return;
369
370
  }
370
371
 
371
372
  ctx.print('Usage: /agent-profile [list|show <name>|default [<name>|clear] --yes|use <name> --yes|templates|guide|template show <id>|template export <id> <path> --yes|template import <path> --yes|create <name> [--template <id>] --yes|create-from-discovered <name> --yes|delete <name> --yes]');
372
373
  } catch (error) {
373
- ctx.print(`Error: ${error instanceof Error ? error.message : String(error)}`);
374
+ ctx.print([
375
+ 'Error',
376
+ ` message ${error instanceof Error ? error.message : String(error)}`,
377
+ ].join('\n'));
374
378
  }
375
379
  },
376
380
  });