@pellux/goodvibes-agent 1.1.7 → 1.3.0

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 (274) hide show
  1. package/CHANGELOG.md +329 -0
  2. package/README.md +46 -30
  3. package/dist/package/{ast-grep-napi.linux-x64-gnu-mkk8xwww.node → ast-grep-napi.linux-x64-gnu-swtppvy9.node} +0 -0
  4. package/dist/package/{ast-grep-napi.linux-x64-musl-ryqtgdv6.node → ast-grep-napi.linux-x64-musl-ttfcdtap.node} +0 -0
  5. package/dist/package/main.js +138903 -91477
  6. package/docs/README.md +14 -7
  7. package/docs/channels-remote-and-api.md +8 -5
  8. package/docs/connected-host.md +14 -12
  9. package/docs/getting-started.md +58 -30
  10. package/docs/knowledge-artifacts-and-multimodal.md +7 -5
  11. package/docs/project-planning.md +2 -2
  12. package/docs/providers-and-routing.md +11 -3
  13. package/docs/tools-and-commands.md +116 -45
  14. package/docs/voice-and-live-tts.md +3 -1
  15. package/package.json +3 -2
  16. package/release/release-notes.md +142 -5
  17. package/release/release-readiness.json +124 -94
  18. package/src/agent/assistant-cockpit.ts +247 -0
  19. package/src/agent/autonomy-schedule-format.ts +96 -0
  20. package/src/agent/autonomy-schedule.ts +514 -0
  21. package/src/agent/channel-delivery-receipts.ts +292 -0
  22. package/src/agent/competitive-feature-inventory.ts +294 -0
  23. package/src/agent/document-registry-types.ts +106 -0
  24. package/src/agent/document-registry.ts +734 -0
  25. package/src/agent/harness-control.ts +2 -2
  26. package/src/agent/memory-prompt.ts +2 -2
  27. package/src/agent/operator-actions.ts +50 -6
  28. package/src/agent/persona-registry.ts +8 -0
  29. package/src/agent/project-context-files.ts +273 -0
  30. package/src/agent/prompt-context-receipts.ts +502 -0
  31. package/src/agent/reminder-schedule-format.ts +16 -2
  32. package/src/agent/research-run-registry.ts +582 -0
  33. package/src/agent/research-source-registry.ts +441 -0
  34. package/src/agent/routine-registry.ts +19 -3
  35. package/src/agent/routine-schedule-format.ts +27 -2
  36. package/src/agent/runtime-profile-starters.ts +7 -0
  37. package/src/agent/runtime-profile.ts +106 -4
  38. package/src/agent/schedule-edit-format.ts +129 -0
  39. package/src/agent/schedule-edit.ts +496 -0
  40. package/src/agent/schedule-next-routes.ts +42 -0
  41. package/src/agent/setup-wizard-artifact-receipts.ts +366 -0
  42. package/src/agent/setup-wizard-checkpoint.ts +140 -0
  43. package/src/agent/setup-wizard.ts +683 -0
  44. package/src/agent/skill-registry-types.ts +102 -0
  45. package/src/agent/skill-registry.ts +81 -107
  46. package/src/agent/vibe-confirmation-routes.ts +62 -0
  47. package/src/agent/vibe-file.ts +285 -0
  48. package/src/cli/agent-knowledge-command.ts +45 -2
  49. package/src/cli/help.ts +3 -0
  50. package/src/cli/profiles-command.ts +25 -11
  51. package/src/config/agent-settings-policy.ts +1 -18
  52. package/src/input/agent-workspace-activation.ts +53 -0
  53. package/src/input/agent-workspace-artifact-browser-editor.ts +494 -0
  54. package/src/input/agent-workspace-artifact-metadata.ts +17 -0
  55. package/src/input/agent-workspace-basic-command-editors.ts +5 -1
  56. package/src/input/agent-workspace-categories.ts +153 -155
  57. package/src/input/agent-workspace-channel-triage.ts +481 -0
  58. package/src/input/agent-workspace-channels.ts +263 -0
  59. package/src/input/agent-workspace-command-editor.ts +152 -0
  60. package/src/input/agent-workspace-context-snapshot.ts +349 -0
  61. package/src/input/agent-workspace-delegation-editor-submission.ts +8 -0
  62. package/src/input/agent-workspace-document-editor.ts +502 -0
  63. package/src/input/agent-workspace-document-ops-editor.ts +523 -0
  64. package/src/input/agent-workspace-host-category.ts +1 -1
  65. package/src/input/agent-workspace-local-library-snapshot.ts +167 -0
  66. package/src/input/agent-workspace-model-compare-editor.ts +376 -0
  67. package/src/input/agent-workspace-model-compare-prompt-submission.ts +552 -0
  68. package/src/input/agent-workspace-model-compare-types.ts +82 -0
  69. package/src/input/agent-workspace-model-compare-utils.ts +35 -0
  70. package/src/input/agent-workspace-onboarding-categories.ts +141 -0
  71. package/src/input/agent-workspace-operations-command-editor-submission.ts +53 -0
  72. package/src/input/agent-workspace-operations-command-editors.ts +22 -0
  73. package/src/input/agent-workspace-research-report-editor.ts +212 -0
  74. package/src/input/agent-workspace-research-run-editor.ts +144 -0
  75. package/src/input/agent-workspace-research-source-editor.ts +167 -0
  76. package/src/input/agent-workspace-review-packet-snapshot.ts +593 -0
  77. package/src/input/agent-workspace-review-packet-utils.ts +265 -0
  78. package/src/input/agent-workspace-settings.ts +313 -30
  79. package/src/input/agent-workspace-setup-checkpoint-action.ts +127 -0
  80. package/src/input/agent-workspace-setup-snapshot.ts +217 -0
  81. package/src/input/agent-workspace-setup.ts +61 -1
  82. package/src/input/agent-workspace-snapshot.ts +184 -149
  83. package/src/input/agent-workspace-types.ts +287 -2
  84. package/src/input/agent-workspace.ts +23 -1
  85. package/src/input/command-registry.ts +9 -2
  86. package/src/input/commands/agent-runtime-profile-runtime.ts +28 -13
  87. package/src/input/commands/channels-runtime.ts +102 -114
  88. package/src/input/commands/delegation-runtime.ts +87 -24
  89. package/src/input/commands/knowledge-browser-flags.ts +12 -0
  90. package/src/input/commands/knowledge.ts +28 -14
  91. package/src/input/commands/operator-actions-runtime.ts +6 -3
  92. package/src/input/commands/schedule-runtime.ts +71 -14
  93. package/src/input/commands/session-content.ts +2 -2
  94. package/src/input/commands/shell-core.ts +2 -0
  95. package/src/input/commands/vibe-runtime.ts +140 -0
  96. package/src/input/commands.ts +2 -0
  97. package/src/input/connected-host-routes.ts +123 -0
  98. package/src/input/settings-modal-types.ts +14 -0
  99. package/src/input/setup-wizard-live-receipts.ts +76 -0
  100. package/src/main.ts +15 -15
  101. package/src/panels/qr-panel.ts +2 -2
  102. package/src/renderer/agent-workspace-context-lines.ts +701 -0
  103. package/src/renderer/agent-workspace.ts +68 -421
  104. package/src/renderer/settings-modal-helpers.ts +12 -0
  105. package/src/renderer/settings-modal.ts +12 -0
  106. package/src/runtime/bootstrap-command-context.ts +11 -1
  107. package/src/runtime/bootstrap-command-parts.ts +14 -3
  108. package/src/runtime/bootstrap-core.ts +39 -1
  109. package/src/runtime/bootstrap-shell.ts +6 -0
  110. package/src/runtime/bootstrap.ts +113 -30
  111. package/src/runtime/connected-host-auth.ts +3 -2
  112. package/src/runtime/execution-ledger.ts +231 -0
  113. package/src/runtime/services.ts +88 -10
  114. package/src/runtime/tool-permission-safety.ts +199 -5
  115. package/src/shell/session-continuity-hints.ts +39 -0
  116. package/src/tools/agent-artifacts-tool.ts +606 -0
  117. package/src/tools/agent-audit-tool.ts +155 -0
  118. package/src/tools/agent-autonomy-schedule-tool.ts +238 -0
  119. package/src/tools/agent-autonomy-tool.ts +140 -0
  120. package/src/tools/agent-channel-send-tool.ts +24 -2
  121. package/src/tools/agent-channels-tool.ts +140 -0
  122. package/src/tools/agent-computer-tool.ts +168 -0
  123. package/src/tools/agent-context-policy.ts +137 -7
  124. package/src/tools/agent-context-tool.ts +143 -0
  125. package/src/tools/agent-delegation-tool.ts +128 -0
  126. package/src/tools/agent-device-tool.ts +240 -0
  127. package/src/tools/agent-documents-tool.ts +684 -0
  128. package/src/tools/agent-execution-tool.ts +230 -0
  129. package/src/tools/agent-harness-agent-orchestration-policy.ts +75 -0
  130. package/src/tools/agent-harness-agent-orchestration.ts +791 -0
  131. package/src/tools/agent-harness-autonomy-intake.ts +785 -0
  132. package/src/tools/agent-harness-autonomy-live-records.ts +742 -0
  133. package/src/tools/agent-harness-autonomy-queue-types.ts +88 -0
  134. package/src/tools/agent-harness-autonomy-queue.ts +571 -0
  135. package/src/tools/agent-harness-autonomy-watcher-read-models.ts +509 -0
  136. package/src/tools/agent-harness-background-processes-types.ts +35 -0
  137. package/src/tools/agent-harness-background-processes.ts +798 -0
  138. package/src/tools/agent-harness-browser-cockpit-route.ts +373 -0
  139. package/src/tools/agent-harness-browser-control.ts +346 -0
  140. package/src/tools/agent-harness-browser-pwa-read-models.ts +622 -0
  141. package/src/tools/agent-harness-channel-metadata.ts +168 -10
  142. package/src/tools/agent-harness-cli-command-policy.ts +110 -0
  143. package/src/tools/agent-harness-command-catalog.ts +4 -2
  144. package/src/tools/agent-harness-command-runner.ts +42 -0
  145. package/src/tools/agent-harness-connected-host-status.ts +7 -4
  146. package/src/tools/agent-harness-delegation-posture.ts +234 -19
  147. package/src/tools/agent-harness-device-live-read-models.ts +366 -0
  148. package/src/tools/agent-harness-document-ops-reviewer-readiness.ts +234 -0
  149. package/src/tools/agent-harness-document-ops-types.ts +72 -0
  150. package/src/tools/agent-harness-document-ops.ts +671 -0
  151. package/src/tools/agent-harness-execution-history.ts +489 -0
  152. package/src/tools/agent-harness-execution-posture.ts +385 -0
  153. package/src/tools/agent-harness-file-recovery.ts +135 -0
  154. package/src/tools/agent-harness-interactive-runtime-records.ts +421 -0
  155. package/src/tools/agent-harness-keybinding-metadata.ts +16 -12
  156. package/src/tools/agent-harness-learning-curator-common.ts +102 -0
  157. package/src/tools/agent-harness-learning-curator-consolidation.ts +295 -0
  158. package/src/tools/agent-harness-learning-curator-proposals.ts +606 -0
  159. package/src/tools/agent-harness-learning-curator-types.ts +151 -0
  160. package/src/tools/agent-harness-learning-curator.ts +417 -0
  161. package/src/tools/agent-harness-local-model-benchmarks.ts +269 -0
  162. package/src/tools/agent-harness-local-model-cookbook.ts +238 -0
  163. package/src/tools/agent-harness-local-model-endpoints.ts +788 -0
  164. package/src/tools/agent-harness-local-model-smoke.ts +277 -0
  165. package/src/tools/agent-harness-local-model-url.ts +78 -0
  166. package/src/tools/agent-harness-media-posture.ts +223 -2
  167. package/src/tools/agent-harness-memory-external-providers.ts +796 -0
  168. package/src/tools/agent-harness-memory-posture.ts +672 -0
  169. package/src/tools/agent-harness-memory-provider-certification.ts +219 -0
  170. package/src/tools/agent-harness-memory-refinement.ts +340 -0
  171. package/src/tools/agent-harness-metadata.ts +100 -168
  172. package/src/tools/agent-harness-mode-catalog.ts +86 -33
  173. package/src/tools/agent-harness-model-catalog.ts +162 -0
  174. package/src/tools/agent-harness-model-provider-health.ts +283 -0
  175. package/src/tools/agent-harness-model-readiness.ts +432 -0
  176. package/src/tools/agent-harness-model-routing-types.ts +327 -0
  177. package/src/tools/agent-harness-model-routing-utils.ts +30 -0
  178. package/src/tools/agent-harness-model-routing.ts +165 -193
  179. package/src/tools/agent-harness-operator-methods.ts +115 -133
  180. package/src/tools/agent-harness-pairing-posture.ts +452 -18
  181. package/src/tools/agent-harness-personal-ops-certification.ts +116 -0
  182. package/src/tools/agent-harness-personal-ops-discovery.ts +533 -0
  183. package/src/tools/agent-harness-personal-ops-intake.ts +385 -0
  184. package/src/tools/agent-harness-personal-ops-lanes.ts +270 -0
  185. package/src/tools/agent-harness-personal-ops-operations.ts +225 -0
  186. package/src/tools/agent-harness-personal-ops-provider-records.ts +358 -0
  187. package/src/tools/agent-harness-personal-ops-provider-task-records.ts +321 -0
  188. package/src/tools/agent-harness-personal-ops-records.ts +684 -0
  189. package/src/tools/agent-harness-personal-ops-runner.ts +637 -0
  190. package/src/tools/agent-harness-personal-ops-types.ts +240 -0
  191. package/src/tools/agent-harness-personal-ops.ts +613 -0
  192. package/src/tools/agent-harness-project-context.ts +144 -0
  193. package/src/tools/agent-harness-prompt-context.ts +589 -0
  194. package/src/tools/agent-harness-provider-account-metadata.ts +2 -2
  195. package/src/tools/agent-harness-release-evidence.ts +9 -7
  196. package/src/tools/agent-harness-release-readiness.ts +9 -7
  197. package/src/tools/agent-harness-remote-read-models.ts +541 -0
  198. package/src/tools/agent-harness-research-briefing.ts +446 -0
  199. package/src/tools/agent-harness-research-live-read-models.ts +500 -0
  200. package/src/tools/agent-harness-research-queue.ts +250 -0
  201. package/src/tools/agent-harness-research-runs.ts +307 -0
  202. package/src/tools/agent-harness-research-workflow.ts +395 -0
  203. package/src/tools/agent-harness-security-posture.ts +2 -2
  204. package/src/tools/agent-harness-service-posture.ts +9 -9
  205. package/src/tools/agent-harness-session-metadata.ts +3 -3
  206. package/src/tools/agent-harness-setup-connected-host.ts +501 -0
  207. package/src/tools/agent-harness-setup-describe.ts +557 -0
  208. package/src/tools/agent-harness-setup-handoffs.ts +502 -0
  209. package/src/tools/agent-harness-setup-model-helpers.ts +102 -0
  210. package/src/tools/agent-harness-setup-plan.ts +253 -0
  211. package/src/tools/agent-harness-setup-posture-types.ts +218 -0
  212. package/src/tools/agent-harness-setup-posture-utils.ts +173 -0
  213. package/src/tools/agent-harness-setup-posture.ts +449 -221
  214. package/src/tools/agent-harness-setup-smoke.ts +533 -0
  215. package/src/tools/agent-harness-sudo-posture.ts +114 -0
  216. package/src/tools/agent-harness-tool-schema.ts +142 -7
  217. package/src/tools/agent-harness-tool-types.ts +83 -0
  218. package/src/tools/agent-harness-tool-utils.ts +43 -0
  219. package/src/tools/agent-harness-tool.ts +319 -370
  220. package/src/tools/agent-harness-ui-surface-metadata.ts +76 -69
  221. package/src/tools/agent-harness-ui-surface-types.ts +46 -0
  222. package/src/tools/agent-harness-vibe-health.ts +105 -0
  223. package/src/tools/agent-harness-workspace-action-runner.ts +149 -0
  224. package/src/tools/agent-harness-workspace-actions.ts +114 -8
  225. package/src/tools/agent-harness-workspace-editor-execution.ts +214 -0
  226. package/src/tools/agent-harness-workspace-editor-runner.ts +755 -0
  227. package/src/tools/agent-host-tool.ts +159 -0
  228. package/src/tools/agent-knowledge-ingest-tool.ts +34 -1
  229. package/src/tools/agent-learning-consolidation-core.ts +327 -0
  230. package/src/tools/agent-learning-consolidation-tool.ts +758 -0
  231. package/src/tools/agent-memory-tool.ts +253 -0
  232. package/src/tools/agent-model-compare-export.ts +315 -0
  233. package/src/tools/agent-model-compare-handoff.ts +592 -0
  234. package/src/tools/agent-model-compare-judgment.ts +633 -0
  235. package/src/tools/agent-model-compare-run.ts +735 -0
  236. package/src/tools/agent-model-compare-tool.ts +698 -0
  237. package/src/tools/agent-model-compare-types.ts +191 -0
  238. package/src/tools/agent-model-compare-utils.ts +93 -0
  239. package/src/tools/agent-models-tool.ts +208 -0
  240. package/src/tools/agent-operator-action-tool.ts +1 -1
  241. package/src/tools/agent-operator-method-tool.ts +643 -0
  242. package/src/tools/agent-personal-ops-tool.ts +197 -0
  243. package/src/tools/agent-policy-explanation.ts +415 -0
  244. package/src/tools/agent-research-report-tool.ts +608 -0
  245. package/src/tools/agent-research-runner.ts +367 -0
  246. package/src/tools/agent-research-runs-tool.ts +434 -0
  247. package/src/tools/agent-research-sources-tool.ts +443 -0
  248. package/src/tools/agent-research-tool.ts +515 -0
  249. package/src/tools/agent-review-packet-presets-core.ts +757 -0
  250. package/src/tools/agent-review-packet-presets-tool.ts +466 -0
  251. package/src/tools/agent-review-packet-share-tool.ts +305 -0
  252. package/src/tools/agent-route-planner-candidates-setup.ts +411 -0
  253. package/src/tools/agent-route-planner-candidates-surfaces.ts +432 -0
  254. package/src/tools/agent-route-planner-candidates-work.ts +251 -0
  255. package/src/tools/agent-route-planner-helpers.ts +667 -0
  256. package/src/tools/agent-route-planner.ts +185 -0
  257. package/src/tools/agent-route-tool.ts +105 -0
  258. package/src/tools/agent-schedule-edit-tool.ts +210 -0
  259. package/src/tools/agent-schedule-tool.ts +282 -0
  260. package/src/tools/agent-security-tool.ts +145 -0
  261. package/src/tools/agent-sessions-tool.ts +122 -0
  262. package/src/tools/agent-settings-import-tool.ts +104 -0
  263. package/src/tools/agent-settings-tool.ts +176 -0
  264. package/src/tools/agent-setup-tool.ts +226 -0
  265. package/src/tools/agent-support-tool.ts +122 -0
  266. package/src/tools/agent-terminal-process-tools.ts +167 -0
  267. package/src/tools/agent-tool-policy-guard-types.ts +77 -0
  268. package/src/tools/agent-tool-policy-guard.ts +106 -85
  269. package/src/tools/agent-vibe-tool.ts +297 -0
  270. package/src/tools/agent-work-plan-tool.ts +265 -6
  271. package/src/tools/agent-workspace-tool.ts +305 -0
  272. package/src/tools/artifact-archive.ts +169 -0
  273. package/src/tools/tool-definition-compaction.ts +36 -0
  274. package/src/version.ts +1 -1
@@ -1,8 +1,9 @@
1
1
  import type { ModelPickerTarget } from './model-picker.ts';
2
- import type { AgentWorkspaceChannelStatus } from './agent-workspace-channels.ts';
2
+ import type { AgentWorkspaceChannelSetupGuide, AgentWorkspaceChannelStatus } from './agent-workspace-channels.ts';
3
3
  import type { AgentWorkspaceSetupChecklistItem } from './agent-workspace-setup.ts';
4
4
  import type { AgentWorkspaceVoiceMediaReadiness } from './agent-workspace-voice-media.ts';
5
5
  import type { AgentBehaviorDiscoverySnapshot } from '../agent/behavior-discovery-summary.ts';
6
+ import type { AgentSetupWizard } from '../agent/setup-wizard.ts';
6
7
 
7
8
  export const AGENT_WORKSPACE_MODAL_NAME = 'agentWorkspace';
8
9
 
@@ -19,7 +20,9 @@ export const AGENT_WORKSPACE_CATEGORY_IDS = [
19
20
  'onboarding-voice-media',
20
21
  'onboarding-context',
21
22
  'onboarding-automation',
23
+ 'personal-ops',
22
24
  'research',
25
+ 'documents',
23
26
  'artifacts',
24
27
  'conversation',
25
28
  'channels',
@@ -41,7 +44,8 @@ export const AGENT_WORKSPACE_CATEGORY_IDS = [
41
44
 
42
45
  export type AgentWorkspaceCategoryId = (typeof AGENT_WORKSPACE_CATEGORY_IDS)[number];
43
46
 
44
- export type AgentWorkspaceActionKind = 'command' | 'guidance' | 'workspace' | 'editor' | 'setting' | 'settings-import' | 'model-picker' | 'settings-modal' | 'local-selection' | 'local-operation' | 'onboarding-complete';
47
+ export type AgentWorkspaceActionKind = 'command' | 'guidance' | 'workspace' | 'editor' | 'setting' | 'settings-import' | 'setup-checkpoint' | 'model-picker' | 'settings-modal' | 'local-selection' | 'local-operation' | 'onboarding-complete';
48
+ export type AgentWorkspaceSetupCheckpointOperation = 'show' | 'mark-current' | 'clear';
45
49
 
46
50
  export type AgentWorkspaceLocalEditorKind = 'memory' | 'note' | 'persona' | 'skill' | 'routine' | 'profile';
47
51
 
@@ -49,6 +53,9 @@ export type AgentWorkspaceEditorKind =
49
53
  | AgentWorkspaceLocalEditorKind
50
54
  | 'web-research'
51
55
  | 'web-fetch'
56
+ | 'research-run'
57
+ | 'research-source'
58
+ | 'research-report'
52
59
  | 'knowledge-url'
53
60
  | 'knowledge-urls'
54
61
  | 'knowledge-file'
@@ -66,6 +73,23 @@ export type AgentWorkspaceEditorKind =
66
73
  | 'knowledge-consolidate'
67
74
  | 'knowledge-packet'
68
75
  | 'knowledge-explain'
76
+ | 'document-browse'
77
+ | 'document-show'
78
+ | 'document-create'
79
+ | 'document-update'
80
+ | 'document-review'
81
+ | 'document-comment'
82
+ | 'document-resolve-comment'
83
+ | 'document-suggest'
84
+ | 'document-accept-suggestion'
85
+ | 'document-reject-suggestion'
86
+ | 'document-insert-artifact'
87
+ | 'document-attach-artifact'
88
+ | 'document-export'
89
+ | 'document-reviewer-readiness'
90
+ | 'document-review-packet-wizard'
91
+ | 'document-review-packet-preset'
92
+ | 'document-review-packet-preset-refresh'
69
93
  | 'memory-search'
70
94
  | 'memory-get'
71
95
  | 'memory-explain'
@@ -98,7 +122,21 @@ export type AgentWorkspaceEditorKind =
98
122
  | 'secret-delete'
99
123
  | 'tts-prompt'
100
124
  | 'image-input'
125
+ | 'artifact-browser'
126
+ | 'artifact-show'
127
+ | 'artifact-export-file'
128
+ | 'artifact-export-package'
129
+ | 'artifact-promote-knowledge'
101
130
  | 'media-generate'
131
+ | 'model-compare'
132
+ | 'local-model-benchmark'
133
+ | 'model-compare-review'
134
+ | 'model-compare-handoff-diff'
135
+ | 'model-compare-judge'
136
+ | 'model-compare-apply'
137
+ | 'model-compare-route-decision'
138
+ | 'model-compare-export'
139
+ | 'model-compare-analytics'
102
140
  | 'skill-bundle'
103
141
  | 'skill-bundle-search'
104
142
  | 'skill-bundle-show'
@@ -155,6 +193,7 @@ export type AgentWorkspaceEditorKind =
155
193
  | 'channel-doctor'
156
194
  | 'channel-setup'
157
195
  | 'channel-send'
196
+ | 'document-review-packet-share'
158
197
  | 'session-save'
159
198
  | 'session-load'
160
199
  | 'session-rename'
@@ -183,6 +222,7 @@ export type AgentWorkspaceEditorKind =
183
222
  | 'automation-run-cancel'
184
223
  | 'automation-run-retry'
185
224
  | 'schedule-run'
225
+ | 'schedule-edit'
186
226
  | 'routine-receipt'
187
227
  | 'schedule-receipt'
188
228
  | 'mode-preset'
@@ -262,6 +302,7 @@ export interface AgentWorkspaceAction {
262
302
  readonly modelPickerTarget?: ModelPickerTarget;
263
303
  readonly modelPickerFlow?: 'providerModel' | 'model';
264
304
  readonly settingsTarget?: string;
305
+ readonly setupCheckpointOperation?: AgentWorkspaceSetupCheckpointOperation;
265
306
  readonly visibleWhenSettingKey?: string;
266
307
  readonly visibleWhenSettingValue?: string | boolean | number;
267
308
  readonly localKind?: AgentWorkspaceLocalEditorKind;
@@ -319,6 +360,121 @@ export interface AgentWorkspaceLocalLibraryItem {
319
360
  readonly startCount?: number;
320
361
  }
321
362
 
363
+ export interface AgentWorkspaceRecentReviewerHandoffArtifact {
364
+ readonly id: string;
365
+ readonly filename: string;
366
+ readonly createdAt: number;
367
+ readonly handoffId: string;
368
+ readonly comparisonId: string;
369
+ readonly sourceArtifactId: string;
370
+ readonly sourceKind: string;
371
+ readonly relatedArtifactCount: number;
372
+ }
373
+
374
+ export interface AgentWorkspaceReviewerReadinessBadge {
375
+ readonly status: 'ready' | 'attention' | 'needs-setup';
376
+ readonly summary: string;
377
+ readonly next: string;
378
+ readonly issueCount: number;
379
+ readonly openComments: number;
380
+ readonly proposedSuggestions: number;
381
+ readonly missingSourceArtifacts: number;
382
+ readonly unrevealedComparisons: number;
383
+ readonly hiddenJudgments: number;
384
+ readonly revealedJudgments: number;
385
+ readonly handoffsMissingRelatedArtifacts: number;
386
+ }
387
+
388
+ export type AgentWorkspaceReviewPacketTimelineEventKind =
389
+ | 'document'
390
+ | 'comment'
391
+ | 'suggestion'
392
+ | 'attachment'
393
+ | 'document-export'
394
+ | 'compare'
395
+ | 'compare-export'
396
+ | 'judgment'
397
+ | 'route-decision'
398
+ | 'packet-preset'
399
+ | 'handoff'
400
+ | 'handoff-archive';
401
+
402
+ export interface AgentWorkspaceReviewPacketTimelineEvent {
403
+ readonly id: string;
404
+ readonly kind: AgentWorkspaceReviewPacketTimelineEventKind;
405
+ readonly at: number;
406
+ readonly label: string;
407
+ readonly detail: string;
408
+ readonly status: 'ready' | 'attention' | 'complete' | 'info';
409
+ readonly route: string;
410
+ readonly sourceId: string;
411
+ }
412
+
413
+ export interface AgentWorkspaceReviewPacketTimeline {
414
+ readonly available: boolean;
415
+ readonly count: number;
416
+ readonly next: string;
417
+ readonly items: readonly AgentWorkspaceReviewPacketTimelineEvent[];
418
+ }
419
+
420
+ export interface AgentWorkspaceReviewPacketPresetLineage {
421
+ readonly artifactId: string;
422
+ readonly presetId: string | null;
423
+ readonly name: string | null;
424
+ readonly refreshed: boolean;
425
+ readonly refreshedFromArtifactId: string | null;
426
+ readonly refreshedFromPresetId: string | null;
427
+ readonly freshnessMissingCount: number | null;
428
+ readonly freshnessSupersededCount: number | null;
429
+ readonly freshnessUnresolvedCount: number | null;
430
+ readonly summary: string;
431
+ readonly inspectRoute: string;
432
+ }
433
+
434
+ export interface AgentWorkspaceReviewPacketDefaults {
435
+ readonly documentId: string | null;
436
+ readonly documentTitle: string | null;
437
+ readonly documentExportArtifactId: string | null;
438
+ readonly comparisonArtifactId: string | null;
439
+ readonly judgmentArtifactId: string | null;
440
+ readonly revealedJudgmentArtifactId: string | null;
441
+ readonly routeDecisionArtifactId: string | null;
442
+ readonly routeDecision: string | null;
443
+ readonly handoffArtifactId: string | null;
444
+ readonly handoffArchiveArtifactId: string | null;
445
+ readonly reviewPacketPresetArtifactId: string | null;
446
+ readonly reviewPacketPresetName: string | null;
447
+ readonly reviewPacketPresetLineage: AgentWorkspaceReviewPacketPresetLineage | null;
448
+ readonly relatedArtifactIds: readonly string[];
449
+ readonly summary: string;
450
+ }
451
+
452
+ export type AgentWorkspaceReviewPacketWizardStepStatus = 'done' | 'current' | 'pending' | 'blocked';
453
+
454
+ export interface AgentWorkspaceReviewPacketWizardStep {
455
+ readonly id: string;
456
+ readonly label: string;
457
+ readonly status: AgentWorkspaceReviewPacketWizardStepStatus;
458
+ readonly detail: string;
459
+ readonly userRoute: string;
460
+ readonly modelRoute: string;
461
+ readonly actionId: string;
462
+ readonly backtrackRoute: string | null;
463
+ }
464
+
465
+ export interface AgentWorkspaceReviewPacketWizard {
466
+ readonly available: boolean;
467
+ readonly status: 'complete' | 'active' | 'blocked' | 'empty';
468
+ readonly completedSteps: number;
469
+ readonly totalSteps: number;
470
+ readonly currentStepId: string | null;
471
+ readonly currentStepLabel: string | null;
472
+ readonly next: string;
473
+ readonly finalReview: string;
474
+ readonly presetLineage: AgentWorkspaceReviewPacketPresetLineage | null;
475
+ readonly steps: readonly AgentWorkspaceReviewPacketWizardStep[];
476
+ }
477
+
322
478
  export interface AgentWorkspaceRuntimeProfileItem {
323
479
  readonly id: string;
324
480
  readonly homeDirectory: string;
@@ -348,6 +504,109 @@ export interface AgentWorkspaceRoutineScheduleReceiptSummary {
348
504
  readonly createdAt: string;
349
505
  }
350
506
 
507
+ export interface AgentWorkspaceResearchRunSummary {
508
+ readonly id: string;
509
+ readonly title: string;
510
+ readonly status: string;
511
+ readonly phase: string;
512
+ readonly progress: number;
513
+ readonly sourceIds: readonly string[];
514
+ readonly nextSteps: readonly string[];
515
+ readonly checkpointCount: number;
516
+ readonly logTail: readonly string[];
517
+ readonly updatedAt: string;
518
+ readonly note?: string;
519
+ readonly reportArtifactId?: string;
520
+ }
521
+
522
+ export interface AgentWorkspaceResearchContractSummary {
523
+ readonly status: string;
524
+ readonly label: string;
525
+ readonly next: string;
526
+ readonly route: string;
527
+ readonly details: readonly string[];
528
+ }
529
+
530
+ export interface AgentWorkspaceVibeSummary {
531
+ readonly status: 'ready' | 'attention' | 'needs-setup' | 'unavailable';
532
+ readonly applied: number;
533
+ readonly blocked: number;
534
+ readonly truncated: number;
535
+ readonly projectInitPath: string | null;
536
+ readonly globalInitPath: string | null;
537
+ readonly statusRoute: '/vibe status';
538
+ readonly initProjectRoute: '/vibe init';
539
+ readonly initGlobalRoute: '/vibe init --global';
540
+ readonly next: string;
541
+ }
542
+
543
+ export interface AgentWorkspaceProjectContextSummary {
544
+ readonly status: 'ready' | 'attention' | 'needs-setup' | 'unavailable';
545
+ readonly loaded: number;
546
+ readonly blocked: number;
547
+ readonly truncated: number;
548
+ readonly supportedSources: readonly string[];
549
+ readonly targetAware: boolean;
550
+ readonly catalogRoute: 'context action:"files"';
551
+ readonly inspectRoute: 'context action:"file"';
552
+ readonly next: string;
553
+ }
554
+
555
+ export interface AgentWorkspacePromptContextReceiptSummary {
556
+ readonly receiptId: string;
557
+ readonly turnId: string | null;
558
+ readonly source: string;
559
+ readonly provider: string;
560
+ readonly model: string;
561
+ readonly createdAt: number;
562
+ readonly activeRecords: number;
563
+ readonly suppressedRecords: number;
564
+ readonly segmentCount: number;
565
+ readonly approxPromptTokens: number;
566
+ readonly outcomeStatus: 'completed' | 'error' | 'cancelled' | 'pending';
567
+ readonly stopReason: string | null;
568
+ readonly completedAt: number | null;
569
+ readonly detail: string | null;
570
+ readonly inspectRoute: string;
571
+ readonly outcomeFilterRoute: string;
572
+ }
573
+
574
+ export interface AgentWorkspacePromptContextReceiptTimeline {
575
+ readonly status: 'ready' | 'empty' | 'unavailable';
576
+ readonly count: number;
577
+ readonly latestReceiptId: string | null;
578
+ readonly latestTurnId: string | null;
579
+ readonly completedCount: number;
580
+ readonly errorCount: number;
581
+ readonly cancelledCount: number;
582
+ readonly pendingCount: number;
583
+ readonly inspectRoute: 'context action:"prompt" includeParameters:true';
584
+ readonly filterRoutes: {
585
+ readonly completed: string;
586
+ readonly error: string;
587
+ readonly cancelled: string;
588
+ readonly pending: string;
589
+ };
590
+ readonly next: string;
591
+ readonly items: readonly AgentWorkspacePromptContextReceiptSummary[];
592
+ }
593
+
594
+ export interface AgentWorkspaceProcessSupervisionSummary {
595
+ readonly status: 'available' | 'unavailable';
596
+ readonly tracked: number;
597
+ readonly running: number;
598
+ readonly completed: number;
599
+ readonly stdinWriteStatus: 'supported-with-confirmation' | 'not-yet-supported';
600
+ readonly stdinMethod: string | null;
601
+ readonly ptyStatus: 'contract-discovered' | 'not-yet-supported';
602
+ readonly ptyMethod: string | null;
603
+ readonly sudoStatus: 'foreground-only';
604
+ readonly processRoute: string;
605
+ readonly capabilitiesRoute: string;
606
+ readonly visibleMonitorRoute: string;
607
+ readonly liveTailRoute: string;
608
+ }
609
+
351
610
  export interface AgentWorkspaceCompanionAccessSummary {
352
611
  readonly surface: 'goodvibes-agent';
353
612
  readonly hostUrl: string;
@@ -417,6 +676,30 @@ export interface AgentWorkspaceRuntimeSnapshot {
417
676
  readonly localNoteCount: number;
418
677
  readonly localNoteReviewQueueCount: number;
419
678
  readonly localNotes: readonly AgentWorkspaceLocalLibraryItem[];
679
+ readonly researchSourceCount: number;
680
+ readonly researchSourceCandidateCount: number;
681
+ readonly researchSourceReviewedCount: number;
682
+ readonly researchSourceRejectedCount: number;
683
+ readonly researchSourceUsedCount: number;
684
+ readonly researchRunCount: number;
685
+ readonly researchRunPlannedCount: number;
686
+ readonly researchRunRunningCount: number;
687
+ readonly researchRunPausedCount: number;
688
+ readonly researchRunBlockedCount: number;
689
+ readonly researchRunTerminalCount: number;
690
+ readonly researchRuns: readonly AgentWorkspaceResearchRunSummary[];
691
+ readonly researchBrowserRunnerContract: AgentWorkspaceResearchContractSummary;
692
+ readonly researchVisualReportContract: AgentWorkspaceResearchContractSummary;
693
+ readonly vibe: AgentWorkspaceVibeSummary;
694
+ readonly projectContext: AgentWorkspaceProjectContextSummary;
695
+ readonly promptContextReceipts: AgentWorkspacePromptContextReceiptTimeline;
696
+ readonly processSupervision: AgentWorkspaceProcessSupervisionSummary;
697
+ readonly recentReviewerHandoffArtifactCount: number;
698
+ readonly recentReviewerHandoffArtifacts: readonly AgentWorkspaceRecentReviewerHandoffArtifact[];
699
+ readonly reviewerReadinessBadge: AgentWorkspaceReviewerReadinessBadge;
700
+ readonly reviewPacketTimeline: AgentWorkspaceReviewPacketTimeline;
701
+ readonly reviewPacketDefaults: AgentWorkspaceReviewPacketDefaults;
702
+ readonly reviewPacketWizard: AgentWorkspaceReviewPacketWizard;
420
703
  readonly localRoutineCount: number;
421
704
  readonly enabledRoutineCount: number;
422
705
  readonly localRoutines: readonly AgentWorkspaceLocalLibraryItem[];
@@ -441,6 +724,7 @@ export interface AgentWorkspaceRuntimeSnapshot {
441
724
  readonly delegatedReviewPolicy: 'explicit-build-delegation-only';
442
725
  readonly companionAccess: AgentWorkspaceCompanionAccessSummary;
443
726
  readonly channels: readonly AgentWorkspaceChannelStatus[];
727
+ readonly channelSetupGuide: AgentWorkspaceChannelSetupGuide;
444
728
  readonly voiceProviderCount: number;
445
729
  readonly voiceStreamingProviderCount: number;
446
730
  readonly voiceSttProviderCount: number;
@@ -470,5 +754,6 @@ export interface AgentWorkspaceRuntimeSnapshot {
470
754
  readonly localStarterTemplateCount: number;
471
755
  readonly runtimeStarterTemplates: readonly AgentWorkspaceRuntimeStarterTemplateItem[];
472
756
  readonly setupChecklist: readonly AgentWorkspaceSetupChecklistItem[];
757
+ readonly setupWizard: AgentSetupWizard;
473
758
  readonly warnings: readonly string[];
474
759
  }
@@ -18,7 +18,8 @@ import { applyAgentWorkspaceLocalLibraryOperation } from './agent-workspace-loca
18
18
  import { deleteAgentWorkspaceMemoryEditor, submitAgentWorkspaceMemoryEditor } from './agent-workspace-memory-editor.ts';
19
19
  import { jumpAgentWorkspaceSelection, moveAgentWorkspaceSelection, selectAgentWorkspaceCategory } from './agent-workspace-navigation.ts';
20
20
  import { appendAgentWorkspaceActionSearchText, backspaceAgentWorkspaceActionSearch, beginAgentWorkspaceActionSearch, clearAgentWorkspaceActionSearch, commitAgentWorkspaceActionSearchSelection, searchAgentWorkspaceActions } from './agent-workspace-search.ts';
21
- import { agentWorkspaceSettingSchema, applyAgentWorkspaceSettingValue, buildAgentWorkspaceSettingActionEffect, importAgentWorkspaceTuiSettings, isAgentWorkspaceActionVisible } from './agent-workspace-settings.ts';
21
+ import { applyAgentWorkspaceSetupCheckpointAction } from './agent-workspace-setup-checkpoint-action.ts';
22
+ import { agentWorkspaceSettingSchema, applyAgentWorkspaceSettingValue, buildAgentWorkspaceSettingActionEffect, buildAgentWorkspaceSettingActionPreview, importAgentWorkspaceTuiSettings, isAgentWorkspaceActionVisible } from './agent-workspace-settings.ts';
22
23
  import { buildAgentWorkspaceRuntimeSnapshot } from './agent-workspace-snapshot.ts';
23
24
  import { submitAgentWorkspaceSubscriptionLoginFinishEditor, submitAgentWorkspaceSubscriptionLoginStartEditor, submitAgentWorkspaceSubscriptionLogoutEditor } from './agent-workspace-subscription-editor.ts';
24
25
  import type { AgentWorkspaceAction, AgentWorkspaceActionResult, AgentWorkspaceActionSearchResult, AgentWorkspaceCategory, AgentWorkspaceCommandDispatcher, AgentWorkspaceEditorField, AgentWorkspaceFocusPane, AgentWorkspaceLocalEditor, AgentWorkspaceLocalEditorKind, AgentWorkspaceLocalLibraryItem, AgentWorkspaceLocalOperation, AgentWorkspacePromptDispatcher, AgentWorkspaceRuntimeSnapshot } from './agent-workspace-types.ts';
@@ -141,6 +142,10 @@ export class AgentWorkspace {
141
142
  return selectedAgentWorkspaceLocalLibraryItem(this.runtimeSnapshot, this.selectedLibraryItemIndexes, kind);
142
143
  }
143
144
 
145
+ settingActionPreview(action: AgentWorkspaceAction): string | null {
146
+ return buildAgentWorkspaceSettingActionPreview(this.context, action);
147
+ }
148
+
144
149
  focusCategories(): void {
145
150
  this.focusPane = 'categories';
146
151
  }
@@ -402,6 +407,23 @@ export class AgentWorkspace {
402
407
  void this.importTuiSettingsAsync(requestRender);
403
408
  }
404
409
 
410
+ applySetupCheckpointAction(action: AgentWorkspaceAction, requestRender?: () => void): void {
411
+ applyAgentWorkspaceSetupCheckpointAction({
412
+ context: this.context,
413
+ runtimeSnapshot: this.runtimeSnapshot,
414
+ setRuntimeSnapshot: (snapshot) => {
415
+ this.runtimeSnapshot = snapshot;
416
+ },
417
+ setStatus: (status) => {
418
+ this.status = status;
419
+ },
420
+ setLastActionResult: (result) => {
421
+ this.lastActionResult = result;
422
+ },
423
+ clampSelection: () => this.clampSelection(),
424
+ }, action, requestRender);
425
+ }
426
+
405
427
  private selectedItemForOperation(operation: AgentWorkspaceLocalOperation): AgentWorkspaceLocalLibraryItem | null {
406
428
  if (operation.startsWith('memory-')) return this.selectedLocalLibraryItem('memory');
407
429
  if (operation.startsWith('note-')) return this.selectedLocalLibraryItem('note');
@@ -4,6 +4,7 @@ import type { ConversationManager } from '../core/conversation';
4
4
  import type { ConfigManager } from '../config/index.ts';
5
5
  import type { DeepReadonly, GoodVibesConfig } from '../config/index.ts';
6
6
  import type { ToolRegistry } from '@pellux/goodvibes-sdk/platform/tools';
7
+ import type { ProcessManager } from '@pellux/goodvibes-sdk/platform/tools';
7
8
  import type { PermissionRequestHandler } from '@pellux/goodvibes-sdk/platform/permissions';
8
9
  import type { SelectionItem, SelectionResult, SelectionAction } from './selection-modal.ts';
9
10
  import type { FileUndoManager } from '@pellux/goodvibes-sdk/platform/state';
@@ -17,10 +18,12 @@ import type { OpsApi } from '@/runtime/index.ts';
17
18
  import type { OperatorClient } from '@/runtime/index.ts';
18
19
  import type { PeerClient } from '@/runtime/index.ts';
19
20
  import type { DirectTransport } from '@/runtime/index.ts';
21
+ import type { AgentPromptContextReceiptStore } from '../agent/prompt-context-receipts.ts';
20
22
  import type { VoiceProviderRegistry, VoiceService } from '@pellux/goodvibes-sdk/platform/voice';
21
23
  import type { MediaProviderRegistry } from '@pellux/goodvibes-sdk/platform/media';
22
24
  import type { ArtifactStore } from '@pellux/goodvibes-sdk/platform/artifacts';
23
25
  import type { ChannelDeliveryRouter } from '@pellux/goodvibes-sdk/platform/channels';
26
+ import type { AgentExecutionLedger } from '../runtime/execution-ledger.ts';
24
27
  import type {
25
28
  CommandWorkspaceShellServices,
26
29
  } from '@/runtime/index.ts';
@@ -157,6 +160,7 @@ export interface CommandWorkspaceUiServices {
157
160
  keybindingsManager?: KeybindingsManager;
158
161
  fileUndoManager?: FileUndoManager;
159
162
  panelManager?: PanelManager;
163
+ processManager?: ProcessManager;
160
164
  profileManager?: import('@pellux/goodvibes-sdk/platform/profiles').ProfileManager;
161
165
  bookmarkManager?: import('@pellux/goodvibes-sdk/platform/bookmarks').BookmarkManager;
162
166
  projectPlanningService?: import('@pellux/goodvibes-sdk/platform/knowledge').ProjectPlanningService;
@@ -174,7 +178,7 @@ export interface CommandPlatformConfigServices {
174
178
  readonly voiceProviderRegistry?: VoiceProviderRegistry;
175
179
  readonly voiceService?: VoiceService;
176
180
  readonly mediaProviderRegistry?: MediaProviderRegistry;
177
- readonly artifactStore?: Pick<ArtifactStore, 'create'>;
181
+ readonly artifactStore?: Pick<ArtifactStore, 'create'> & Partial<Pick<ArtifactStore, 'get' | 'list' | 'readContent'>>;
178
182
  readonly channelDeliveryRouter?: Pick<ChannelDeliveryRouter, 'deliver' | 'listStrategies'>;
179
183
  }
180
184
 
@@ -183,7 +187,9 @@ export interface CommandPlatformServices
183
187
  CommandPlatformShellServices {}
184
188
 
185
189
  export interface CommandOpsServices
186
- extends CommandOpsShellServices {}
190
+ extends CommandOpsShellServices {
191
+ readonly executionLedger?: AgentExecutionLedger;
192
+ }
187
193
 
188
194
  export interface CommandExtensionRegistryServices {
189
195
  readonly toolRegistry: ToolRegistry;
@@ -215,6 +221,7 @@ export interface CommandContext
215
221
  readonly peer?: PeerClient;
216
222
  readonly providerApi?: ProviderApi;
217
223
  readonly agentKnowledgeApi?: KnowledgeApi;
224
+ readonly promptContextReceipts?: AgentPromptContextReceiptStore;
218
225
  readonly hookApi?: HookApi;
219
226
  readonly mcpApi?: McpApi;
220
227
  readonly opsApi?: OpsApi;
@@ -49,7 +49,8 @@ function templateLine(template: AgentRuntimeProfileTemplateSummary): string {
49
49
  ` persona ${template.personaName}`,
50
50
  ` skills ${template.skillNames.join(', ')}`,
51
51
  ` routines ${template.routineNames.join(', ')}`,
52
- ].join('\n');
52
+ template.vibeIncluded ? ' vibe included' : '',
53
+ ].filter(Boolean).join('\n');
53
54
  }
54
55
 
55
56
  function renderProfiles(homeDirectory: string): string {
@@ -106,7 +107,7 @@ function renderGuide(homeDirectory: string): string {
106
107
  ' /agent-profile templates',
107
108
  '2. Export a starter JSON file:',
108
109
  ' /agent-profile template export research ./agent-starter.json --yes',
109
- '3. Edit id, name, description, persona, skills, and routines in that JSON file.',
110
+ '3. Edit id, name, description, persona, skills, routines, and optional vibe in that JSON file.',
110
111
  '4. Import it into this Agent home:',
111
112
  ' /agent-profile template import ./agent-starter.json --yes',
112
113
  '5. Create an Agent profile from the imported starter:',
@@ -126,9 +127,10 @@ function renderTemplatePreview(homeDirectory: string, templateId: string): strin
126
127
  ` persona ${file.template.persona.name}`,
127
128
  ` skills ${file.template.skills.map((skill) => skill.name).join(', ')}`,
128
129
  ` routines ${file.template.routines.map((routine) => routine.name).join(', ')}`,
130
+ file.template.vibe ? ' vibe included' : '',
129
131
  '',
130
132
  'Export/edit/import to customize this starter:',
131
- ` /agent-profile template export ${file.template.id} ./agent-starter.json --yes`,
133
+ ` /agent-profile template export ${file.template.id} ./agent-starter.json --include-vibe --yes`,
132
134
  ].join('\n');
133
135
  }
134
136
 
@@ -242,17 +244,25 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
242
244
  const templateId = commandArgs[2];
243
245
  const pathArg = commandArgs[3];
244
246
  if (!templateId || !pathArg) {
245
- ctx.print('Usage: /agent-profile template export <id> <path> --yes');
247
+ ctx.print('Usage: /agent-profile template export <id> <path> [--include-vibe] --yes');
246
248
  return;
247
249
  }
248
250
  if (!parsed.yes) {
249
- requireYesFlag(ctx, `export Agent starter template ${templateId}`, '/agent-profile template export <id> <path> --yes');
251
+ requireYesFlag(ctx, `export Agent starter template ${templateId}`, '/agent-profile template export <id> <path> [--include-vibe] --yes');
250
252
  return;
251
253
  }
252
254
  const targetPath = shellPaths.resolveWorkspacePath(pathArg);
253
255
  mkdirSync(dirname(targetPath), { recursive: true });
254
- const template = exportAgentRuntimeProfileTemplate(homeDirectory, templateId, targetPath);
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`);
256
+ const template = exportAgentRuntimeProfileTemplate(homeDirectory, templateId, targetPath, {
257
+ includeVibe: commandArgs.includes('--include-vibe'),
258
+ shellPaths,
259
+ });
260
+ ctx.print([
261
+ `Agent starter template exported: ${template.id}`,
262
+ ` path ${template.path ?? targetPath}`,
263
+ template.vibeIncluded ? ' vibe included' : '',
264
+ ' edit it, then import it with /agent-profile template import <path> --yes',
265
+ ].filter(Boolean).join('\n'));
256
266
  return;
257
267
  }
258
268
  if (mode === 'import') {
@@ -273,7 +283,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
273
283
  if (mode === 'from-discovered' || mode === 'import-discovered') {
274
284
  const templateId = commandArgs[2];
275
285
  if (!templateId) {
276
- ctx.print('Usage: /agent-profile template from-discovered <id> [--name <name>] [--description <summary>] [--persona <name>] [--skills all|name,name] [--routines all|name,name] [--replace] --yes');
286
+ ctx.print('Usage: /agent-profile template from-discovered <id> [--name <name>] [--description <summary>] [--persona <name>] [--skills all|name,name] [--routines all|name,name] [--include-vibe] [--replace] --yes');
277
287
  return;
278
288
  }
279
289
  if (!parsed.yes) {
@@ -287,6 +297,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
287
297
  persona: parseFlag(commandArgs, '--persona'),
288
298
  skills: parseCsvFlag(commandArgs, '--skills'),
289
299
  routines: parseCsvFlag(commandArgs, '--routines'),
300
+ includeVibe: commandArgs.includes('--include-vibe'),
290
301
  replace: commandArgs.includes('--replace'),
291
302
  });
292
303
  ctx.print([
@@ -294,11 +305,12 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
294
305
  ` persona ${template.personaName}`,
295
306
  ` skills ${template.skillNames.join(', ')}`,
296
307
  ` routines ${template.routineNames.join(', ')}`,
308
+ template.vibeIncluded ? ' vibe included' : '',
297
309
  ` use /agent-profile create <name> --template ${template.id} --yes`,
298
- ].join('\n'));
310
+ ].filter(Boolean).join('\n'));
299
311
  return;
300
312
  }
301
- ctx.print('Usage: /agent-profile template [show <id>|export <id> <path> --yes|import <path> --yes|from-discovered <id> --yes]');
313
+ ctx.print('Usage: /agent-profile template [show <id>|export <id> <path> [--include-vibe] --yes|import <path> --yes|from-discovered <id> --yes]');
302
314
  return;
303
315
  }
304
316
 
@@ -318,6 +330,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
318
330
  `Agent profile created: ${profile.id}`,
319
331
  ` home ${profile.homeDirectory}`,
320
332
  profile.starterTemplateId ? ` starter: ${profile.starterTemplateId}` : '',
333
+ profile.starterTemplateApplication?.vibePath ? ` vibe ${profile.starterTemplateApplication.vibePath}` : '',
321
334
  ` launch goodvibes-agent --agent-profile ${profile.id}`,
322
335
  ].filter(Boolean).join('\n'));
323
336
  return;
@@ -326,7 +339,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
326
339
  if (sub === 'create-from-discovered' || sub === 'create-discovered') {
327
340
  const profileName = commandArgs[1];
328
341
  if (!profileName) {
329
- ctx.print('Usage: /agent-profile create-from-discovered <name> [--template-id <id>] [--profile-name <display>] [--description <summary>] [--persona <name>] [--skills all|name,name] [--routines all|name,name] [--replace] --yes');
342
+ ctx.print('Usage: /agent-profile create-from-discovered <name> [--template-id <id>] [--profile-name <display>] [--description <summary>] [--persona <name>] [--skills all|name,name] [--routines all|name,name] [--include-vibe] [--replace] --yes');
330
343
  return;
331
344
  }
332
345
  if (!parsed.yes) {
@@ -341,6 +354,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
341
354
  persona: parseFlag(commandArgs, '--persona'),
342
355
  skills: parseCsvFlag(commandArgs, '--skills'),
343
356
  routines: parseCsvFlag(commandArgs, '--routines'),
357
+ includeVibe: commandArgs.includes('--include-vibe'),
344
358
  replace: commandArgs.includes('--replace'),
345
359
  });
346
360
  ctx.print([
@@ -350,8 +364,9 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
350
364
  ` persona ${created.template.personaName}`,
351
365
  ` skills ${created.template.skillNames.join(', ')}`,
352
366
  ` routines ${created.template.routineNames.join(', ')}`,
367
+ created.template.vibeIncluded ? ' vibe included' : '',
353
368
  ` launch goodvibes-agent --agent-profile ${created.profile.id}`,
354
- ].join('\n'));
369
+ ].filter(Boolean).join('\n'));
355
370
  return;
356
371
  }
357
372
 
@@ -369,7 +384,7 @@ export function registerAgentRuntimeProfileRuntimeCommands(registry: CommandRegi
369
384
  return;
370
385
  }
371
386
 
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]');
387
+ ctx.print('Usage: /agent-profile [list|show <name>|default [<name>|clear] --yes|use <name> --yes|templates|guide|template show <id>|template export <id> <path> [--include-vibe] --yes|template import <path> --yes|create <name> [--template <id>] --yes|create-from-discovered <name> [--include-vibe] --yes|delete <name> --yes]');
373
388
  } catch (error) {
374
389
  ctx.print([
375
390
  'Error',