@pellux/goodvibes-agent 0.1.47 → 0.1.49
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 +18 -10
- package/README.md +3 -23
- package/docs/README.md +0 -2
- package/package.json +1 -3
- package/src/cli/completion.ts +0 -1
- package/src/cli/help.ts +0 -12
- package/src/cli/management.ts +0 -6
- package/src/cli/package-verification.ts +0 -1
- package/src/cli/parser.ts +0 -4
- package/src/cli/types.ts +0 -1
- package/src/input/agent-workspace-channels.ts +214 -0
- package/src/input/agent-workspace-setup.ts +121 -0
- package/src/input/agent-workspace.ts +75 -210
- package/src/input/commands/experience-runtime.ts +2 -25
- package/src/input/commands/remote-runtime.ts +5 -5
- package/src/input/commands.ts +0 -2
- package/src/input/onboarding/onboarding-wizard-steps.ts +7 -7
- package/src/panels/builtin/knowledge.ts +3 -3
- package/src/panels/builtin/shared.ts +3 -0
- package/src/panels/knowledge-panel.ts +80 -9
- package/src/panels/provider-health-domains.ts +1 -1
- package/src/panels/remote-panel.ts +2 -2
- package/src/renderer/agent-workspace.ts +39 -10
- package/src/runtime/bootstrap-core.ts +2 -0
- package/src/runtime/bootstrap-shell.ts +1 -0
- package/src/runtime/bootstrap.ts +1 -0
- package/src/tools/agent-context-policy.ts +2 -2
- package/src/tools/agent-local-registry-tool.ts +341 -0
- package/src/verification/live-verifier.ts +0 -15
- package/src/version.ts +1 -1
- package/docs/operator-capability-benchmark.md +0 -106
- package/src/cli/capabilities-command.ts +0 -173
- package/src/config/goodvibes-home-audit.ts +0 -465
- package/src/input/commands/capabilities-runtime.ts +0 -102
- package/src/operator/capability-benchmark.ts +0 -244
- package/src/operator/daemon-capability-audit.ts +0 -1534
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
export type CompetitorProduct = 'openclaw' | 'hermes';
|
|
2
|
-
|
|
3
|
-
export type CapabilityPosture =
|
|
4
|
-
| 'ready'
|
|
5
|
-
| 'configurable'
|
|
6
|
-
| 'external-daemon'
|
|
7
|
-
| 'explicit-delegation'
|
|
8
|
-
| 'guarded'
|
|
9
|
-
| 'in-progress';
|
|
10
|
-
|
|
11
|
-
export interface OperatorCapabilityBenchmark {
|
|
12
|
-
readonly id: string;
|
|
13
|
-
readonly title: string;
|
|
14
|
-
readonly posture: CapabilityPosture;
|
|
15
|
-
readonly competitors: readonly CompetitorProduct[];
|
|
16
|
-
readonly competitorBaseline: string;
|
|
17
|
-
readonly goodvibesDaemon?: string;
|
|
18
|
-
readonly goodvibesAgent: string;
|
|
19
|
-
readonly configure: readonly string[];
|
|
20
|
-
readonly use: readonly string[];
|
|
21
|
-
readonly exceedsBy: readonly string[];
|
|
22
|
-
readonly next: readonly string[];
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface OperatorCapabilityBenchmarkReport {
|
|
26
|
-
readonly generatedAt: string;
|
|
27
|
-
readonly packageName: '@pellux/goodvibes-agent';
|
|
28
|
-
readonly benchmarkSources: readonly string[];
|
|
29
|
-
readonly capabilities: readonly OperatorCapabilityBenchmark[];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export const OPERATOR_CAPABILITY_BENCHMARK_SOURCES = [
|
|
33
|
-
'https://github.com/openclaw/openclaw/blob/main/README.md',
|
|
34
|
-
'https://docs.openclaw.ai/',
|
|
35
|
-
'https://docs.openclaw.ai/concepts/features',
|
|
36
|
-
'https://docs.openclaw.ai/help/faq',
|
|
37
|
-
'https://docs.openclaw.ai/concepts/memory',
|
|
38
|
-
'https://github.com/NousResearch/hermes-agent',
|
|
39
|
-
'https://hermes-agent.nousresearch.com/docs/user-guide/features/overview/',
|
|
40
|
-
'https://hermes-agent.nousresearch.com/docs/user-guide/features/tools/',
|
|
41
|
-
'https://hermes-agent.nousresearch.com/docs/user-guide/features/skills/',
|
|
42
|
-
'https://hermes-agent.nousresearch.com/docs/user-guide/features/cron/',
|
|
43
|
-
'https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp/',
|
|
44
|
-
'https://hermes-agent.nousresearch.com/docs/user-guide/features/voice-mode/',
|
|
45
|
-
'https://hermes-agent.nousresearch.com/docs/user-guide/features/api-server/',
|
|
46
|
-
'https://hermes-agent.nousresearch.com/docs/user-guide/profiles/',
|
|
47
|
-
'@pellux/goodvibes-sdk@0.33.35 public operator contract and /api/goodvibes-agent/knowledge routes',
|
|
48
|
-
] as const;
|
|
49
|
-
|
|
50
|
-
export const OPERATOR_CAPABILITY_BENCHMARKS: readonly OperatorCapabilityBenchmark[] = [
|
|
51
|
-
{
|
|
52
|
-
id: 'terminal-operator-ui',
|
|
53
|
-
title: 'Terminal Operator UI',
|
|
54
|
-
posture: 'ready',
|
|
55
|
-
competitors: ['openclaw', 'hermes'],
|
|
56
|
-
competitorBaseline: 'Interactive CLI/TUI entry point with command discovery and persistent sessions.',
|
|
57
|
-
goodvibesAgent: 'Near-fork GoodVibes TUI shell, renderer, compositor, input, fullscreen workspace, history, command registry, and release gates.',
|
|
58
|
-
configure: ['goodvibes-agent onboarding', 'goodvibes-agent status', 'goodvibes-agent --no-alt-screen'],
|
|
59
|
-
use: ['goodvibes-agent', '/agent', '/help'],
|
|
60
|
-
exceedsBy: ['Diff-rendered GoodVibes compositor foundation', 'fullscreen operator workspace', 'strict TypeScript/Bun release gates'],
|
|
61
|
-
next: ['Continue porting more GoodVibes TUI modal/workspace affordances into Agent-first setup flows.'],
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
id: 'external-gateway',
|
|
65
|
-
title: 'Always-On Gateway / Daemon',
|
|
66
|
-
posture: 'external-daemon',
|
|
67
|
-
competitors: ['openclaw', 'hermes'],
|
|
68
|
-
competitorBaseline: 'Always-on gateway/service provides channel ingress, sessions, tools, events, and scheduled execution.',
|
|
69
|
-
goodvibesDaemon: 'Daemon exposes status/auth/control, sessions, companion chat, channels, remote peers, approvals, automation, schedules, artifacts, MCP, providers, voice, media, web search, and isolated Agent Knowledge routes.',
|
|
70
|
-
goodvibesAgent: 'Connects to the GoodVibes daemon owned by GoodVibes TUI/daemon tooling; Agent never starts, stops, or owns daemon lifecycle.',
|
|
71
|
-
configure: ['goodvibes-agent compat', 'goodvibes-agent service check', 'goodvibes-agent control-plane status'],
|
|
72
|
-
use: ['goodvibes-agent status', 'goodvibes-agent doctor'],
|
|
73
|
-
exceedsBy: ['Typed SDK/operator contracts', 'explicit external-daemon boundary', 'no hidden lifecycle mutation from Agent'],
|
|
74
|
-
next: ['Improve daemon route readiness dashboard and setup diagnostics for first-run users.'],
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
id: 'multi-channel',
|
|
78
|
-
title: 'Channels And Companion Surfaces',
|
|
79
|
-
posture: 'configurable',
|
|
80
|
-
competitors: ['openclaw', 'hermes'],
|
|
81
|
-
competitorBaseline: 'Messaging gateway for WhatsApp, Telegram, Slack, Discord, Signal, iMessage, web chat, and related platforms.',
|
|
82
|
-
goodvibesDaemon: 'Public channel routes include channels.status, channels.capabilities.*, channels.accounts.*, channels.setup.*, channels.directory.*, channels.actions.*, channels.tools.*, channels.targets.resolve, pairing, and companion chat routes.',
|
|
83
|
-
goodvibesAgent: 'Uses GoodVibes daemon channel, companion, pairing, QR, communication, and session surfaces while keeping side effects behind explicit user action. The Agent workspace exposes channel setup, per-channel readiness, default-target posture, and risk labels as a first-class operator area.',
|
|
84
|
-
configure: ['goodvibes-agent pair', 'goodvibes-agent qrcode', 'goodvibes-agent surfaces check', '/agent → Channels'],
|
|
85
|
-
use: ['/agent → Channels', '/communication', '/pair'],
|
|
86
|
-
exceedsBy: ['Agent-owned safety policy over shared channel routes', 'read-only inspection by default', 'explicit approval path for external side effects', 'channel setup discoverable from the fullscreen operator workspace', 'per-channel readiness and delivery defaults shown without leaking token values'],
|
|
87
|
-
next: ['Pull live daemon account health and last delivery errors into the Channels workspace when a stable read-only route is available.'],
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
id: 'isolated-knowledge-wiki',
|
|
91
|
-
title: 'Isolated Agent Knowledge / Wiki',
|
|
92
|
-
posture: 'ready',
|
|
93
|
-
competitors: ['openclaw', 'hermes'],
|
|
94
|
-
competitorBaseline: 'Persistent memory and knowledge/wiki layers with search, recall, provenance, and freshness checks.',
|
|
95
|
-
goodvibesDaemon: 'Agent-specific daemon routes cover /api/goodvibes-agent/knowledge/status, ask, search, ingest, source/node/issue/candidate/refinement/report/job/schedule, projection, GraphQL, and usage surfaces.',
|
|
96
|
-
goodvibesAgent: 'Uses only /api/goodvibes-agent/knowledge/*; never falls back to default Knowledge/Wiki, HomeGraph, or Home Assistant routes. The Agent workspace exposes isolated ask/search/status, URL/bookmark ingestion, review queue, and consolidation workflows.',
|
|
97
|
-
configure: ['goodvibes-agent compat', 'goodvibes-agent knowledge status', '/agent → Knowledge'],
|
|
98
|
-
use: ['goodvibes-agent ask <question>', 'goodvibes-agent search <query>', '/knowledge ask <question>', '/knowledge ingest-url <url> --yes', '/knowledge queue'],
|
|
99
|
-
exceedsBy: ['Dedicated product segment for Agent knowledge', 'route-level isolation', 'package gates that reject default wiki/HomeGraph fallback', 'fullscreen review/ingest workflow that keeps writes explicit'],
|
|
100
|
-
next: ['Add artifact and multimodal Agent Knowledge ingest affordances once the Agent-specific route is stable.'],
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
id: 'local-memory-skills-personas',
|
|
104
|
-
title: 'Local Memory, Skills, Personas, And Routines',
|
|
105
|
-
posture: 'ready',
|
|
106
|
-
competitors: ['openclaw', 'hermes'],
|
|
107
|
-
competitorBaseline: 'Skills/procedural memory, persona files, profile state, durable memory, and recurring workflows.',
|
|
108
|
-
goodvibesAgent: 'Typed local registries for Agent personas, skills, routines, and local memory; active items are injected into the serial main conversation. Runtime profile starters seed curated persona, skill, and routine bundles, and users can export/edit/import local starters.',
|
|
109
|
-
configure: ['/personas create ...', '/agent-skills create ...', '/routines create ...', '/memory add ...', 'goodvibes-agent profiles create research --template research --yes', 'goodvibes-agent profiles templates import ./starter.json --yes'],
|
|
110
|
-
use: ['/personas use <id>', '/skills local list', '/routines start <id>', '/memory search <query>', 'goodvibes-agent profiles templates'],
|
|
111
|
-
exceedsBy: ['Review/stale lifecycle fields', 'secret-value rejection', 'Agent-local state that does not contaminate wiki or HomeGraph', 'starter bundles that remain local and reviewable', 'editable starter JSON for repeatable operator lanes'],
|
|
112
|
-
next: ['Add guided starter authoring inside the fullscreen Agent workspace.'],
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
id: 'automation-schedules',
|
|
116
|
-
title: 'Automation, Schedules, And Routines',
|
|
117
|
-
posture: 'configurable',
|
|
118
|
-
competitors: ['openclaw', 'hermes'],
|
|
119
|
-
competitorBaseline: 'Cron/scheduler can create, pause, resume, run, remove, and deliver recurring tasks from natural language.',
|
|
120
|
-
goodvibesDaemon: 'Public daemon routes cover automation.integration.snapshot, automation.jobs.*, automation.runs.*, automation.heartbeat.*, scheduler.capacity, schedules.create/list/run/enable/disable/delete, and delivery policy fields.',
|
|
121
|
-
goodvibesAgent: 'Observes public automation/schedule routes, keeps local routines separate from daemon jobs, and promotes a local routine into an external daemon schedules.create record only through an exact user command with --yes and optional explicit delivery targets.',
|
|
122
|
-
configure: ['/schedule list', '/routines create ...', '/schedule promote-routine <id> --cron "0 8 * * *" --delivery-surface slack --yes', 'goodvibes-agent routines promote <id> --every 1d --delivery-webhook https://example.test/hook --yes'],
|
|
123
|
-
use: ['/schedule list', '/routines start <id>', '/schedule promote-routine <id> --cron <expr> [--delivery-surface slack] --yes', '/schedule receipts', '/schedule reconcile'],
|
|
124
|
-
exceedsBy: ['No recursive hidden scheduler creation from model tools', 'explicit confirmation for side effects', 'local routines separate from daemon jobs', 'explicit delivery target selection', 'redacted promotion receipts', 'scheduled prompts preserve isolated Agent Knowledge and forbid default wiki/HomeGraph fallback'],
|
|
125
|
-
next: ['Add deeper live run/delivery history for promoted routines and expose delivery attempt errors in the operator workspace.'],
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
id: 'tool-gateway-mcp',
|
|
129
|
-
title: 'Tools, MCP, And Managed Integrations',
|
|
130
|
-
posture: 'configurable',
|
|
131
|
-
competitors: ['openclaw', 'hermes'],
|
|
132
|
-
competitorBaseline: 'Broad toolsets, MCP integration, browser/web/media tools, and configurable platform-specific tool availability.',
|
|
133
|
-
goodvibesDaemon: 'Daemon public routes include mcp.servers/tools/config, artifacts.create/get/list/content, web_search.providers/query, providers/model surfaces, media.analyze/generate/transform, multimodal providers, and channel tool/action registries.',
|
|
134
|
-
goodvibesAgent: 'Uses GoodVibes SDK tool registry, MCP inspection, provider tools, web search, media, plugins, and policy-gated model-visible tools.',
|
|
135
|
-
configure: ['/mcp servers', '/plugin list', 'goodvibes-agent providers', 'goodvibes-agent models'],
|
|
136
|
-
use: ['/mcp tools', '/provider current', 'goodvibes-agent search <query>'],
|
|
137
|
-
exceedsBy: ['Model-visible tool policies for read/write/network boundaries', 'typed contract gates', 'per-tool denial messages aligned with Agent product policy'],
|
|
138
|
-
next: ['Add a task-intent tool picker so only relevant tools are exposed per turn, reducing schema noise while preserving capability breadth.'],
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
id: 'voice-media-canvas',
|
|
142
|
-
title: 'Voice, Media, Canvas, And Nodes',
|
|
143
|
-
posture: 'configurable',
|
|
144
|
-
competitors: ['openclaw', 'hermes'],
|
|
145
|
-
competitorBaseline: 'Voice/TTS, mobile nodes, live canvas, browser automation, image/video generation, and multimodal analysis.',
|
|
146
|
-
goodvibesDaemon: 'Daemon public routes include voice.status/providers/voices/tts/stt/realtime, media providers/analyze/generate/transform, multimodal providers, artifacts, remote.snapshot/peers/work, and channel media-capable surfaces.',
|
|
147
|
-
goodvibesAgent: 'Uses GoodVibes voice/media/browser/node primitives and exposes an Agent workspace for TTS setup, image input, browser/web posture, MCP browser tools, and node/remote inspection.',
|
|
148
|
-
configure: ['/agent → Voice, Media & Nodes', '/config tts', '/voice review', '/mcp servers'],
|
|
149
|
-
use: ['/tts <prompt>', '/image <path> <prompt>', '/remote list'],
|
|
150
|
-
exceedsBy: ['Shared GoodVibes media/provider substrate', 'fullscreen setup visibility', 'read-only browser/node posture by default', 'template commands that cannot run without real target values'],
|
|
151
|
-
next: ['Add artifact and multimodal Agent Knowledge ingestion once the isolated Agent knowledge route accepts artifact-backed media.'],
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
id: 'explicit-build-delegation',
|
|
155
|
-
title: 'Build/Fix/Review Delegation',
|
|
156
|
-
posture: 'explicit-delegation',
|
|
157
|
-
competitors: ['openclaw', 'hermes'],
|
|
158
|
-
competitorBaseline: 'Terminal/file/code tools and subagents can execute software tasks directly.',
|
|
159
|
-
goodvibesDaemon: 'Daemon shared-session routes cover sessions.create/list/get/messages/followUp/steer/close/reopen and task/workflow visibility used by GoodVibes TUI-owned execution.',
|
|
160
|
-
goodvibesAgent: 'Main assistant stays serial. Explicit build/fix/review/code work is delegated to GoodVibes TUI/shared-session contracts; WRFC is opt-in only.',
|
|
161
|
-
configure: ['goodvibes-agent delegate --help', 'goodvibes-agent compat'],
|
|
162
|
-
use: ['goodvibes-agent delegate "fix the failing tests"', 'goodvibes-agent delegate --wrfc "implement and review the feature"'],
|
|
163
|
-
exceedsBy: ['Keeps personal operator brain separate from coding execution', 'delegates one authoritative TUI-owned execution chain', 'blocks local sibling agent fanout'],
|
|
164
|
-
next: ['Expose delegation receipts and artifacts in the operator workspace, with status recovery and user steering.'],
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
id: 'profiles-isolation',
|
|
168
|
-
title: 'Profiles And Isolated Operator State',
|
|
169
|
-
posture: 'ready',
|
|
170
|
-
competitors: ['hermes'],
|
|
171
|
-
competitorBaseline: 'Profiles run independent agents with isolated configs, sessions, skills, memory, cron jobs, and gateway state.',
|
|
172
|
-
goodvibesAgent: 'Supports GOODVIBES_AGENT_HOME and named --agent-profile homes for isolated Agent-local config, sessions, memory, personas, skills, routines, setup, and bundles; daemon remains shared/external by design. The Agent workspace exposes runtime profile posture, config profiles, profile sync, setup transfer shortcuts, starter profile templates, and local starter authoring.',
|
|
173
|
-
configure: ['GOODVIBES_AGENT_HOME=<path> goodvibes-agent status', 'goodvibes-agent profiles create household --template household --yes', 'goodvibes-agent profiles templates export research ./starter.json --yes', '/agent-profile guide', '/agent → Profiles & Portability'],
|
|
174
|
-
use: ['goodvibes-agent --agent-profile household', '/agent-profile templates', '/profiles', '/profilesync list', '/setup transfer export <path> --yes'],
|
|
175
|
-
exceedsBy: ['Typed support bundles', 'explicit daemon boundary', 'no accidental cross-product knowledge fallback', 'profile isolation without hidden daemon lifecycle ownership', 'fullscreen profile and portability workflow discovery', 'curated local starter packs', 'editable starter templates', 'TUI-guided starter authoring'],
|
|
176
|
-
next: ['Add visual starter-template editing inside the fullscreen Agent workspace.'],
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
id: 'security-approvals',
|
|
180
|
-
title: 'Security, Approvals, And Policy',
|
|
181
|
-
posture: 'ready',
|
|
182
|
-
competitors: ['openclaw', 'hermes'],
|
|
183
|
-
competitorBaseline: 'Command approval, DM pairing, sandboxing, allowlists, and safety defaults for exposed channels.',
|
|
184
|
-
goodvibesDaemon: 'Daemon public routes include approvals.list/claim/approve/deny/cancel, channel policies/allowlists, local auth/session controls, secrets, and route danger metadata in the operator contract.',
|
|
185
|
-
goodvibesAgent: 'Uses daemon approvals, local auth diagnostics, secret refs, explicit confirmation gates, and Agent model-tool policy guards.',
|
|
186
|
-
configure: ['goodvibes-agent auth status', 'goodvibes-agent secrets providers', '/approvals list'],
|
|
187
|
-
use: ['/policy status', '/approvals list', 'goodvibes-agent doctor'],
|
|
188
|
-
exceedsBy: ['No token printing', 'secret-value rejection in local registries', 'policy tests for hidden spawn/lifecycle/default-knowledge failures'],
|
|
189
|
-
next: ['Add user-facing approval center in the Agent workspace with route risk labels and saved policy presets.'],
|
|
190
|
-
},
|
|
191
|
-
] as const;
|
|
192
|
-
|
|
193
|
-
export function buildOperatorCapabilityBenchmarkReport(now = new Date()): OperatorCapabilityBenchmarkReport {
|
|
194
|
-
return {
|
|
195
|
-
generatedAt: now.toISOString(),
|
|
196
|
-
packageName: '@pellux/goodvibes-agent',
|
|
197
|
-
benchmarkSources: OPERATOR_CAPABILITY_BENCHMARK_SOURCES,
|
|
198
|
-
capabilities: OPERATOR_CAPABILITY_BENCHMARKS,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
export function filterOperatorCapabilities(
|
|
203
|
-
capabilities: readonly OperatorCapabilityBenchmark[],
|
|
204
|
-
query: string | undefined,
|
|
205
|
-
): readonly OperatorCapabilityBenchmark[] {
|
|
206
|
-
const normalized = query?.trim().toLowerCase();
|
|
207
|
-
if (!normalized) return capabilities;
|
|
208
|
-
return capabilities.filter((capability) => {
|
|
209
|
-
if (capability.id.includes(normalized)) return true;
|
|
210
|
-
if (capability.title.toLowerCase().includes(normalized)) return true;
|
|
211
|
-
if (capability.posture.includes(normalized)) return true;
|
|
212
|
-
if (capability.competitors.some((competitor) => competitor === normalized)) return true;
|
|
213
|
-
return capability.goodvibesAgent.toLowerCase().includes(normalized)
|
|
214
|
-
|| capability.goodvibesDaemon?.toLowerCase().includes(normalized) === true
|
|
215
|
-
|| capability.competitorBaseline.toLowerCase().includes(normalized);
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export function renderOperatorCapabilityBenchmark(
|
|
220
|
-
capabilities: readonly OperatorCapabilityBenchmark[] = OPERATOR_CAPABILITY_BENCHMARKS,
|
|
221
|
-
): string {
|
|
222
|
-
const lines: string[] = [
|
|
223
|
-
'GoodVibes Agent capability benchmark',
|
|
224
|
-
' Goal: match and exceed OpenClaw/Hermes personal-operator capabilities without default wiki/HomeGraph fallback or hidden local agent fanout.',
|
|
225
|
-
'',
|
|
226
|
-
];
|
|
227
|
-
|
|
228
|
-
for (const capability of capabilities) {
|
|
229
|
-
lines.push(`${capability.title} [${capability.posture}]`);
|
|
230
|
-
lines.push(` competitors: ${capability.competitors.join(', ')}`);
|
|
231
|
-
lines.push(` baseline: ${capability.competitorBaseline}`);
|
|
232
|
-
if (capability.goodvibesDaemon) lines.push(` daemon: ${capability.goodvibesDaemon}`);
|
|
233
|
-
lines.push(` Agent: ${capability.goodvibesAgent}`);
|
|
234
|
-
lines.push(` configure: ${capability.configure.join(' | ')}`);
|
|
235
|
-
lines.push(` use: ${capability.use.join(' | ')}`);
|
|
236
|
-
lines.push(` exceeds: ${capability.exceedsBy.join(' | ')}`);
|
|
237
|
-
lines.push(` next: ${capability.next.join(' | ')}`);
|
|
238
|
-
lines.push('');
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
lines.push('Sources:');
|
|
242
|
-
for (const source of OPERATOR_CAPABILITY_BENCHMARK_SOURCES) lines.push(` ${source}`);
|
|
243
|
-
return lines.join('\n');
|
|
244
|
-
}
|