@pellux/goodvibes-agent 1.1.7 → 1.2.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 +170 -0
- package/README.md +46 -30
- package/dist/package/{ast-grep-napi.linux-x64-gnu-mkk8xwww.node → ast-grep-napi.linux-x64-gnu-swtppvy9.node} +0 -0
- package/dist/package/{ast-grep-napi.linux-x64-musl-ryqtgdv6.node → ast-grep-napi.linux-x64-musl-ttfcdtap.node} +0 -0
- package/dist/package/main.js +132577 -91483
- package/docs/README.md +14 -7
- package/docs/channels-remote-and-api.md +8 -5
- package/docs/connected-host.md +14 -12
- package/docs/getting-started.md +56 -30
- package/docs/knowledge-artifacts-and-multimodal.md +7 -5
- package/docs/project-planning.md +2 -2
- package/docs/providers-and-routing.md +11 -3
- package/docs/tools-and-commands.md +114 -45
- package/docs/voice-and-live-tts.md +3 -1
- package/package.json +3 -2
- package/release/release-notes.md +130 -5
- package/release/release-readiness.json +120 -90
- package/src/agent/assistant-cockpit.ts +247 -0
- package/src/agent/autonomy-schedule-format.ts +96 -0
- package/src/agent/autonomy-schedule.ts +514 -0
- package/src/agent/channel-delivery-receipts.ts +292 -0
- package/src/agent/competitive-feature-inventory.ts +296 -0
- package/src/agent/document-registry-types.ts +106 -0
- package/src/agent/document-registry.ts +734 -0
- package/src/agent/harness-control.ts +2 -2
- package/src/agent/memory-prompt.ts +2 -2
- package/src/agent/operator-actions.ts +50 -6
- package/src/agent/persona-registry.ts +8 -0
- package/src/agent/project-context-files.ts +273 -0
- package/src/agent/prompt-context-receipts.ts +502 -0
- package/src/agent/reminder-schedule-format.ts +16 -2
- package/src/agent/research-run-registry.ts +582 -0
- package/src/agent/research-source-registry.ts +441 -0
- package/src/agent/routine-registry.ts +19 -3
- package/src/agent/routine-schedule-format.ts +27 -2
- package/src/agent/runtime-profile-starters.ts +7 -0
- package/src/agent/runtime-profile.ts +106 -4
- package/src/agent/schedule-edit-format.ts +129 -0
- package/src/agent/schedule-edit.ts +496 -0
- package/src/agent/schedule-next-routes.ts +42 -0
- package/src/agent/setup-wizard-checkpoint.ts +140 -0
- package/src/agent/setup-wizard.ts +447 -0
- package/src/agent/skill-registry-types.ts +102 -0
- package/src/agent/skill-registry.ts +81 -107
- package/src/agent/vibe-confirmation-routes.ts +62 -0
- package/src/agent/vibe-file.ts +285 -0
- package/src/cli/agent-knowledge-command.ts +45 -2
- package/src/cli/help.ts +3 -0
- package/src/cli/profiles-command.ts +25 -11
- package/src/config/agent-settings-policy.ts +1 -18
- package/src/input/agent-workspace-activation.ts +53 -0
- package/src/input/agent-workspace-artifact-browser-editor.ts +494 -0
- package/src/input/agent-workspace-artifact-metadata.ts +17 -0
- package/src/input/agent-workspace-basic-command-editors.ts +5 -1
- package/src/input/agent-workspace-categories.ts +153 -155
- package/src/input/agent-workspace-channel-triage.ts +481 -0
- package/src/input/agent-workspace-channels.ts +263 -0
- package/src/input/agent-workspace-command-editor.ts +152 -0
- package/src/input/agent-workspace-context-snapshot.ts +349 -0
- package/src/input/agent-workspace-delegation-editor-submission.ts +8 -0
- package/src/input/agent-workspace-document-editor.ts +502 -0
- package/src/input/agent-workspace-document-ops-editor.ts +523 -0
- package/src/input/agent-workspace-host-category.ts +1 -1
- package/src/input/agent-workspace-local-library-snapshot.ts +167 -0
- package/src/input/agent-workspace-model-compare-editor.ts +376 -0
- package/src/input/agent-workspace-model-compare-prompt-submission.ts +552 -0
- package/src/input/agent-workspace-model-compare-types.ts +82 -0
- package/src/input/agent-workspace-model-compare-utils.ts +35 -0
- package/src/input/agent-workspace-onboarding-categories.ts +141 -0
- package/src/input/agent-workspace-operations-command-editor-submission.ts +53 -0
- package/src/input/agent-workspace-operations-command-editors.ts +22 -0
- package/src/input/agent-workspace-research-report-editor.ts +212 -0
- package/src/input/agent-workspace-research-run-editor.ts +144 -0
- package/src/input/agent-workspace-research-source-editor.ts +167 -0
- package/src/input/agent-workspace-review-packet-snapshot.ts +593 -0
- package/src/input/agent-workspace-review-packet-utils.ts +265 -0
- package/src/input/agent-workspace-settings.ts +262 -30
- package/src/input/agent-workspace-setup-checkpoint-action.ts +127 -0
- package/src/input/agent-workspace-setup-snapshot.ts +198 -0
- package/src/input/agent-workspace-setup.ts +34 -1
- package/src/input/agent-workspace-snapshot.ts +162 -147
- package/src/input/agent-workspace-types.ts +287 -2
- package/src/input/agent-workspace.ts +18 -0
- package/src/input/command-registry.ts +9 -2
- package/src/input/commands/agent-runtime-profile-runtime.ts +28 -13
- package/src/input/commands/channels-runtime.ts +102 -114
- package/src/input/commands/delegation-runtime.ts +87 -24
- package/src/input/commands/knowledge-browser-flags.ts +12 -0
- package/src/input/commands/knowledge.ts +28 -14
- package/src/input/commands/operator-actions-runtime.ts +6 -3
- package/src/input/commands/schedule-runtime.ts +71 -14
- package/src/input/commands/session-content.ts +2 -2
- package/src/input/commands/shell-core.ts +2 -0
- package/src/input/commands/vibe-runtime.ts +140 -0
- package/src/input/commands.ts +2 -0
- package/src/input/connected-host-routes.ts +123 -0
- package/src/input/settings-modal-types.ts +14 -0
- package/src/main.ts +15 -15
- package/src/panels/qr-panel.ts +2 -2
- package/src/renderer/agent-workspace-context-lines.ts +686 -0
- package/src/renderer/agent-workspace.ts +30 -419
- package/src/renderer/settings-modal-helpers.ts +12 -0
- package/src/renderer/settings-modal.ts +12 -0
- package/src/runtime/bootstrap-command-context.ts +11 -1
- package/src/runtime/bootstrap-command-parts.ts +14 -3
- package/src/runtime/bootstrap-core.ts +39 -1
- package/src/runtime/bootstrap-shell.ts +6 -0
- package/src/runtime/bootstrap.ts +113 -30
- package/src/runtime/connected-host-auth.ts +3 -2
- package/src/runtime/execution-ledger.ts +231 -0
- package/src/runtime/services.ts +88 -10
- package/src/runtime/tool-permission-safety.ts +199 -5
- package/src/shell/session-continuity-hints.ts +39 -0
- package/src/tools/agent-artifacts-tool.ts +606 -0
- package/src/tools/agent-audit-tool.ts +155 -0
- package/src/tools/agent-autonomy-schedule-tool.ts +238 -0
- package/src/tools/agent-autonomy-tool.ts +140 -0
- package/src/tools/agent-channel-send-tool.ts +24 -2
- package/src/tools/agent-channels-tool.ts +140 -0
- package/src/tools/agent-computer-tool.ts +168 -0
- package/src/tools/agent-context-policy.ts +137 -7
- package/src/tools/agent-context-tool.ts +143 -0
- package/src/tools/agent-delegation-tool.ts +128 -0
- package/src/tools/agent-device-tool.ts +240 -0
- package/src/tools/agent-documents-tool.ts +684 -0
- package/src/tools/agent-execution-tool.ts +230 -0
- package/src/tools/agent-harness-agent-orchestration.ts +703 -0
- package/src/tools/agent-harness-autonomy-intake.ts +785 -0
- package/src/tools/agent-harness-autonomy-live-records.ts +588 -0
- package/src/tools/agent-harness-autonomy-queue-types.ts +88 -0
- package/src/tools/agent-harness-autonomy-queue.ts +560 -0
- package/src/tools/agent-harness-background-processes-types.ts +35 -0
- package/src/tools/agent-harness-background-processes.ts +794 -0
- package/src/tools/agent-harness-browser-cockpit-route.ts +219 -0
- package/src/tools/agent-harness-browser-control.ts +338 -0
- package/src/tools/agent-harness-channel-metadata.ts +168 -10
- package/src/tools/agent-harness-cli-command-policy.ts +110 -0
- package/src/tools/agent-harness-command-catalog.ts +4 -2
- package/src/tools/agent-harness-command-runner.ts +42 -0
- package/src/tools/agent-harness-connected-host-status.ts +7 -4
- package/src/tools/agent-harness-delegation-posture.ts +234 -19
- package/src/tools/agent-harness-document-ops-reviewer-readiness.ts +234 -0
- package/src/tools/agent-harness-document-ops-types.ts +72 -0
- package/src/tools/agent-harness-document-ops.ts +671 -0
- package/src/tools/agent-harness-execution-history.ts +489 -0
- package/src/tools/agent-harness-execution-posture.ts +382 -0
- package/src/tools/agent-harness-file-recovery.ts +135 -0
- package/src/tools/agent-harness-keybinding-metadata.ts +16 -12
- package/src/tools/agent-harness-learning-curator-common.ts +102 -0
- package/src/tools/agent-harness-learning-curator-consolidation.ts +295 -0
- package/src/tools/agent-harness-learning-curator-proposals.ts +606 -0
- package/src/tools/agent-harness-learning-curator-types.ts +151 -0
- package/src/tools/agent-harness-learning-curator.ts +417 -0
- package/src/tools/agent-harness-local-model-benchmarks.ts +199 -0
- package/src/tools/agent-harness-local-model-cookbook.ts +238 -0
- package/src/tools/agent-harness-local-model-endpoints.ts +673 -0
- package/src/tools/agent-harness-media-posture.ts +208 -2
- package/src/tools/agent-harness-memory-posture.ts +556 -0
- package/src/tools/agent-harness-metadata.ts +100 -168
- package/src/tools/agent-harness-mode-catalog.ts +84 -33
- package/src/tools/agent-harness-model-catalog.ts +162 -0
- package/src/tools/agent-harness-model-provider-health.ts +186 -0
- package/src/tools/agent-harness-model-readiness.ts +406 -0
- package/src/tools/agent-harness-model-routing-types.ts +266 -0
- package/src/tools/agent-harness-model-routing-utils.ts +30 -0
- package/src/tools/agent-harness-model-routing.ts +137 -190
- package/src/tools/agent-harness-operator-methods.ts +115 -133
- package/src/tools/agent-harness-pairing-posture.ts +431 -18
- package/src/tools/agent-harness-personal-ops-discovery.ts +533 -0
- package/src/tools/agent-harness-personal-ops-intake.ts +385 -0
- package/src/tools/agent-harness-personal-ops-lanes.ts +204 -0
- package/src/tools/agent-harness-personal-ops-records.ts +732 -0
- package/src/tools/agent-harness-personal-ops-runner.ts +637 -0
- package/src/tools/agent-harness-personal-ops-types.ts +222 -0
- package/src/tools/agent-harness-personal-ops.ts +606 -0
- package/src/tools/agent-harness-project-context.ts +144 -0
- package/src/tools/agent-harness-prompt-context.ts +589 -0
- package/src/tools/agent-harness-provider-account-metadata.ts +2 -2
- package/src/tools/agent-harness-release-evidence.ts +9 -7
- package/src/tools/agent-harness-release-readiness.ts +9 -7
- package/src/tools/agent-harness-research-briefing.ts +427 -0
- package/src/tools/agent-harness-research-queue.ts +250 -0
- package/src/tools/agent-harness-research-runs.ts +295 -0
- package/src/tools/agent-harness-research-workflow.ts +322 -0
- package/src/tools/agent-harness-security-posture.ts +2 -2
- package/src/tools/agent-harness-service-posture.ts +9 -9
- package/src/tools/agent-harness-session-metadata.ts +3 -3
- package/src/tools/agent-harness-setup-connected-host.ts +501 -0
- package/src/tools/agent-harness-setup-describe.ts +557 -0
- package/src/tools/agent-harness-setup-handoffs.ts +502 -0
- package/src/tools/agent-harness-setup-model-helpers.ts +101 -0
- package/src/tools/agent-harness-setup-plan.ts +253 -0
- package/src/tools/agent-harness-setup-posture-types.ts +218 -0
- package/src/tools/agent-harness-setup-posture-utils.ts +173 -0
- package/src/tools/agent-harness-setup-posture.ts +449 -221
- package/src/tools/agent-harness-setup-smoke.ts +508 -0
- package/src/tools/agent-harness-sudo-posture.ts +114 -0
- package/src/tools/agent-harness-tool-schema.ts +120 -7
- package/src/tools/agent-harness-tool-types.ts +78 -0
- package/src/tools/agent-harness-tool-utils.ts +43 -0
- package/src/tools/agent-harness-tool.ts +311 -370
- package/src/tools/agent-harness-ui-surface-metadata.ts +76 -69
- package/src/tools/agent-harness-ui-surface-types.ts +46 -0
- package/src/tools/agent-harness-vibe-health.ts +105 -0
- package/src/tools/agent-harness-workspace-action-runner.ts +149 -0
- package/src/tools/agent-harness-workspace-actions.ts +114 -8
- package/src/tools/agent-harness-workspace-editor-execution.ts +214 -0
- package/src/tools/agent-harness-workspace-editor-runner.ts +755 -0
- package/src/tools/agent-host-tool.ts +159 -0
- package/src/tools/agent-knowledge-ingest-tool.ts +34 -1
- package/src/tools/agent-learning-consolidation-core.ts +327 -0
- package/src/tools/agent-learning-consolidation-tool.ts +758 -0
- package/src/tools/agent-memory-tool.ts +214 -0
- package/src/tools/agent-model-compare-export.ts +315 -0
- package/src/tools/agent-model-compare-handoff.ts +592 -0
- package/src/tools/agent-model-compare-judgment.ts +633 -0
- package/src/tools/agent-model-compare-run.ts +722 -0
- package/src/tools/agent-model-compare-tool.ts +698 -0
- package/src/tools/agent-model-compare-types.ts +191 -0
- package/src/tools/agent-model-compare-utils.ts +93 -0
- package/src/tools/agent-models-tool.ts +208 -0
- package/src/tools/agent-operator-action-tool.ts +1 -1
- package/src/tools/agent-operator-method-tool.ts +643 -0
- package/src/tools/agent-personal-ops-tool.ts +197 -0
- package/src/tools/agent-policy-explanation.ts +415 -0
- package/src/tools/agent-research-report-tool.ts +608 -0
- package/src/tools/agent-research-runs-tool.ts +434 -0
- package/src/tools/agent-research-sources-tool.ts +443 -0
- package/src/tools/agent-research-tool.ts +687 -0
- package/src/tools/agent-review-packet-presets-core.ts +757 -0
- package/src/tools/agent-review-packet-presets-tool.ts +466 -0
- package/src/tools/agent-review-packet-share-tool.ts +305 -0
- package/src/tools/agent-route-planner-candidates-setup.ts +411 -0
- package/src/tools/agent-route-planner-candidates-surfaces.ts +432 -0
- package/src/tools/agent-route-planner-candidates-work.ts +251 -0
- package/src/tools/agent-route-planner-helpers.ts +667 -0
- package/src/tools/agent-route-planner.ts +185 -0
- package/src/tools/agent-route-tool.ts +105 -0
- package/src/tools/agent-schedule-edit-tool.ts +210 -0
- package/src/tools/agent-schedule-tool.ts +282 -0
- package/src/tools/agent-security-tool.ts +145 -0
- package/src/tools/agent-sessions-tool.ts +122 -0
- package/src/tools/agent-settings-import-tool.ts +104 -0
- package/src/tools/agent-settings-tool.ts +176 -0
- package/src/tools/agent-setup-tool.ts +226 -0
- package/src/tools/agent-support-tool.ts +122 -0
- package/src/tools/agent-terminal-process-tools.ts +167 -0
- package/src/tools/agent-tool-policy-guard-types.ts +77 -0
- package/src/tools/agent-tool-policy-guard.ts +106 -85
- package/src/tools/agent-vibe-tool.ts +297 -0
- package/src/tools/agent-work-plan-tool.ts +265 -6
- package/src/tools/agent-workspace-tool.ts +305 -0
- package/src/tools/artifact-archive.ts +169 -0
- package/src/tools/tool-definition-compaction.ts +36 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
import type { RouteCandidateDraft } from './agent-route-planner.ts';
|
|
2
|
+
import { directScheduleLike, externalChannelLike, externalMemoryProviderId, externalMemoryProviderLike, hasAll, hasAny, hostDiagnosticsLike, localModelLike, localModelSmokeLike, modelProviderId, modelRouteReadinessLike, personalOpsBriefingLike, personalOpsConnectorSetupLike, personalOpsFreshReadLike, personalOpsLaneFromText, personalOpsLike, personalOpsMutationLike, personalOpsQueueLike, providerAccountLike, quote } from './agent-route-planner-helpers.ts';
|
|
3
|
+
|
|
4
|
+
export function addSetupModelContextRouteCandidates(
|
|
5
|
+
lower: string,
|
|
6
|
+
request: string,
|
|
7
|
+
add: (candidate: RouteCandidateDraft) => void,
|
|
8
|
+
): void {
|
|
9
|
+
if (hasAny(lower, ['setup', 'first run', 'first-run', 'install', 'bootstrap', 'onboarding', 'start host', 'start daemon', 'goodvibes-daemon', 'connected host', 'token', 'smoke'])) {
|
|
10
|
+
add({
|
|
11
|
+
id: 'setup-and-host-readiness',
|
|
12
|
+
label: 'Guided setup or connected-host repair',
|
|
13
|
+
score: 95,
|
|
14
|
+
userSurface: 'Start workspace',
|
|
15
|
+
userOutcome: 'Get the assistant reachable and working before asking the user to diagnose topology.',
|
|
16
|
+
why: 'The request is about install, first-run setup, host availability, auth, token, or setup smoke evidence.',
|
|
17
|
+
modelRoute: 'setup action:"status" includeParameters:true',
|
|
18
|
+
inspectRoute: 'host action:"status" includeParameters:true',
|
|
19
|
+
userRoute: 'Agent Workspace -> Start',
|
|
20
|
+
requiresConfirmation: false,
|
|
21
|
+
supportingRoutes: [
|
|
22
|
+
'setup action:"item" setupItemId:"connected-host-service"',
|
|
23
|
+
'setup action:"token" confirm:true explicitUserRequest:"..."',
|
|
24
|
+
'setup action:"smoke" confirm:true explicitUserRequest:"..."',
|
|
25
|
+
'host action:"services" includeParameters:true',
|
|
26
|
+
],
|
|
27
|
+
policy: 'Setup inspection is read-only; token repair, smoke execution, service lifecycle, and finish markers stay confirmed.',
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (hostDiagnosticsLike(lower)) {
|
|
32
|
+
add({
|
|
33
|
+
id: 'host-runtime-diagnostics',
|
|
34
|
+
label: 'Connected host diagnostics',
|
|
35
|
+
score: 97,
|
|
36
|
+
userSurface: 'Start workspace diagnostics',
|
|
37
|
+
userOutcome: 'Inspect daemon, host, service, and compatibility health through read-only connected-host diagnostics.',
|
|
38
|
+
why: 'The request asks for daemon, host, service, health, doctor, readiness, or compatibility diagnostics.',
|
|
39
|
+
modelRoute: 'host action:"status" includeParameters:true',
|
|
40
|
+
inspectRoute: 'host action:"capabilities" includeParameters:true',
|
|
41
|
+
userRoute: 'Agent Workspace -> Start',
|
|
42
|
+
requiresConfirmation: false,
|
|
43
|
+
supportingRoutes: [
|
|
44
|
+
'host action:"services" includeParameters:true',
|
|
45
|
+
'host action:"methods" includeParameters:true',
|
|
46
|
+
'setup action:"repair" target:"host" includeParameters:true',
|
|
47
|
+
'setup action:"smoke" confirm:true explicitUserRequest:"..."',
|
|
48
|
+
],
|
|
49
|
+
policy: 'Host diagnostics are read-only. Service lifecycle, setup smoke, token repair, and operator methods remain explicit confirmed routes.',
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (hasAll(lower, ['goodvibes', 'settings']) || hasAny(lower, ['import settings', 'tui settings', 'shared settings', 'copy settings', 'settings import'])) {
|
|
54
|
+
add({
|
|
55
|
+
id: 'goodvibes-settings-import',
|
|
56
|
+
label: 'Preview or import GoodVibes settings',
|
|
57
|
+
score: 100,
|
|
58
|
+
userSurface: 'Start workspace settings import',
|
|
59
|
+
userOutcome: 'Import compatible shared GoodVibes settings and subscription state into Agent-owned settings while capability implementations remain in their owning packages.',
|
|
60
|
+
why: 'The request asks to import or inspect existing GoodVibes settings.',
|
|
61
|
+
modelRoute: 'settings action:"import"',
|
|
62
|
+
inspectRoute: 'import_goodvibes_settings action:"preview"',
|
|
63
|
+
userRoute: 'Agent Workspace -> Start -> Import GoodVibes settings',
|
|
64
|
+
requiresConfirmation: true,
|
|
65
|
+
supportingRoutes: [
|
|
66
|
+
'settings action:"import" confirm:true explicitUserRequest:"..."',
|
|
67
|
+
'workspace action:"run" actionId:"import-goodvibes-tui-settings" confirm:true explicitUserRequest:"..."',
|
|
68
|
+
],
|
|
69
|
+
policy: 'Import previews are read-only; apply imports only Agent-owned settings and subscription state after confirmation without mutating source package stores.',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (hasAny(lower, ['setting', 'settings', 'config', 'configuration', 'preference', 'preferences']) && !hasAny(lower, ['import settings', 'tui settings', 'copy settings', 'settings import'])) {
|
|
74
|
+
const writeLike = hasAny(lower, ['set ', 'change', 'update', 'configure', 'reset', 'clear', 'default', 'restore']);
|
|
75
|
+
add({
|
|
76
|
+
id: 'agent-settings-configuration',
|
|
77
|
+
label: 'Agent settings inspection or change',
|
|
78
|
+
score: 84,
|
|
79
|
+
userSurface: 'Settings workspace',
|
|
80
|
+
userOutcome: 'Find the right Agent-owned setting and keep every setting mutation explicit and confirmed.',
|
|
81
|
+
why: 'The request mentions settings, configuration, or preferences without asking for GoodVibes TUI import.',
|
|
82
|
+
modelRoute: `settings action:"list" query:${quote(request)} includeParameters:true`,
|
|
83
|
+
inspectRoute: 'settings action:"list" includeParameters:true',
|
|
84
|
+
userRoute: 'Agent Workspace -> Settings',
|
|
85
|
+
requiresConfirmation: writeLike,
|
|
86
|
+
missingFields: writeLike ? ['setting key', 'new value or reset target', 'confirmation'] : undefined,
|
|
87
|
+
supportingRoutes: [
|
|
88
|
+
'settings action:"get" target:"..." includeParameters:true',
|
|
89
|
+
'settings action:"set" key:"..." value:... confirm:true explicitUserRequest:"..."',
|
|
90
|
+
'settings action:"reset" key:"..." confirm:true explicitUserRequest:"..."',
|
|
91
|
+
],
|
|
92
|
+
policy: 'Settings search and inspection are read-only. Set/reset/import effects mutate only Agent-owned settings and require confirmation.',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (hasAny(lower, ['model', 'provider', 'openrouter', 'openai', 'anthropic', 'claude', 'subscription', 'local model', 'ollama', 'llama.cpp', 'llamacpp', 'vllm', 'context window', 'api key', 'local server', 'cookbook'])) {
|
|
97
|
+
const providerId = modelProviderId(lower);
|
|
98
|
+
|
|
99
|
+
if (localModelSmokeLike(lower)) {
|
|
100
|
+
add({
|
|
101
|
+
id: 'local-model-smoke-check',
|
|
102
|
+
label: 'Local model server smoke check',
|
|
103
|
+
score: 98,
|
|
104
|
+
userSurface: 'Model Routing workspace',
|
|
105
|
+
userOutcome: 'Check local model endpoints only through the confirmed smoke route with clear success criteria.',
|
|
106
|
+
why: 'The request asks to check, smoke, or verify local model server health.',
|
|
107
|
+
modelRoute: `models action:"smoke" query:${quote(request)} includeParameters:true`,
|
|
108
|
+
inspectRoute: 'models action:"local" query:"local server health" includeParameters:true',
|
|
109
|
+
userRoute: 'Agent Workspace -> Model Routing -> Check local servers',
|
|
110
|
+
requiresConfirmation: true,
|
|
111
|
+
missingFields: ['local endpoint or route id when multiple candidates exist', 'timeout when not default', 'confirmation before probing local servers'],
|
|
112
|
+
supportingRoutes: [
|
|
113
|
+
`models action:"local" query:${quote(request)} includeParameters:true`,
|
|
114
|
+
'models action:"route" target:"local" includeParameters:true',
|
|
115
|
+
'setup action:"item" setupItemId:"local-model-readiness"',
|
|
116
|
+
],
|
|
117
|
+
policy: 'Local model discovery is read-only. Smoke checks may contact local endpoints and require confirm:true plus explicitUserRequest.',
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (localModelLike(lower)) {
|
|
122
|
+
const localEffect = hasAny(lower, ['download', 'install', 'start', 'serve', 'run ', 'set up', 'setup']);
|
|
123
|
+
add({
|
|
124
|
+
id: 'local-model-cookbook-route',
|
|
125
|
+
label: 'Local model cookbook and endpoint readiness',
|
|
126
|
+
score: localModelSmokeLike(lower) ? 94 : 96,
|
|
127
|
+
userSurface: 'Model Routing workspace',
|
|
128
|
+
userOutcome: 'Recommend local model recipes and inspect endpoint readiness before setup or smoke effects.',
|
|
129
|
+
why: 'The request mentions local models, Ollama, llama.cpp, vLLM, LM Studio, cookbook recipes, or hardware fit.',
|
|
130
|
+
modelRoute: `models action:"local" query:${quote(request)} includeParameters:true`,
|
|
131
|
+
inspectRoute: 'models action:"status" query:"local" includeParameters:true',
|
|
132
|
+
userRoute: 'Agent Workspace -> Model Routing -> Local cookbook',
|
|
133
|
+
requiresConfirmation: localEffect,
|
|
134
|
+
missingFields: localEffect ? ['selected recipe or endpoint', 'install/start/smoke intent', 'confirmation before local setup or server probing'] : undefined,
|
|
135
|
+
supportingRoutes: [
|
|
136
|
+
'models action:"route" target:"local" includeParameters:true',
|
|
137
|
+
'models action:"smoke" query:"local" confirm:true explicitUserRequest:"..."',
|
|
138
|
+
'agent_model_compare mode:"compare" confirm:true explicitUserRequest:"..."',
|
|
139
|
+
],
|
|
140
|
+
policy: 'Cookbook and endpoint readiness are read-only. Downloads, server starts, benchmark runs, route updates, and local smoke checks remain separate confirmed effects.',
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (providerAccountLike(lower) && !localModelLike(lower)) {
|
|
145
|
+
const providerEffect = hasAny(lower, ['connect', 'set up', 'setup', 'configure', 'add', 'login', 'sign in', 'api key', 'key', 'change', 'refresh']);
|
|
146
|
+
add({
|
|
147
|
+
id: 'model-provider-account-posture',
|
|
148
|
+
label: 'Model provider account and subscription posture',
|
|
149
|
+
score: 96,
|
|
150
|
+
userSurface: 'Model Routing workspace',
|
|
151
|
+
userOutcome: 'Inspect provider account, subscription, and auth readiness before changing credentials or model routes.',
|
|
152
|
+
why: 'The request mentions model providers, subscriptions, provider auth, or API keys.',
|
|
153
|
+
modelRoute: providerId
|
|
154
|
+
? `models action:"provider" providerId:"${providerId}" includeParameters:true`
|
|
155
|
+
: `models action:"providers" query:${quote(request)} includeParameters:true`,
|
|
156
|
+
inspectRoute: 'models action:"providers" includeParameters:true',
|
|
157
|
+
userRoute: 'Agent Workspace -> Model Routing -> Providers',
|
|
158
|
+
requiresConfirmation: providerEffect,
|
|
159
|
+
missingFields: providerEffect ? ['provider id', 'credential or subscription setup route', 'confirmation before storing credentials or changing routes'] : undefined,
|
|
160
|
+
supportingRoutes: [
|
|
161
|
+
'settings action:"list" query:"provider model api key" includeHidden:true',
|
|
162
|
+
'models action:"status" includeParameters:true',
|
|
163
|
+
'models action:"route" target:"default" includeParameters:true',
|
|
164
|
+
],
|
|
165
|
+
policy: 'Provider inspection is read-only. Credential storage, provider refreshes, and route changes stay on explicit confirmed settings or model-route effects.',
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (modelRouteReadinessLike(lower)) {
|
|
170
|
+
add({
|
|
171
|
+
id: 'model-route-readiness',
|
|
172
|
+
label: 'Model route fit and readiness',
|
|
173
|
+
score: 94,
|
|
174
|
+
userSurface: 'Model Routing workspace',
|
|
175
|
+
userOutcome: 'Inspect the best model route for context, tools, vision, cost, latency, and privacy before changing defaults.',
|
|
176
|
+
why: 'The request asks to choose, compare, or inspect model route fit.',
|
|
177
|
+
modelRoute: `models action:"route" query:${quote(request)} includeParameters:true`,
|
|
178
|
+
inspectRoute: 'models action:"status" includeParameters:true',
|
|
179
|
+
userRoute: 'Agent Workspace -> Model Routing -> Route readiness',
|
|
180
|
+
requiresConfirmation: hasAny(lower, ['change', 'switch', 'set default', 'apply', 'use ']),
|
|
181
|
+
missingFields: hasAny(lower, ['change', 'switch', 'set default', 'apply'])
|
|
182
|
+
? ['selected model route id', 'confirmation before route change']
|
|
183
|
+
: undefined,
|
|
184
|
+
supportingRoutes: [
|
|
185
|
+
'models action:"status" includeParameters:true',
|
|
186
|
+
'models action:"providers" includeParameters:true',
|
|
187
|
+
'agent_model_compare mode:"compare" confirm:true explicitUserRequest:"..."',
|
|
188
|
+
],
|
|
189
|
+
policy: 'Route inspection is read-only. Model comparisons and winner/default-route changes are separate confirmed routes with saved evidence.',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
add({
|
|
194
|
+
id: 'model-provider-routing',
|
|
195
|
+
label: 'Model/provider route readiness',
|
|
196
|
+
score: 88,
|
|
197
|
+
userSurface: 'Model Routing workspace',
|
|
198
|
+
userOutcome: 'Choose or diagnose model access without asking the user to know provider internals.',
|
|
199
|
+
why: 'The request is about model choice, provider accounts, subscriptions, local models, or context-window fit.',
|
|
200
|
+
modelRoute: 'models action:"status" includeParameters:true',
|
|
201
|
+
inspectRoute: 'models action:"route" target:"..." includeParameters:true',
|
|
202
|
+
userRoute: 'Agent Workspace -> Model Routing',
|
|
203
|
+
requiresConfirmation: false,
|
|
204
|
+
supportingRoutes: [
|
|
205
|
+
'models action:"local"',
|
|
206
|
+
'models action:"providers"',
|
|
207
|
+
'models action:"smoke" confirm:true explicitUserRequest:"..."',
|
|
208
|
+
],
|
|
209
|
+
policy: 'Model inspection and cookbook guidance are read-only; local smoke checks and route changes stay explicit confirmed actions.',
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (hasAny(lower, ['vibe.md', 'vibe ', 'personality', 'tone', 'style', 'persona', 'soul.md']) || hasAny(lower, ['agents.md', '.hermes.md', 'claude.md', '.cursorrules', 'project context'])) {
|
|
214
|
+
const contextRoute = hasAny(lower, ['agents.md', '.hermes.md', 'claude.md', '.cursorrules', 'project context'])
|
|
215
|
+
? 'context action:"files" includeParameters:true'
|
|
216
|
+
: 'vibe action:"status" includeParameters:true';
|
|
217
|
+
add({
|
|
218
|
+
id: 'personality-and-context',
|
|
219
|
+
label: 'Personality and project context',
|
|
220
|
+
score: 86,
|
|
221
|
+
userSurface: 'Local Context and Personas workspace',
|
|
222
|
+
userOutcome: 'Inspect or update how the assistant should behave without hidden prompt surprises.',
|
|
223
|
+
why: 'The request mentions VIBE.md, personality, personas, tone, or project instruction files.',
|
|
224
|
+
modelRoute: contextRoute,
|
|
225
|
+
inspectRoute: contextRoute,
|
|
226
|
+
userRoute: 'Agent Workspace -> Local Context',
|
|
227
|
+
requiresConfirmation: hasAny(lower, ['create', 'init', 'import', 'change', 'update']),
|
|
228
|
+
supportingRoutes: [
|
|
229
|
+
'vibe action:"show"',
|
|
230
|
+
'vibe action:"init" confirm:true explicitUserRequest:"..."',
|
|
231
|
+
'context action:"prompt" includeParameters:true',
|
|
232
|
+
'memory action:"curator" includeParameters:true',
|
|
233
|
+
],
|
|
234
|
+
policy: 'Context/personality inspection is read-only; VIBE.md creation or persona import requires confirmation and secret scanning.',
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (hasAny(lower, ['memory', 'remember', 'forget', 'recall', 'skill', 'routine', 'learn', 'learning']) || externalMemoryProviderLike(lower)) {
|
|
239
|
+
const providerId = externalMemoryProviderId(lower);
|
|
240
|
+
if (externalMemoryProviderLike(lower)) {
|
|
241
|
+
const externalEffect = hasAny(lower, ['connect', 'set up', 'setup', 'configure', 'enable', 'sync', 'import', 'export', 'write', 'upsert', 'delete', 'forget']);
|
|
242
|
+
add({
|
|
243
|
+
id: 'external-memory-provider-posture',
|
|
244
|
+
label: 'External memory provider setup posture',
|
|
245
|
+
score: 92,
|
|
246
|
+
userSurface: 'Local Context workspace',
|
|
247
|
+
userOutcome: 'Inspect provider readiness and required daemon/SDK contracts before promising external cross-session memory.',
|
|
248
|
+
why: 'The request mentions an external memory provider, backend, sync, import/export, or a named provider such as Honcho, Mem0, or Supermemory.',
|
|
249
|
+
modelRoute: providerId
|
|
250
|
+
? `memory action:"provider" providerId:"${providerId}" includeParameters:true`
|
|
251
|
+
: 'memory action:"status" query:"external memory provider" includeParameters:true',
|
|
252
|
+
inspectRoute: providerId
|
|
253
|
+
? `host action:"capability" query:"${providerId} memory provider"`
|
|
254
|
+
: 'memory action:"status" query:"external memory provider" includeParameters:true',
|
|
255
|
+
userRoute: 'Agent Workspace -> Local Context',
|
|
256
|
+
requiresConfirmation: externalEffect,
|
|
257
|
+
missingFields: [
|
|
258
|
+
...(providerId ? [] : ['provider id or backend name']),
|
|
259
|
+
'published setup/status/read/write/receipt contract before external memory is considered ready',
|
|
260
|
+
...(externalEffect ? ['confirmation for any provider write, sync, import, export, or credential effect'] : []),
|
|
261
|
+
],
|
|
262
|
+
supportingRoutes: [
|
|
263
|
+
'memory action:"status" query:"external memory provider" includeParameters:true',
|
|
264
|
+
'memory action:"provider" providerId:"honcho|mem0|supermemory" includeParameters:true',
|
|
265
|
+
'host action:"capability" query:"memory provider"',
|
|
266
|
+
'agent_harness mode:"mcp_servers" query:"memory provider"',
|
|
267
|
+
'settings action:"list" query:"memory" includeHidden:true',
|
|
268
|
+
],
|
|
269
|
+
policy: 'External memory posture is read-only. Agent-local memory remains the active path until SDK/daemon provider setup/status/read/write/sync contracts with secret-safe receipts are published for Agent to consume.',
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
add({
|
|
274
|
+
id: 'memory-learning',
|
|
275
|
+
label: 'Memory, routines, skills, and learning review',
|
|
276
|
+
score: 82,
|
|
277
|
+
userSurface: 'Local Context workspace',
|
|
278
|
+
userOutcome: 'Make durable learning reviewable, sourced, and reversible.',
|
|
279
|
+
why: 'The request is about memory, recall, skills, routines, or external memory providers.',
|
|
280
|
+
modelRoute: 'memory action:"status" includeParameters:true',
|
|
281
|
+
inspectRoute: 'memory action:"curator" includeParameters:true',
|
|
282
|
+
userRoute: 'Agent Workspace -> Local Context',
|
|
283
|
+
requiresConfirmation: hasAny(lower, ['save', 'remember', 'forget', 'delete', 'merge', 'consolidate', 'create']),
|
|
284
|
+
supportingRoutes: [
|
|
285
|
+
'memory action:"list"',
|
|
286
|
+
'memory action:"search" query:"..."',
|
|
287
|
+
'memory action:"candidate" candidateId:"..."',
|
|
288
|
+
'agent_learning_consolidation mode:"preview"',
|
|
289
|
+
],
|
|
290
|
+
policy: 'Memory reads and review queues are safe; durable memory writes or consolidation phases require reviewed confirmed routes.',
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (personalOpsLike(lower) && !externalChannelLike(lower) && !directScheduleLike(lower)) {
|
|
295
|
+
const laneId = personalOpsLaneFromText(lower);
|
|
296
|
+
const laneRoute = laneId ? `personal_ops action:"lane" laneId:"${laneId}" includeParameters:true` : 'personal_ops action:"status" includeParameters:true';
|
|
297
|
+
const laneQueueQuery = laneId ? ` query:"${laneId}"` : '';
|
|
298
|
+
const intakeRoute = `personal_ops action:"intake" query:${quote(request)} includeParameters:true`;
|
|
299
|
+
|
|
300
|
+
if (personalOpsConnectorSetupLike(lower)) {
|
|
301
|
+
const connectorEffect = hasAny(lower, ['connect', 'set up', 'setup', 'configure', 'enable', 'repair']);
|
|
302
|
+
add({
|
|
303
|
+
id: 'personal-ops-connector-setup',
|
|
304
|
+
label: 'Personal Ops connector setup posture',
|
|
305
|
+
score: 97,
|
|
306
|
+
userSurface: 'Personal Ops workspace',
|
|
307
|
+
userOutcome: 'Inspect the inbox or calendar connector lane before promising fresh provider data.',
|
|
308
|
+
why: 'The request mentions Gmail, IMAP/SMTP, CalDAV, or an email/calendar connector setup task.',
|
|
309
|
+
modelRoute: laneRoute,
|
|
310
|
+
inspectRoute: 'personal_ops action:"status" includeParameters:true',
|
|
311
|
+
userRoute: 'Agent Workspace -> Personal Ops -> Connector readiness',
|
|
312
|
+
requiresConfirmation: connectorEffect,
|
|
313
|
+
missingFields: connectorEffect ? ['connector/provider choice', 'credential or MCP setup route', 'confirmation before any account or secret mutation'] : undefined,
|
|
314
|
+
supportingRoutes: [
|
|
315
|
+
intakeRoute,
|
|
316
|
+
'agent_harness mode:"mcp_servers" query:"email calendar" includeParameters:true',
|
|
317
|
+
'settings action:"list" query:"gmail imap smtp caldav" includeHidden:true',
|
|
318
|
+
],
|
|
319
|
+
policy: 'Connector setup posture is read-only. Account connection, secret storage, MCP trust, and provider effects remain on explicit confirmed setup routes.',
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
if (personalOpsBriefingLike(lower)) {
|
|
324
|
+
add({
|
|
325
|
+
id: 'personal-ops-daily-briefing',
|
|
326
|
+
label: 'Personal Ops daily briefing',
|
|
327
|
+
score: 96,
|
|
328
|
+
userSurface: 'Personal Ops workspace',
|
|
329
|
+
userOutcome: 'Start with one read-only daily plan across agenda, inbox, tasks, reminders, routines, delivery, and autonomy.',
|
|
330
|
+
why: 'The request asks for a brief, briefing, agenda summary, or today view.',
|
|
331
|
+
modelRoute: `personal_ops action:"briefing" query:${quote(request)} includeParameters:true`,
|
|
332
|
+
inspectRoute: 'personal_ops action:"status" includeParameters:true',
|
|
333
|
+
userRoute: 'Agent Workspace -> Personal Ops -> Daily briefing',
|
|
334
|
+
requiresConfirmation: false,
|
|
335
|
+
supportingRoutes: [
|
|
336
|
+
'personal_ops action:"queue" includeParameters:true',
|
|
337
|
+
'personal_ops action:"lane" laneId:"calendar" includeParameters:true',
|
|
338
|
+
'autonomy action:"queue"',
|
|
339
|
+
'schedule action:"list" limit:5',
|
|
340
|
+
],
|
|
341
|
+
policy: 'Briefing is read-only. Live inbox/calendar reads, reminder creation, sends, edits, and schedule mutations stay on their owning confirmed routes.',
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
if (personalOpsQueueLike(lower)) {
|
|
346
|
+
add({
|
|
347
|
+
id: 'personal-ops-review-queue',
|
|
348
|
+
label: 'Personal Ops saved review queue',
|
|
349
|
+
score: 96,
|
|
350
|
+
userSurface: 'Personal Ops workspace',
|
|
351
|
+
userOutcome: 'Review saved inbox threads and calendar events before doing fresh reads or provider effects.',
|
|
352
|
+
why: 'The request asks for saved Personal Ops review queues or previously captured inbox/calendar cards.',
|
|
353
|
+
modelRoute: `personal_ops action:"queue"${laneQueueQuery} includeParameters:true`,
|
|
354
|
+
inspectRoute: laneRoute,
|
|
355
|
+
userRoute: 'Agent Workspace -> Personal Ops -> Review queue',
|
|
356
|
+
requiresConfirmation: false,
|
|
357
|
+
supportingRoutes: [
|
|
358
|
+
intakeRoute,
|
|
359
|
+
'personal_ops action:"read" laneId:"inbox|calendar" recordId:"..." fields:{...} confirm:true explicitUserRequest:"..."',
|
|
360
|
+
'agent_artifacts mode:"list" query:"personal ops review"',
|
|
361
|
+
],
|
|
362
|
+
policy: 'Review queue inspection is read-only. Refreshing from a provider or applying send/edit/archive/RSVP effects requires a selected connector route and confirmation.',
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
if (personalOpsFreshReadLike(lower)) {
|
|
367
|
+
add({
|
|
368
|
+
id: 'personal-ops-fresh-read-plan',
|
|
369
|
+
label: 'Personal Ops fresh provider read plan',
|
|
370
|
+
score: 95,
|
|
371
|
+
userSurface: 'Personal Ops workspace',
|
|
372
|
+
userOutcome: 'Select the safest read-only connector operation before fetching fresh inbox or calendar data.',
|
|
373
|
+
why: 'The request asks to refresh, sync, fetch, or inspect unread/upcoming personal provider data.',
|
|
374
|
+
modelRoute: intakeRoute,
|
|
375
|
+
inspectRoute: laneRoute,
|
|
376
|
+
userRoute: 'Agent Workspace -> Personal Ops -> Fresh read',
|
|
377
|
+
requiresConfirmation: true,
|
|
378
|
+
missingFields: ['lane id', 'read-only connector operation record id', 'bounded input fields', 'confirmation before reading live personal provider data'],
|
|
379
|
+
supportingRoutes: [
|
|
380
|
+
laneRoute,
|
|
381
|
+
'personal_ops action:"read" laneId:"inbox|calendar" recordId:"..." fields:{...} confirm:true explicitUserRequest:"..."',
|
|
382
|
+
'personal_ops action:"queue" includeParameters:true',
|
|
383
|
+
],
|
|
384
|
+
policy: 'Fresh provider reads are never implicit. The planner only selects the lane; one read-only connector operation still needs exact fields, confirm:true, and explicitUserRequest.',
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
add({
|
|
389
|
+
id: 'personal-ops-intake-route',
|
|
390
|
+
label: 'Personal Ops request intake',
|
|
391
|
+
score: hasAny(lower, ['email', 'inbox', 'calendar', 'agenda', 'draft reply', 'rsvp']) ? 94 : 78,
|
|
392
|
+
userSurface: 'Personal Ops workspace',
|
|
393
|
+
userOutcome: 'Triage personal data through reviewed lanes, redacted cards, and confirmed external effects.',
|
|
394
|
+
why: 'The request involves inbox, email, calendar, notes, tasks, reminders, or reply drafting.',
|
|
395
|
+
modelRoute: intakeRoute,
|
|
396
|
+
inspectRoute: laneRoute,
|
|
397
|
+
userRoute: 'Agent Workspace -> Personal Ops',
|
|
398
|
+
requiresConfirmation: personalOpsFreshReadLike(lower) || personalOpsMutationLike(lower),
|
|
399
|
+
missingFields: personalOpsMutationLike(lower)
|
|
400
|
+
? ['connector lane and record id', 'exact provider effect', 'confirmation']
|
|
401
|
+
: undefined,
|
|
402
|
+
supportingRoutes: [
|
|
403
|
+
'personal_ops action:"briefing" includeParameters:true',
|
|
404
|
+
'personal_ops action:"queue" includeParameters:true',
|
|
405
|
+
laneRoute,
|
|
406
|
+
'personal_ops action:"read" laneId:"inbox|calendar" recordId:"..." fields:{...} confirm:true explicitUserRequest:"..."',
|
|
407
|
+
],
|
|
408
|
+
policy: 'Personal Ops intake is read-only. Provider reads and every send/edit/archive/RSVP effect stay scoped and confirmed.',
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
}
|