@pellux/goodvibes-agent 1.4.3 → 1.5.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.
- package/CHANGELOG.md +24 -0
- package/README.md +7 -7
- package/dist/package/main.js +7450 -12285
- package/docs/README.md +2 -2
- package/docs/channels-remote-and-api.md +1 -1
- package/docs/getting-started.md +2 -2
- package/docs/release-and-publishing.md +1 -1
- package/docs/tools-and-commands.md +5 -5
- package/package.json +4 -2
- package/release/performance-snapshot.json +2 -2
- package/release/release-notes.md +11 -7
- package/release/release-readiness.json +6 -6
- package/src/agent/behavior-discovery-summary.ts +4 -18
- package/src/agent/calendar-registry.ts +322 -0
- package/src/agent/competitive-feature-inventory.ts +268 -130
- package/src/agent/document-registry.ts +5 -1
- package/src/agent/email/email-service.ts +350 -0
- package/src/agent/email/imap-client.ts +596 -0
- package/src/agent/email/smtp-client.ts +453 -0
- package/src/agent/ics-calendar.ts +662 -0
- package/src/agent/ics-timezone.ts +172 -0
- package/src/agent/markdown-frontmatter.ts +31 -0
- package/src/agent/memory-safety.ts +1 -1
- package/src/agent/note-registry.ts +3 -9
- package/src/agent/persona-discovery.ts +3 -15
- package/src/agent/persona-registry.ts +1 -10
- package/src/agent/research-source-registry.ts +5 -1
- package/src/agent/routine-discovery.ts +3 -15
- package/src/agent/runtime-profile.ts +3 -0
- package/src/agent/skill-discovery.ts +3 -15
- package/src/agent/skill-draft-proposer.ts +203 -0
- package/src/agent/skill-draft-runner.ts +201 -0
- package/src/agent/skill-registry.ts +36 -1
- package/src/agent/skill-standard.ts +99 -0
- package/src/agent/vibe-file.ts +7 -22
- package/src/cli/completion.ts +1 -1
- package/src/cli/config-overrides.ts +10 -1
- package/src/cli/redaction.ts +17 -5
- package/src/config/provider-model.ts +2 -1
- package/src/config/secret-config.ts +13 -6
- package/src/core/activity-feed.ts +97 -0
- package/src/core/away-digest.ts +161 -0
- package/src/core/conversation-rendering.ts +7 -3
- package/src/core/conversation.ts +22 -15
- package/src/core/hardware-profile.ts +362 -0
- package/src/core/last-seen-store.ts +78 -0
- package/src/core/plain-language.ts +52 -0
- package/src/core/setup-incomplete-hint.ts +90 -0
- package/src/core/system-message-router.ts +38 -87
- package/src/input/agent-workspace-basic-command-editor-submission.ts +60 -220
- package/src/input/agent-workspace-basic-command-editors.ts +39 -141
- package/src/input/agent-workspace-categories.ts +63 -158
- package/src/input/agent-workspace-command-editor.ts +4 -0
- package/src/input/agent-workspace-host-category.ts +0 -5
- package/src/input/agent-workspace-local-editor-submission.ts +3 -1
- package/src/input/agent-workspace-navigation.ts +10 -3
- package/src/input/agent-workspace-onboarding-actions.ts +132 -0
- package/src/input/agent-workspace-onboarding-categories.ts +29 -26
- package/src/input/agent-workspace-onboarding-finish.ts +11 -4
- package/src/input/agent-workspace-onboarding-state.ts +111 -0
- package/src/input/agent-workspace-profile-editor-submission.ts +260 -0
- package/src/input/agent-workspace-profile-editors.ts +155 -0
- package/src/input/agent-workspace-subscription-editor.ts +7 -0
- package/src/input/agent-workspace-types.ts +5 -1
- package/src/input/agent-workspace.ts +65 -39
- package/src/input/command-registry.ts +18 -5
- package/src/input/commands/agent-runtime-profile-runtime.ts +2 -1
- package/src/input/commands/agent-skills-runtime.ts +60 -3
- package/src/input/commands/calendar-runtime.ts +209 -0
- package/src/input/commands/channels-runtime.ts +1 -0
- package/src/input/commands/command-error.ts +9 -0
- package/src/input/commands/compat-runtime.ts +1 -0
- package/src/input/commands/config.ts +1 -0
- package/src/input/commands/conversation-runtime.ts +1 -1
- package/src/input/commands/delegation-runtime.ts +5 -6
- package/src/input/commands/email-runtime.ts +387 -0
- package/src/input/commands/experience-runtime.ts +17 -4
- package/src/input/commands/guidance-runtime.ts +1 -1
- package/src/input/commands/health-runtime.ts +6 -1
- package/src/input/commands/knowledge-format.ts +73 -0
- package/src/input/commands/knowledge.ts +9 -74
- package/src/input/commands/local-provider-runtime.ts +2 -1
- package/src/input/commands/local-runtime.ts +10 -4
- package/src/input/commands/mcp-runtime.ts +7 -0
- package/src/input/commands/notify-runtime.ts +17 -1
- package/src/input/commands/onboarding-runtime.ts +1 -0
- package/src/input/commands/operator-actions-runtime.ts +1 -0
- package/src/input/commands/operator-runtime.ts +3 -0
- package/src/input/commands/personas-runtime.ts +1 -0
- package/src/input/commands/platform-access-runtime.ts +40 -17
- package/src/input/commands/product-runtime.ts +6 -1
- package/src/input/commands/provider-accounts-runtime.ts +3 -2
- package/src/input/commands/qrcode-runtime.ts +1 -0
- package/src/input/commands/routines-runtime.ts +1 -0
- package/src/input/commands/runtime-services.ts +0 -13
- package/src/input/commands/security-runtime.ts +1 -0
- package/src/input/commands/session-content.ts +1 -0
- package/src/input/commands/shell-core.ts +5 -2
- package/src/input/commands/subscription-runtime.ts +33 -9
- package/src/input/commands/support-bundle-runtime.ts +8 -1
- package/src/input/commands/tasks-runtime.ts +1 -0
- package/src/input/commands/tts-runtime.ts +1 -0
- package/src/input/commands/vibe-runtime.ts +1 -0
- package/src/input/commands.ts +4 -0
- package/src/input/feed-context-factory.ts +3 -12
- package/src/input/handler-command-route.ts +7 -60
- package/src/input/handler-feed-routes.ts +0 -194
- package/src/input/handler-feed.ts +2 -54
- package/src/input/handler-interactions.ts +0 -2
- package/src/input/handler-modal-stack.ts +0 -9
- package/src/input/handler-picker-routes.ts +24 -1
- package/src/input/handler-shortcuts.ts +11 -40
- package/src/input/handler-ui-state.ts +13 -0
- package/src/input/handler.ts +8 -35
- package/src/input/keybindings.ts +40 -17
- package/src/input/model-picker-local-fit.ts +130 -0
- package/src/input/submission-router.ts +0 -5
- package/src/main.ts +111 -89
- package/src/renderer/activity-sidebar.ts +186 -0
- package/src/renderer/agent-workspace-context-lines.ts +5 -48
- package/src/renderer/agent-workspace-style.ts +1 -1
- package/src/renderer/agent-workspace.ts +14 -2
- package/src/renderer/compositor.ts +37 -125
- package/src/renderer/conversation-overlays.ts +3 -3
- package/src/renderer/help-overlay.ts +7 -5
- package/src/renderer/model-workspace.ts +101 -86
- package/src/{panels → renderer}/polish.ts +3 -3
- package/src/renderer/shell-surface.ts +4 -5
- package/src/renderer/status-token.ts +31 -11
- package/src/renderer/tab-strip.ts +1 -1
- package/src/renderer/tool-call.ts +7 -8
- package/src/renderer/tool-labels.ts +92 -0
- package/src/renderer/ui-factory.ts +48 -96
- package/src/runtime/bootstrap-command-context.ts +0 -5
- package/src/runtime/bootstrap-command-parts.ts +6 -15
- package/src/runtime/bootstrap-core.ts +34 -13
- package/src/runtime/bootstrap-hook-bridge.ts +3 -1
- package/src/runtime/bootstrap-shell.ts +3 -50
- package/src/runtime/bootstrap.ts +3 -4
- package/src/runtime/context.ts +1 -1
- package/src/runtime/diagnostics/panels/index.ts +0 -1
- package/src/runtime/diagnostics/panels/policy.ts +1 -1
- package/src/runtime/execution-ledger.ts +16 -1
- package/src/runtime/index.ts +6 -1
- package/src/runtime/onboarding/index.ts +1 -0
- package/src/runtime/onboarding/onboarding-state.ts +200 -0
- package/src/{panels → runtime}/provider-account-snapshot.ts +5 -2
- package/src/runtime/services.ts +16 -4
- package/src/runtime/terminal-output-guard.ts +7 -0
- package/src/runtime/tool-permission-safety.ts +1 -1
- package/src/runtime/ui/model-picker/data-provider.ts +1 -1
- package/src/runtime/ui/model-picker/health-enrichment.ts +2 -2
- package/src/runtime/ui/model-picker/types.ts +2 -2
- package/src/runtime/ui/provider-health/data-provider.ts +3 -3
- package/src/runtime/ui/provider-health/types.ts +2 -2
- package/src/runtime/ui-services.ts +0 -2
- package/src/shell/agent-workspace-fullscreen.ts +0 -1
- package/src/shell/autonomy-surfacing.ts +272 -0
- package/src/shell/session-continuity-hints.ts +0 -6
- package/src/shell/startup-wiring.ts +221 -0
- package/src/shell/ui-openers.ts +18 -29
- package/src/tools/agent-context-policy.ts +1 -1
- package/src/tools/agent-harness-background-processes.ts +4 -4
- package/src/tools/agent-harness-browser-cockpit-route.ts +3 -3
- package/src/tools/agent-harness-command-runner.ts +6 -1
- package/src/tools/agent-harness-document-ops.ts +26 -53
- package/src/tools/agent-harness-execution-history.ts +1 -13
- package/src/tools/agent-harness-execution-posture.ts +0 -15
- package/src/tools/agent-harness-keybinding-metadata.ts +28 -29
- package/src/tools/agent-harness-local-model-cookbook.ts +24 -1
- package/src/tools/agent-harness-metadata.ts +16 -0
- package/src/tools/agent-harness-mode-catalog.ts +2 -9
- package/src/tools/agent-harness-provider-account-metadata.ts +2 -2
- package/src/tools/agent-harness-setup-posture-utils.ts +1 -1
- package/src/tools/agent-harness-tool-schema.ts +13 -14
- package/src/tools/agent-harness-tool.ts +27 -23
- package/src/tools/agent-harness-ui-surface-metadata.ts +10 -20
- package/src/tools/agent-harness-workspace-action-runner.ts +3 -4
- package/src/tools/agent-workspace-tool.ts +2 -33
- package/src/utils/terminal-width.ts +9 -3
- package/src/version.ts +1 -1
- package/src/input/agent-workspace-panel-route.ts +0 -44
- package/src/input/panel-integration-actions.ts +0 -26
- package/src/panels/approval-panel.ts +0 -149
- package/src/panels/automation-control-panel.ts +0 -212
- package/src/panels/base-panel.ts +0 -254
- package/src/panels/builtin/agent.ts +0 -58
- package/src/panels/builtin/knowledge.ts +0 -26
- package/src/panels/builtin/operations.ts +0 -121
- package/src/panels/builtin/session.ts +0 -138
- package/src/panels/builtin/shared.ts +0 -275
- package/src/panels/builtin/usage.ts +0 -21
- package/src/panels/builtin-panels.ts +0 -23
- package/src/panels/confirm-state.ts +0 -61
- package/src/panels/context-visualizer-panel.ts +0 -204
- package/src/panels/cost-tracker-panel.ts +0 -444
- package/src/panels/docs-panel.ts +0 -285
- package/src/panels/index.ts +0 -25
- package/src/panels/knowledge-panel.ts +0 -417
- package/src/panels/memory-panel.ts +0 -226
- package/src/panels/panel-list-panel.ts +0 -464
- package/src/panels/panel-manager.ts +0 -570
- package/src/panels/provider-accounts-panel.ts +0 -233
- package/src/panels/provider-health-domains.ts +0 -208
- package/src/panels/provider-health-panel.ts +0 -720
- package/src/panels/provider-health-tracker.ts +0 -115
- package/src/panels/provider-stats-panel.ts +0 -366
- package/src/panels/qr-panel.ts +0 -207
- package/src/panels/schedule-panel.ts +0 -321
- package/src/panels/scrollable-list-panel.ts +0 -491
- package/src/panels/search-focus.ts +0 -32
- package/src/panels/security-panel.ts +0 -295
- package/src/panels/session-browser-panel.ts +0 -395
- package/src/panels/session-maintenance.ts +0 -125
- package/src/panels/subscription-panel.ts +0 -263
- package/src/panels/system-messages-panel.ts +0 -230
- package/src/panels/tasks-panel.ts +0 -344
- package/src/panels/thinking-panel.ts +0 -304
- package/src/panels/token-budget-panel.ts +0 -475
- package/src/panels/tool-inspector-panel.ts +0 -436
- package/src/panels/types.ts +0 -54
- package/src/renderer/panel-composite.ts +0 -158
- package/src/renderer/panel-tab-bar.ts +0 -69
- package/src/renderer/panel-workspace-bar.ts +0 -42
- package/src/runtime/diagnostics/panels/panel-resources.ts +0 -118
- package/src/tools/agent-harness-panel-metadata.ts +0 -211
- /package/src/runtime/perf/{panel-health-monitor.ts → component-health.ts} +0 -0
|
@@ -8,30 +8,30 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
8
8
|
id: 'home',
|
|
9
9
|
group: 'START',
|
|
10
10
|
label: 'Home',
|
|
11
|
-
summary: '
|
|
12
|
-
detail: '
|
|
11
|
+
summary: 'Everything the assistant can do, one lane per kind of work.',
|
|
12
|
+
detail: 'Pick the lane that matches what you want, or just close this and type. Every page here is also reachable later.',
|
|
13
13
|
actions: [
|
|
14
|
-
{ id: 'chat', label: '
|
|
15
|
-
{ id: 'assistant-setup-lane', label: '
|
|
16
|
-
{ id: 'assistant-
|
|
17
|
-
{ id: 'assistant-
|
|
18
|
-
{ id: 'assistant-
|
|
19
|
-
{ id: 'assistant-
|
|
20
|
-
{ id: 'assistant-
|
|
21
|
-
{ id: 'assistant-
|
|
22
|
-
{ id: 'assistant-
|
|
23
|
-
{ id: 'mode-preset', label: 'Set interaction mode', detail: '
|
|
24
|
-
{ id: 'learned-behavior-home', label: 'Capture learned behavior', detail: 'Save a reviewed lesson, workflow, or operating style as a local skill, routine, or persona.', editorKind: 'learned-behavior', kind: 'editor', safety: 'safe' },
|
|
14
|
+
{ id: 'chat', label: 'Just start typing', detail: 'Close this workspace and ask for anything — research, reminders, email, documents, or scheduling.', kind: 'guidance', safety: 'safe' },
|
|
15
|
+
{ id: 'assistant-setup-lane', label: 'Finish setting up', detail: 'Sign in, pick a model, and connect the basics.', targetCategoryId: 'setup', kind: 'workspace', safety: 'safe' },
|
|
16
|
+
{ id: 'assistant-personal-ops-lane', label: 'Inbox, calendar & reminders', detail: 'Daily personal operations in one place.', targetCategoryId: 'personal-ops', kind: 'workspace', safety: 'safe' },
|
|
17
|
+
{ id: 'assistant-research-docs-lane', label: 'Research something', detail: 'Web research with visible runs, sources, and saved reports.', targetCategoryId: 'research', kind: 'workspace', safety: 'safe' },
|
|
18
|
+
{ id: 'assistant-documents-lane', label: 'Documents & files', detail: 'Drafts, exports, saved files, and model comparisons.', targetCategoryId: 'documents', kind: 'workspace', safety: 'safe' },
|
|
19
|
+
{ id: 'assistant-automation-lane', label: 'Schedules & automation', detail: 'Reminders, routines, and scheduled work.', targetCategoryId: 'automation', kind: 'workspace', safety: 'safe' },
|
|
20
|
+
{ id: 'assistant-messaging-lane', label: 'Messaging & notifications', detail: 'Connect Slack, Discord, Telegram, and more; send messages and notifications.', targetCategoryId: 'onboarding-channels', kind: 'workspace', safety: 'safe' },
|
|
21
|
+
{ id: 'assistant-memory-lane', label: 'Memory & personality', detail: 'What the assistant remembers and how it behaves.', targetCategoryId: 'memory', kind: 'workspace', safety: 'safe' },
|
|
22
|
+
{ id: 'assistant-work-lane', label: 'Approvals & running work', detail: 'Pending approvals, background processes, and host tasks.', targetCategoryId: 'work', kind: 'workspace', safety: 'read-only' },
|
|
23
|
+
{ id: 'mode-preset', label: 'Set interaction mode', detail: 'Choose quiet, balanced, or operator mode for how much the assistant checks in.', editorKind: 'mode-preset', kind: 'editor', safety: 'safe' },
|
|
25
24
|
],
|
|
26
25
|
},
|
|
27
26
|
{
|
|
28
27
|
id: 'setup',
|
|
29
28
|
group: 'ONBOARDING',
|
|
30
29
|
label: 'Start',
|
|
31
|
-
summary: '
|
|
30
|
+
summary: 'Pick a model to start — use a local one or sign in to a provider.',
|
|
32
31
|
detail: 'Start here on a fresh install. Every row either saves state, opens the shared model picker, or opens a confirmed in-modal form.',
|
|
33
32
|
actions: [
|
|
34
|
-
//
|
|
33
|
+
// Working-path choices first — local (no sign-in needed) then provider sign-in.
|
|
34
|
+
{ id: 'use-local-model', label: 'Use a local model (no sign-in)', detail: 'Opens the model picker, which recommends models that fit this computer. No account or subscription needed.', kind: 'model-picker', modelPickerFlow: 'model', modelPickerTarget: 'main', safety: 'safe' },
|
|
35
35
|
{ id: 'subscription-login-start', label: 'Sign in to a provider', detail: 'Start one provider sign-in flow, save pending state, and return here.', editorKind: 'subscription-login-start', kind: 'editor', safety: 'safe' },
|
|
36
36
|
{ id: 'subscription-login-finish', label: 'Finish provider sign-in', detail: 'Exchange a code or redirect URL and save the provider subscription session.', editorKind: 'subscription-login-finish', kind: 'editor', safety: 'safe' },
|
|
37
37
|
{ id: 'setup-provider-model', label: 'Choose main model', detail: 'Open the shared provider/model picker for normal assistant turns.', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'main', safety: 'safe' },
|
|
@@ -47,35 +47,34 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
47
47
|
{ id: 'setup-checkpoint-show', label: 'Show saved resume point', detail: 'Inspect the saved setup wizard resume point without writing setup state.', setupCheckpointOperation: 'show', kind: 'setup-checkpoint', safety: 'read-only' },
|
|
48
48
|
{ id: 'setup-checkpoint-mark-current', label: 'Save resume point', detail: 'Save the current setup wizard step as the Agent-owned resume point for the next launch.', setupCheckpointOperation: 'mark-current', kind: 'setup-checkpoint', safety: 'safe' },
|
|
49
49
|
{ id: 'setup-checkpoint-clear', label: 'Clear saved resume point', detail: 'Clear the saved setup wizard resume point after setup is complete or no longer useful.', setupCheckpointOperation: 'clear', kind: 'setup-checkpoint', safety: 'safe' },
|
|
50
|
+
{ id: 'setup-skip-to-chat', label: 'Just start chatting (set up later)', detail: 'Close setup and go to the conversation. You can finish setup anytime with /agent.', kind: 'guidance', safety: 'safe' },
|
|
50
51
|
],
|
|
51
52
|
},
|
|
52
53
|
{
|
|
53
54
|
id: 'account-model',
|
|
54
55
|
group: 'ONBOARDING',
|
|
55
|
-
label: '
|
|
56
|
-
summary: '
|
|
57
|
-
detail: 'Use this after sign-in.
|
|
56
|
+
label: 'Models',
|
|
57
|
+
summary: 'Pick the chat model. Helper, tool, and spoken-turn routes are optional.',
|
|
58
|
+
detail: 'Use this after sign-in. Most users only need the top row; the rest are advanced.',
|
|
58
59
|
actions: [
|
|
60
|
+
// Essentials — chat route + reasoning
|
|
59
61
|
{ id: 'provider-use', label: 'Choose provider and model', detail: 'Open the shared provider/model picker for the main chat route.', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'main', safety: 'safe' },
|
|
60
|
-
{ id: 'provider-remove', label: 'Remove custom provider', detail: 'Remove one custom provider config after confirmation.', editorKind: 'provider-remove', kind: 'editor', safety: 'safe' },
|
|
61
|
-
{ id: 'account-main-model', label: 'Choose main model', detail: 'Open the shared model picker for normal assistant turns.', kind: 'model-picker', modelPickerFlow: 'model', modelPickerTarget: 'main', safety: 'safe' },
|
|
62
|
-
{ id: 'account-route-readiness', label: 'Inspect route readiness', detail: 'Review chat, helper, tool, and spoken-turn routes with models action:"status" for readiness scores, missing signals, pinned state, and safe setting keys without changing selection.', kind: 'guidance', safety: 'read-only' },
|
|
63
|
-
{ id: 'account-local-model-cookbook', label: 'Local model cookbook', detail: 'Review local model recommendations, setup/download guidance, benchmark action routes, and local endpoint candidates with models action:"local".', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'main', safety: 'safe' },
|
|
64
|
-
{ id: 'account-local-server-health', label: 'Check local servers', detail: 'Run a confirmed read-only model-list smoke check with models action:"smoke" for detected or default local endpoints before refresh, benchmark, provider add, or route change.', kind: 'guidance', safety: 'read-only' },
|
|
65
|
-
{ id: 'account-run-local-model-benchmark', label: 'Run local benchmark', detail: 'Run the confirmed local-route benchmark through blind comparison, save latency/task-fit evidence, and keep model changes separate.', editorKind: 'local-model-benchmark', kind: 'editor', safety: 'safe' },
|
|
66
|
-
{ id: 'account-local-benchmark-evidence', label: 'Review benchmark evidence', detail: 'Inspect saved local model comparisons, revealed judgments, analytics routes, and next actions through models action:"local" before any default-route change.', kind: 'guidance', safety: 'read-only' },
|
|
67
62
|
settingAction({ id: 'account-reasoning', label: 'Reasoning effort', detail: 'Cycle the reasoning effort used when supported.', key: 'provider.reasoningEffort' }),
|
|
63
|
+
// Advanced routes — most people can skip these
|
|
64
|
+
{ id: 'account-advanced-separator', label: 'Advanced routes (optional) — most people can skip these', detail: 'Helper, tool, TTS, embedding, system-prompt, and cache routing are here when you need them. Chat works without any of these.', kind: 'guidance', safety: 'read-only' },
|
|
68
65
|
settingAction({ id: 'account-embedding', label: 'Embedding provider', detail: 'Set the embedding provider for memory and retrieval.', key: 'provider.embeddingProvider' }),
|
|
69
|
-
settingAction({ id: 'account-system-prompt', label: 'System prompt file', detail: 'Set an optional local system prompt file path.', key: 'provider.systemPromptFile' }),
|
|
70
|
-
settingAction({ id: 'account-helper-enabled', label: 'Enable helper model', detail: 'Toggle dedicated helper routing for background utility work.', key: 'helper.enabled' }),
|
|
71
|
-
{ id: 'account-helper-provider', label: 'Choose helper provider/model', detail: 'Open the shared provider/model picker for helper routing.', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'helper', visibleWhenSettingKey: 'helper.enabled', visibleWhenSettingValue: true, safety: 'safe' },
|
|
72
|
-
{ id: 'account-helper-model', label: 'Choose helper model', detail: 'Open the shared model picker for helper routing.', kind: 'model-picker', modelPickerFlow: 'model', modelPickerTarget: 'helper', visibleWhenSettingKey: 'helper.enabled', visibleWhenSettingValue: true, safety: 'safe' },
|
|
73
|
-
settingAction({ id: 'account-tool-llm-enabled', label: 'Enable tool LLM', detail: 'Toggle a dedicated tool LLM for internal operations.', key: 'tools.llmEnabled' }),
|
|
74
|
-
{ id: 'account-tool-provider', label: 'Choose tool provider/model', detail: 'Open the shared provider/model picker for dedicated tool LLM calls.', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'tool', visibleWhenSettingKey: 'tools.llmEnabled', visibleWhenSettingValue: true, safety: 'safe' },
|
|
75
|
-
{ id: 'account-tool-model', label: 'Choose tool model', detail: 'Open the shared model picker for dedicated tool LLM calls.', kind: 'model-picker', modelPickerFlow: 'model', modelPickerTarget: 'tool', visibleWhenSettingKey: 'tools.llmEnabled', visibleWhenSettingValue: true, safety: 'safe' },
|
|
76
|
-
{ id: 'account-tts-llm-provider', label: 'Choose spoken-turn provider/model', detail: 'Open the shared provider/model picker for spoken-response turns.', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'tts', safety: 'safe' },
|
|
77
|
-
{ id: 'account-tts-llm-model', label: 'Choose spoken-turn model', detail: 'Open the shared model picker for spoken-response turns.', kind: 'model-picker', modelPickerFlow: 'model', modelPickerTarget: 'tts', safety: 'safe' },
|
|
78
66
|
settingAction({ id: 'account-provider-fallback-hint', label: 'Provider failure hints', detail: 'Toggle alternative model suggestions when the current provider fails non-transiently.', key: 'behavior.suggestAlternativeOnProviderFail' }),
|
|
67
|
+
// Helper / tool / spoken-turn routes (advanced — only matters when you want dedicated routing)
|
|
68
|
+
settingAction({ id: 'account-helper-enabled', label: 'Use a dedicated helper model', detail: 'Toggle a separate route for background utility work like summaries and titling.', key: 'helper.enabled' }),
|
|
69
|
+
{ id: 'account-helper-provider', label: 'Choose helper model', detail: 'Pick the provider and model for helper routing.', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'helper', visibleWhenSettingKey: 'helper.enabled', visibleWhenSettingValue: true, safety: 'safe' },
|
|
70
|
+
settingAction({ id: 'account-tool-llm-enabled', label: 'Use a dedicated tool model', detail: 'Toggle a separate route for internal tool calls.', key: 'tools.llmEnabled' }),
|
|
71
|
+
{ id: 'account-tool-provider', label: 'Choose tool model', detail: 'Pick the provider and model for dedicated tool calls.', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'tool', visibleWhenSettingKey: 'tools.llmEnabled', visibleWhenSettingValue: true, safety: 'safe' },
|
|
72
|
+
{ id: 'account-tts-llm-provider', label: 'Choose spoken-turn model', detail: 'Pick the provider and model for spoken-response turns.', kind: 'model-picker', modelPickerFlow: 'providerModel', modelPickerTarget: 'tts', safety: 'safe' },
|
|
73
|
+
// System prompt + custom provider plumbing
|
|
74
|
+
settingAction({ id: 'account-system-prompt', label: 'Custom system prompt file', detail: 'Optional local file used as the system prompt for every assistant turn.', key: 'provider.systemPromptFile' }),
|
|
75
|
+
{ id: 'provider-remove', label: 'Remove a custom provider', detail: 'Remove one custom provider config after confirmation.', editorKind: 'provider-remove', kind: 'editor', safety: 'safe' },
|
|
76
|
+
{ id: 'account-run-local-model-benchmark', label: 'Run a local model benchmark', detail: 'Run the confirmed local-route benchmark through blind comparison, save latency/task-fit evidence, and keep model changes separate.', editorKind: 'local-model-benchmark', kind: 'editor', safety: 'safe' },
|
|
77
|
+
// Prompt cache controls (advanced — most users leave defaults)
|
|
79
78
|
settingAction({ id: 'account-cache-enabled', label: 'Prompt cache', detail: 'Toggle prompt caching for eligible providers.', key: 'cache.enabled' }),
|
|
80
79
|
settingAction({ id: 'account-cache-ttl', label: 'Cache TTL', detail: 'Cycle ephemeral or persistent cache TTL for stable content.', key: 'cache.stableTtl', visibleWhenKey: 'cache.enabled', visibleWhenValue: true }),
|
|
81
80
|
settingAction({ id: 'account-cache-monitor', label: 'Cache hit-rate monitor', detail: 'Toggle cache hit-rate monitoring.', key: 'cache.monitorHitRate', visibleWhenKey: 'cache.enabled', visibleWhenValue: true }),
|
|
@@ -103,31 +102,25 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
103
102
|
id: 'tools-permissions',
|
|
104
103
|
group: 'ONBOARDING',
|
|
105
104
|
label: 'Tools & Permissions',
|
|
106
|
-
summary: 'Set approval policy
|
|
107
|
-
detail: '
|
|
105
|
+
summary: 'Set approval policy and core file/shell/network permissions.',
|
|
106
|
+
detail: 'Most users only need Permission mode and Auto-approve. The rest stay at safe defaults unless you change them.',
|
|
108
107
|
actions: [
|
|
108
|
+
// Top-level approval policy
|
|
109
109
|
settingAction({ id: 'permissions-mode', label: 'Permission mode', detail: 'Cycle prompt, allow-all, or custom permission mode.', key: 'permissions.mode' }),
|
|
110
110
|
settingAction({ id: 'permissions-auto-approve', label: 'Auto-approve tools', detail: 'Toggle automatic approval for all tool permission requests.', key: 'behavior.autoApprove' }),
|
|
111
|
+
// Common per-tool overrides for file and shell work
|
|
111
112
|
settingAction({ id: 'permissions-read', label: 'File reads', detail: 'Cycle allow, prompt, or deny for file read operations.', key: 'permissions.tools.read' }),
|
|
112
|
-
settingAction({ id: 'permissions-find', label: 'File search', detail: 'Cycle allow, prompt, or deny for file and directory search operations.', key: 'permissions.tools.find' }),
|
|
113
113
|
settingAction({ id: 'permissions-write', label: 'File writes', detail: 'Cycle allow, prompt, or deny for file write operations.', key: 'permissions.tools.write' }),
|
|
114
114
|
settingAction({ id: 'permissions-edit', label: 'File edits', detail: 'Cycle allow, prompt, or deny for edit and patch operations.', key: 'permissions.tools.edit' }),
|
|
115
115
|
settingAction({ id: 'permissions-exec', label: 'Shell commands', detail: 'Cycle allow, prompt, or deny for shell execution.', key: 'permissions.tools.exec' }),
|
|
116
116
|
settingAction({ id: 'permissions-fetch', label: 'Network fetches', detail: 'Cycle allow, prompt, or deny for outbound fetch requests.', key: 'permissions.tools.fetch' }),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
settingAction({ id: 'permissions-agent', label: 'Agent delegation', detail: 'Cycle allow, prompt, or deny for subagent and delegation operations.', key: 'permissions.tools.agent' }),
|
|
123
|
-
settingAction({ id: 'permissions-workflow', label: 'Workflow automation', detail: 'Cycle allow, prompt, or deny for multi-step workflow automation.', key: 'permissions.tools.workflow' }),
|
|
124
|
-
settingAction({ id: 'permissions-delegate', label: 'Unknown tools', detail: 'Cycle allow, prompt, or deny for unknown or unregistered tools.', key: 'permissions.tools.delegate' }),
|
|
125
|
-
{ id: 'onboarding-mcp-server', label: 'Add MCP server', detail: 'Add or update one MCP server with command, args, role, trust, env refs, paths, and hosts.', editorKind: 'mcp-server', kind: 'editor', safety: 'safe' },
|
|
126
|
-
{ id: 'onboarding-secret-link', label: 'Link secret reference', detail: 'Link one config key to a goodvibes secret reference.', editorKind: 'secret-link', kind: 'editor', safety: 'safe' },
|
|
127
|
-
{ id: 'onboarding-secret-test', label: 'Test secret reference', detail: 'Check one stored secret reference without printing the value.', editorKind: 'secret-test', kind: 'editor', safety: 'safe' },
|
|
117
|
+
// MCP servers + secrets (forms that open inside the modal)
|
|
118
|
+
{ id: 'onboarding-mcp-server', label: 'Add an MCP server', detail: 'Add or update one MCP server with command, args, role, trust, env refs, paths, and hosts.', editorKind: 'mcp-server', kind: 'editor', safety: 'safe' },
|
|
119
|
+
{ id: 'onboarding-secret-link', label: 'Link a secret reference', detail: 'Link one config key to a goodvibes secret reference.', editorKind: 'secret-link', kind: 'editor', safety: 'safe' },
|
|
120
|
+
{ id: 'onboarding-secret-test', label: 'Test a secret reference', detail: 'Check one stored secret reference without printing the value.', editorKind: 'secret-test', kind: 'editor', safety: 'safe' },
|
|
121
|
+
// Advanced — tool runtime limits and debugging
|
|
128
122
|
settingAction({ id: 'tools-auto-heal', label: 'Tool auto-heal', detail: 'Toggle automatic syntax repair for precision write and edit operations.', key: 'tools.autoHeal' }),
|
|
129
123
|
settingAction({ id: 'tools-token-budget', label: 'Tool token budget', detail: 'Set the default token budget for precision read operations.', key: 'tools.defaultTokenBudget' }),
|
|
130
|
-
settingAction({ id: 'tools-hooks-file', label: 'Hooks file', detail: 'Set the hook configuration file name relative to host data.', key: 'tools.hooksFile' }),
|
|
131
124
|
settingAction({ id: 'storage-artifact-limit', label: 'Artifact storage limit', detail: 'Set the maximum artifact size for file, URL, multipart, and raw upload ingest.', key: 'storage.artifacts.maxBytes' }),
|
|
132
125
|
settingAction({ id: 'telemetry-raw-prompts', label: 'Raw prompt telemetry', detail: 'Toggle raw prompt and response telemetry; leave off unless debugging locally.', key: 'telemetry.includeRawPrompts' }),
|
|
133
126
|
],
|
|
@@ -170,8 +163,8 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
170
163
|
{ id: 'personal-ops-reminder', label: 'Create reminder', detail: 'Create one connected reminder schedule with real timing, optional delivery target, and explicit confirmation.', editorKind: 'reminder-schedule', kind: 'editor', safety: 'safe' },
|
|
171
164
|
{ id: 'personal-ops-routines', label: 'Routine library', detail: 'Open repeatable workflows and schedule-promotion readiness.', targetCategoryId: 'routines', kind: 'workspace', safety: 'safe' },
|
|
172
165
|
{ id: 'personal-ops-schedules', label: 'Schedules', detail: 'Inspect connected schedules and promotion receipts from the automation area.', targetCategoryId: 'automation', kind: 'workspace', safety: 'safe' },
|
|
173
|
-
{ id: 'personal-ops-channels', label: 'Delivery channels', detail: 'Open pairing and channel readiness before sending summaries, reminders, or follow-ups.', targetCategoryId: 'channels', kind: 'workspace', safety: 'safe' },
|
|
174
|
-
{ id: 'personal-ops-operator-methods', label: '
|
|
166
|
+
{ id: 'personal-ops-channels', label: 'Delivery channels', detail: 'Open pairing and channel readiness before sending summaries, reminders, or follow-ups.', targetCategoryId: 'onboarding-channels', kind: 'workspace', safety: 'safe' },
|
|
167
|
+
{ id: 'personal-ops-operator-methods', label: 'Assistant service methods', detail: 'The model can inspect the live assistant service contract with host action:"methods" query:"task" or personal_ops action:"lane" for one lane.', kind: 'guidance', safety: 'read-only' },
|
|
175
168
|
],
|
|
176
169
|
},
|
|
177
170
|
{
|
|
@@ -206,7 +199,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
206
199
|
{
|
|
207
200
|
id: 'documents',
|
|
208
201
|
group: 'DAY-TO-DAY',
|
|
209
|
-
label: 'Documents &
|
|
202
|
+
label: 'Documents & Files',
|
|
210
203
|
summary: 'Draft docs, files, artifacts, and compare readiness.',
|
|
211
204
|
detail: 'Use this workspace when the user is producing or evaluating a document. Versioned drafts, review comments, AI suggestion review, artifact insertion/export, upload, source, artifact browsing, media, and blind comparison routes stay visible here.',
|
|
212
205
|
actions: [
|
|
@@ -239,7 +232,6 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
239
232
|
{ id: 'document-export-conversation', label: 'Export current conversation', detail: 'Open a confirmed form that exports the current Agent conversation to a workspace file.', editorKind: 'conversation-export', kind: 'editor', safety: 'safe' },
|
|
240
233
|
{ id: 'document-export-session', label: 'Export saved session', detail: 'Open a form that exports one saved Agent session transcript as markdown or text.', editorKind: 'session-export-saved', kind: 'editor', safety: 'read-only' },
|
|
241
234
|
{ id: 'document-show-source', label: 'Show source or node', detail: 'Open an in-workspace form that shows one Agent Knowledge source, node, or issue by id.', editorKind: 'knowledge-get', kind: 'editor', safety: 'read-only' },
|
|
242
|
-
{ id: 'document-artifacts', label: 'Artifact workspace', detail: 'Open the existing artifact workspace for attachments, source ingest, generated media, and artifact safety policy.', targetCategoryId: 'artifacts', kind: 'workspace', safety: 'safe' },
|
|
243
235
|
{ id: 'document-browse-artifacts', label: 'Browse artifacts', detail: 'Search saved uploads, exports, generated media, source artifacts, and comparison artifacts from one read-only browser.', editorKind: 'artifact-browser', kind: 'editor', safety: 'read-only' },
|
|
244
236
|
{ id: 'document-show-artifact', label: 'Show artifact', detail: 'Inspect one saved artifact by id with redacted metadata and bounded text preview when possible.', editorKind: 'artifact-show', kind: 'editor', safety: 'read-only' },
|
|
245
237
|
{ id: 'document-promote-artifact', label: 'Promote artifact to Knowledge', detail: 'Open a confirmed form that ingests one saved artifact into isolated Agent Knowledge.', editorKind: 'artifact-promote-knowledge', kind: 'editor', safety: 'safe' },
|
|
@@ -255,39 +247,6 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
255
247
|
{ id: 'document-export-compare', label: 'Export compare report', detail: 'Open a confirmed form that exports a saved comparison or judgment report, creates a reviewer handoff with related artifacts, or archives a saved handoff as one ZIP artifact.', editorKind: 'model-compare-export', kind: 'editor', safety: 'safe' },
|
|
256
248
|
],
|
|
257
249
|
},
|
|
258
|
-
{
|
|
259
|
-
id: 'artifacts',
|
|
260
|
-
group: 'DAY-TO-DAY',
|
|
261
|
-
label: 'Artifacts',
|
|
262
|
-
summary: 'Browse, attach, export, ingest, and generate artifacts.',
|
|
263
|
-
detail: 'Use this workspace to handle concrete user-visible artifacts: browse saved artifacts, attach images, export conversations, ingest source files into Agent Knowledge, inspect source libraries, and generate media with explicit confirmation.',
|
|
264
|
-
actions: [
|
|
265
|
-
{ id: 'artifact-flow', label: 'Artifact workflow', detail: 'Attach, export, ingest, or generate first, then use the artifact browser to inspect saved ids, redacted metadata, and bounded text previews.', kind: 'guidance', safety: 'safe' },
|
|
266
|
-
{ id: 'artifact-browse', label: 'Browse artifacts', detail: 'Search saved uploads, exports, generated media, source artifacts, and comparison artifacts from one read-only browser.', editorKind: 'artifact-browser', kind: 'editor', safety: 'read-only' },
|
|
267
|
-
{ id: 'artifact-show', label: 'Show artifact', detail: 'Inspect one saved artifact by id with redacted metadata and bounded text preview when possible.', editorKind: 'artifact-show', kind: 'editor', safety: 'read-only' },
|
|
268
|
-
{ id: 'artifact-export-file', label: 'Export saved artifact', detail: 'Open a confirmed form that copies one saved artifact to a workspace file without printing content.', editorKind: 'artifact-export-file', kind: 'editor', safety: 'safe' },
|
|
269
|
-
{ id: 'artifact-export-package', label: 'Export package', detail: 'Open a confirmed form that copies selected saved artifacts into a workspace package directory or ZIP archive with a redacted manifest.', editorKind: 'artifact-export-package', kind: 'editor', safety: 'safe' },
|
|
270
|
-
{ id: 'artifact-promote-knowledge', label: 'Promote to Knowledge', detail: 'Open a confirmed form that ingests one saved artifact into isolated Agent Knowledge.', editorKind: 'artifact-promote-knowledge', kind: 'editor', safety: 'safe' },
|
|
271
|
-
{ id: 'artifact-insert-document', label: 'Insert in document draft', detail: 'Open a confirmed form that inserts a saved artifact into an Agent-owned markdown draft as a new version.', editorKind: 'document-insert-artifact', kind: 'editor', safety: 'safe' },
|
|
272
|
-
{ id: 'artifact-attach-document', label: 'Attach to document draft', detail: 'Open a confirmed form that links a saved artifact to a document draft without rewriting the body.', editorKind: 'document-attach-artifact', kind: 'editor', safety: 'safe' },
|
|
273
|
-
{ id: 'artifact-attach-image', label: 'Attach image to prompt', detail: 'Open an in-workspace image attachment form for a local image path and optional prompt.', editorKind: 'image-input', kind: 'editor', safety: 'safe' },
|
|
274
|
-
{ id: 'artifact-export-conversation', label: 'Export current conversation', detail: 'Open a confirmed form that exports the current Agent conversation to a workspace file.', editorKind: 'conversation-export', kind: 'editor', safety: 'safe' },
|
|
275
|
-
{ id: 'artifact-session-export', label: 'Export saved session', detail: 'Open a form that exports one saved Agent session transcript as markdown or text.', editorKind: 'session-export-saved', kind: 'editor', safety: 'read-only' },
|
|
276
|
-
{ id: 'artifact-ingest-file', label: 'Ingest file into Agent Knowledge', detail: 'Open a confirmed form that imports one local file into the isolated Agent Knowledge segment.', editorKind: 'knowledge-file', kind: 'editor', safety: 'safe' },
|
|
277
|
-
{ id: 'artifact-ingest-url-list', label: 'Import URL list', detail: 'Open a confirmed form that imports a local URL list into Agent Knowledge.', editorKind: 'knowledge-urls', kind: 'editor', safety: 'safe' },
|
|
278
|
-
{ id: 'artifact-import-bookmarks', label: 'Import bookmarks', detail: 'Open a confirmed form that imports a browser bookmark export into Agent Knowledge.', editorKind: 'knowledge-bookmarks', kind: 'editor', safety: 'safe' },
|
|
279
|
-
{ id: 'artifact-browser-history', label: 'Import browser history', detail: 'Open a confirmed form that imports local browser history/bookmarks into Agent Knowledge.', editorKind: 'knowledge-browser-history', kind: 'editor', safety: 'safe' },
|
|
280
|
-
{ id: 'artifact-show-source', label: 'Show source or node', detail: 'Open an in-workspace form that shows one Agent Knowledge source, node, or issue by id.', editorKind: 'knowledge-get', kind: 'editor', safety: 'read-only' },
|
|
281
|
-
{ id: 'artifact-generate-media', label: 'Generate image or video', detail: 'Open a confirmed prompt form that generates image or video artifacts through configured media providers.', editorKind: 'media-generate', kind: 'editor', safety: 'safe' },
|
|
282
|
-
{ id: 'artifact-review-compare', label: 'Review blind compare', detail: 'Open a read-only saved comparison review, side-by-side evidence view, or reviewer handoff diff for model comparison artifacts.', editorKind: 'model-compare-review', kind: 'editor', safety: 'read-only' },
|
|
283
|
-
{ id: 'artifact-diff-handoffs', label: 'Diff reviewer handoffs', detail: 'Open a read-only split-pane form that compares two saved reviewer handoff artifacts with section jump focus.', editorKind: 'model-compare-handoff-diff', kind: 'editor', safety: 'read-only' },
|
|
284
|
-
{ id: 'artifact-judge-compare', label: 'Save compare judgment', detail: 'Open a confirmed form that saves a comparison winner and reasons as a local artifact without route mutation.', editorKind: 'model-compare-judge', kind: 'editor', safety: 'safe' },
|
|
285
|
-
{ id: 'artifact-compare-analytics', label: 'Compare analytics', detail: 'Summarize or synthesize saved comparison judgment artifacts by winner, model, blind slot, themes, task type, document id, benchmark tag, and recent reasons.', editorKind: 'model-compare-analytics', kind: 'editor', safety: 'read-only' },
|
|
286
|
-
{ id: 'artifact-apply-compare', label: 'Apply compare winner', detail: 'Open a confirmed form that applies a revealed judgment artifact to provider.model.', editorKind: 'model-compare-apply', kind: 'editor', safety: 'safe' },
|
|
287
|
-
{ id: 'artifact-export-compare', label: 'Export compare report', detail: 'Open a confirmed form that exports a saved comparison or judgment report, creates a reviewer handoff with related artifacts, or archives a saved handoff as one ZIP artifact.', editorKind: 'model-compare-export', kind: 'editor', safety: 'safe' },
|
|
288
|
-
{ id: 'artifact-policy', label: 'Artifact safety', detail: 'Artifact creation, ingest, and media generation are explicit actions. Agent never writes to default knowledge or prints inline base64; artifact previews are bounded and redacted.', kind: 'guidance', safety: 'read-only' },
|
|
289
|
-
],
|
|
290
|
-
},
|
|
291
250
|
{
|
|
292
251
|
id: 'conversation',
|
|
293
252
|
group: 'DAY-TO-DAY',
|
|
@@ -299,6 +258,9 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
299
258
|
{ id: 'conversation-context-refs', label: 'Context references', detail: 'Type @file, @folder, or @https://... in the composer to add bounded context to the main Agent turn. Use !@file only when you want raw file injection.', kind: 'guidance', safety: 'safe' },
|
|
300
259
|
{ id: 'conversation-save', label: 'Save current session', detail: 'Open a confirmed form that saves the current Agent session under a local name.', editorKind: 'session-save', kind: 'editor', safety: 'safe' },
|
|
301
260
|
{ id: 'conversation-load', label: 'Load saved session', detail: 'Open a confirmed form that loads one saved Agent session into the current conversation.', editorKind: 'session-load', kind: 'editor', safety: 'safe' },
|
|
261
|
+
{ id: 'conversation-rename', label: 'Rename this conversation', detail: 'Open a form that renames the current Agent session.', editorKind: 'session-rename', kind: 'editor', safety: 'safe' },
|
|
262
|
+
{ id: 'conversation-fork', label: 'Fork this conversation', detail: 'Open a form that branches the current conversation into a new saved session.', editorKind: 'session-fork', kind: 'editor', safety: 'safe' },
|
|
263
|
+
{ id: 'conversation-resume', label: 'Resume a saved conversation', detail: 'Open a form that resumes one saved Agent session by id, prefix, or title.', editorKind: 'session-resume', kind: 'editor', safety: 'safe' },
|
|
302
264
|
{ id: 'conversation-session-info', label: 'Inspect saved session', detail: 'Open a read-only form that prints saved-session metadata.', editorKind: 'session-info', kind: 'editor', safety: 'read-only' },
|
|
303
265
|
{ id: 'conversation-session-search', label: 'Search saved sessions', detail: 'Open a form that searches saved Agent sessions.', editorKind: 'session-search', kind: 'editor', safety: 'read-only' },
|
|
304
266
|
{ id: 'conversation-session-export', label: 'Export saved session', detail: 'Open a form that prints one saved-session transcript as markdown or text.', editorKind: 'session-export-saved', kind: 'editor', safety: 'read-only' },
|
|
@@ -309,26 +271,6 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
309
271
|
{ id: 'conversation-tts', label: 'Speak a prompt', detail: 'Open an in-workspace prompt form for spoken assistant replies through configured live TTS.', editorKind: 'tts-prompt', kind: 'editor', safety: 'safe' },
|
|
310
272
|
],
|
|
311
273
|
},
|
|
312
|
-
{
|
|
313
|
-
id: 'channels',
|
|
314
|
-
group: 'CAPABILITIES',
|
|
315
|
-
label: 'Channels',
|
|
316
|
-
summary: 'Companion pairing, channel posture, and delivery safety.',
|
|
317
|
-
detail: 'Agent uses connected channel accounts. Pairing, account inspection, and readiness checks are visible here; inbound delivery and public channel exposure stay policy-gated.',
|
|
318
|
-
actions: [
|
|
319
|
-
{ id: 'channel-setup-path', label: 'Setup path', detail: 'Use this workspace as the channel setup guide: pair companion, inspect readiness, check accounts/policies/status, review one channel, then add delivery targets only through confirmed forms.', kind: 'guidance', safety: 'safe' },
|
|
320
|
-
{ id: 'channel-show', label: 'Show channel detail', detail: 'Open a channel-id form for read-only readiness details.', editorKind: 'channel-show', kind: 'editor', safety: 'read-only' },
|
|
321
|
-
{ id: 'channel-doctor', label: 'Run channel doctor', detail: 'Open a channel-id form for read-only route diagnostics.', editorKind: 'channel-doctor', kind: 'editor', safety: 'read-only' },
|
|
322
|
-
{ id: 'channel-setup', label: 'Setup guidance', detail: 'Open a channel-id form for read-only setup guidance.', editorKind: 'channel-setup', kind: 'editor', safety: 'read-only' },
|
|
323
|
-
{ id: 'notification-send', label: 'Send notification', detail: 'Open a confirmed form that sends one plain-text message to configured Agent notification webhook targets.', editorKind: 'notify-send', kind: 'editor', safety: 'safe' },
|
|
324
|
-
{ id: 'channel-send', label: 'Send channel message', detail: 'Open a confirmed form that sends one message through a configured delivery target.', editorKind: 'channel-send', kind: 'editor', safety: 'safe' },
|
|
325
|
-
{ id: 'notification-add-webhook', label: 'Add webhook target', detail: 'Open a confirmed form that adds one webhook notification target for explicit reminder and routine delivery.', editorKind: 'notify-webhook', kind: 'editor', safety: 'safe' },
|
|
326
|
-
{ id: 'notification-remove-webhook', label: 'Remove webhook target', detail: 'Open a confirmed form that removes one exact webhook notification target from Agent delivery.', editorKind: 'notify-webhook-remove', kind: 'editor', safety: 'safe' },
|
|
327
|
-
{ id: 'notification-clear-webhooks', label: 'Clear webhook targets', detail: 'Open a confirmed form before removing every configured webhook notification target.', editorKind: 'notify-webhook-clear', kind: 'editor', safety: 'safe' },
|
|
328
|
-
{ id: 'notification-test-webhooks', label: 'Test webhook targets', detail: 'Open a confirmed form that sends one notification test to configured webhook targets only after typed confirmation.', editorKind: 'notify-webhook-test', kind: 'editor', safety: 'safe' },
|
|
329
|
-
{ id: 'channel-safety', label: 'Delivery safety', detail: 'External messages, channel DMs, and public delivery targets require explicit user action and Agent policy. Agent will not silently send or expose channels from this workspace.', kind: 'guidance', safety: 'blocked' },
|
|
330
|
-
],
|
|
331
|
-
},
|
|
332
274
|
{
|
|
333
275
|
id: 'tools',
|
|
334
276
|
group: 'CAPABILITIES',
|
|
@@ -374,27 +316,6 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
374
316
|
{ id: 'knowledge-ask', label: 'Ask Agent knowledge', detail: 'Open an in-workspace question form for isolated Agent Knowledge. Normal chat still uses the main conversation.', editorKind: 'knowledge-ask', kind: 'editor', safety: 'read-only' },
|
|
375
317
|
],
|
|
376
318
|
},
|
|
377
|
-
{
|
|
378
|
-
id: 'voice-media',
|
|
379
|
-
group: 'CAPABILITIES',
|
|
380
|
-
label: 'Voice & Media',
|
|
381
|
-
summary: 'Voice, TTS, image input, browser tools, and media providers.',
|
|
382
|
-
detail: 'Voice, media, browser tools, and image-capable flows are first-class Agent tools. Connected-host administration stays outside Agent and side effects stay explicit.',
|
|
383
|
-
actions: [
|
|
384
|
-
{ id: 'voice-workflow-posture', label: 'Voice workflows', detail: 'Inspect push-to-talk, voice memo transcription, spoken responses, and wake-word readiness with device action:"voice".', kind: 'guidance', safety: 'read-only' },
|
|
385
|
-
{ id: 'device-capability-map', label: 'Device capability map', detail: 'Inspect pairing, mobile command routing, browser/PWA, notifications, browser/desktop control, and certified camera/location readiness with device action:"status" without claiming uncertified contracts.', kind: 'guidance', safety: 'read-only' },
|
|
386
|
-
{ id: 'browser-cockpit-readiness', label: 'Browser/PWA readiness', detail: 'Inspect the connected browser cockpit/PWA route, certified workspace category coverage, mobile controls, and first-run receipt evidence with computer action:"browser" before opening a browser.', kind: 'guidance', safety: 'read-only' },
|
|
387
|
-
{ id: 'voice-enable', label: 'Enable voice', detail: 'Open a confirmed form that enables local voice interaction.', editorKind: 'voice-enable', kind: 'editor', safety: 'safe' },
|
|
388
|
-
{ id: 'voice-disable', label: 'Disable voice', detail: 'Open a confirmed form that disables local voice interaction.', editorKind: 'voice-disable', kind: 'editor', safety: 'safe' },
|
|
389
|
-
{ id: 'voice-bundle-export', label: 'Export voice bundle', detail: 'Open a confirmed form that exports voice setup state for review.', editorKind: 'voice-bundle-export', kind: 'editor', safety: 'safe' },
|
|
390
|
-
{ id: 'voice-bundle-inspect', label: 'Inspect voice bundle', detail: 'Open a form that inspects voice setup state before review.', editorKind: 'voice-bundle-inspect', kind: 'editor', safety: 'read-only' },
|
|
391
|
-
{ id: 'tts-speak', label: 'Speak a prompt', detail: 'Open an in-workspace prompt form for spoken assistant replies through configured live TTS.', editorKind: 'tts-prompt', kind: 'editor', safety: 'safe' },
|
|
392
|
-
{ id: 'image-attach', label: 'Attach image input', detail: 'Open an in-workspace image form for attaching a real image path and optional prompt.', editorKind: 'image-input', kind: 'editor', safety: 'safe' },
|
|
393
|
-
{ id: 'media-generate', label: 'Generate media', detail: 'Open a confirmed prompt form that generates image or video artifacts through configured media providers.', editorKind: 'media-generate', kind: 'editor', safety: 'safe' },
|
|
394
|
-
{ id: 'browser-research', label: 'Research the web', detail: 'Submit a read-only web research request to the main Agent conversation.', editorKind: 'web-research', kind: 'editor', safety: 'read-only' },
|
|
395
|
-
{ id: 'browser-url', label: 'Inspect URL', detail: 'Submit one URL inspection request to the main Agent conversation without ingesting it.', editorKind: 'web-fetch', kind: 'editor', safety: 'read-only' },
|
|
396
|
-
],
|
|
397
|
-
},
|
|
398
319
|
{
|
|
399
320
|
id: 'profiles',
|
|
400
321
|
group: 'LOCAL BEHAVIOR',
|
|
@@ -418,11 +339,11 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
418
339
|
{
|
|
419
340
|
id: 'memory',
|
|
420
341
|
group: 'LOCAL BEHAVIOR',
|
|
421
|
-
label: 'Memory
|
|
342
|
+
label: 'Memory',
|
|
422
343
|
summary: 'Local assistant memory, notes, routines, skills, and reusable behavior.',
|
|
423
344
|
detail: 'Memory, notes, routines, skills, and personas stay Agent-local until stable shared registry contracts exist. Secrets must not be stored as memory or notes.',
|
|
424
345
|
actions: [
|
|
425
|
-
{ id: 'memory-posture', label: 'Memory
|
|
346
|
+
{ id: 'memory-posture', label: 'Memory status', detail: 'Inspect Agent-local memory, prompt-active recall, vector health, embedding providers, and external-memory provider gaps with memory action:"status".', kind: 'guidance', safety: 'read-only' },
|
|
426
347
|
{ id: 'memory-search', label: 'Search memory', detail: 'Open an in-workspace Agent-local memory search form. This never queries default knowledge or other product routes.', editorKind: 'memory-search', kind: 'editor', safety: 'read-only' },
|
|
427
348
|
{ id: 'memory-get', label: 'Show memory by id', detail: 'Open an in-workspace form that prints one Agent-local memory record with provenance and links.', editorKind: 'memory-get', kind: 'editor', safety: 'read-only' },
|
|
428
349
|
{ id: 'memory-learning-curator', label: 'Learning curator', detail: 'Inspect ranked local memory, note, persona, skill, bundle, routine, duplicate-consolidation, completed-work, completed-research, and saved-session candidates with review, setup, stale, proposal, capture, diff, and rollback routes.', kind: 'guidance', safety: 'read-only' },
|
|
@@ -504,6 +425,8 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
504
425
|
{ id: 'skills-search', label: 'Search skills', detail: 'Open a search form for Agent-local skills.', editorKind: 'skill-search', kind: 'editor', safety: 'read-only' },
|
|
505
426
|
{ id: 'skills-show', label: 'Show skill', detail: 'Open a skill-id form for read-only local skill detail.', editorKind: 'skill-show', kind: 'editor', safety: 'read-only' },
|
|
506
427
|
{ id: 'skills-import-discovered', label: 'Import discovered skill', detail: 'Open an in-workspace form that imports one reviewed discovered skill file into the Agent-local skill registry after typed confirmation.', editorKind: 'skill-discovery-import', kind: 'editor', safety: 'safe' },
|
|
428
|
+
{ id: 'skills-import-standard', label: 'Import a shared skill', detail: 'Import one SKILL.md file in the open skill format into the Agent-local skill library after review.', editorKind: 'skill-standard-import', kind: 'editor', safety: 'safe' },
|
|
429
|
+
{ id: 'skills-export-standard', label: 'Export skill to share', detail: 'Export one Agent-local skill as a SKILL.md folder you can publish or hand to another assistant.', editorKind: 'skill-standard-export', kind: 'editor', safety: 'safe' },
|
|
507
430
|
{ id: 'skills-create-bundle', label: 'Create bundle', detail: 'Open an in-workspace form that creates a named skill bundle from existing local skill ids.', editorKind: 'skill-bundle', kind: 'editor', safety: 'safe' },
|
|
508
431
|
{ id: 'skills-search-bundle', label: 'Search bundles', detail: 'Open an in-workspace form that searches Agent-local skill bundles.', editorKind: 'skill-bundle-search', kind: 'editor', safety: 'read-only' },
|
|
509
432
|
{ id: 'skills-show-bundle', label: 'Show bundle', detail: 'Open an in-workspace form that shows one Agent-local skill bundle by id.', editorKind: 'skill-bundle-show', kind: 'editor', safety: 'read-only' },
|
|
@@ -552,26 +475,12 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
552
475
|
id: 'work',
|
|
553
476
|
group: 'OPERATIONS',
|
|
554
477
|
label: 'Work & Approvals',
|
|
555
|
-
summary: '
|
|
478
|
+
summary: 'Approvals, background work, host tasks, and delegation.',
|
|
556
479
|
detail: 'Use this workspace to inspect active operator state and approval posture.',
|
|
557
480
|
actions: [
|
|
558
481
|
{ id: 'work-autonomy-queue', label: 'Autonomy queue', detail: 'Inspect visible host-task, approval, automation, schedule, routine, and delegation queue cards.', kind: 'guidance', safety: 'read-only' },
|
|
559
482
|
{ id: 'work-background-processes', label: 'Background processes', detail: 'Inspect tracked local background processes, bounded output tails, visible monitor routes, and lifecycle controls with execution action:"processes".', kind: 'guidance', safety: 'read-only' },
|
|
560
483
|
{ id: 'work-process-capabilities', label: 'Process capabilities', detail: 'Inspect process parity for start/list/poll/wait/log/kill/write, PTY, and sudo before choosing a local execution route.', kind: 'guidance', safety: 'read-only' },
|
|
561
|
-
{ id: 'conversation-export', label: 'Export conversation', detail: 'Open a confirmed form that exports the current Agent conversation to a workspace file.', editorKind: 'conversation-export', kind: 'editor', safety: 'safe' },
|
|
562
|
-
{ id: 'conversation-events', label: 'Transcript events', detail: 'Open an event-kind form for read-only transcript event inspection.', editorKind: 'conversation-events', kind: 'editor', safety: 'read-only' },
|
|
563
|
-
{ id: 'conversation-groups', label: 'Transcript groups', detail: 'Open an event-kind form for read-only transcript group inspection.', editorKind: 'conversation-groups', kind: 'editor', safety: 'read-only' },
|
|
564
|
-
{ id: 'conversation-find', label: 'Find transcript text', detail: 'Open a search form for the current Agent transcript.', editorKind: 'conversation-find', kind: 'editor', safety: 'read-only' },
|
|
565
|
-
{ id: 'session-save', label: 'Save session', detail: 'Open a confirmed form that saves the current Agent session under a local name.', editorKind: 'session-save', kind: 'editor', safety: 'safe' },
|
|
566
|
-
{ id: 'session-load', label: 'Load session', detail: 'Open a confirmed form that loads one saved Agent session into the current conversation.', editorKind: 'session-load', kind: 'editor', safety: 'safe' },
|
|
567
|
-
{ id: 'session-rename', label: 'Rename current session', detail: 'Open a form that renames the current Agent session.', editorKind: 'session-rename', kind: 'editor', safety: 'safe' },
|
|
568
|
-
{ id: 'session-fork', label: 'Fork current session', detail: 'Open a form that forks the current Agent session into a new local session.', editorKind: 'session-fork', kind: 'editor', safety: 'safe' },
|
|
569
|
-
{ id: 'session-resume', label: 'Resume saved session', detail: 'Open a form that resumes one saved Agent session by id, prefix, or title.', editorKind: 'session-resume', kind: 'editor', safety: 'safe' },
|
|
570
|
-
{ id: 'session-info', label: 'Inspect saved session', detail: 'Open a read-only form that prints saved-session metadata.', editorKind: 'session-info', kind: 'editor', safety: 'read-only' },
|
|
571
|
-
{ id: 'session-graph', label: 'Session graph', detail: 'Open a read-only form for cross-session graph inspection; graph mutation remains blocked in Agent.', editorKind: 'session-graph', kind: 'editor', safety: 'read-only' },
|
|
572
|
-
{ id: 'session-export-saved', label: 'Export saved session', detail: 'Open a form that prints one saved-session transcript as markdown or text.', editorKind: 'session-export-saved', kind: 'editor', safety: 'read-only' },
|
|
573
|
-
{ id: 'session-search', label: 'Search saved sessions', detail: 'Open a form that searches saved Agent sessions.', editorKind: 'session-search', kind: 'editor', safety: 'read-only' },
|
|
574
|
-
{ id: 'session-delete', label: 'Delete saved session', detail: 'Open a confirmed form before deleting one saved Agent session.', editorKind: 'session-delete', kind: 'editor', safety: 'safe' },
|
|
575
484
|
{ id: 'tasks-filter', label: 'Filter host tasks', detail: 'Open a status/kind form for read-only connected-host task filtering.', editorKind: 'task-list-filter', kind: 'editor', safety: 'read-only' },
|
|
576
485
|
{ id: 'task-show', label: 'Inspect host task', detail: 'Open a task-id form for read-only connected-host task metadata.', editorKind: 'task-show', kind: 'editor', safety: 'read-only' },
|
|
577
486
|
{ id: 'task-output', label: 'Show task output', detail: 'Open a task-id form for read-only connected-host task output.', editorKind: 'task-output', kind: 'editor', safety: 'read-only' },
|
|
@@ -579,6 +488,7 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
579
488
|
{ id: 'approval-approve', label: 'Approve request', detail: 'Open a confirmed form for approving one pending connected-host approval request by id.', editorKind: 'approval-approve', kind: 'editor', safety: 'safe' },
|
|
580
489
|
{ id: 'approval-deny', label: 'Deny request', detail: 'Open a confirmed form for denying one pending connected-host approval request by id.', editorKind: 'approval-deny', kind: 'editor', safety: 'safe' },
|
|
581
490
|
{ id: 'approval-cancel', label: 'Cancel request', detail: 'Open a confirmed form for cancelling one pending connected-host approval request by id.', editorKind: 'approval-cancel', kind: 'editor', safety: 'safe' },
|
|
491
|
+
{ id: 'delegate-task', label: 'Delegate a build task', detail: 'Hand one explicit build, fix, or review task to GoodVibes TUI with the full original ask, reason, and success criteria.', editorKind: 'delegate-task', kind: 'editor', safety: 'delegates' },
|
|
582
492
|
],
|
|
583
493
|
},
|
|
584
494
|
AGENT_WORKSPACE_HOST_CATEGORY,
|
|
@@ -586,10 +496,17 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
586
496
|
id: 'automation',
|
|
587
497
|
group: 'OPERATIONS',
|
|
588
498
|
label: 'Automation',
|
|
589
|
-
summary: '
|
|
499
|
+
summary: 'Automation limits, reminders, schedules, and routine promotion.',
|
|
590
500
|
detail: 'Agent does not create hidden local automation jobs. Confirmed reminders, reviewed routine promotion, and explicit run/pause/resume controls go through the connected host with confirmation.',
|
|
591
501
|
actions: [
|
|
592
502
|
{ id: 'schedule-setup-path', label: 'Schedule setup path', detail: 'Create a reminder or promote a reviewed routine, pick a real cadence, optionally choose a delivery target, confirm, then reconcile receipts with connected schedules.', kind: 'guidance', safety: 'safe' },
|
|
503
|
+
settingAction({ id: 'automation-enabled', label: 'Use automation', detail: 'Toggle the automation subsystem for reminders and scheduled routines.', key: 'automation.enabled' }),
|
|
504
|
+
settingAction({ id: 'automation-max-concurrent', label: 'Concurrent runs', detail: 'Set the maximum automation runs that can execute concurrently.', key: 'automation.maxConcurrentRuns', visibleWhenKey: 'automation.enabled', visibleWhenValue: true }),
|
|
505
|
+
settingAction({ id: 'automation-history-limit', label: 'Run history limit', detail: 'Set the number of run history entries retained per automation job.', key: 'automation.runHistoryLimit', visibleWhenKey: 'automation.enabled', visibleWhenValue: true }),
|
|
506
|
+
settingAction({ id: 'automation-default-timeout', label: 'Default timeout', detail: 'Set the default automation run timeout in milliseconds.', key: 'automation.defaultTimeoutMs', visibleWhenKey: 'automation.enabled', visibleWhenValue: true }),
|
|
507
|
+
settingAction({ id: 'automation-catch-up', label: 'Catch-up window', detail: 'Set how long startup should catch up missed automation runs.', key: 'automation.catchUpWindowMinutes', visibleWhenKey: 'automation.enabled', visibleWhenValue: true }),
|
|
508
|
+
settingAction({ id: 'automation-failure-cooldown', label: 'Failure cooldown', detail: 'Set the cooldown after a failed automation run.', key: 'automation.failureCooldownMs', visibleWhenKey: 'automation.enabled', visibleWhenValue: true }),
|
|
509
|
+
settingAction({ id: 'automation-delete-after-run', label: 'Delete one-shot jobs', detail: 'Toggle deleting one-shot automation jobs after their first successful run.', key: 'automation.deleteAfterRun', visibleWhenKey: 'automation.enabled', visibleWhenValue: true }),
|
|
593
510
|
{ id: 'schedule-autonomy-queue', label: 'Autonomy queue', detail: 'Inspect visible reminder, routine promotion, connected schedule, automation run, and cancellation routes.', kind: 'guidance', safety: 'read-only' },
|
|
594
511
|
{ id: 'schedule-next-action', label: 'Next schedule action', detail: 'Use the detail pane to choose whether to create a reminder, prepare a routine, promote a routine, or reconcile existing receipts.', kind: 'guidance', safety: 'safe' },
|
|
595
512
|
{ id: 'schedule-reminder', label: 'Create reminder', detail: 'Open an in-workspace form that creates one connected reminder schedule with real timing, optional delivery target, and explicit confirmation.', editorKind: 'reminder-schedule', kind: 'editor', safety: 'safe' },
|
|
@@ -602,23 +519,11 @@ export const AGENT_WORKSPACE_CATEGORIES: readonly AgentWorkspaceCategory[] = [
|
|
|
602
519
|
{ id: 'schedule-run', label: 'Run schedule now', detail: 'Open a confirmed form that triggers one connected-host schedule by id.', editorKind: 'schedule-run', kind: 'editor', safety: 'safe' },
|
|
603
520
|
{ id: 'schedule-promote-routine', label: 'Promote routine', detail: 'Open an in-workspace form that creates one connected schedule from an Agent-local routine with real timing, optional delivery target, and explicit confirmation.', editorKind: 'routine-schedule', kind: 'editor', safety: 'safe' },
|
|
604
521
|
{ id: 'schedule-receipt', label: 'Show receipt', detail: 'Open a receipt-id form for read-only schedule receipt detail.', editorKind: 'schedule-receipt', kind: 'editor', safety: 'read-only' },
|
|
605
|
-
{ id: 'schedule-delivery-targets', label: 'Delivery targets', detail: 'Open Channels to pair companion surfaces, inspect route readiness, and add explicit notification targets before reminder delivery.', targetCategoryId: 'channels', kind: 'workspace', safety: 'safe' },
|
|
522
|
+
{ id: 'schedule-delivery-targets', label: 'Delivery targets', detail: 'Open Channels to pair companion surfaces, inspect route readiness, and add explicit notification targets before reminder delivery.', targetCategoryId: 'onboarding-channels', kind: 'workspace', safety: 'safe' },
|
|
606
523
|
{ id: 'schedule-policy', label: 'Local scheduler blocked', detail: 'Local schedule creation remains blocked. Connected edit, run, enable, disable, and delete actions use explicit confirmed forms only.', kind: 'guidance', safety: 'blocked' },
|
|
607
524
|
{ id: 'health-repair', label: 'Health repair guidance', detail: 'Open a domain form for read-only health repair guidance.', editorKind: 'health-repair', kind: 'editor', safety: 'read-only' },
|
|
608
525
|
],
|
|
609
526
|
},
|
|
610
|
-
{
|
|
611
|
-
id: 'delegate',
|
|
612
|
-
group: 'OPERATIONS',
|
|
613
|
-
label: 'Build Delegation',
|
|
614
|
-
summary: 'Explicit handoff to GoodVibes TUI for code work.',
|
|
615
|
-
detail: 'Agent does not become the coding TUI. Build, implement, fix, patch, and review work can be handed to GoodVibes TUI with the full original ask, reason, success criteria, and delegated review only when explicitly requested.',
|
|
616
|
-
actions: [
|
|
617
|
-
{ id: 'delegate-guidance', label: 'Delegation rule', detail: 'For build/fix/review work, delegate only when isolation, remote execution, parallelism, separate worktrees, a TUI workflow, or explicit review improves the user outcome.', kind: 'guidance', safety: 'delegates' },
|
|
618
|
-
{ id: 'delegate-task', label: 'Delegate build task', detail: 'Open a confirmed form that sends one explicit build/fix/review task and handoff brief to GoodVibes TUI/shared-session routes.', editorKind: 'delegate-task', kind: 'editor', safety: 'delegates' },
|
|
619
|
-
{ id: 'review-command', label: 'Review delegation command', detail: 'Use the confirmed delegation form only when the user explicitly asks for code review/build execution. Include the actual task text, preserve the full original ask, and request delegated review only when asked.', kind: 'guidance', safety: 'delegates' },
|
|
620
|
-
],
|
|
621
|
-
},
|
|
622
527
|
{
|
|
623
528
|
id: 'finish',
|
|
624
529
|
group: 'FINISH',
|
|
@@ -31,6 +31,7 @@ type AgentWorkspaceCommandEditorKind = AgentWorkspaceBasicCommandEditorKind | Ex
|
|
|
31
31
|
| 'knowledge-search'
|
|
32
32
|
| 'knowledge-ask'
|
|
33
33
|
| 'model-compare'
|
|
34
|
+
| 'local-model-benchmark'
|
|
34
35
|
| 'document-browse'
|
|
35
36
|
| 'document-show'
|
|
36
37
|
| 'document-create'
|
|
@@ -80,6 +81,8 @@ type AgentWorkspaceCommandEditorKind = AgentWorkspaceBasicCommandEditorKind | Ex
|
|
|
80
81
|
| 'persona-discovery-import'
|
|
81
82
|
| 'routine-discovery-import'
|
|
82
83
|
| 'skill-discovery-import'
|
|
84
|
+
| 'skill-standard-import'
|
|
85
|
+
| 'skill-standard-export'
|
|
83
86
|
| 'profile-template-export'
|
|
84
87
|
| 'profile-template-import'
|
|
85
88
|
| 'profile-template-from-discovered'
|
|
@@ -135,6 +138,7 @@ export function isAgentWorkspaceCommandEditorKind(kind: AgentWorkspaceEditorKind
|
|
|
135
138
|
|| kind === 'artifact-export-package'
|
|
136
139
|
|| kind === 'artifact-promote-knowledge'
|
|
137
140
|
|| kind === 'model-compare'
|
|
141
|
+
|| kind === 'local-model-benchmark'
|
|
138
142
|
|| kind === 'document-browse'
|
|
139
143
|
|| kind === 'document-show'
|
|
140
144
|
|| kind === 'document-create'
|
|
@@ -11,11 +11,6 @@ export const AGENT_WORKSPACE_HOST_CATEGORY: AgentWorkspaceCategory = {
|
|
|
11
11
|
{ id: 'host-task-show', label: 'Inspect host task', detail: 'Open a task-id form for read-only connected-host task metadata.', editorKind: 'task-show', kind: 'editor', safety: 'read-only' },
|
|
12
12
|
{ id: 'host-task-output', label: 'Show task output', detail: 'Open a task-id form for read-only connected-host task output.', editorKind: 'task-output', kind: 'editor', safety: 'read-only' },
|
|
13
13
|
{ id: 'host-session-graph', label: 'Session graph', detail: 'Open a read-only form for cross-session graph inspection; graph mutation remains blocked in Agent.', editorKind: 'session-graph', kind: 'editor', safety: 'read-only' },
|
|
14
|
-
{ id: 'host-channels', label: 'Open Channels', detail: 'Jump to the channel setup and delivery workspace.', targetCategoryId: 'channels', kind: 'workspace', safety: 'safe' },
|
|
15
|
-
{ id: 'host-automation', label: 'Open Automation', detail: 'Jump to connected schedules, reminders, receipts, and explicit run controls.', targetCategoryId: 'automation', kind: 'workspace', safety: 'safe' },
|
|
16
|
-
{ id: 'host-knowledge-open', label: 'Open Knowledge', detail: 'Jump to Agent Knowledge source, graph, review, and ingest controls.', targetCategoryId: 'knowledge', kind: 'workspace', safety: 'safe' },
|
|
17
|
-
{ id: 'host-media-open', label: 'Open Voice and Media', detail: 'Jump to voice, TTS, image input, media provider, and browser-tool setup actions.', targetCategoryId: 'voice-media', kind: 'workspace', safety: 'safe' },
|
|
18
|
-
{ id: 'host-tools-open', label: 'Open Tools and MCP', detail: 'Jump to MCP server setup, tool inventory, secrets, and security review.', targetCategoryId: 'tools', kind: 'workspace', safety: 'safe' },
|
|
19
14
|
{ id: 'host-provider-detail', label: 'Provider detail', detail: 'Open a provider-id form for account and provider configuration review.', editorKind: 'provider-inspect', kind: 'editor', safety: 'read-only' },
|
|
20
15
|
{ id: 'host-provider-routes', label: 'Provider routes', detail: 'Open a provider-id form for account, subscription, and route inspection.', editorKind: 'provider-routes', kind: 'editor', safety: 'read-only' },
|
|
21
16
|
{ id: 'host-provider-repair', label: 'Provider repair guidance', detail: 'Open a provider-id form for read-only provider repair guidance.', editorKind: 'provider-account-repair', kind: 'editor', safety: 'read-only' },
|
|
@@ -53,8 +53,10 @@ export function submitAgentWorkspaceLocalRegistryEditor(
|
|
|
53
53
|
submitPersonaEditor(shellPaths, editor, field, callbacks.finishLocalEditor);
|
|
54
54
|
} else if (editor.kind === 'skill') {
|
|
55
55
|
submitSkillEditor(shellPaths, editor, field, callbacks.finishLocalEditor);
|
|
56
|
-
} else {
|
|
56
|
+
} else if (editor.kind === 'routine') {
|
|
57
57
|
submitRoutineEditor(shellPaths, editor, field, callbacks.finishLocalEditor);
|
|
58
|
+
} else {
|
|
59
|
+
throw new Error(`This form isn't wired to a save action yet (kind: ${editor.kind}).`);
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
62
|
|
|
@@ -15,9 +15,12 @@ const AGENT_WORKSPACE_CATEGORY_ALIASES = {
|
|
|
15
15
|
host: 'host',
|
|
16
16
|
mcp: 'tools',
|
|
17
17
|
tool: 'tools',
|
|
18
|
-
channel: 'channels',
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
channel: 'onboarding-channels',
|
|
19
|
+
channels: 'onboarding-channels',
|
|
20
|
+
messaging: 'onboarding-channels',
|
|
21
|
+
voice: 'onboarding-voice-media',
|
|
22
|
+
media: 'onboarding-voice-media',
|
|
23
|
+
'voice-media': 'onboarding-voice-media',
|
|
21
24
|
profile: 'profiles',
|
|
22
25
|
persona: 'personas',
|
|
23
26
|
skill: 'skills',
|
|
@@ -31,6 +34,10 @@ const AGENT_WORKSPACE_CATEGORY_ALIASES = {
|
|
|
31
34
|
note: 'notes',
|
|
32
35
|
scratchpad: 'notes',
|
|
33
36
|
kb: 'knowledge',
|
|
37
|
+
artifacts: 'documents',
|
|
38
|
+
artifact: 'documents',
|
|
39
|
+
delegate: 'work',
|
|
40
|
+
delegation: 'work',
|
|
34
41
|
} as const satisfies Readonly<Record<string, AgentWorkspaceCategoryId>>;
|
|
35
42
|
|
|
36
43
|
type AgentWorkspaceCategoryAlias = keyof typeof AGENT_WORKSPACE_CATEGORY_ALIASES;
|