@pellux/goodvibes-agent 0.1.116 → 1.0.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 (285) hide show
  1. package/CHANGELOG.md +48 -661
  2. package/README.md +64 -57
  3. package/bin/goodvibes-agent.ts +16 -2
  4. package/dist/package/main.js +199180 -192185
  5. package/docs/README.md +15 -8
  6. package/docs/channels-remote-and-api.md +50 -0
  7. package/docs/connected-host.md +59 -0
  8. package/docs/getting-started.md +61 -50
  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 +48 -11
  13. package/docs/tools-and-commands.md +123 -0
  14. package/docs/voice-and-live-tts.md +51 -0
  15. package/package.json +3 -6
  16. package/src/agent/behavior-discovery-summary.ts +1 -3
  17. package/src/agent/channel-delivery.ts +201 -0
  18. package/src/agent/media-generation.ts +159 -0
  19. package/src/agent/memory-prompt.ts +0 -1
  20. package/src/agent/note-registry.ts +329 -0
  21. package/src/agent/operator-actions.ts +343 -0
  22. package/src/agent/persona-discovery.ts +1 -3
  23. package/src/agent/persona-registry.ts +19 -16
  24. package/src/agent/record-labels.ts +107 -0
  25. package/src/agent/reminder-schedule-format.ts +33 -24
  26. package/src/agent/reminder-schedule.ts +27 -26
  27. package/src/agent/routine-registry.ts +54 -14
  28. package/src/agent/routine-schedule-args.ts +2 -1
  29. package/src/agent/routine-schedule-format.ts +77 -53
  30. package/src/agent/routine-schedule-promotion.ts +35 -33
  31. package/src/agent/routine-schedule-receipts.ts +29 -27
  32. package/src/agent/runtime-profile-starters.ts +5 -5
  33. package/src/agent/runtime-profile.ts +91 -12
  34. package/src/agent/skill-registry.ts +210 -32
  35. package/src/cli/agent-knowledge-args.ts +5 -1
  36. package/src/cli/agent-knowledge-command.ts +40 -34
  37. package/src/cli/agent-knowledge-format.ts +80 -67
  38. package/src/cli/agent-knowledge-methods.ts +1 -1
  39. package/src/cli/agent-knowledge-runtime.ts +32 -26
  40. package/src/cli/bundle-command.ts +14 -9
  41. package/src/cli/config-overrides.ts +37 -36
  42. package/src/cli/entrypoint.ts +16 -7
  43. package/src/cli/external-runtime.ts +10 -4
  44. package/src/cli/help.ts +54 -29
  45. package/src/cli/local-library-command.ts +203 -83
  46. package/src/cli/management-commands.ts +105 -68
  47. package/src/cli/management.ts +55 -74
  48. package/src/cli/memory-command.ts +66 -32
  49. package/src/cli/parser.ts +37 -3
  50. package/src/cli/profiles-command.ts +166 -31
  51. package/src/cli/provider-auth-routes.ts +2 -1
  52. package/src/cli/routines-command.ts +176 -40
  53. package/src/cli/service-posture.ts +16 -16
  54. package/src/cli/status.ts +56 -135
  55. package/src/core/conversation-message-snapshot.ts +131 -0
  56. package/src/input/agent-workspace-access-command-editor-submission.ts +149 -0
  57. package/src/input/agent-workspace-access-command-editors.ts +170 -0
  58. package/src/input/agent-workspace-activation.ts +35 -8
  59. package/src/input/agent-workspace-basic-command-editor-submission.ts +351 -94
  60. package/src/input/agent-workspace-basic-command-editors.ts +502 -9
  61. package/src/input/agent-workspace-categories.ts +423 -51
  62. package/src/input/agent-workspace-channel-command-editor-submission.ts +83 -0
  63. package/src/input/agent-workspace-channel-command-editors.ts +65 -0
  64. package/src/input/agent-workspace-channels.ts +35 -2
  65. package/src/input/agent-workspace-command-editor.ts +41 -3
  66. package/src/input/agent-workspace-config-reader.ts +16 -0
  67. package/src/input/agent-workspace-delegation-editor-submission.ts +55 -0
  68. package/src/input/agent-workspace-editors.ts +166 -1
  69. package/src/input/agent-workspace-knowledge-command-editor-submission.ts +132 -0
  70. package/src/input/agent-workspace-knowledge-command-editors.ts +110 -0
  71. package/src/input/agent-workspace-knowledge-query-editor.ts +1 -1
  72. package/src/input/agent-workspace-learned-behavior.ts +67 -0
  73. package/src/input/agent-workspace-library-command-editor-submission.ts +50 -0
  74. package/src/input/agent-workspace-library-command-editors.ts +35 -0
  75. package/src/input/agent-workspace-local-operations.ts +218 -0
  76. package/src/input/agent-workspace-local-selection.ts +75 -0
  77. package/src/input/agent-workspace-mcp-command-editor-submission.ts +95 -0
  78. package/src/input/agent-workspace-media-command-editor-submission.ts +62 -0
  79. package/src/input/agent-workspace-media-command-editors.ts +27 -0
  80. package/src/input/agent-workspace-memory-command-editor-submission.ts +232 -0
  81. package/src/input/agent-workspace-memory-command-editors.ts +180 -0
  82. package/src/input/agent-workspace-memory-editor.ts +2 -2
  83. package/src/input/agent-workspace-navigation.ts +81 -0
  84. package/src/input/agent-workspace-notify-editor-submission.ts +121 -0
  85. package/src/input/agent-workspace-operations-command-editor-submission.ts +208 -0
  86. package/src/input/agent-workspace-operations-command-editors.ts +196 -0
  87. package/src/input/agent-workspace-panel-route.ts +43 -0
  88. package/src/input/agent-workspace-provider-command-editor-submission.ts +155 -0
  89. package/src/input/agent-workspace-provider-command-editors.ts +93 -0
  90. package/src/input/agent-workspace-reminder-schedule-editor.ts +1 -1
  91. package/src/input/agent-workspace-requirements.ts +11 -0
  92. package/src/input/agent-workspace-routine-schedule-editor.ts +2 -2
  93. package/src/input/agent-workspace-search.ts +169 -0
  94. package/src/input/agent-workspace-secret-editor-submission.ts +153 -0
  95. package/src/input/agent-workspace-session-command-editor-submission.ts +199 -0
  96. package/src/input/agent-workspace-session-command-editors.ts +249 -0
  97. package/src/input/agent-workspace-setup.ts +37 -16
  98. package/src/input/agent-workspace-skill-bundle-command-editor-submission.ts +101 -0
  99. package/src/input/agent-workspace-skill-bundle-command-editors.ts +110 -0
  100. package/src/input/agent-workspace-snapshot.ts +162 -21
  101. package/src/input/agent-workspace-task-command-editor-submission.ts +61 -0
  102. package/src/input/agent-workspace-task-command-editors.ts +47 -0
  103. package/src/input/agent-workspace-token.ts +18 -2
  104. package/src/input/agent-workspace-types.ts +212 -4
  105. package/src/input/agent-workspace-voice-media.ts +4 -7
  106. package/src/input/agent-workspace-web-research-editor.ts +104 -0
  107. package/src/input/agent-workspace-workplan-editor-submission.ts +153 -0
  108. package/src/input/agent-workspace.ts +178 -240
  109. package/src/input/command-registry.ts +5 -2
  110. package/src/input/commands/agent-runtime-profile-runtime.ts +126 -37
  111. package/src/input/commands/agent-skills-runtime.ts +149 -72
  112. package/src/input/commands/agent-workspace-runtime.ts +23 -6
  113. package/src/input/commands/brief-runtime.ts +55 -25
  114. package/src/input/commands/channels-runtime.ts +147 -33
  115. package/src/input/commands/compat-runtime.ts +32 -0
  116. package/src/input/commands/delegation-runtime.ts +29 -23
  117. package/src/input/commands/experience-runtime.ts +6 -4
  118. package/src/input/commands/guidance-runtime.ts +4 -4
  119. package/src/input/commands/health-runtime.ts +149 -126
  120. package/src/input/commands/knowledge.ts +82 -60
  121. package/src/input/commands/local-provider-runtime.ts +43 -21
  122. package/src/input/commands/local-runtime.ts +138 -16
  123. package/src/input/commands/local-setup-review.ts +10 -20
  124. package/src/input/commands/mcp-runtime.ts +63 -46
  125. package/src/input/commands/notify-runtime.ts +38 -9
  126. package/src/input/commands/operator-actions-runtime.ts +138 -0
  127. package/src/input/commands/operator-runtime.ts +6 -76
  128. package/src/input/commands/personas-runtime.ts +46 -31
  129. package/src/input/commands/planning-runtime.ts +1 -1
  130. package/src/input/commands/platform-access-runtime.ts +35 -98
  131. package/src/input/commands/product-runtime.ts +2 -2
  132. package/src/input/commands/provider-accounts-runtime.ts +60 -39
  133. package/src/input/commands/qrcode-runtime.ts +50 -9
  134. package/src/input/commands/recall-bundle.ts +11 -11
  135. package/src/input/commands/recall-capture.ts +13 -11
  136. package/src/input/commands/recall-query.ts +29 -21
  137. package/src/input/commands/recall-review.ts +2 -1
  138. package/src/input/commands/routines-runtime.ts +99 -45
  139. package/src/input/commands/runtime-services.ts +1 -14
  140. package/src/input/commands/schedule-runtime.ts +33 -20
  141. package/src/input/commands/security-runtime.ts +6 -11
  142. package/src/input/commands/session-content.ts +80 -78
  143. package/src/input/commands/session-workflow.ts +134 -104
  144. package/src/input/commands/session.ts +3 -174
  145. package/src/input/commands/shell-core.ts +38 -17
  146. package/src/input/commands/subscription-runtime.ts +54 -185
  147. package/src/input/commands/support-bundle-runtime.ts +53 -0
  148. package/src/input/commands/tasks-runtime.ts +21 -21
  149. package/src/input/commands/work-plan-runtime.ts +33 -8
  150. package/src/input/commands.ts +6 -2
  151. package/src/input/feed-context-factory.ts +2 -2
  152. package/src/input/file-picker.ts +3 -2
  153. package/src/input/handler-command-route.ts +4 -7
  154. package/src/input/handler-content-actions.ts +89 -26
  155. package/src/input/handler-feed-routes.ts +19 -12
  156. package/src/input/handler-feed.ts +6 -5
  157. package/src/input/handler-interactions.ts +9 -36
  158. package/src/input/handler-modal-stack.ts +3 -3
  159. package/src/input/handler-onboarding.ts +52 -91
  160. package/src/input/handler-shortcuts.ts +16 -7
  161. package/src/input/handler.ts +50 -23
  162. package/src/input/input-history.ts +5 -6
  163. package/src/input/keybindings.ts +27 -16
  164. package/src/input/mcp-workspace.ts +90 -26
  165. package/src/input/onboarding/handler-onboarding-routes.ts +3 -1
  166. package/src/input/onboarding/onboarding-wizard-apply.ts +62 -0
  167. package/src/input/onboarding/onboarding-wizard-constants.ts +1 -0
  168. package/src/input/onboarding/onboarding-wizard-helpers.ts +1 -1
  169. package/src/input/onboarding/onboarding-wizard-operator-steps.ts +223 -55
  170. package/src/input/onboarding/onboarding-wizard-steps.ts +59 -35
  171. package/src/input/onboarding/onboarding-wizard-types.ts +4 -1
  172. package/src/input/onboarding/onboarding-wizard.ts +87 -2
  173. package/src/input/profile-picker-modal.ts +31 -12
  174. package/src/input/session-picker-modal.ts +21 -4
  175. package/src/input/settings-modal-agent-policy.ts +6 -6
  176. package/src/input/settings-modal-behavior.ts +0 -3
  177. package/src/input/settings-modal-subscriptions.ts +3 -3
  178. package/src/input/settings-modal-types.ts +2 -13
  179. package/src/input/settings-modal.ts +20 -66
  180. package/src/input/submission-intent.ts +0 -1
  181. package/src/input/submission-router.ts +3 -3
  182. package/src/main.ts +18 -10
  183. package/src/panels/approval-panel.ts +8 -8
  184. package/src/panels/automation-control-panel.ts +4 -4
  185. package/src/panels/base-panel.ts +1 -1
  186. package/src/panels/builtin/agent.ts +1 -1
  187. package/src/panels/builtin/operations.ts +3 -12
  188. package/src/panels/builtin/session.ts +32 -24
  189. package/src/panels/builtin/shared.ts +7 -7
  190. package/src/panels/cost-tracker-panel.ts +1 -1
  191. package/src/panels/docs-panel.ts +5 -3
  192. package/src/panels/index.ts +0 -1
  193. package/src/panels/knowledge-panel.ts +6 -5
  194. package/src/panels/memory-panel.ts +7 -6
  195. package/src/panels/panel-list-panel.ts +36 -80
  196. package/src/panels/project-planning-panel.ts +19 -12
  197. package/src/panels/provider-account-snapshot.ts +51 -25
  198. package/src/panels/provider-accounts-panel.ts +33 -18
  199. package/src/panels/provider-health-domains.ts +48 -7
  200. package/src/panels/provider-health-panel.ts +5 -4
  201. package/src/panels/qr-panel.ts +44 -20
  202. package/src/panels/schedule-panel.ts +9 -17
  203. package/src/panels/security-panel.ts +8 -8
  204. package/src/panels/session-browser-panel.ts +10 -10
  205. package/src/panels/subscription-panel.ts +6 -6
  206. package/src/panels/system-messages-panel.ts +3 -3
  207. package/src/panels/tasks-panel.ts +21 -14
  208. package/src/panels/tool-inspector-panel.ts +19 -12
  209. package/src/panels/work-plan-panel.ts +5 -5
  210. package/src/planning/project-planning-coordinator.ts +3 -3
  211. package/src/provider-auth-route-display.ts +9 -0
  212. package/src/renderer/agent-workspace-style.ts +34 -0
  213. package/src/renderer/agent-workspace.ts +254 -57
  214. package/src/renderer/autocomplete-overlay.ts +25 -6
  215. package/src/renderer/block-actions.ts +1 -3
  216. package/src/renderer/bookmark-modal.ts +19 -4
  217. package/src/renderer/buffer.ts +4 -2
  218. package/src/renderer/context-inspector.ts +50 -13
  219. package/src/renderer/diff.ts +1 -1
  220. package/src/renderer/file-picker-overlay.ts +19 -6
  221. package/src/renderer/help-overlay.ts +112 -34
  222. package/src/renderer/history-search-overlay.ts +19 -4
  223. package/src/renderer/live-tail-modal.ts +27 -5
  224. package/src/renderer/mcp-workspace.ts +176 -43
  225. package/src/renderer/model-picker-overlay.ts +58 -3
  226. package/src/renderer/model-workspace.ts +104 -22
  227. package/src/renderer/onboarding/onboarding-wizard.ts +20 -4
  228. package/src/renderer/process-modal.ts +27 -6
  229. package/src/renderer/profile-picker-modal.ts +21 -5
  230. package/src/renderer/search-overlay.ts +25 -5
  231. package/src/renderer/selection-modal-overlay.ts +46 -14
  232. package/src/renderer/session-picker-modal.ts +18 -1
  233. package/src/renderer/settings-modal-helpers.ts +2 -40
  234. package/src/renderer/settings-modal.ts +88 -55
  235. package/src/renderer/system-message.ts +1 -1
  236. package/src/renderer/tool-call.ts +20 -11
  237. package/src/runtime/agent-runtime-events.ts +129 -0
  238. package/src/runtime/bootstrap-command-context.ts +7 -1
  239. package/src/runtime/bootstrap-command-parts.ts +11 -8
  240. package/src/runtime/bootstrap-core.ts +23 -65
  241. package/src/runtime/bootstrap-hook-bridge.ts +7 -18
  242. package/src/runtime/bootstrap-shell.ts +46 -8
  243. package/src/runtime/bootstrap.ts +36 -46
  244. package/src/runtime/connected-host-auth.ts +47 -0
  245. package/src/runtime/diagnostics/panels/index.ts +2 -2
  246. package/src/runtime/diagnostics/panels/panel-resources.ts +1 -1
  247. package/src/runtime/diagnostics/panels/policy.ts +7 -7
  248. package/src/runtime/index.ts +2 -5
  249. package/src/runtime/onboarding/apply-file-helpers.ts +66 -0
  250. package/src/runtime/onboarding/apply.ts +288 -74
  251. package/src/runtime/onboarding/derivation.ts +10 -13
  252. package/src/runtime/onboarding/snapshot.ts +2 -17
  253. package/src/runtime/onboarding/types.ts +34 -20
  254. package/src/runtime/onboarding/verify.ts +105 -4
  255. package/src/runtime/operator-token-cleanup.ts +3 -3
  256. package/src/runtime/services.ts +95 -11
  257. package/src/runtime/store/selectors/index.ts +3 -3
  258. package/src/runtime/store/state.ts +1 -4
  259. package/src/runtime/surface-feature-flags.ts +41 -6
  260. package/src/runtime/ui-read-models.ts +3 -4
  261. package/src/runtime/ui-services.ts +6 -6
  262. package/src/shell/blocking-input.ts +2 -1
  263. package/src/shell/service-settings-sync.ts +7 -7
  264. package/src/shell/ui-openers.ts +17 -38
  265. package/src/tools/agent-analysis-registry-policy.ts +0 -1
  266. package/src/tools/agent-channel-send-tool.ts +133 -0
  267. package/src/tools/agent-context-policy.ts +1 -1
  268. package/src/tools/agent-knowledge-ingest-tool.ts +405 -0
  269. package/src/tools/agent-knowledge-tool.ts +170 -0
  270. package/src/tools/agent-local-registry-tool.ts +279 -73
  271. package/src/tools/agent-media-generate-tool.ts +133 -0
  272. package/src/tools/agent-notify-tool.ts +143 -0
  273. package/src/tools/agent-operator-action-tool.ts +137 -0
  274. package/src/tools/agent-operator-briefing-tool.ts +217 -0
  275. package/src/tools/agent-reminder-schedule-tool.ts +237 -0
  276. package/src/tools/agent-tool-policy-guard.ts +13 -15
  277. package/src/tools/agent-work-plan-tool.ts +256 -0
  278. package/src/version.ts +1 -1
  279. package/docs/connected-services.md +0 -51
  280. package/src/cli/package-verification.ts +0 -274
  281. package/src/input/commands/policy-dispatch.ts +0 -339
  282. package/src/input/commands/policy.ts +0 -17
  283. package/src/panels/panel-picker.ts +0 -105
  284. package/src/panels/policy-panel.ts +0 -308
  285. package/src/renderer/panel-picker-overlay.ts +0 -202
@@ -0,0 +1,170 @@
1
+ import type { AgentWorkspaceEditorKind, AgentWorkspaceLocalEditor } from './agent-workspace-types.ts';
2
+
3
+ export type AgentWorkspaceAccessCommandEditorKind = Extract<
4
+ AgentWorkspaceEditorKind,
5
+ | 'auth-show'
6
+ | 'auth-repair'
7
+ | 'auth-bundle-export'
8
+ | 'auth-bundle-inspect'
9
+ | 'trust-bundle-export'
10
+ | 'trust-bundle-inspect'
11
+ | 'subscription-bundle-export'
12
+ | 'subscription-bundle-inspect'
13
+ | 'voice-enable'
14
+ | 'voice-disable'
15
+ | 'voice-bundle-export'
16
+ | 'voice-bundle-inspect'
17
+ >;
18
+
19
+ export function isAgentWorkspaceAccessCommandEditorKind(kind: AgentWorkspaceEditorKind): kind is AgentWorkspaceAccessCommandEditorKind {
20
+ return kind === 'auth-show'
21
+ || kind === 'auth-repair'
22
+ || kind === 'auth-bundle-export'
23
+ || kind === 'auth-bundle-inspect'
24
+ || kind === 'trust-bundle-export'
25
+ || kind === 'trust-bundle-inspect'
26
+ || kind === 'subscription-bundle-export'
27
+ || kind === 'subscription-bundle-inspect'
28
+ || kind === 'voice-enable'
29
+ || kind === 'voice-disable'
30
+ || kind === 'voice-bundle-export'
31
+ || kind === 'voice-bundle-inspect';
32
+ }
33
+
34
+ export function createAgentWorkspaceAccessCommandEditor(kind: AgentWorkspaceAccessCommandEditorKind): AgentWorkspaceLocalEditor {
35
+ if (kind === 'auth-show') {
36
+ return {
37
+ kind,
38
+ mode: 'create',
39
+ title: 'Inspect Provider Auth',
40
+ selectedFieldIndex: 0,
41
+ message: 'Inspect one provider auth route without printing token values.',
42
+ fields: [
43
+ { id: 'provider', label: 'Provider', value: 'openai', required: true, multiline: false, hint: 'Provider id, such as openai.' },
44
+ ],
45
+ };
46
+ }
47
+ if (kind === 'auth-repair') {
48
+ return {
49
+ kind,
50
+ mode: 'create',
51
+ title: 'Review Provider Auth Repair',
52
+ selectedFieldIndex: 0,
53
+ message: 'Show provider auth repair guidance without storing tokens or starting login.',
54
+ fields: [
55
+ { id: 'provider', label: 'Provider', value: 'openai', required: true, multiline: false, hint: 'Provider id to inspect.' },
56
+ ],
57
+ };
58
+ }
59
+ if (kind === 'auth-bundle-export') {
60
+ return {
61
+ kind,
62
+ mode: 'create',
63
+ title: 'Export Auth Review Bundle',
64
+ selectedFieldIndex: 0,
65
+ message: 'Export a redacted auth review bundle. Type yes on the final field to confirm.',
66
+ fields: [
67
+ { id: 'path', label: 'Output path', value: 'auth-review-bundle.json', required: true, multiline: false, hint: 'Workspace-relative JSON path to write.' },
68
+ { id: 'confirm', label: 'Confirm', value: '', required: true, multiline: false, hint: 'Type yes to run /auth bundle export with --yes.' },
69
+ ],
70
+ };
71
+ }
72
+ if (kind === 'auth-bundle-inspect') {
73
+ return {
74
+ kind,
75
+ mode: 'create',
76
+ title: 'Inspect Auth Review Bundle',
77
+ selectedFieldIndex: 0,
78
+ message: 'Inspect a redacted auth review bundle before import or sharing.',
79
+ fields: [
80
+ { id: 'path', label: 'Bundle path', value: 'auth-review-bundle.json', required: true, multiline: false, hint: 'Workspace-relative auth bundle JSON path.' },
81
+ ],
82
+ };
83
+ }
84
+ if (kind === 'trust-bundle-export') {
85
+ return {
86
+ kind,
87
+ mode: 'create',
88
+ title: 'Export Trust Bundle',
89
+ selectedFieldIndex: 0,
90
+ message: 'Export a redacted trust review bundle. Type yes on the final field to confirm.',
91
+ fields: [
92
+ { id: 'path', label: 'Output path', value: 'trust-review-bundle.json', required: true, multiline: false, hint: 'Workspace-relative JSON path to write.' },
93
+ { id: 'confirm', label: 'Confirm', value: '', required: true, multiline: false, hint: 'Type yes to run /trust bundle export with --yes.' },
94
+ ],
95
+ };
96
+ }
97
+ if (kind === 'trust-bundle-inspect') {
98
+ return {
99
+ kind,
100
+ mode: 'create',
101
+ title: 'Inspect Trust Bundle',
102
+ selectedFieldIndex: 0,
103
+ message: 'Inspect a trust review bundle before using it for setup review.',
104
+ fields: [
105
+ { id: 'path', label: 'Bundle path', value: 'trust-review-bundle.json', required: true, multiline: false, hint: 'Workspace-relative trust bundle JSON path.' },
106
+ ],
107
+ };
108
+ }
109
+ if (kind === 'subscription-bundle-export') {
110
+ return {
111
+ kind,
112
+ mode: 'create',
113
+ title: 'Export Subscription Bundle',
114
+ selectedFieldIndex: 0,
115
+ message: 'Export a redacted provider subscription bundle. Type yes on the final field to confirm.',
116
+ fields: [
117
+ { id: 'path', label: 'Output path', value: 'subscription-bundle.json', required: true, multiline: false, hint: 'Workspace-relative JSON path to write.' },
118
+ { id: 'confirm', label: 'Confirm', value: '', required: true, multiline: false, hint: 'Type yes to run /subscription bundle export with --yes.' },
119
+ ],
120
+ };
121
+ }
122
+ if (kind === 'subscription-bundle-inspect') {
123
+ return {
124
+ kind,
125
+ mode: 'create',
126
+ title: 'Inspect Subscription Bundle',
127
+ selectedFieldIndex: 0,
128
+ message: 'Inspect a provider subscription bundle before setup review.',
129
+ fields: [
130
+ { id: 'path', label: 'Bundle path', value: 'subscription-bundle.json', required: true, multiline: false, hint: 'Workspace-relative subscription bundle JSON path.' },
131
+ ],
132
+ };
133
+ }
134
+ if (kind === 'voice-enable' || kind === 'voice-disable') {
135
+ const enabling = kind === 'voice-enable';
136
+ return {
137
+ kind,
138
+ mode: 'update',
139
+ title: enabling ? 'Enable Voice Interaction' : 'Disable Voice Interaction',
140
+ selectedFieldIndex: 0,
141
+ message: `${enabling ? 'Enable' : 'Disable'} local voice interaction for this Agent runtime. Type yes to confirm.`,
142
+ fields: [
143
+ { id: 'confirm', label: 'Confirm', value: '', required: true, multiline: false, hint: `Type yes to run /voice ${enabling ? 'enable' : 'disable'} with --yes.` },
144
+ ],
145
+ };
146
+ }
147
+ if (kind === 'voice-bundle-export') {
148
+ return {
149
+ kind,
150
+ mode: 'create',
151
+ title: 'Export Voice Bundle',
152
+ selectedFieldIndex: 0,
153
+ message: 'Export a voice setup bundle. Type yes on the final field to confirm.',
154
+ fields: [
155
+ { id: 'path', label: 'Output path', value: 'voice-bundle.json', required: true, multiline: false, hint: 'Workspace-relative JSON path to write.' },
156
+ { id: 'confirm', label: 'Confirm', value: '', required: true, multiline: false, hint: 'Type yes to run /voice bundle export with --yes.' },
157
+ ],
158
+ };
159
+ }
160
+ return {
161
+ kind,
162
+ mode: 'create',
163
+ title: 'Inspect Voice Bundle',
164
+ selectedFieldIndex: 0,
165
+ message: 'Inspect a voice setup bundle before setup review.',
166
+ fields: [
167
+ { id: 'path', label: 'Bundle path', value: 'voice-bundle.json', required: true, multiline: false, hint: 'Workspace-relative voice bundle JSON path.' },
168
+ ],
169
+ };
170
+ }
@@ -1,8 +1,9 @@
1
- import { createLocalEditor, createProfileEditor } from './agent-workspace-editors.ts';
1
+ import { createLearnedBehaviorEditor, createLocalEditor, createProfileEditor } from './agent-workspace-editors.ts';
2
2
  import { createAgentWorkspaceBasicCommandEditor, isAgentWorkspaceBasicCommandEditorKind } from './agent-workspace-basic-command-editors.ts';
3
3
  import { createAgentKnowledgeQueryEditor } from './agent-workspace-knowledge-query-editor.ts';
4
4
  import { createReminderScheduleEditor } from './agent-workspace-reminder-schedule-editor.ts';
5
5
  import { createRoutineScheduleEditor } from './agent-workspace-routine-schedule-editor.ts';
6
+ import { createAgentWorkspaceWebResearchEditor } from './agent-workspace-web-research-editor.ts';
6
7
  import { parseSlashCommand } from './slash-command-parser.ts';
7
8
  import type {
8
9
  AgentWorkspaceActionResult,
@@ -35,6 +36,7 @@ interface AgentWorkspaceActivationHost {
35
36
  applyLocalLibraryOperation(operation: AgentWorkspaceLocalOperation): void;
36
37
  hasCommandDispatch(): boolean;
37
38
  dispatchWorkspaceCommand: AgentWorkspaceCommandDispatcher;
39
+ commitActionSearchSelection(): boolean;
38
40
  }
39
41
 
40
42
  export function activateAgentWorkspaceSelection(
@@ -49,15 +51,27 @@ export function activateAgentWorkspaceSelection(
49
51
  workspace.focusActions();
50
52
  return;
51
53
  }
54
+ if (!workspace.commitActionSearchSelection()) return;
52
55
  const action = workspace.selectedAction;
53
56
  if (!action) return;
54
57
  if (action.kind === 'editor' && action.editorKind) {
55
- workspace.localEditor = createWorkspaceEditor(workspace, action.editorKind);
56
- workspace.status = `Editing ${workspace.localEditor.title}.`;
58
+ const editor = createWorkspaceEditor(workspace, action.editorKind);
59
+ if (!editor) {
60
+ workspace.status = `Editor unavailable: ${action.editorKind}.`;
61
+ workspace.lastActionResult = {
62
+ kind: 'error',
63
+ title: 'Editor unavailable',
64
+ detail: `No Agent workspace editor exists for ${action.editorKind}.`,
65
+ safety: action.safety,
66
+ };
67
+ return;
68
+ }
69
+ workspace.localEditor = editor;
70
+ workspace.status = `Editing ${editor.title}.`;
57
71
  workspace.lastActionResult = {
58
72
  kind: 'guidance',
59
- title: workspace.localEditor.title,
60
- detail: workspace.localEditor.message,
73
+ title: editor.title,
74
+ detail: editor.message,
61
75
  safety: action.safety,
62
76
  };
63
77
  return;
@@ -131,15 +145,28 @@ export function activateAgentWorkspaceSelection(
131
145
 
132
146
  function createWorkspaceEditor(
133
147
  workspace: AgentWorkspaceActivationHost,
134
- editorKind: AgentWorkspaceCategory['actions'][number]['editorKind'],
135
- ): AgentWorkspaceLocalEditor {
148
+ editorKind: NonNullable<AgentWorkspaceCategory['actions'][number]['editorKind']>,
149
+ ): AgentWorkspaceLocalEditor | null {
136
150
  if (editorKind === 'profile') return createProfileEditor(workspace.runtimeSnapshot?.runtimeStarterTemplates ?? []);
151
+ if (editorKind === 'learned-behavior') return createLearnedBehaviorEditor();
152
+ if (editorKind === 'web-research') return createAgentWorkspaceWebResearchEditor('research');
153
+ if (editorKind === 'web-fetch') return createAgentWorkspaceWebResearchEditor('fetch');
137
154
  if (editorKind && isAgentWorkspaceBasicCommandEditorKind(editorKind)) return createAgentWorkspaceBasicCommandEditor(editorKind);
138
155
  if (editorKind === 'knowledge-ask') return createAgentKnowledgeQueryEditor('ask');
139
156
  if (editorKind === 'knowledge-search') return createAgentKnowledgeQueryEditor('search');
140
157
  if (editorKind === 'reminder-schedule') return createReminderScheduleEditor();
141
158
  if (editorKind === 'routine-schedule') return createRoutineScheduleEditor(workspace.selectedLocalLibraryItem('routine'));
142
- return createLocalEditor(editorKind ?? 'memory');
159
+ if (
160
+ editorKind === 'memory'
161
+ || editorKind === 'note'
162
+ || editorKind === 'persona'
163
+ || editorKind === 'skill'
164
+ || editorKind === 'routine'
165
+ || editorKind === 'knowledge-url'
166
+ ) {
167
+ return createLocalEditor(editorKind);
168
+ }
169
+ return null;
143
170
  }
144
171
 
145
172
  function handleGuidanceOrWorkspaceAction(